【知识强化】第三章 内存管理 3.1 内存管理概念

其實内存它的作用就是用來存放數據。我們的程序本來是放在外存、放在磁盤當中的,但是磁盤的讀寫速度很慢,而CPU的處理速度又很快,所以如果CPU要執行這個程序,程序相關的數據都是從外存讀入的,那麽很顯然CPU的這個速度會被外存的速度給拖累。所以爲了緩和這個CPU和硬盤、外存之間的速度矛盾,所以我們必須先把我們要執行的、CPU要處理的這些程序數據把它放入内存裏。既然我們的内存是存放數據的,那麽我們的内存當中可能會存放很多很多數據,那操作系統是怎麽區分各個程序的數據是放在什麽地方的呢?那爲了區分這些數據存放的位置,就需要給内存進行一個地址的編號。就有點類似於說我們去住酒店的時候,怎么區分我們每個人住在哪個房間?其實很簡單,酒店的做法就是給每個房間編號,那我們的内存其實和這個酒店是一樣的,只不過酒店的這些房間裏你可以存的是人,而内存當中,它的這些“小房間”裏,它存的是一個一個的數據。那内存會被劃分成這樣一個一個的“小房間”,每個小房間就是一個存儲單元。那接下來在劃分的這些存儲單元之後,就需要給這些存儲單元進行一個編號。那内存的這個地址編號一般來説是從零開始的,然後依次遞增。并且每個地址會對應一個數據的存儲單元,也就是會對應一個“小房間”。那麽,這樣的一個存儲單元可以存放多少數據呢?這個具體得看計算機的編址方式。我們在操作系統這門課當中大部分遇到的情況是會告訴你說計算機按字節編址,按字節編址的意思就是一個地址它對應的是一個字節的數據,也就是說這樣的一個存儲單元,它可以存放一個字節,而一個字節它又由8個二進制位組成,也就是8個0101這樣組成。那在有的題目當中也有可能會告訴我們這個計算機是按字編址的,如果它告訴我們是按字編址的話,那麽就意味著一個地址它所對應的存儲單元可以存放一個字,而一個字的長度是多少個比特位?這個具體得看題目當中給出的條件。有的計算機當中字長是16位,那麽它一個字的大小就是16個比特。也有的計算機可能字長是32位,字長是64位等等。總之,我們需要根據題目給的條件來判斷一個字它占有多少個比特位。好的,那麽在這個部分我們為大家介紹了内存的一些最基本的知識。什麽叫做存儲單元,就是用於存放數據的最小單元。另外,每一個地址可以對應這樣的一個存儲單元。而一個存儲單元可以存儲多少數據,那具體要看這個計算機它是怎麽設計的。對於我們考研來説,我們就要看它題目給的條件到底是什麽。

那在内存管理這個章節當中,可能會有很多題目會涉及到這個數據的一些基本單位。而對於不考計組的同學來説可能對這些單位的描述是比較陌生的,所以我們在這個地方還需要再介紹一下一些常見的單位。比如說我們平時所説的一個手機,或者說一台電腦它有4GB内存,那除了GB之外,我們還經常看到什麽MB,KB這樣的單位。那所謂的1KB,其實就是2的10次方這麽多。而1MB,其實是2的20次方這麽多。而這裏的1GB,其實是2的30次方那麽多。所以這個地方4G其實它是一個數量,而B是一個數據的單位,這個大BByte指的是字節,小b小寫的b它指的是bit,是一個比特位,一個二進制位。一個Byte也就是一個大B等於8個小b,所以如果一個手機有4GB内存的話那麽就意味著這個手機的内存當中它可以存放4*2^30這麽多個字節的數據。所以如果這個手機或者這個電腦它是按字節編址的,那麽這個内存的地址空間就應該是4*2^30這麽多個存儲單元。每一個存儲單元可以存放一個字節。那我們知道,在計算機的世界當中,所有的這些數字其實都是用二進制0101這樣來表示的。包括我們的内存地址,其實也需要用二進制來表示。所以有的題目當中可能會告訴我們,内存的大小是多少。比如說内存大小是4GB,并且告訴我們這個内存是按字節編址的,題目可能會問我們到底需要多少個二進制位才能表示這麽多個存儲單元也就是2^32次方個存儲單元。那對於跨考的同學來說,一定要去了解一下二進制編碼還有二進制數和這個十進制數的一個轉換關係。對二進制比較熟悉的就可以很快速地反應出來這麽多個存儲單元肯定就需要32個二進制位來表示。所以如果手機的内存是4GB,并且它是按字節編址的,那麽對於這個手機來説它的地址至少需要用32個二進制位來表示。好的那麽再次提醒,對於跨考的同學來說,如果二進制和十進制的這個轉換不是很熟練的話,一定要下去練習。

原文地址:https://www.cnblogs.com/ZHONGZHENHUA/p/11229540.html

时间: 2024-10-07 04:17:40

【知识强化】第三章 内存管理 3.1 内存管理概念的相关文章

【知识强化】第三章 存储系统 3.1 存储器的基本概念

前面我们已经把第二章数据的表示和计算都已经讲完了,那么从这一章开始我们将进入存储系统的学习.那么本章要讲什么呢? 本章是历年考查的一个重点.特别呢是我用红框框框出来的这部分,是考试当中特别容易考到的重中之重.那么我们来看一下我们这一章要学什么?最重要的呢是要学习存储器是和如何和CPU协同工作的,那么我们将要介绍存储器的一个简单的模型以及它地址信号如何找到我们的存储单元的,也就是寻址的一个概念.接下来我们将要讲解主存和CPU的连接.那么我们将要解决两个问题,一个问题呢就是我们的主存和我们的CPU它

《软件工程 ——理论、方法与实践》知识概括第三章 软件项目管理

第3章 软件项目管理   软件项目管理有利于将软件开发人员的个人开发能力转化为企业的开发能力,并使企业的软件开发能力不断提高和成熟. 一.软件项目管理概述 软件项目管理是为了使软件项目能够按照预定的成本.进度.质量顺利完成,而对成本.人员.进度.质量.风险等进行分析和管理的活动. 软件项目的特征:1.软件产品的不可见性:2.项目的高度不确定性:3.软件过程的多变化性:4.软件人员的高流动性. 软件项目管理的“4P”:人员(People).产品(Product).过程(Process)和项目(Pr

【知识强化】第二章 数据的表示和运算 2.2 定点数的表示与运算

我们进入第二章的学习,就是定点数的表示和运算. 那关于定点数呢我们分为两块内容,一块呢就是定点数的表示也就是我们这一节的内容,一块呢就是定点数的运算.这两块内容呢都非常的难,也都非常的重点.希望大家呢引起重视. 原文地址:https://www.cnblogs.com/ZHONGZHENHUA/p/11370240.html

大道至简第三章-团队缺乏的不只是管理

第三章 寄存器(内存访问)

在第五章的学习之后,因为实验课在老师的抽查之后发现前面的知识很多都忘了,便对之前的知识进行了一遍系统的复习,对汇编的基础知识基本都已经掌握,也有了更加深刻的认识. 在第三章中我们主要从内存访问的角度来继续学习CPU执行指令的原理,并进一步的学习上一章的寄存器. <1>内存中字的存储 字由高位字节和低位字节组成,用16位寄存器来存储.高八位存放高位字节,低八位存放低位字节.字需要两个地址连续的内存单元(一个字节)来存储,字的低位字节存放在低地址单元中,高位字节存放在高地址单元中.如下图,我们想要

【知识强化】第三章 栈和队列 3.1 栈

在第三章我们将继续学习三种非常重要的线性结构,分别是栈和队列的这样的受限线性表.我们将从它们的基本概念.存储结构以及相关应用这三方面进行详细的学习.最后我们将学习数组的相关知识,大家要注意一下这里的数组指的是一种线性结构,与我们之前在程序设计语言当中提到的数组类型是不同的概念.好,数组我们会学习它的定义以及它的存储结构,还有用数组来实现矩阵的压缩存储.最后还会提一个特殊的矩阵叫做稀疏矩阵.好,这就是本章所要学习的重要考点.本章所学习的知识点其实并不难,它常常出现在选择题当中,但是在之后我们解决一

Linux内核分析——第三章 进程管理

第三章 进程管理 3.1 进程 1.进程就是处于执行期的程序:进程就是正在执行的程序代码的实时结果:进程是处于执行期的程序以及相关的资源的总称:进程包括代码段和其他资源. 线程:是在进程中活动的对象. 2.执行线程,简称线程,是在进程中活动的对象.每个线程都拥有一个独立的程序计数器.进程栈和一组进程寄存器. 3.内核调度的对象是线程,而不是进程.Linux对线程并不特别区分,视其为特殊的进程 4.在现代操作系统中,进程提供两种虚拟机制:虚拟处理器和虚拟内存.在线程之间可以共享虚拟内存,但每个都拥

第三章 寄存器(内存访问)相关内容总结

在本章中,我们从访问内存的角度继续学习了几个寄存器.我们提出字单元的概念:字单元,即存放一个字型数据(16位)的内存单元,由两个地址连续的内存单元组成.高地址内存单元中存放字型数据的高位字节,低地址内存单元中存放字型数据的低位字节.CPU要读写一个内存单元的时候,必须先给出这个内存单元的地址,在8086PC中,内存地址由段地址和偏移地址组成.8086CPU中有一个DS寄存器,通常用来存放要访问数据的段地址.我们用mov指令在寄存器和内存之间进行字节型数据的传送.因为8086CPU是16位结构,有

第三章 Linux基础知识

3.1 程序的组成与执行过程 3.1.1 三种编程接口 在前面几章我们已经粗略的说过,面向计算机通常有三种编程接口,分别是: a) 硬件规格 b) 系统调用 c) 库调用 每个CPU的生产厂商在生产一个计算芯片时,这个芯片本身有其内置的指令集,所以有一部分人在编程时直接面向这些指令集进行,这类编程方式就是面向硬件规格编程. 3.1.2 程序执行过程 前面我们说过,Intel x86系列的CPU,通常由外而内,指令集是分布在4个环上的,环0上的是特权指令,只能由操作系统执行,环3上的是普通指令,可

NodeJs&gt;-------&gt;&gt;第三章:Node.js基础知识

第三章:Node.js基础知识 一:Node.js中的控制台 1:console.log.console.info  方法 1 console.log("this is a test string."); 1 node app1.js 1> info.log 1 console.log("This is a test String ."); 2 3 //从第二个参数开始,依序输出所有的字符串 4 console.log("%s","