b.最佳适应法:将作业分配到主存中与它所需大小最接近的一个可用空闲区中;(要求分区表或自由链接表按照空闲区从小到大的次序排列) c.最坏适应法:将作业分配到主存中最大的空闲区中;(要求分区表或自由链接表按照空闲区从大到小的次序排列) ②回收方法:
a.释放区与上下两个空闲区相邻,在这种情况下,将三个空闲区合并为一个空闲区;
b.释放区与上空闲区相邻,在这种情况下,将释放区与上空闲区合并为一个空闲区;
c.释放区与下空闲区相邻,在这种情况下,将释放区与下空闲区合并为一个空闲区;
d.释放区与上下两个空闲区都不相邻,在这种情况下,释放区作为一个新的空闲可用区插入到可用分区表或自由链表中;
③数据结构:可用分区表或可用分区自由链表; ④地址变换过程:采用动态重定位装入作业,当作业执行时由硬件地址转换机构完成地址转换(基址寄存器,限长寄存器);
⑤分区共享:各道作业的共享存储区域部分有相同的基址/限长值,就可实现分区共享;
⑥分区保护:对共享区的信息规定只能执行或读出,不能写入; ⑦分区存储管理的优缺点:
a.优点:实现了多道程序的设计,从而提高了系统资源的利用率;系统要求的硬件支持少,管理简单,实现容易;
b.缺点:由于作业在装入时的连续性,导致主存利用率不高;主存的扩充只能采用覆盖和交换技术,无法真正实现存储器;
(2)页式存储管理:页式存储器管理取消了存储分配的连续性,它能够将用户进程分配到不连续的存储单元中连续执行;(根据作业装入主存的时机不同,一般分为:1,静态分页管理2,虚拟分页管理) 分页存储器的逻辑地址格式:
页号 单元号 分配的考虑:将进程的页分配到主存的块中。
·静态分页管理:用户作业在开始执行以前,将该作业的程序和数据全部装入到主存中,然后,操作系统通过页表和硬件地址变换机构实现逻辑地址到物理地址的转换,从而执行用户程序; ① 分配回收算法:依据存储页框表,请求表和页表实现; ②地址变换:首先用户作业提出存储分配的要求,此时操作系统根据主存页框的大小将进程要求的存储空间分成相应的页面;根据主存的实际情况,将进程的每个页面分配到主存页框中, 系统分配并设置页表的内容,此时,系统完成用户进程的存储器分配;当用户进程开始执行时,系统首先设置控制寄存器的内容,控制寄存器包括页表长度和页表起始地址两项;为了对逻辑地址进行变换,由硬件组成的地址变换机构必须将其分成两部分—页号和页内偏移;根据逻辑地址中页号在页表中找到相应的页框号;将页表中的页框号和逻辑地址中的页内偏移分别写入绝对地址中的相应位置上;然后根绝绝对地址提供的页框号和页内偏移计算出存储空间的物理地址,用户进程可以访问主存中的绝对地址,取出数据或取出指令执行;
③快表:存放在高速缓冲存储器中的页表(引入快表时为了减少访问主存的次数提高地址变换的速度);
④加入快表后的地址转换:CPU在给出逻辑地址后,地址变换机构首先根据页号在快表中进行检索,若存在相应的页号,则直接从快表中读出该页号对应的页框号,形成物理地址,否则需要访问主存中的页表,从页表中读出相应的页框号,形成相应的页框号,形成物理地址,同时将找到的页表登记到快表中,当块表填满后,又要在快表中登记一新的页表项时,则需要一定的淘汰策略;
⑤数据结构:存储页框表,请求表和页表等
⑥共享:能方便地实现多个作业共享程序和数据,页的共享可大大提高主存空间的利用率;
*在页式存储器中实现程序共享时,必须对共享程序给出相同的页号; ⑦保护:a.保护权限域 b.保护键 ⑧优点与缺点:
优点:解决了分区管理时的碎片问题; 缺点:仍受主存中可用页框数的限制;
4.虚拟存储器基本思想,虚拟页式存储工作原理 (1) 虚拟存储器基本思想:当用户作业要求的存储空间很大,不能被装入主存时,基于局部性原理,系统可以把当前要用的程序和数据装入主存中启动程序运行,而暂时不用的程序和数据驻留在外存中,在执行中需要用到不在主存中的信息时,通过系统的调入调出功能和置换功能将暂时不用的程序和数据调出主存,腾出主存空间让系统调入要用的程序和数据,这样,系统便能很好地运行用户作业了,从用户角度看,系统具备了比实际主存容量大得多的存储器; 虚拟存储器的特征:多次性;对换性;离散性;虚拟性。 *局部性原理: a.时间局限性:如果程序中某一条指令一旦执行,则在不久以后还可能被继续执行,同样,某一个数据被访问后,还可能被继续访问; b.空间局限性:如果程序访问了某一存储单元,其附近的存储单元则在不久也会被访问;
*虚拟存储器的容量不可以大于主存容量加外存容量; (2)页式虚拟存储工作原理 分页存储管理优缺点: 优点:
1)解决主存的零头问题,能有效地利用主存。
2)方便多道程序设计,并且程序运行的道数增加了。
3)可提供大容量的虚拟存储器,作业的地址空间不再受实际主存大小的限制。 4)更加方便了用户,特别是大作业的用户。当某作业地址空间超过主存空间时,用户也无需考虑覆盖结构。 缺点:
1)要有相应的硬件支持,如需要动态地址变换机构、缺页中断处理机构等。 2)必须提供相应的数据结构来管理存储器,它们不仅占用了部分主存空间,同时还要花费CPU时间。
3)在分页系统中页内的零头问题仍然存在。
4)在请求分页管理中,需要进行缺页中断处理,还有可能出现抖动现象,增加了系统开销,降低系统效率。
分页式缺点(除上述的缺点外还有): 1)程序的逻辑地址空间是连续的 ,装配好的程序段和数据块的存储空间是确定的,在执行中是无法动态增长和收缩。
2)无法做到页与逻辑意义完整的子程序或数据段的唯一对应,增大了其信息共享实现的难度。
3)从连接的角度上看,分区管理和分页管理只能采用静态连接 ,不仅花费了大量的CPU时间,而且也浪费了许多主存空间 。 二级页表的地址变换 :
三次访问主存:
一次访问页目录,一次访问页表,最后才访问数据所在的物理地址。 ☆5.常用的页面置换算法(P95 习题3.22) (1)优化算法(OPT):这是一种理论化的算法,其所选择的被淘汰的页将是永不使用的页,或者是在最长时间内不再访问的页。 (2)先进先出算法(FIFO):该算法总是淘汰最先进入主存的页面,认为最先调入的页最近不被访问可能性最大。 缺页率=缺页次数/总的访问次数*100% 用FIFO算法求缺页率:
1 2 3 4 1 2 5 1 2 3 4 5 1 1 1 4 4 4 5 5 5 5 5 5 2 2 2 1 1 1 1 1 3 3 3 3 3 3 2 2 2 2 2 4 4 F F F F F F F S S F F S 缺页率=9/12*100%=75%
Belady现象:一般情况下,对于一个作业如果分配给它的主存页框越多,缺页中断率就越低,反之就越高,但对于FIFO算法来说,在未给作业分配足够满足它要求的页面时,有时会出现分配的页框数增多,而缺页中断率反而增高的奇异现象;
☆(3)最近最少用置换算法(LRU):该算法要求淘汰的页面是在最近一段时间里较久未被访问的那一页。根据是程序执行时所具有的局部性。
为了比较准确地淘汰最近最少使用的页面,可以采用堆栈的方法来实现。栈中存放当前主存中的页号,每当访问一页时就调整一次栈。于是,发生缺页中断时总是淘汰栈底所指示的页。
(4)最近未用置换算法(NRU)
概念:该算法要求页表中有一个访问位和一个修改位。当某页被访问时,访问位被自动置1,若执行的指令是写指令,则修改位也被置1。系统周期性地将所有访问位置0。在选择一页淘汰时,总是选择其访问位为0且修改位也为0的页。若无修改位为0的页,就选访问位为0且页号最小的页淘汰。
评价:该算法不但希望淘汰的页是最近未使用的页,而且还希望被淘汰的页是在主存驻留期间其页面内容未被修改过。系统对访问位清0的间隔时间T的确定是很关键的。如果间隔时间T太大,可能所有页的访问位均已成为1,无法选择淘汰的页面。如果间隔时间T太小,则可能很多页的访问位均是为0
基于Clock的NRU算法过程:从指针位置开始扫描链表,扫描过程中不改变R位。淘汰遇到的第一个R=0&M=0的页面。若第1步失败,则再次扫描,淘汰遇到的第一个R=0&M=1的页面。每个页面检查过后将R设为0。若第2步失败,重复1和2(如果需要)。
(5)最少使用置换算法(LFU) 概念:要求为每一页表项配置一个一定位数的计数器作为访问字段,开始时所有的计数器均为0。一旦某页被访问时,其页表项中的计数器值加1。系统每过一段时间T就将所有的页表项计数器清0。 在需要选择一页置换时,便比较各计数器的值,总是选择其计数值最小的页面淘汰。
评价:该算法实现也较容易,但代价较高,而且合适的间隔时间T的选择也是难题。
6.段式存储管理的思想,段式虚拟存储管理流程
(1)段式存储管理的思想:把程序按逻辑含义或过程分成段,每段都有自己的段名,用户程序可用段名和入指出调用一个段的功能,程序在编译或汇编时,再将段名定义一个段号,每段逻辑地址均是以0开始进行顺序编址,这样用户或进程的地址空间就形成了一个二维线性地址空间,任意一个地址必须首先指出段号,其次指出段内偏移地址,段式存储管理程序以段为单位分配主存,然后,执行时通过地址转换机构把段式逻辑地址转换成主存物理地址; *在段式存储器中实现程序共享时,共享段的段号不一定要相同; 逻辑地址格式:
段号 单元号 段式管理信息共享和保护 : 共享:
只要用户使用相同的共享段名,系统在建立段表时,只须在相应的段表栏目上填入已在主存的段的始址和长度,即可实现程序和数据段的共享,从而提高系统主存的利用率。 保护:
(1)在段表中增设一个存取权限域。存取权限可分为:只执行(共享程序段)、只读(共享数据段)和可读/写(私人段)。访问段时,核对存取权限。
(2)在地址转换时,将段表中的长度与段内地址比较,实现地址越界保护。
(2)段式虚拟存储管理实现原理 基本思想 :
把作业的所有分段的副本都存放在外存上,当作业被调度投入运行时,首先把当前需要用的一段或几段装入主存,在执行过程中,访问到不在主存的段时,再通过缺段中断机构把它从外存上调入。 段式管理优缺点: 优点:
严格按程序的逻辑结构分配连续存储空间,方便程序和数据的共享与保护,同时也便于程序及数据段的扩充和动态连接。