第八章虚拟内存:virtual memory1:硬件和控制结构:hardware and control structures08软件工程一班裴晓禹1:一个进程可以被换入或换出主存,使得进程在执行过程中的不同时刻占据不同的区域。
进程中所有的存储器访问都是逻辑地址,这些逻辑地址在运行时动态地被转换成物理地址。
2:一个进程可以划分成许多块,在执行过程中,这些块不需要连续地位于主存中。
3:在进程的执行过程中,该进程的所有页和所有段不需要都在主存中。
2:程序的执行:execution of a program1:操作系统将一些程序的块带到主存。
2:进程执行中的任何时候都在主存中的部分被定义成进程的常驻集。
3:当处理器需要访问一个不在主存中的逻辑地址,则会产生一个中断,说明产生了内存访问故障。
操作系统将被中断的进程置于阻塞状态,并取得控制。
4:为了能继续执行这个进程,操作系统要把包含引发故障的逻辑地址和进程块取进主存1:操作系统产生一个磁盘I\O读请求。
2:产生I\O请求后,在执行磁盘I\O,期间操作系统可以分派另一个进程运行。
3:一旦需要的块被取进主存,则产生一个I\O中断,控制被交回操作系统,而操作系统把由于缺少该块而被阻塞的进程置回到就绪态。
3:分割进程的优点:advantages of breaking up a process1:在主存中保留多个进程:1:对任何特定的进程都仅仅装入它的某些块,所以有足够的空间放置更多的进程.2:在任何时刻这些进程中都能至少有1个处于就绪态,于是处理器得到更有效的利用2:进程可以比主存的全部空间还大。
4:进程的种类:types of memory1:实存储器real memory:由于一个进程只能在一个主存中执行,因此这个存储器称作实存储器。
2:虚拟内存virtual memory:程序员和用户通常感觉到一个更大的内存,通常它被分配到磁盘上,称作虚拟内存。
虚存允许更有效的多道程序设计,并解除了用户与主存之间没有必要地紧密约束。
5:系统抖动(颠簸):thrashing1:当操作系统读取一块时,它必须把另一块扔出。
2:处理器的大部分时间都用于交换块,而不是执行指令。
6:局部性原理:principle of locality1:局部性原理描述了一个进程中程序和数据应用的集簇现象。
2:很短的时间内仅需要访问进程的一部分块是合理的。
3:可以对在不远的将来可能会访问的块进行猜测。
4:虚拟内存比较实用而且有效。
7:虚拟内存需要的支持:support needed for virtual memory1:必须有对采用的分页或分段方案的硬件支持。
2:操作系统必须有管理页或段在主存和辅助存储器之间的移动的软件。
8:分页:paging1:通常每个进程都有一个唯一的页表。
2:每个页表项(PTE)包含有与主存中的页相对应的帧号。
由于一个进程可能只有一部分在主存中,因而每个页表项需要一位(P)来表示它所对应的页当前是否在主存中。
3:当考虑到基于分页的虚拟内存方案时也同样需要页表。
PS:MMS将virtualaddress在硬件配合下转成physical address9:虚拟地址和页表项:virtual address and page table entry10:页表项:(PTE)11:页表中的修改位:modify bit in page table1:页表项中需要一个控制位:修改为。
表示相应页的内容从上一次装入主存中到现在是否已经改变。
2:如果没有改变,则需要把该页换出时,不需要用页框中的内容更新该页。
12:地址的翻译(映射):address translation(mapping)13:地址翻译(联系):address translation(contact)14:页表:(page tables)1:页表项可能占据大量的主存。
2:页表也保存在虚存中。
3:当一个进程正在运行的过程中,它的页表至少有一部分在主存中。
15:两级层次32位页表:two-level scheme for 32-bit address16:两级层次页表:two-level scheme1:2:17:逆向页表:inverted page table1:逆向页表的各种变体已用于PowerPC,UltraSPARC,和IA-64IA-64体系结构中。
2:虚拟地址的页号部分使用一个简单的散列函数映射到哈希表中。
3:哈希表包含一个反向表的指针,而反向表中包含页表项。
4:不论有多少进程、支持多少虚拟页、页表都只需要实存中的一个固定的部分。
18:逆向页表的内容:inverted page table1:页号:page number2:进程标识符:process identifier3:控制位:control bits4:链指针:chain pointer19:转移后备缓冲器:translation lookaside buffer(简称:TLB)1:给定一个虚拟地址,处理器首先检查TLB。
2:如果需要的页表项在其中(命中“TLB”),则检索页框并形成实地址。
3:如果没有找到需要的页表项(TLB未命中),则处理器用页号检索进程页表,并检查相应的页表项。
4:如果”存在位”已置位,则该页在主存中,处理器从页表项中检索页框号以形成实地址.如果“存在位”没有置位,则表示需要的位不在主存中,这时将产生一次存储器的访问故障,页错误pagefault5:处理器同时更新TLB,使其包含这个新的页表项。
20:转移后备缓冲器的用法:use of a translation lookaside buffer命中装入页页表未命中页框号页错误21:分页和转移后备缓冲器的操作:operation of paging and translation lookaside buffer返回故障指令页错误处理例程OS通知CPU通知从磁盘读取该页CPU激活该I\O硬件该页从磁盘传送到主存中页表更新访问页表该页是否在主存中更新TLBCPU产生物理地址执行页替换22:页表项的直接查找和关联查找:direct versus associative lookup for page table entries23:转移后备缓冲器和高速缓冲操作:translation lookaside buffer and cache operationTLB操作虚拟地址页号偏移量未命中命中操作实地址命中值标记其余部分未命中页表24:页尺寸:page size1:页越小,内部碎片的总量越少。
2:页越小,每个进程需要的页的数目就越多。
3:每个进程需要的页的数目就越多就意味着更大的页表。
4:大的页表就意味着很大部分的页表在虚存中。
5:二级内存用于大块数据的有效传递,所以大的页表较好。
6:如果页尺寸非常小,那么每个进程在主存中有较多数目的页。
7:一段时间后,内存中的页都包含有最近访问的部分,因此,页错误率比较低。
8:当页尺寸增加时,每一个页包含的单元和任何一个最近访问过的单元越来越远。
主存值25:页型的分页行为:typical paging behavior of a program页大小分配的页框数目P表示整个进程的大小,W表示工作集的大小,N表示进程中的总页数。
26:页面大小的例子:example page sizes27:分段:segment1:段的大小可能是不相等的,并且是动态地。
2:简化不断增长的数据结构的处理。
3:允许进程独立的改变或重新编译,而不要求整个集合重新链接和重新加载。
4:有助于进程间的共享。
5:有助于保护。
28:段表:segment tables1:每个进程都有自己的段表,当所有的段都载入到主存的时候,为该进程创建一个段表并载入主存2:每个段表项包含相应段在主存中的起始地址和段的长度。
3:由于一个进程可能只有一部分段在主存,因而每个段表项中需要有一位表明相应的段是否在主存中4:段表项需要修改位用于表明相应的段从上一次被装入主存到目前为止其内容是否被改变。
29:段表表项:Segment table entries30:分段系统中的地址转换:address translation in segmentation system31:分页和分段的结合:combined paging and segmentation1:分页对程序员是透明的。
2:分段对程序员是可见的。
3:每个段依次划分成许多固定大小的页。
32:分段分页相结合的系统中的地址转换:address translation in a segmentation\paging system段表指针33:段之间的保护关系:protection relationship between segmentsNot access allowed:不允许访问branch instruction(not allowed):跳转指令(不允许)reference to data(allowed):访问数据(允许)reference to data(not allowed):访问数据(不允许)34:读取策略:fetch policy1:读取策略确定一页何时取入主存。
2:对于请求式分页,只有当访问到某页中的一个单元时才将该页取入主存。
●当一个进程第一次启动时,会出现一阵大量的页错误。
3:预约式分页读取的页大多数都没有引用到,这个策略师低效的。
●预约式分页利用了大多数辅存设备(如磁盘)的特性,这些设备有寻道时间和合理时间的延迟。
如果一个进程的页被连续存储在辅存中,则一次读取许多连续的页比隔一段时间读取一页要更有效。
35:放置策略:placement policy1:防治策略决定一个进程驻留在实存中的什么地方。
2:不会翻译3:36:替换策略:replacement policy1:应该换出哪一页?2:移出最近最不可能访问的页3:大多数策略都基于过去的行为来预测将来的行为。
37:页框锁定:frame locking1:如果一个页框被锁定时,之前保存的该页框中的页就不能被替换。
2:大部分操作系统内核就保存在锁定的也框中。
3:大部分重要的控制结构就保存在锁定的也框中。
4:I\O缓冲区就保存在锁定的也框中。
5:锁定是通过给每个帧关联一个lock位实现的。
38:替换页的基本算法:1:最佳:optimal policy(OPT)2:最近最少使用:lease recently used(LRU)3:先进先出:first-in,first-out(FIFO)4:时钟:clock39:最佳:optimal policy1:选择替换下次访问距当前时间最长的那些页。
2:但是由于它要求操作系统必须知道将来的事件,显然这是不可能实现的。