第一周
第二周
第三周
第四周
第五周
第六周
第七周
1机器主频的倒数(一个节拍)等于( C )。
A.指令周期
B.机器周期
C.时钟周期
D.存储周期
解析: C、时钟周期是CPU工作的最小时间单位,也称节拍脉冲或T周期,其值等于机器主频的倒数。
指令周期是指读取一条指令并完成执行所用的时间,不同指令的指令周期可能不同。
早期的计算机有机器周期的概念,特指一个指令周期中的不同阶段操作所用时间,例如,取指令、译码、取操作数、执行、送结果等不同阶段分别在一个特定的机器周期内完成。取指令、取操作数和写结果都可能会访问主存,所以这些阶段被称为存储器读或存储器写机器周期。
存储周期是主存的一个指标,指主存进行连续两次独立的读或写操作所需的最小时间间隔。
2CPU中控制器的功能是( C )。
A.控制从主存取出一条指令
B.完成指令操作码译码
C.完成指令译码,并产生操作控制信号
D.产生时序信号
3冯·诺依曼计算机中指令和数据均以二进制形式存放在存储器中,CPU依据( B )来区分它们。
A.指令和数据的寻址方式不同
B.指令和数据的访问时点不同
C.指令和数据的地址形式不同
D.指令和数据的表示形式不同
解析: B、指令和数据均以二进制形式存放在存储器中,因而表示形式相同。
指令的寻址很简单,总是根据PC内容访问存储器,而数据的寻址则比较复杂,有立即、寄存器直接、变址、基址寻址等多种寻址方式。不过,CPU并不能根据寻址方式来区分访问的是数据还是指令。
指令周期中的第一个阶段总是取指令阶段,因而CPU根据是否是取指令阶段来区分取到的是指令还是数据。若是指令,则取出后存放在指令寄存器(IR)中。
指令和数据的地址都是二进制形式,因而地址形式相同。
4下列寄存器中,用户可见的(即:机器级代码程序员能感觉其存在的)寄存器是( D )。
A.存储器数据寄存器(MDR)
B.存储器地址寄存器(MAR)
C.指令寄存器(IR)
D.程序计数器(PC)
解析: D、用汇编语言这种机器级语言编写程序的程序员,需要在转移指令中考虑采用什么方式改变PC的值,因而他/她能感觉到PC的存在。而MAR、MDR和IR都是执行指令过程中用到的CPU内部寄存器,汇编程序员在编写程序时不能感觉到有这些寄存器的存在。
5下面是有关CPU中部分部件的描述,其中错误的是( D )。
A.PC称为程序计数器,用于存放将要执行的指令的地址
B.通过将 PC按当前指令长度增量,可实现指令的按序执行
C.ALU称为算术逻辑部件,用于进行加、减运算和逻辑运算
D.IR称为指令寄存器,用来存放当前指令的操作码
解析: D、IR中存放的是整个指令,而不仅仅是指令操作码。
6
执行完当前指令后,PC中存放的是后继指令的地址,因此PC的位数和( B )的位数相同。
A.指令译码器(ID)
B.主存地址寄存器(MAR)
C.指令寄存器(IR)
D.程序状态字寄存器(PSWR)
解析: B、PC中存放的是将要读取的指令的主存地址,因而和主存地址寄存器MAR的位数相同。
7通常情况下,下列部件( B )不包含在CPU芯片中。
A.标志(状态)寄存器
B.动态随机访问存储器(DRAM)
C.通用寄存器组
D.控制器
解析: B、CPU中的标志(状态)寄存器用于存放ALU运算得到的各种标志信息等。控制器用于对指令译码产生控制信号。通用寄存器组(General Purpose Registers,GPRs)用于暂存ALU运算所用的操作数或运算结果。通常DRAM用作主存,若干DRAM芯片排列在内存条上,因而不可能在CPU芯片内。
8下列有关程序计数器PC的叙述中,错误的是( D )。
A.无条件转移指令执行后,PC的值一定是转移目标地址
B.每条指令执行后,PC的值都会被改变
C.调用指令执行后,PC的值一定是被调用过程的入口地址
D.指令顺序执行时,PC的值总是自动加1
解析: D、每条指令执行后,PC的值都会被改变,否则会永远执行某一条指令。顺序执行时,PC的值总是自动加上当前指令的长度,而不是1。
9CPU取出一条指令并完成执行所用的时间称为( A )。
A.指令周期
B.机器周期
C.时钟周期
D.CPU周期
10下列有关指令周期的叙述中,错误的是( D )。
A.任何指令的指令周期中至少有一个存储器访问阶段
B.指令周期的第一个阶段一定是取指令阶段
C.一个指令周期由若干个机器周期或时钟周期组成
D.乘法指令和加法指令的指令周期总是一样长
解析: A、任何指令周期的第一个阶段都是取指令阶段,需要访问存储器。 D、乘法指令通过执行若干次加减操作和移位操作来完成,因而,乘法指令的指令周期通常比加法指令的指令周期更长,即乘法指令的CPI比加法指令的CPI更大。
1下列几种存储器中,( C )是易失性存储器。
A.CD-ROM
B.EPROM
C.cache
D.Flash Memory
2下面有关半导体存储器组织的叙述中,错误的是( A )。
A.同一个存储器中,每个存储单元的宽度可以不同
B.存储器的核心部分是存储阵列,由若干存储单元构成
C.每个存储单元有一个编号,就是存储单元的地址
D.存储单元由若干个存放0或1的记忆单元(cell)构成
解析: A、现代计算机的主存储器由半导体存储器构成,其中存放信息的地方称为存储阵列;每个存储阵列包含若干个存储单元,每个存储单元由若干个记忆单元(cell)构成,每个记忆单元存放一位信息(0或1)。
某一台计算机的主存储器编址方式,总是由其对应的指令集体系结构(ISA)确定的;现代通用计算机大多采用按字节编址方式,即主存储器中每个字节有一个地址,也即每个存储单元的宽度都是8位。
3若某个内存条容量为1GB,则说明该内存条中可存储( B )个字节。
A.10^30
B.2^30
C.10^9
D.2^9
4某32位计算机,主存地址为32位,按字节编址,则该计算机的主存地址范围是( A )。
A. 0~(4G-1)
B.1~32G
C.0~(32G-1)
D.1~4G
解析: A、因为主存地址为32位,所以主存地址空间占2^32=4G个存储单元;因为按字节编址,因此,主存最大可存储的信息量为4GB=32Gbits。主存储器总是从0开始编号,因此存储单元的地址为0、1、2、……、2^32-1=4G-1。这里,4G-1=2^32-1=1 0000 0000 0000 0000 0000 0000 0000 0000 -1 = 1111 1111 1111 1111 1111 1111 1111 1111 = FFFF FFFFH。
5假定主存地址空间大小为1024MB,按字节编址,每次读写操作最多可以一次存取32位。不考虑其它因素,则存储器地址寄存器MAR和存储器数据寄存器MDR的位数至少应分别为( C )。
A.28,8
B.30,8
C.30,32
D.28,32
解析: C、因为1024M=2^30,所以MAR至少为30位。
6采用行、列地址引脚复用的半导体存储器芯片是( A )。
A.DRAM
B.EPROM
C.SRAM
D. Flash Memory
7下面有关ROM和RAM的叙述中,错误的是( B )。
A.RAM是可读可写存储器,ROM是只读存储器
B.计算机系统的主存都用DRAM芯片实现
C.ROM和RAM都采用随机访问方式进行读写
D.计算机系统的主存由RAM和ROM组成
8下面有关半导体存储器的叙述中,错误的是( D )。
A. DRAM是半导体动态随机访问存储器,可用作主存
B.ROM芯片属于半导体随机存储器芯片
C.SRAM是半导体静态随机访问存储器,可用作cache
D.半导体存储器都采用随机存取方式进行读写
解析: D、有些情况下,可用半导体存储器实现相联存储器,即按内容进行访问,而不是按地址进行随机读写。
9存储容量为16K×4位的DRAM芯片,其地址引脚和数据引脚数各是( D )。
A.14和1
B.14和4
C.7和1
D.7和4
解析: D、因为DRAM芯片存储容量为16K×4位,故该芯片共有16K=2^14个存储单元,应该有14位地址,行、列地址引脚复用后,芯片的地址引脚数为7。每个存储单元占4位,因此芯片的数据引脚数为4。
10假定用若干个16K×8位的存储器芯片组成一个64K×8位的存储器,芯片各单元交叉编址,则地址BFFFH所在的芯片的最小地址为( D )。
A.0000H
B.0001H
C.0002H
D.0003H
解析: D、用若干个16K×8位的存储器芯片构成64K×8位的存储器,需要64K×8位/(16K×8位)= 4个芯片。因为采用交叉编址方式,所以,存储单元地址对4取模后,低两位相同的存储单元在同一个芯片中。BFFFH的最低两位为11,显然,与0003H在同一个芯片中。
1以下有关磁盘存储器信息存储原理的叙述中,错误的是( D )。
A.磁盘片的两个面都可存储信息
B.每个磁化状态对应一位二进制信息
C.信息在磁盘表面以磁化状态形式存储
D.共有三种不同的磁化状态
2以下有关磁盘存储器结构的叙述中,错误的是( C )。
A.由存储介质、磁盘控制器和磁盘驱动器组成
B.磁盘操作包括寻道、旋转等待和读写三个步骤
C.磁盘驱动器的位置介于CPU和磁盘控制器之间
D.磁盘的信息存储介质就是磁盘盘面
3以下有关硬磁盘的磁道和扇区的叙述中,错误的是( C )。
A.不同盘面上同一位置的多个磁道构成一个柱面
B.磁头和磁盘做相对运动而形成的轨迹即为磁道
C.一个磁道由若干扇区构成且磁盘各磁道信息位数总相同
D.每面有一个磁头,寻道过程中所有磁头同时移动
解析: C、早期的低密度磁盘中每个磁道信息位数总是一样,但是,现在的磁盘,其外道信息量比内道大
4以下有关磁盘驱动器的叙述中,错误的是( D )。
A.能控制磁盘片转过指定的扇区,并发回“扇区符合”信号
B.能控制磁头移动到指定磁道,并发回“寻道结束”信号
C.能对指定盘面的指定扇区进行数据的读或写操作
D.送到磁盘驱动器的盘地址由磁头号、盘面号和扇区号组成
解析: D、因为每个盘面有一个磁头,所以磁头号就是盘面号。盘地址由柱面号(即磁道号)、盘面号(即磁头号)和扇区号组成。
5假定一个磁盘存储器有10个记录面,用于记录信息的柱面数为5000,每个磁道上记录信息位数相同,磁盘片外径200mm,内径40mm,最内道位密度为200bpm(位/毫米),则该磁盘存储器的容量约为( D )。
A.4.425GB
B.0.628GB
C.17.7GB
D.0.157GB
解析: D、(10×5000×3.14×40×200)/8 B = 0.157GB。
6假定一个磁盘存储器有4个盘片,用于记录信息的柱面数为2000,每个磁道上有3000个扇区,每个扇区512B,则该磁盘存储器的容量约为( C )。
A.12GB
B.24MB
C.24GB
D.12MB
解析: C、2×4×2000×3000×0.5KB≈24GB。
7假定一个磁盘的转速为7200RPM,磁盘的平均寻道时间为10ms,内部数据传输率为1MB/s,不考虑排队等待时间。那么读一个512字节扇区的平均时间大约为 ( A )。
A.14.67 ms
B.14.17 ms
C.18.83 ms
D.18.33 ms
解析: A、10ms + (1/7200×60×1000)/2 + 0.5KB/1MB×1000≈14.67。
8假定一个磁盘的转速为10000RPM,平均寻道时间为5.5ms,内部数据传输率为4MB/s,磁盘控制器开销为1ms,不考虑排队等待时间。那么读一个4KB扇区的平均时间大约为 ( B )。
A.11.5ms
B.10.5 ms
C.13.5 ms
D.12.5 ms
解析: B、1ms +5.5ms+ (1/10000×60×1000)/2 + 4KB/4MB×1000 = 10.5ms。
9以下有关磁盘存储器读写操作的叙述中,错误的是( D )。
A.采用直接存储器存取(DMA)方式进行输入/输出
B.按批处理方式进行一个数据块的读写
C.最小读写单位可以是一个扇区
D.磁盘存储器可与CPU交换盘面上的存储信息
解析: D、磁盘存储器以成批方式进行数据读写,CPU中没有那么多通用寄存器用于存放交换的数据,所以,磁盘存储器通常直接和主存交换信息
10磁盘存储器进行读写操作之前,CPU需要对磁盘控制器或DMA控制器进行初始化。以下选项中,不包含在初始化信息中的是( D )。
A.传送数据个数或传送字节数
B.传送信息所在的主存起始地址
C.传送方向(即读磁盘还是写磁盘?)
D.传送信息所在的通用寄存器编号
1在存储器分层体系结构中,存储器速度从最快到最慢的排列顺序是( A )。
A.寄存器-cache-主存-辅存
B.寄存器-主存-cache-辅存
C.寄存器-主存-辅存-cache
D.寄存器-cache-辅存-主存
2在存储器分层体系结构中,存储器从容量最大到最小的排列顺序是( A )。
A.辅存-主存-cache-寄存器
B.主存-辅存-cache-寄存器
C.辅存-cache-主存-寄存器
D.辅存-主存-寄存器-cache
3在主存和CPU之间增加cache的目的是( D )。
A.增加内存容量
B.提高内存可靠性
C.增加内存容量,同时加快访问速度
D.加快信息访问速度
4以下哪一种情况能很好地发挥cache的作用?(B)
A.程序中含有较多的I/O操作
B.程序具有较好的访问局部性
C.程序的大小不超过实际的内存容量
D.程序的指令间相关度不高
5假定主存按字节编址,cache共有64行,采用直接映射方式,主存块大小为32字节,所有编号都从0开始。问主存第2593号单元所在主存块对应的cache行号是( B )。
A.1
B.17
C.34
D.81
解析: B、因为按字节编址,主存块大小为32字节,所以块内地址占5位。采用直接映射方式,共64行,故行号占6位。因为2593=2048+512+32+1=0…01 010001 00001B,根据主存地址划分的结果,可以看出2593单元所在主存块对应的cache行号为010001B=17。
6假定主存按字节编址,cache共有64行,采用4路组相联映射方式,主存块大小为32字节,所有编号都从0开始。问主存第2593号单元所在主存块对应的cache组号是( A )。
A.1
B.17
C.34
D.81
解析: A、因为按字节编址,主存块大小为32字节,所以块内地址占5位。采用4路组相联映射方式,共64行,分64/4=16组,故组号占4位。因为2593=2048+512+32+1=0…0101 0001 00001B,根据主存地址划分的结果,可以看出2593单元所在主存块对应的cache组号为0001B=1。
7假定主存地址空间为256MB,按字节编址, cache共有64行,采用8路组相联映射方式,主存块大小为64B,则cache容量至少为( C )字节。
A.4248
B.4216
C.4256
D.4224
解析: C、因为按字节编址,256M=2^28,故主存地址位数为28位。采用8路组相联,共64行,分64/8=8组,故组号占3位。主存块大小为64B,块内地址占6位。因此,标志位占28-3-6=19位。Cache总容量为64×(1+19+64×8)位=4256字节。
8假定CPU通过存储器总线读取数据的过程为:发送地址和读命令需1个时钟周期,存储器准备一个数据需8个时钟周期,总线上每传送1个数据需1个时钟周期。若主存和cache之间交换的主存块大小为64B,存取宽度和总线宽度都为4B,则cache的一次缺失损失至少为多少个时钟周期?(C)
A.72
B.80
C.160
D.64
解析: C、一次缺失损失需要从主存读出一个主存块(64B),每个总线事务读取4B,因此,需要64B/4B=16个总线事务。每个总线事务所用时间为1+8+1=10个时钟周期,总共需要160个时钟周期。
9假定用作cache的SRAM的存取时间为2ns,用作主存的SDRAM存储器的存取时间为40ns。为使平均存取时间达到3ns,则cache命中率应为( A )左右。
A.97.5%
B.85%
C.99.9%
D.92.5%
解析: A、1-(3-2)/40=97.5%。
10若主存地址32位,按字节编址,块大小为32字节,cache共有2K行,则以下叙述中,错误的是( A )。
A.全相联时,标志位共计64K位
B.关联度为8时,标志位共计38K位
C.关联度为2时,标志位共计34K位
D.关联度为1时,标志位共计32K位
解析: A、全相联时,标志位共计2K×(32-5)=54K位。
1以下关于cache替换算法的叙述中,错误的是( C )。
A.组相联和全相联映射都必须考虑如何进行替换
B.LRU算法需要对每个cache行记录替换信息,即LRU位
C.先进先出算法无需对每个cache行记录替换信息
D.直接映射方式是多对一映射,无需考虑替换问题
解析: C、先进先出算法需要对每个cache行打一个时间戳,记录何时装入了一个新的主存块。
2以下关于LRU替换算法的叙述中,错误的是( C )。
A.LRU是Least-Recently Used的缩写,表示最近最少用
B.基于cache行有多久没有被访问来进行替换
C.全相联映射方式特别适合采用LRU替换算法
D.是一种栈算法,其命中率随组的增大而提高
解析: C、LRU替换算法需要为每个cache行设置一个计数器,用于记录对应行的使用情况。计数器的位数与组的大小有关,例如,对于2-路组相联,每组有两个cache行,计数器为1位;对于4-路组相联,计数器为2位。对于全相联,则组的大小等于cache行数,因而计数器的位数等于cache行号的位数,这样,不仅计数器所占容量开销大,而且对计数器进行修改的时间开销也大。因而LRU算法不适合应用于全相联映射方式。
3以下关于写策略的叙述中,错误的是( A )。
A.只有在写命中时才需考虑写策略问题,在写不命中时无需考虑
B.多个带cache的CPU共享主存时会出现写策略问题
C.对于写命中,有直写(Write Through)和回写(Write Back)两种写策略
D.写策略问题也是cache一致性问题
解析: A、写命中指要写的单元已经在cache中,写不命中指要写的单元不在cache中。不管是写命中还是写不命中,都需要考虑写策略问题。在写命中时,可以采用直写(Write Through)或回写(Write Back)方式。前者在写cache的同时也写主存;后者仅写cache,在被替换出去时再将整个主存块写入主存。在写不命中时,可以采用写分配方式,把主存块装入cache,然后采用写命中时的直写或回写策略进行处理,也可以采用非写分配(Not Write Allocate)方式,直接写主存而不写cache。
4以下关于直写(Write Through)策略的叙述中,错误的是( C )。
A.每次写操作都会写cache中的内容和在主存中的副本
B.通常在cache和主存之间设置写缓冲,以加快写操作速度
C.通常在cache行中加“dirty bit”,以标识对应行是否被修改过
D.在写不命中时,若采用非写分配(Not Write Allocate)方式,则只能用直写替换策略
解析: C、因为直写(Write Through)策略会同时写cache和主存,因此,总能保持cache和主存的一致性,无需用“dirty bit”来标识cache行是否被修改。而回写(Write Back)策略仅写cache,在被替换出去时,需要根据dirty bit是否为1,以了解cache行中的主存块是否被修改,若被修改,则说明发生了cache和主存的不一致,需要将整个主存块写入主存。
5假定主存地址位数为32位,按字节编址,主存和cache之间采用直接映射方式,主存块大小为1个字,每字32位,写操作时采用直写(Write Throght)方式,则能存放32K字数据的cache的总容量至少应有( C )位。
A.1504K
B.1568K
C.1536K
D.1600K
解析: C、cache共有32K字/1字=32K行,故行号占15位;每个主存块为1字=32位=4B,故块内地址占2位。因此,标志占32-15-2=15位。直接映射方式无需考虑替换算法,故没有替换信息;直写方式无需修改位(dirty bit)。因而cache总容量为32K×(1+15+32)=1536K位。
6假定主存地址位数为32位,按字节编址,主存和cache之间采用直接映射方式,主存块大小为1个字,每字32位,写操作时采用回写(Write Back)方式,则能存放32K字数据的cache的总容量至少应有( D )位。
A.1504K
B.1600K
C.1536K
D.1568K
解析: D、cache共有32K字/1字=32K行,故行号占15位;每个主存块为1字=32位=4B,故块内地址占2位。因此,标志占32-15-2=15位。直接映射方式无需考虑替换算法,故没有替换信息;回写(Write Back)方式需1位修改位(dirty bit)。因而cache总容量为32K×(1+15+1+32)=1568K位。
7假定主存地址位数为32位,按字节编址,主存和cache之间采用全相联映射方式,主存块大小为4个字,每字32位,采用回写(Write Back)方式和随机替换策略,则能存放32K字数据的cache的总容量至少应有( D )位。
A.5056K
B.5024K
C.1256K
D.1264K
解析: D、cache共有32K字/4字=8K行,每个主存块为4字=4×32位=16B,故块内地址占4位。因此,全相联映射方式下,标志占32-4=28位。随机替换算法没有替换信息;回写(Write Back)方式需1位修改位(dirty bit)。因而cache总容量为8K×(1+28+1+4×32)=1264K位。
8假定主存地址位数为32位,按字节编址,主存和cache之间采用4-路组相联映射方式,主存块大小为4个字,每字32位,采用直写(Write Throght)方式和LRU替换策略,则能存放32K字数据的cache的总容量至少应有( A )位。
A.1184K
B.4672K
C.1168K
D.4736K
解析: A、cache共有32K字/4字=8K行,因为采用4-路组相联,因而共有8K/4=2K组,组号占11位;每个主存块为4字=4×32位=16B,故块内地址占4位。因此,标志占32-11-4=17位。4路组相联方式下,LRU替换算法需要每行有2位LRU位;直写(Write Throght)方式无需修改位(dirty bit)。因而cache总容量为8K×(1+17+2+4×32)=1184K位。
9以下关于cache大小、主存块大小和cache缺失率之间关系的叙述中,错误的是( C )。
A.cache容量越大,cache缺失率越低
B.主存块大小通常为几十到上百个字节
C.主存块越大,cache缺失率越低
D.主存块大小和cache容量无密切关系
解析: C、主存块太小,则不能很好地利用空间局部性,从而导致缺失率变高,但是,主存块太大,也会使得cache行数变少,即cache中可以存放主存块的位置变少,从而降低命中率。因此,主存块不可以太小,也不可以太大,通常为几十到上百个字节。
10某32位机按字节编址。数据cache有16行,主存块大小为64B,采用2-路组相联映射。对于以下程序A,假定编译时i, j, sum均分配在寄存器中,数组a按行优先方式存放,其首址为3200,则a[1][0]所映射的cache组号、程序A的数据cache命中率各是(D )、( )。
short a[256][256];
……
short sum_array() {
int i, j;
short sum=0;
for (i=0; i < 256; i++)
for (j=0; j < 256; j++)
sum+=a[i][j];
return sum;
}
A.4, 15/16
B.2, 15/16
C.4. 31/32
D.2, 31/32
解析: D、a[1][0]所映射的cache组号为[(3200+(1×256+0)×2)/64] mod (16/2) = 2。
程序A的数据cache命中率分析如下:a[0][0]位于主存第3200/64=50块的起始处,按照数组访问顺序a[0][0]、a[0][1]、……、a[0][255]、a[1][0]、a[1][1]、……、a[1][255]、……,总是每64B/2B=32个数组元素组成一个主存块,被轮流装入数据cache的第2、3、……、7、0、1、…….、7、0、……. 组内的cache行中,因而这每一块的32个数组元素中,总是第一次不命中,以后每次都命中,因而命中率为31/32。
1以下有关早期分页存储管理(自动执行Overlay)方式的叙述中,错误的是( B )。
A.程序员编写程序所用的地址空间称为逻辑地址空间
B.程序员编写程序时应将逻辑地址转换为主存物理地址
C.分页方式主要解决程序文件比主存空间大的问题
D.分页方式可以使程序员编写程序时无需考虑主存容量
解析: B、早期的分页存储管理方式主要解决“程序很大而存放程序的主存很小”的问题。程序员在一个逻辑地址空间中编写程序,不用管主存有多大;运行程序时,由专门的分页管理程序,将程序中的逻辑地址转换为主存的物理地址,并实现程序块在主存的换入和换出操作。因此,地址转换的工作由管理程序自动完成,而不是由编写程序的程序员完成。
2以下有关分页虚拟存储管理方式的叙述中,错误的是( C )。
A.每个进程所占的地址空间称为虚拟地址空间,被划分成若干页面
B.每条指令执行过程中,都需要把指令或数据的虚拟地址转换为物理地址
C.程序执行时,必须把程序所包含的所有代码和数据都装入主存中
D.主存地址空间称为物理(实)地址空间,被划分成大小相等的页框
解析: C、分页虚拟存储管理方式下,每个进程都有一个统一的虚拟地址空间,被划分成大小相等的页面,主存空间被划分成大小相等的页框,程序执行时,主要把正在执行的页面装入主存的页框中,其他还没有执行到的页面可以存放在磁盘中,这样,可以在较小的主存中运行大程序。因此,无需把所有代码和数据都装入主存才能运行程序。
3以下是有关现代虚拟存储管理机制中地址转换的叙述,其中错误的是( D )。
A.地址转换过程中要访问页表项
B.地址转换过程中能发现是否缺页
C.缺页时将转相应异常处理程序执行
D.整个过程主要由操作系统实现
解析: D、虚拟存储管理机制中,地址转换是在指令执行过程中进行的,指令的执行由硬件实现,因而地址转换也由硬件完成,而不是由操作系统软件完成。操作系统生成并修改页表,而由硬件在地址转换过程中查询页表来进行地址转换,并检测是否发生缺页,在发生缺页时,硬件会发出“Page Fault”异常,从而调出相应的异常处理程序进行缺页处理。
4下列命中组合情况中,一次访存过程中不可能发生的是( D )。
A.TLB未命中、cache未命中、Page命中
B.TLB未命中、cache命中、Page命中
C.TLB命中、cache未命中、Page命中
D.TLB未命中、cache命中、Page未命中
解析: D、Page未命中,说明相应信息不在主存,cache中信息是主存信息的副本,因而相应信息肯定不在cache,也就不会cache命中。
5以下是有关虚拟存储管理机制中页表的叙述,其中错误的是( B )。
A.每个页表项中都包含装入位(有效位)
B.一个页表中的表项可以被所有进程访问
C. 页表中每个表项与一个虚页对应
D.系统中每个进程有一个页表
解析: B、页表中的每个表项反映的是对应虚拟页面的位置和使用等信息,只能由操作系统和硬件进行访问,不能被任何用户进程访问。
6以下是有关缺页处理的叙述,其中错误的是( C )。
A.缺页处理过程中需根据页表中给出的磁盘地址去读磁盘数据
B.缺页处理完后要重新执行发生缺页的指令
C.缺页是一种外部中断,需要调用操作系统提供的中断服务程序来处理
D.若对应页表项中的有效位(或存在位)为0,则发生缺页
解析: C、外部中断是指CPU以外的中断请求事件,而缺页是由CPU在执行指令过程中进行地址转换时发现的在CPU内部操作时检测到的异常事件,相应的处理工作由操作系统提供的缺页异常处理程序来完成。
7以下是有关分页式存储管理的叙述,其中错误的是( C )。
A.当从磁盘装入的信息不足一页时会产生页内碎片
B.采用回写(Write Back)写策略,每页对应一个修改位(Dirty Bit)
C.相对于段式存储管理,分页式更利于存储保护
D. 采用全相联映射,每个页可以映射到任何一个空闲的页框中
解析: C、因为分页方式将地址空间划分成大小相等的页面,因而可能有些页面中的有效信息一部分是代码一部分是数据,或者有效信息不足一页,前者不利于存储保护,后者容易造成页内碎片。而分段方式按代码和数据的不同类信息分段管理,显然易于存储保护。
分页方式采用全相联映射方式和Write Back写策略,只要主存中有空闲页框就可以存放任何一个页面,在每次写主存时,都不会同时写磁盘,只有当某一页从主存中替换到磁盘时才可能写磁盘。
8
以下有关快表(TLB)的叙述中,错误的是( C )。
A.快表是一种高速缓存,一定在CPU中
B.引入快表的目的是为了加快地址转换速度
C.在快表中命中时,在L1 cache中一定命中
D.快表中存放的是当前进程的常用页表项
解析: C、在快表中命中,是指当前正在进行地址转换的存储单元所在页面对应的页表项在TLB中,因此,可以直接从TLB中取到物理页框号,而立即生成对应的物理地址。不过,这个物理地址所在的主存块不一定在L1 cache中。
9以下是有关段式存储管理的叙述,其中错误的是( D )。
A.段是逻辑结构上相对独立的程序和数据模块,因此段是可变长的
B.按程序中实际的段来分配主存,所以分配后的存储块是可变长的
C.每个段表项中必须记录对应段在主存的起始位置和段的长度
D.段表项中无需有效位(或存在位),因为每个段都在主存中
10以下给出的事件中, 无需通过异常处理程序进行处理的是( D )。
A.地址越界
B.段不存在
C.缺页故障
D. cache缺失
解析: D、cache缺失由硬件处理,无需调出操作系统中的异常处理程序来处理。
1对于IA-32中的指令“movl 8(%edx, %esi, 4), %edx”,若R[edx]=0000 01B6H,R[esi]=0000 0008H,其源操作数的有效地址EA是( D )。
A.0000 06E8H
B.0000 01F0H
C.0000 01B6H
D.0000 01DEH
解析: D、源操作数的有效地址为R[edx]+R[esi]*4+8=0000 01B6H+0000 0008H*4+8=0000 01DEH。
2以下是有关IA-32段页式虚拟存储管理方式的叙述,其中错误的是( B )。
A.指令中隐含给出的32位有效地址就是32位段内偏移量
B.32位线性地址构成的地址空间就是4GB主存地址空间
C.逻辑地址由16位段选择符和32位段内偏移量组成
D.进程的虚拟地址有48位逻辑地址和32位线性地址两种形式
解析: B、32位线性地址空间是4GB的虚拟地址空间,也就是可执行目标程序(即进程)所在的虚拟地址空间,需要对其进一步进行分页存储管理,访问指令和数据时,应根据页面和页框之间的映射关系进行线性地址到物理地址的转换。
3以下是有关IA-32保护模式下地址转换过程的叙述,其中错误的是( C )。
A.32位物理地址就是指32位主存地址
B.顺序为逻辑地址→线性地址→物理地址
C.采用先分页、再分段的地址转换过程
D.地址转换前先计算出32位有效地址
解析: C、地址转换顺序是先通过分段方式将48位逻辑地址转换为32位线性地址,然后再通过分页方式将32位线性地址转换为32位物理地址。
4以下有关IA-32段选择符的叙述中,错误的是( C )。
A.CS寄存器中RPL字段表示当前特权级CPL
B.段选择符存放在一个16位段寄存器中
C.程序的代码段和数据段共用同一个段选择符
D.段选择符中的高13位为对应段表项的索引
解析: C、IA-32中提供了多个段寄存器,如代码段寄存器CS、数据段寄存器DS、堆栈段寄存器SS等,它们可以分别存放代码段、数据段和堆栈段的段选择符。
5以下有关IA-32段描述符和段描述符表的叙述中,错误的是( A )。
A.段基址低12位总是0,因此段描述符中的段基址字段占20位
B.段描述符分普通段描述符和系统控制段描述符两类
C.段描述符表就是段表,段描述符就是其中的段表项
D.段描述符表分GDT(全局)、LDT(局部)和IDT(中断)三类
解析: A、段描述符中的段基址字段B31~B0占32位,而段限界字段L19~L0占20位。
6以下是有关IA-32中逻辑地址向线性地址转换的叙述,其中错误的是( C )。
A.系统启动时操作系统先对GDT和LDT进行初始化
B.从对应段描述符中取出段基址与段内偏移量相加可得到线性地址
C.每次逻辑地址向线性地址转换都要访问内存中的GDT或LDT
D.GTD和LDT在内存的起始地址分别存放在CPU内不同的地方
解析: C、为了加快IA-32的地址转换过程,CPU中专门设置了段描述符cache,对应每个段寄存器(CS、DS、SS、ES、FS和GS)都有相应的描述符cache。每次段寄存器装入新的段选择符时,就会将对应的段描述符装入描述符cache中,在逻辑地址到线性地址转换时,MMU直接用描述符cache中的信息,不必访问内存中的GDT和LDT。
7以下是有关IA-32/Linux系统分段机制的叙述,其中错误的是( A )。
A.内核段描述符在GDT中,而用户段描述符在LDT中
B.将内核代码段和内核数据段的段基址都设为0
C.将用户代码段和用户数据段的段基址都设为0
D.段描述符中段存在位P为1,故不以段为单位分配内存
解析: A、Linux系统中,将内核代码段、内核数据段、用户代码段和用户数据段对应的段描述符都包含在全局描述符表GDT中,分别位于GDT的第12、13、14和15项。
8已知变量y和数组a都是int型,a的首地址为0x8049b00。假设编译器将a的首地址分配在ECX中,数组的下标变量i分配在EDX中,y分配在EAX中,C语言赋值语句“y=a[i];”被编译为指令“movl (%ecx, %edx, 4), %eax”。在IA-32/Linux环境下执行该指令,则当i=150时,得到的存储器操作数的线性地址是( B )。
A.0x8049b9a
B.0x8049d58
C.0x804a100
D.0x8049b00
解析: B、Linux中将所有段的段基址都初始化为0,因而存储器操作数a[150]的线性地址=段基址+有效地址=0+R[ecx]+R[edx]*4=0x8049b00+150*4=0x8049b00+600=0x8049b00+0x258=0x8049d58。
9以下是有关IA-32中线性地址向物理地址转换过程的叙述,其中错误的是( B )。
A.4GB线性地址空间被划分成1M个页面,每个页面大小为4KB
B.每次地址转换都需要先访问页目录表,然后访问页表,根据页表项得到物理地址
C.页目录表中的页目录项和页表中的页表项都占32位,且两者的结构完全相同
D.32位线性地址分成10位页目录索引、10位页表索引和12位页内偏移量三个字段
解析: B、IA-32中有TLB,因此,每次线性地址向物理地址转换时,总是先访问TLB,当TLB命中时,就无需访问主存中的页目录表和页表。
10
以下是有关IA-32存储管理控制寄存器的叙述,其中错误的是( C )。
A.若要启用分页机制,则CR0控制寄存器中的PE和PG都要置1
B.CR3控制寄存器用于存放页目录表在主存的起始地址
C.用户进程和操作系统内核都可以访问存储管理控制寄存器
D.CR2控制寄存器用于存放发生页故障(Page Fault)的线性地址
解析: C、IA-32中提供的存储管理控制寄存器用于操作系统内核进行存储管理,访问这些控制寄存器的相关指令都是特权指令,只能在内核态使用,而用户进程中不能使用这些特权指令,因而用户进程不能访问这些控制寄存器。