页式虚拟存储器的含义是小题 某计算机虚拟地址32位,物理内存128MB,页大小4KB。(1)程序虚拟空间最

1555人阅读
深入理解计算机系统(7)
&&& 它将主存看成是一个存储在磁盘上的地址空间的高速缓存,在主存中只保存活动区域,并根据需要在磁盘和主存之间来回传送数据,通过这种方式,它高效地使用了主存。其实这一章还是讲解虚拟内存的,也就是和内核中的内存管理相关。
它为每个进程提供了一致的地址空间,从而简化了存储器管理
它保护了每个进程的地址空间不被其他进程破坏。
在硬件异常、汇编器、链接器、加载器、共享对象、文件和进程的设计中扮演着重要角色。
存储器让应用程序有了强大的能力,可以创建和销毁存储器片、将存储器片映射到磁盘文件的某个部分,以及与其他进程共享存储器。
一、物理和虚拟寻址
&&& 现在都开始虚拟地址,使用虚拟地址时,CPU通过生成一个虚拟地址来访问主存,这个虚拟地址在被送到存储器之前先转换成适当的物理地址。将一个虚拟地址转换为物理地址的任务叫做地址翻译。就像异常处理一样,地址翻译需要CPU硬件和操作系统之间的紧密合作。CPU芯片上叫做存储器管理单元的专用硬件,利用存放在主存中的查询表来动态翻译虚拟地址,该表的内容是由操作系统管理的。
二、地址空间
&&& 地址空间时一个非负整数地址的有序集合,如果地址空间中的整数是连续的,那么我们说它是一个线性地址空间。CPU从一个有N=2n个地址空间中生成虚拟地址,这个地址空间称为虚拟地址空间。一个地址空间的大小事由表示最大地址所需要的位数来描述的。一个包含N=2n个地址的虚拟地址空间就叫做一个n位地址空间。一个系统还有一个物理地址空间,它与系统中物理存储器的字节数目相对应。主存中的每个字节都有一个选自虚拟地址空间的虚拟地址和一个选自物理地址空间的物理地。
三、虚拟存储器作为缓存的工具
&&& 虚拟存储器被组织为一个由存放在磁盘上的N个连续的字节大小的单元组成的数组。每个字节都有一个唯一的虚拟地址,这个唯一的虚拟地址是作为到数组的索引的。磁盘上数据的内容被缓存在主存中。和存储器层次结构中其他缓存一样,磁盘上的数据被分割成块,这些块作为磁盘和主存之间的传输单元。
四、虚拟存储器作为存储器管理的工具
&&& 操作系统为每个进程提供了一个单独的页表,因而也就是一个独立的虚拟地址空间。在下图中,进程I的页表VP1映射到PP2,VP2映射到PP7。相似地,进程J的页表将VP1映射到PP7,VP2映射到PP0。多个虚拟页面可以映射到同一个共享物理页面上。
将一组连续的虚拟页映射到任意一个文件中的任意位置的表示法称作存储器映射。
五、虚拟存储器作为存储器保护的工具
六、地址翻译
&&& 实现翻译的过程,如何利用页表来实现这种映射。CPU中的一个控制寄存器,页表基址寄存器(PTBR)指向当前页表。n位的虚拟地址包含两个部分:一个p位的虚拟页面偏移和一个(n-p)位的虚拟页号。MMU利用VPN来选择适当的PTE(页表条目,一个页表其实就是多个页表条目的数组)。页面命中,CPU硬件执行的步骤:
处理器生成一个虚拟地址,并把它传送给MMUMMU生成PTE地址,并从高速缓存/主存请求得到它高速缓存/主存向MMU返回PTEMMU构造物理地址,并把它传送给高速缓存/主存高速缓存/主存返回所请求的数据字给处理器
&&& 页面命中完全是由硬件来处理的,与之不同的是,处理缺页要求硬件和操作系统内核协作完成:
前三步都是一样的PTE中的有效位为0,所以MMU触发了一次异常,传递CPU中的控制到操系统内核中的缺页异常处理程序。缺页处理程序确定出物理存储器中的牺牲页,如果这个页面被修改了,则把它换出到磁盘。缺页处理程序页面调入新的页面,并更新存储器中的PTE缺页处理程序返回到原来的进程,再次执行导致缺页的指令。CPU将引起缺页的虚拟地址重新发送给MMU
&&& 上面是前三步的过程,在页面命中的时候进行的处理。如果页面没有命中。
整体过程将是上图所示。最后还是处理器再次发送虚拟地址给MMU,不过这次不会导致缺页异常。
ps:由上图可知,虚拟页偏移量(VPO)和物理页偏移量(PPO)大小是相等的,因为虚拟页偏移量就是虚拟页的大小,对于给定的虚拟地址位数和物理地址位数就可以构造各个量的大小。比如32位虚拟地址空间和24为物理地址,对于大小为1KB的页面。那么VPO和PPO的大小为10位,22位的虚拟页号,物理页号为12位。
&&& 但是在现在的系统中,都是结合高速缓存和虚拟存储器一起使用的,大多数系统都是选择物理地址来访问高速缓存。
&&& 每次CPU产生一个虚拟地址,MMU就必须查阅一个PTE,以便将虚拟地址翻译为物理地址。在最糟糕的情况下,这又会要求从存储器取一次数据,代价是几十到几百个周期。如果PTE碰巧在L1中,那么开销下降到1个或2个周期,试图先去这种开销,他们在MMU中包括了一个关于PTE的小的缓存,称为翻译后备缓冲器(TLB),它是一个小的。虚拟寻址的缓存,其中每一行都保存着一个由单个PTE组成的块。
下面看看在TLB命中和不命中的情况下都是什么处理流程:
&&& CPU产生一个虚拟地址
&&& MMU从TLB中取出相应的PTE
&&& MMU将这个虚拟地址翻译成一个屋里地址,并且将它发送到高速缓冲/主存
&&& 高速缓存/主存将所请求的数据字返回给CPU。
&&& 如果TLB不命中时,MMU必须从L1缓存中取出相应的PTE,新取出的PTE存放在TLB中,可能覆盖一个已经存在的条目。
&&& 多级页表
&&& 如果我们有一个32位的地址空间,4KB的页面和一个4字节的PTE(就按照这样的说法,如果4KB的页面,那么虚拟页面的偏移位需要12位),那么即使应用所引用的只是虚拟地址空间中的很小的一部分,页总是需要一个4MB的页表驻留在存储器中(为啥需要4MB的空间呢,因为32位地址中间,4KB的页面,可能会用1MB的页面,PTE中存储的就是页面的地址,那么就是1MB个地址,每个地址需要4字节,那么需要4MB的空间存储一个地址空间)。
&&& 常用的方法就是压缩页表,使用层次结构的页表,假设32位虚拟地址空间被分为4KB的页,而每个页表条目都是4字节。还假设在这一时刻,虚拟地址空间有如下形式:存储器的前2K个页面分配给了代码和数据,接下来的6K个页面还未分配,再接下来的1023个页面页未分配,接来下的1个页面分配给了用户栈。
&&& 一级页表的每个PTE负责映射虚拟地址空间中一个4MB的片,这里每一片都是由1024个连续的页面组成的。假设地址空间为4GB,1024个PTE已经足够覆盖整个空间了。
&&& 如果偏i中的每个页面都未被分配,那么一级PTEi就为空,上图中的片2~7是未被分配的。如果在片i中至少有一个页是分配了的,那么一级PTEi就指向一个二级页表的基址。上图中的片0、1、8的所有或则部分已被分配,所以他们的一级PTE就指向二级页表。
&&& 二级页表中的每个PTE都负责映射一个4KB的虚拟存储器页面,就像我们查看一级页表一样。注意,使用4字节的PTE,每个一级和二级页表都是4KB字节,这刚好和一个页面的大小一样的(为啥呢?4字节的PTE,一个页表有1024个页表项,所以一个页表就是4KB)。
&&& 如果一级页表中的一个PTE是空的,那么相应的二级页表就根本不会存在,这代表这一种巨大的潜在节约;只有一级页表才需要总是存在主存中;虚拟存储器系统可以在需要时创建、页面调入或调出二级页表,这就减少了主存的压力;只有最经常使用的二级页表才需要缓存在主存中。
&&& 上图展示了使用k级页表层次结构的地址翻译。虚拟地址被划分为k个VPN和1个VPO,每个VPNi都是一个到第i级页表的索引,其中1&=i&=k。第k级页表中的每个PTE包含某个物理页面的PPN或一个磁盘块的地址。在能够确定PPN之前,MMU必须访问K个PTE。对于只有一级的页表结构,PPO和VPO是相同的。
&&& 访问k个PTE,第一眼看上去昂贵不切实际,这TLB能够起作用,是通过将不同层次上页表的PTE缓存起来。实际上,带多级页表的地址翻译并不比单级页表的慢很多。
七、存储器映射
&&& linux虚拟存储器系统的存储映射问题:
&&& linux为每个进程维护一个单独的虚拟地址空间。
&&& 内核虚拟存储器包含内核中的代码和数据结构。内核虚拟存储器的某些区域被映射到所有进程共享的物理页面。例如,每个进程共享内核的代码和全局数据结构。linux页将一组连续的虚拟页面映射到相应的一组连续的物理页面。这就为内核提供了一种遍历的方法来访问物理存储器中任何特定的位置,例如,当它需要访问页表,或在一些设备上执行存储器映射的I/O操作,而这些设备被映射到特定的物理储存器位置时。
&&& 内核虚拟存储器的其他区域包含每个进程都不相同的数据。例如,页表,内核在进程的上下文中执行代码时使用的栈,以及记录虚拟地址空间当前组织的各种数据结构。
&&& 上图强调了记录一个进程中虚拟存储器区域的内核数据结构。内核为系统中的每个进程维护一个单独的任务结构(源代码中的task_struct)。任务结构中的元素包含或者指向内核运行该进程所需要的所有信息(例如,PID,指向用户栈的指针、可执行目标文件的名字以及程序计数器)
&&& task_struct中的一个条码指向mm_struct,它描述了虚拟存储器的当前状态。其中pgd指向第一级页表(页全局目录)的基址。而mmap指向一个vm_area_structs的链表,其中每个vm_area_structs都描述了当前虚拟地址空间的一个区域。当内核运行这个进程时,它就将pgdf存放在CR3控制寄存器中。
vm_start:指向这个区域的起始处vm_end:指向这个区域的结束处vm_port:描述这个区域内包含的所有页的读写徐和权限vm_flags:描述这个区域内的页面是与其他进程共享的,还是这个进程私有的vm_next:指向链表中下一个区域结构。
&ps:虚拟存储器是对主存的一个抽象。支持虚拟存储器的处理器通过使用一种叫做虚拟寻址的间接形式来引用主存。处理器产生一个虚拟地址,在被发送到主存之前,这个地址被翻译成一个物理地址。从虚拟地址空间到物理地址翻译要求硬件和软件紧密合作。专门的硬件通过使用页表来翻译虚拟地址,页表的内容是由操作系统提供的。
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1721628次
积分:27101
积分:27101
排名:第194名
原创:859篇
转载:219篇
评论:306条
阅读:5237
文章:23篇
阅读:53449
文章:31篇
阅读:59667
文章:14篇
阅读:20443
(1)(7)(8)(6)(1)(2)(140)(49)(3)(33)(38)(48)(32)(53)(33)(10)(17)(11)(73)(67)(21)(36)(65)(64)(126)(66)(45)(17)中任一个物理页面;解.本题考查的相关知识点:段式虚拟存储器的工作原;按照用户程序的逻辑功能,将程序化分成若干个独立的;依照页式虚拟存储器,先将用户里的辅存程序分成若干;在段式管理方式中,每个程序段都有独立逻辑功能,便;段式虚拟存储器的工作原理与页式虚拟存储器类似,不;当然,CPU访问的段不在主存中,还需要将辅存中有;§3.8.2页式虚拟存储器;例3.18.某
中任一个物理页面。如果页面大小为4KB,则页内地址共12位,虚拟空间的虚拟地址,去掉页内地址,就是页面地址,简称页号,即虚拟地址(逻辑地址)的高位地址。
给定一个虚拟地址(逻辑地址),从虚拟存储器中取出该单元的数据的过程是:首先必须查页表,进行虚实地址转换。页表中存放着各逻辑页面调入主页时的对应物理页号,如果所读逻辑页面已调入主存,可按页表给出该逻辑页面装入主存的物理页号作为访问主存的高位地址,再把逻辑地址的页内地址作为物理页面的页内地址(被访问主存单元的低位地址),二者合起来构成主存的物理地址。如果虚拟访问的页面还为调入主存,则必须先将磁盘中该页调入主存一个空闲页面中,并在页表中填入有关物理页号。然后根据主存地址访问主存单元,即可达到访问对应虚拟地址对应单元的目的。
例3.17.什么叫段式虚拟存储器?什么是段表?说明其工作原理。
解.本题考查的相关知识点:段式虚拟存储器的工作原理。
按照用户程序的逻辑功能,将程序化分成若干个独立的程序模块,这些具有独立功能的程序部分称为程序段,简称段。段作为独立的功能单位可以被其他程序调用。因此在主存和辅存之间调度数据时,以段为单位传送是合理的。
依照页式虚拟存储器,先将用户里的辅存程序分成若干段,仿照页表,设计一个段表,段表给出每段程序调入主存时的存放位置,包括该段的起始地址、段长以及装入特征位等信息。在这种虚拟存储器中,程序调入主存时也按段划分,这种存储管理方式称为段式管理。
在段式管理方式中,每个程序段都有独立逻辑功能,便于多道程序共享,但各段长度不同,各段的存储位置如起点、终点不固定,给调度时分配主存空间造成很大困难也容易在主存中留下无用的碎片,造成浪费。
段式虚拟存储器的工作原理与页式虚拟存储器类似,不同的是传送数据单位是段,CPU访问虚存时提供虚拟地址,先进行虚实地址转换,需要查段表,找出该段在主存中的起始位置,再加上虚拟地址中低位部分提供的段内地址,其和即为主存的实际地址(物理地址),按实存地址访问主存,并将数据送给CPU,即达到CPU的要求。
当然,CPU访问的段不在主存中,还需要将辅存中有关的段调入主存中一个空闲的连续存储区中,并填写段表,说明该段在主存中的起始地址和段长,并把装入位置“1”。CPU要读出该段内容时,需将该段在主存中的起始地址加上虚拟地址低位提供的段内地址,即可得到要访问的主存单元地址。
§3.8.2页式虚拟存储器
例3.18.某计算机的虚拟存储系统有40位虚拟地址,32位实际地址,虚页为1M (220)。假设有效位、保护位、修改位和使用位共用去4位(valid、protection、dirty、wu),所有虚页都在使用。
1.计算页表大小。
2.计算页面大小。
3.画出该虚拟存储系统的虚实地址转换逻辑图(包括虚地址、实地址、页表、页表寄存器及相互关系)。
解.本题考查的相关知识点:页式虚拟存储器。
因为虚拟存储系统有40位虚拟地址,32位实际地址,虚页为1M (220),所以主存地址格式为:
虚拟地址格式为:
1.页表的字长=物理页号位数12+有效位、保护位、修改位和使用位共4位-16位。页表的单元数= lM(220)。所以页表大小=1M×16。
2.页面大小= 1M(220)。
3.虚实地址转换示意图如图3.8所示。
3.19.虚拟存储器系统采用页式内存管理,假定内存容量为4个页面,开始时是空的,页面
访问地址流为:,使用LRU页面替换算法和FIFO 算法(假设开始时内存为空)。
1.设主存容量为3个页,两替换算法各自的命中率是多少?
2.当主存页面在增加到4个页时,两替换算法各自的命中率又是多少?、
解.本题考查的相关知识点:页式虚拟存储器的替换算法。
1.主存页面为3时的调页情况见表3.2。
采用LRU算法命中率为9÷20 - 45%,采用FIFO算法的命中率为9÷20 - 45%。
2.主存页面为4时的调页情况见表3.3。
采用LRU算法命中率为14÷20=70%,采用FIFO算法的命中率为14÷20 - 70%。 §3.8.3段式虚拟存储器
§3.8.4段页式虚拟存储器
53.8.5 TLB(快表)
计算机组成原理第3章习题
习题3.1.从下列关于存储器的叙述中,选择出正确答案:一
A.多体交叉存储器主要解决扩充容量问题。
B.Cache的功能全由硬件完成。
C.Cache与主存统一编址,即主存空间的某一部分属于Cache。
D.“主存一外存”的存储层次是为了弥补主存速度不足。
习题3.2.在1K×8的存储器芯片中,采用双译码方式,译码器的输出信号有____条。
习题3.3.某计算机字长为32位,存储器容量为4MB,若按字编址,其字地址范围是0到____
习题3.4.如果一个存储单元被访问,则可能这个存储单元会很快地再次被访问,这称为____ 局部性。
习题3.5.虚拟存储器的功能不包括____。
A.扩大程序的存储空间
B.隔离不同进程的地址空间
C.使程序能够在内存中浮动(重定位)
D.增加主存的容量
习题3.6.主存中的块可以放入cache中的任何位置,这种cache是____的。
D.直接映像
习题3.7.主存中的块可以放入cache中的唯一位置,这种cache是____的。
D.直接映像
习题3.8.对于提高cache命中率,无效的措施是____。
A.降低相联度
B.设置替换缓存保存刚被替换的块
C.通过编译优化改善程序的访存局部性
D.增加cache的容量
习题3.9.在cache更新策略中,在cache命中时把数据同时写入cache和主存的策略是____
C.按写分配法
D.不按写分配法
习题3.10.支持程序动态定位的寻址方式是____。
A.基址寻址
B.间接寻址
D.直接寻址
习题3.11.某RAM芯片,其存储容量为1024×16位,该芯片的地址线和数据线数目分别 为____。
C.1024,4 习
D.1024,16
题3.12.采用虚拟存储器的主要目的是____。
A.提高存储器的速度
B.增加存储器的容量
C.降低存储器的成本
D.上述三者
习题3.13.在虚拟存储器中,____,主存的命中率越高。
A.页面越大
B.主存容量越大
D.辅存容量越大
习题3.14.采用cache的目的是____。
A.提高存储器的速度
B.增加存储器的容量
C.降低存储器的成本
D.上述三者
习题3.15.某一动态RAM芯片其容量为16K×1,除电源线、接地线和刷新线外,该芯片的最 小引脚数目应为____。
习题3.16.在页式虚拟存储器中,为了提高主存的命中率,可以采取的措施是――。
A.增大主存容量
B.增大辅存容量
C.增大cache容量
D.将LRU替换算法改为FIFO
习题3.17.某计算机字长16位,其存储容量为2MB,若按半字编址,它的寻址范围是一
A.0~8M -1
B.O~4M -1
C.0~2M -1
D.0~1M -1
习题3.18.某计算机字长32位,其存储容量为8MB,若按双字编址,它的寻址范围是一
A.0~256M -1
B.O~512M -1
C.0~1M -1
D.0~2M -1
习题3.19.下列关于存储器的描述,正确的是____。
A. CPU访问时间由存储器容量决定
B.ROM和RAM在存储器中是统一编址的
C.ROM中任一单元可随机访问
D.DRAM是破坏性读出,因此需要读后重写
习题3.20.以下四种类项的半导体存储器中,以传输同样多的字为比较条件,则读出数据传输率最高的是____。
C.闪速存储器
习题3.21.某CPU提供16条地址线(Ao~Ais)、8条数据线(Do~D7)及R/W控制信号,
目前使用的存储器容量为8KB,其中4KB为ROM,采用2K×8位的芯片,其地址范围为
OOOOH~OFFFH; 4KB为SRAM,采用4K×2位芯片,其地址范围为4000H~4FFFH。问:
1.需RAM和ROM芯片各多少?
2.画出CPU与存储器之间的连线图(译码器自定)。
习题3.22.某CPU有16条地址线和8条数据线。从0地址开始已有40KB内存,现要在40KB 地址空间之后再增加8KB RAM(地址连续)。如用4K×8位SRAM芯片来扩容,试设计CPU 与8KB SRAM的连接图(片选CS、写WE低电平有效)。
习题3.23.何为页表和快表?它们各起什么作用?
习题3.24. 16K×1位DRAM芯片的行数和列数各为多少?如用这种规格的芯片构成一个 32K×8的存储器需要多少片?设刷新周期为1ms,存取周期为50ns,求出该存储器在一个刷新周期内所占用的刷新时间以及两次刷新操作之间的时间间隔。
习题3.25.某微机的寻址范围为64KB,由8片8KB芯片组成,每个芯片由8K×8位组成。
1.请写出每个芯片的寻址范围。
2.如果运行时发现无论往哪个芯片存放8KB数据,以AOOOH起始地址的存储芯片都有相
同的数据。请分析故障原因。
3.若发现译码器中的地址线A13与CPU断线,并搭接到高电平的故障,问后果如何? 习题3.26.如果从4体交错存储器取出16个地址连续编号的数据,一个体的存储周期为t,总共需多少时间?
习题3.27.在计算机中以DRAM组成的存储器,要求其进行读写操作的来源有哪些?如果它 们同时发出访问请求该如何处理?
习题3.28.假如CPU按以下地址相继访问存储器(以十进制表示);. .028510存储器为4体交错存储器,求该存储器比单体存储器平均访问速率提高多
三亿文库包含各类专业文献、应用写作文书、中学教育、各类资格考试、幼儿教育、小学教育、71最近的计算机专业知识_图文等内容。 
 如何恢复手机删除的照片 手机照片误删恢复最新教程_电脑基础知识_IT/计算机_专业资料。如何恢复手机删除的照片 手机照片误删恢复最新教程 ...  Windows_XP系统的电脑怎么上INStagram的图文流程_电脑基础知识_IT/计算机_专业资料...Windows XP 系统的电脑怎么上 INStagram 的图文流程 1.在运行 Windows XP 的...  WindowsXP系统的电脑怎么上INStagram的图文流程_电脑基础知识_IT/计算机_专业资料。...Windows XP 系统的电脑怎么上 INStagram 的图文流程 1.在运行 Windows XP 的...  电脑基础维修知识_电脑基础知识_IT/计算机_专业资料。小白必备的维修基础知识 ...3.服务未启动(最近修到一台) 第一种情况的话,先右键计算机―管理―设备管理...  计算机知识_电脑基础知识_IT/计算机_专业资料。WORD 知识 1. 秒懂 Word 自动...打开 Word2013 后点击【文件】-【打开】-【最近】-将右边的滚动条拖到最下方...  最新计算机信息系统保密管理制度范文_电脑基础知识_IT/计算机_专业资料。最新计算机信息系统保密管理制度范文 ――(全文 37 页)―― 欢迎下载 1 第一章 总则 第一...  最近很火的图docx_电脑基础知识_IT/计算机_专业资料 暂无评价|0人阅读|0次下载|举报文档 最近很火的图docx_电脑基础知识_IT/计算机_专业资料。很火的图 很火...  如何使用u大师4.3安装win8.132位系统【图文教程】_电脑基础知识_IT/计算机_专业资料。如何使用 u 大师 4.3 安装 win8.132 位系统 最近有读者说自己想体验一下...  WinXP上INStagram设置的图文流程_关注明星_电脑基础知识_IT/计算机_专业资料。WinXP 上 INStagram 设置的图文流程_关注明星使用方法:一、 在电脑桌面新建一个文本,更改...君,已阅读到文档的结尾了呢~~
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
计算机组成原理试题
(2013年全国硕士研究生入学统一考试)
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口京ICP证号&&
京网文[3号&&
Copyright (C) 2017 Baidu}

我要回帖

更多关于 虚拟存储器 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信