为什么访问4MB主存空间需要22根地址线?

我们知道,信息在计算机系统中是以二进制的方式进行传送,存储的。那么信息在计算机系统中是如何表示的呢?在这里可分为数值信息和非数值信息两个方面进行讨论。

1.1 数值信息在计算机系统中的表示

数值信息是有正负之分的,因此,在计算机中存储数值信息必须要有表示符号的方法。由于计算机内是采用二进制编码表示,因此,在一般情况下,我们用“0”表示正号,“1”表示符号,符号位数放在数的最高位。

例如,比如我们有十进制数A= +91,B= -91,8位二进制数A=(+1011011),B=(-1011011),A和B可以在计算机中表示为:

A和B在计算机中的表示
0 0
0 0

可以看出,最左边一位代表符号位,它们连同数字本身一起作为一个数。数值信息在计算机内采用符号和数字化处理后,便可以识别和表示带符号的数值信息了,而根据对负数不同的编码方式,又可分为原码、反码、补码三种方式。

同上所述,直接将符号位数字化为0或1,不再进行其他处理,然后将数的绝对值与符号一起编码,即所谓“符号—绝对值表示”的编码,我们称之为原码(未经过其他处理故我们称之为"原")。

其实上面我们已经说了如何用原码表示一个带符号的整数,如上所述,如果用一个字节(8位)放一个整数,其原码表示如下:

这里的“原”就是机器数,就是存放在计算机里的实际二进制数字,前面带符号的二进制数我们称之为机器数相对应的真值

那我们采用原码有什么好处呢?首先就是编码很简单,我们只需要将真值里面的符号数转为0或1就可以变为机器数,机器数和真值转换很方便,一看就懂。

那采用原码表示有什么缺陷吗?还真有,第一个就是零的表示不唯一,我们知道,0是没有符号的,+0和-0都是一样的,没有区别的,那么问题来了,我们如何表示0呢?

以上两个表示方式都对,所以[0]的表示就有了二义性,这就给机器判零带来了麻烦。

第二个缺陷就是直接用原码进行四则运算时,符号位需要单独处理,且运算规则复杂,例如进行一个加法运算,若两数同号,那么要取两数相同的符号作为最终符号;若两数异号,则要用大数减去小树,再把大数的符号作为最终的符号。虽然我们看起来很好理解,但实际上这种操作对计算机来说是及其麻烦的,因此,人们找到了更好的编码方式来代替,那就是补码表示法。

要说到补码,必须先介绍下什么是反码。反码是基于原码基础上按位取反的,但是需要注意的是符号位是不变的。也就是说:

0 0 0
0 0 0
0 0 0 0

 和原码一样,反码对0的表示也不唯一。

介绍完反码,我们就可以引出补码的概念,补码在原理上其实是运用了“模数”的概念,在模数系统中有这么一个概念:

若一个数减去另一个数,或者说一个数加上一个负数,等价于第一个数加上第二个数的补数。

比如,我们取模数为12,那么:

为什么这么做呢?这样我们就把加上一个“负数”的“减法”运算变成了加法运算,也就弥补了之前我们原码所说的缺陷。

补码的原理我们不必深究,有一个快速简洁求补码的方法我们需要记住:

对于正数,不存在反码和补码,没有意义。因此,有些教材上说正数的反码补码形式相同是不对的,实际上,应该说正数没有反码补码更合适点。

对于负数,其补码就是反码的最后一位 [加1] 所得。

这里需要注意:最后一位若是0加1就是1,最后一位是1加1就进位变成0,看起来像取反一样,实际上进行的是操作.

 1.2 非数值信息在计算机系统中的表示

在计算机内部,非数值信息也是采用0和 1 两个符号来进行编码表示的。

①字符的编码, ASCII码是“美国信息交换标准代码”的简称,在这种编码中,每个字符用 7 个二进制位表示,即从 0000000 到 1111111 可以给出 128 种编码,可用来表示 128 个不同的字符。一个字符的 ASCII码通常占用一个字节,由七位二进制数编码组成,故 ASCII 码最多可表示 128 个不同的符号。由于 ASCII码采用七位编码,来用到字节的最高位,故在计算机中一般保持为“0” ,在数据传输时可用作奇偶校验位。

② 汉字的编码,目前,我国使用的是“国家标准信息交换用汉字编码” ,该标准码是二字节码,用2个七位二进制数编码表示一个汉字,并收人了 6763 个汉字。汉字在计算机内的表示,有多种编码,如汉字输入码,输人码进人计算机后,必须转换成汉字内码,才能进行信息处理。为了最终显示、打印汉字,再由内码转换成汉字字形码。此外,为使不同的汉字处理系统之间能够交换信息,还必须设有汉字交换码。


2.1 理解内存地址和内存空间

首先我们先来看这么一个代码


 
这么一段简单的代码在计算机中如何执行呢?a和b在计算机中如何区分?要回答这个问题,必须要简单理解下计算机中的内存地址和内存空间。


实际上,如果我们反汇编一下,就可以看到a++和b++分别对应的是:


在这里,那0x80495f8地址和0x80495fc地址就叫做a和b在内存中的地址。要了解内存地址首先必须要知道的是,内存地址就只是一个编号,一个内存地址就代表一个内存空间。那么这个空间是多大呢?我们常说,计算机中存储器的容量是以字节为基本单位的。什么叫以字节为单位,就是说一个内存地址代表一个字节(1Byte 也就是 8bit)的存储空间,这就是我们说的字节Byte是计算机的基本单位的含义。

 
我们还知道,int型是占据4个字节的(4字节Byte=32位bit),也就是说存储一个int型必须用4个字节,也就等价于至少占据4个内存地址,所以,int在计算机中存储是占据了4个内存地址的。我们在输入语句int a =1,b=2; 后,计算机就分别为a和b分配了4个内存地址来存储a和8,这一以来,我们只需要知道a和b的内存起始地址(首地址),再加4,就是a和b实际在计算机中的地址,如下图示:
a和b在内存空间的地址
 
再比如经常说32位的操作系统最多支持4GB的内存空间,也就是说CPU只能寻址2的32次方,即2的32次方个8bit单位,或者说最大只有2的32次方个内存地址。

2.2 数据在内存的存储

 
 
理解了内存地址和内存空间后,我们便能知道数据在计算机中到底最终是怎么存储的。
学习编程,必须对内存的地址有一个透彻的理解。我们编程中的每一行代码,代码中用到的每个数据,都需要在内存上有其映射地址。当然,我们并不需要掌握内存是如何进行编址,那是计算机系中的另外一门课:操作系统的事了。
内存地址:计算机把所有的信息都给数字化了,所以它知道自已把一个数据,一条命令记到了内存中的哪个(些)位置。
看下面的例子,看计算机是如何在内存里记住变量a和变量b的:

通过以上我们可以知道,int型变量a和b都占据了4个字节也就是4个内存空间,一个内存地址对应一个内存空间也对应一个字节即8个位。

可以看到,(int) a 和 b 的确是由一串0、1组成的。更确切地,从图上可以看出它们分别都是由32位0和1组成。这32数都存放在4个内存地址里。所以,内存地址是内存当中存储数据的一个标识,并不是数据本身,通过内存地址可以找到内存当中存储的数据。

17、为了对紧急进程或重要进程进行调度,调度算法应采用 B 。

A.先进先出调度算法 B.优先数法 C.最短作业优先调度 D.定时轮转法 18、处于后备状态的作业存放在 A 中。

A.外存 B.内存 C.A和B D.扩展内存

19、设m为同类资源R的数目,n为系统中并发进程数。当n个进程共享m个 互斥资源R时,每个进程对R的最大需求是w,则下列情况会出现死锁的是__D__。

20、下面有关安全状态和非安全状态的论述中,正确的是_D__。

A.安全状态是没有死锁的状态,非安全状态是有死锁的状态 B.安全状态是可能有死锁的状态,非安全状态是有可能死锁的状态 C.安全状态是可能没有死锁的状态,非安全状态是有死锁的状态 D.安全状态是没有死锁的状态,非安全状态是有可能死锁的状态 21、采用资源剥夺法可解除死锁,还可以采用 B 方法解除死锁

A.执行并行操作 B.撤销进程 C.拒绝分配新资源 D.修改信号量 22、一种既有利于短小作业又兼顾到长作业的作业调度算法是 C 。

A.先来先服务 B.轮转 C.最高响应比优先 D.均衡调度 23、死锁问题的讨论是针对 D 。

A. 某个进程申请系统中不存在的资源

B.某个进程申请的资源数超过系统中的最大资源数 C.硬件故障

D.多个并发进程竞争独占性资源

24、运行时间最短的作业被优先调度,这种调度算法是 C 。

A. 优先级调度 B. 响应比高者优先 C. 短作业优先 D. 先来先服务 25、通常不采用__D__方法来解除死锁。

A.终止一个死锁进程 B.终止所有死锁进程 C.从死锁进程处抢夺资源 D.从非死锁进程处抢夺资源

26、单处理器的多进程系统中,进程什么时候占用处理器和能占用多长时间,取决于 C 。

A.进程相应的程序段的长度 B.进程总共需要运行时间多少 C.进程自身和进程调度策略 D.进程完成什么功能 27、计算机系统产生死锁的根本原因是??D???。

A、资源有限 B、进程推进顺序不当 C、系统中进程太多 D、A和B 28、处理机调度可分为三级,它们是__高级调度(或作业调度)_,__中级调度___和___低级调度(或进程调度)_;在一般操作系统中,必须具备的调度是_进程调度(或低级调度)_。

29、高级调度又称为__作业调度__,低级调度又称为_____进程调度_ 。 30、进程调度有__抢占调度(或抢占方式) 和___非抢占调度(或非抢占方式)两种方式。

31、死锁产生的主要原因是 资源竞争 和__进程推进次序非法_。

32、死锁的四个必要条件是 _互斥 、 _不剥夺__、 请求和保持 和 环路等待 。 33、解决死锁问题的基本方法有___预防死锁_ 、___避免死锁__ 和 __检测并解除死锁 。

第四章存储器管理复习题

1、在可变式分区分配方案中,某一作业完成后,系统收回其主存空间,并与相 邻空闲区合并,为此需修改空闲区表,造成空闲区数加1的情况是__A__。

A.无上邻空闲区,也无下邻空闲区 B.有上邻空闲区,但无下邻空闲区 C.有下邻空闲区,但无上邻空闲区 D.有上邻空闲区,也有下邻空闲区 2、在可变式分区分配方案中,某一作业完成后,系统收回其主存空间,并与相 邻空闲区合并,为此需修改空闲区表,造成空闲区数减1的情况是__D_ _。

A.无上邻空闲区,也无下邻空闲区 B.有上邻空闲区,但无下邻空闲区 C.有下邻空闲区,但无上邻空闲区 D.有上邻空闲区,也有下邻空闲区 3、动态分区内存管理中,倾向于优先使用低址部分空闲区的算法是___C____。

A.最佳适应算法 B.最坏适应算法 C.首次适应算法 D.循环首次适应算法

4、现代操作系统中,使每道程序能在不受干扰的环境运行主要是通过___B__功

A.对换 B.内存保护 C.地址映射 D.虚拟存储器 5、静态重定位是在作业___B___中进行的。

A.编译过程 B.装入过程 C.修改过程 D.执行过程 6、实现虚拟存储器最关键的技术是__C___。

A.内存分配 B.置换算法 C.请求调页(段) D.对换空间的管理 7、支持程序浮动的地址转换机制是 D 。

A.页式地址转换 B.段式地址转换 C.静态重定位 D.动态重定位 8、在段式存储管理方式中,用户使用的地址空间是 C 的。

A.线性 B.一维 C.二维 D.三维 9、分段管理提供__B__维的地址结构。

A.1 B.2 C.3 D.4 11、段页式管理每取一数据,要访问 C 次内存。

A、重定位装入程序 B、重定位寄存器 C、地址机构 D、目标程序 13、把逻辑地址转变为内存的物理地址的过程称作??D??。

A、编译 B、连接 C、运行 D、重定位 14、以下存储管理技术中,支持虚拟存储器的技术是???C???。

A、动态分区法 B、可重定位分区法 C、请求分页技术 D、对换技术 16、在固定分区分配中,每个分区的大小??C??。

A、相同 B、随作业长度变化

C、可以不同但预先固定 D、可以不同但根据作业长度固定 17、静态重定位是在作业的??B??中进行的,动态重定位是在作业执行过程中进行的。

A、编译过程 B、装入过程 C、修改过程 D、执行过程

15、设内存的分配情况如图所示。若要申请一块40K字节的内存空间,若采用最

佳适应算法,则所得到的分区首址为??C???????。

占用 占用 占用 占用 18、支持程序浮动的地址转换机制是__D__。

A.页式地址转换 B.段式地址转换 C.静态重定位 D.动态重定位 19、虚拟存储器的最大容量??A??。

A、为内外存容量之和 B、由计算机的地址结构决定 C、是任意的 D、由作业的地址空间决定 20、在一个页式存储管理系统中,页表内容如下所示:

若页的大小为4K,则地址转换机构将逻辑地址0转换成的物理地址为??A????。

21、在请求页式存储管理中,若所需的页面不在内存,则会引起 D 。

A.输入输出中断 B.时钟中断 C.越界中断 D.缺页中断 22、将主存空闲区按地址顺序从小到大登记在空闲分区表中,每次分配时总是顺序查找空闲区表中第一个满足需求的空闲分区切割,这种分配算法称为 B 法。

A.最先适应 B.最优适应 C.最坏适应 D.随机适应 23、在页式存储管理中,每次从主存中取指令或取操作数,要 B 次访问主存。

我要回帖

更多关于 最大可寻址内存空间 的文章

 

随机推荐