计算机操作系统第四章.pdf
《计算机操作系统第四章.pdf》由会员分享,可在线阅读,更多相关《计算机操作系统第四章.pdf(212页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章存储器管理4.1 4.1 存储器的层次结构存储器的层次结构4.24.2程序的装入和链接程序的装入和链接4.34.3连续分配方式连续分配方式4.44.4基本分页存储管理方式基本分页存储管理方式4.54.5基本分段存储管理方式基本分段存储管理方式4.64.6虚拟存储器的基本概念虚拟存储器的基本概念4.74.7请求分页存储管理方式请求分页存储管理方式4.84.8页面置换算法页面置换算法4.94.9请求分段存储管理方式请求分段存储管理方式第四章存储器管理第四章存储器管理存储器管理的功能存储器管理的功能存储器管理的功能存储器管理的功能存储器管理的功能存储器管理的功能4.1 4.1 存储器的层次结构
2、存储器的层次结构多级存储器结构多级存储器结构对于通用计算机而言对于通用计算机而言,存储层次至少应具有三级:最高层为存储层次至少应具有三级:最高层为CPU寄存器寄存器,中间为主存中间为主存,最底层是辅存最底层是辅存。在较高档的计算机中在较高档的计算机中,还可以还可以根据具体的功能分工细划为寄存器根据具体的功能分工细划为寄存器、高速缓存高速缓存、主存储器主存储器、磁盘缓存磁盘缓存、固定磁盘固定磁盘、可移动存储介质等可移动存储介质等6层层。如图如图4-1所示所示,在存储层次中越往在存储层次中越往上上,存储介质的访问速度越快存储介质的访问速度越快,价格也越高价格也越高,相对存储容量也越小相对存储容量也
3、越小。其中其中,寄存器寄存器、高速缓存高速缓存、主存储器和磁盘缓存均属于操作系统存储主存储器和磁盘缓存均属于操作系统存储管理的管辖范畴管理的管辖范畴,掉电后它们存储的信息不再存在掉电后它们存储的信息不再存在。固定磁盘和可移固定磁盘和可移动存储介质属于设备管理的管辖范畴动存储介质属于设备管理的管辖范畴,它们存储的信息将被长期保存它们存储的信息将被长期保存。图图4-1 计算机系统存储层次示意计算机系统存储层次示意寄存器高速缓存主存磁盘缓存磁盘可移动存储介质CPU寄存器主存辅存4.1 4.1 存储器的层次结构存储器的层次结构1 1主存储器主存储器主存储器主存储器(简称内存或主存简称内存或主存)是计算
4、机系统中一个主要部是计算机系统中一个主要部件件,用于保存进程运行时的程序和数据用于保存进程运行时的程序和数据,也称可执行存储器也称可执行存储器,其容量对于当前的微机系统和大中型机其容量对于当前的微机系统和大中型机,可能一般为数十可能一般为数十MB到数到数GB,而且容量还在不断增加而且容量还在不断增加,而嵌入式计算机系统而嵌入式计算机系统一般仅有几十一般仅有几十KB到几到几MB。CPU的控制部件只能从主存储器的控制部件只能从主存储器中取得指令和数据中取得指令和数据,数据能够从主存储器读取并将它们装入数据能够从主存储器读取并将它们装入到寄存器中到寄存器中,或者从寄存器存入到主存储器或者从寄存器存入
5、到主存储器。CPU与外围设与外围设备交换的信息一般也依托于主存储器地址空间备交换的信息一般也依托于主存储器地址空间。由于主存储由于主存储器的访问速度远低于器的访问速度远低于CPU执行指令的速度执行指令的速度,为缓和这一矛盾为缓和这一矛盾,在计算机系统中引入了寄存器和高速缓存在计算机系统中引入了寄存器和高速缓存。4.1 4.1 存储器的层次结构存储器的层次结构2 2寄存器寄存器寄存器访问速度最快,完全能与寄存器访问速度最快,完全能与CPU协调工作,但价格协调工作,但价格却十分昂贵,因此容量不可能做得很大。寄存器的长度一般却十分昂贵,因此容量不可能做得很大。寄存器的长度一般以字以字(word)为单
6、位。寄存器的数目,对于当前的微机系统和为单位。寄存器的数目,对于当前的微机系统和大中型机,可能有几十个甚至上百个;而嵌入式计算机系统大中型机,可能有几十个甚至上百个;而嵌入式计算机系统一般仅有几个到几十个。寄存器用于加速存储器的访问速度,一般仅有几个到几十个。寄存器用于加速存储器的访问速度,如用寄存器存放操作数,或用作地址寄存器加快地址转换速如用寄存器存放操作数,或用作地址寄存器加快地址转换速度等。度等。4.1 4.1 存储器的层次结构存储器的层次结构3 3高速缓存高速缓存高速缓存是现代计算机结构中的一个重要部件高速缓存是现代计算机结构中的一个重要部件,其容量其容量大于或远大于寄存器大于或远大
7、于寄存器,而比内存约小两到三个数量级左右而比内存约小两到三个数量级左右,从几十从几十KBKB到几到几MBMB,访问速度快于主存储器访问速度快于主存储器。根据程序执行的局部性原理根据程序执行的局部性原理(即程序在执行时将呈现出局即程序在执行时将呈现出局部性规律,在一较短的时间内,程序的执行仅局限于某个部部性规律,在一较短的时间内,程序的执行仅局限于某个部分分),将主存中一些经常访问的信息存放在高速缓存中,减少,将主存中一些经常访问的信息存放在高速缓存中,减少访问主存储器的次数,可大幅度提高程序执行速度。访问主存储器的次数,可大幅度提高程序执行速度。4.1 4.1 存储器的层次结构存储器的层次结构
8、4 4磁盘缓存磁盘缓存由于目前磁盘的由于目前磁盘的I/OI/O速度远低于对主存的访问速度速度远低于对主存的访问速度,因因此将频繁使用的一部分磁盘数据和信息此将频繁使用的一部分磁盘数据和信息,暂时存放在磁盘缓暂时存放在磁盘缓存中存中,可减少访问磁盘的次数可减少访问磁盘的次数。磁盘缓存本身并不是一种实磁盘缓存本身并不是一种实际存在的存储介质际存在的存储介质,它依托于固定磁盘它依托于固定磁盘,提供对主存储器存提供对主存储器存储空间的扩充储空间的扩充,即利用主存中的存储空间即利用主存中的存储空间,来暂存从磁盘中来暂存从磁盘中读出读出(或写入或写入)的信息的信息。主存也可以看做是辅存的高速缓存主存也可以
9、看做是辅存的高速缓存,因为因为,辅存中的数据必须复制到主存方能使用;反之辅存中的数据必须复制到主存方能使用;反之,数据数据也必须先存在主存中也必须先存在主存中,才能输出到辅存才能输出到辅存。4.1 4.1 存储器的层次结构存储器的层次结构4.24.2程序的装入和链接程序的装入和链接图4-2对用户程序的处理步骤4.24.2程序的装入和链接程序的装入和链接4.34.3连续分配方式连续分配方式早期早期PCPC使用的使用的内存管理方式内存管理方式(MSMS-DOSDOS)固定分区分配固定分区分配该算法又称为分类搜索法,是将空闲分区根据其容量该算法又称为分类搜索法,是将空闲分区根据其容量大小进行分类,对
10、于每一类具有相同容量的所有空闲分区,大小进行分类,对于每一类具有相同容量的所有空闲分区,单独设立一个空闲分区链表,这样,系统中存在多个空闲单独设立一个空闲分区链表,这样,系统中存在多个空闲分区链表,同时在内存中设立一张管理索引表,该表的每分区链表,同时在内存中设立一张管理索引表,该表的每一个表项对应了一种空闲分区类型,并记录了该类型空闲一个表项对应了一种空闲分区类型,并记录了该类型空闲分区链表表头的指针。空闲分区的分类是根据进程常用的分区链表表头的指针。空闲分区的分类是根据进程常用的空间大小进行划分,如空间大小进行划分,如2 KB、4 KB、8 KB等,对于其它大等,对于其它大小的分区,如小的
11、分区,如7 KB这样的空闲区,既可以放在这样的空闲区,既可以放在8 KB的链表的链表中,也可以放在一个特殊的空闲区链表中。中,也可以放在一个特殊的空闲区链表中。快速适应算法快速适应算法(quick fit)(quick fit)该算法的优点该算法的优点是查找效率高是查找效率高,仅需要根据进程的长度仅需要根据进程的长度,寻找到能容纳它的最小空闲区链表寻找到能容纳它的最小空闲区链表,并取下第一块进行分配并取下第一块进行分配即可即可。另外该算法在进行空闲分区分配时另外该算法在进行空闲分区分配时,不会对任何分区不会对任何分区产生分割产生分割,所以能保留大的分区所以能保留大的分区,满足对大空间的需求满足
12、对大空间的需求,也也不会产生内存碎片不会产生内存碎片。该算法的缺点该算法的缺点是在分区归还主存时算法复杂,系统开销是在分区归还主存时算法复杂,系统开销较大。此外,该算法在分配空闲分区时是以进程为单位,一较大。此外,该算法在分配空闲分区时是以进程为单位,一个分区只属于一个进程,因此在为进程所分配的一个分区中,个分区只属于一个进程,因此在为进程所分配的一个分区中,或多或少地存在一定的浪费。空闲分区划分越细,浪费则越或多或少地存在一定的浪费。空闲分区划分越细,浪费则越严重,整体上会造成可观的存储空间浪费,这是典型的以空严重,整体上会造成可观的存储空间浪费,这是典型的以空间换时间的作法。间换时间的作法
13、。快速适应算法快速适应算法(quick fit)(quick fit)固定分区和动态分区方式都有不足之处:固定分区和动态分区方式都有不足之处:固定分区方式固定分区方式:限制了活动进程的数目限制了活动进程的数目,当进程大小与空闲分区大当进程大小与空闲分区大小不匹配时小不匹配时,内存空间利用率很低内存空间利用率很低。动态分区方式动态分区方式:算法复杂算法复杂,回收空闲分区时需要进行分区合并等回收空闲分区时需要进行分区合并等,系统开销较大系统开销较大。伙伴系统方式:伙伴系统方式:是对以上两种内存方式的一种折衷方案是对以上两种内存方式的一种折衷方案。伙伴系统规定伙伴系统规定,无论已分配分区或空闲分区无
14、论已分配分区或空闲分区,其大小均为其大小均为2 2的的k k次次幂幂,k k为整数为整数,lkm,其中:其中:21表示分配的最小分区的大小表示分配的最小分区的大小,2m表示表示分配的最大分区的大小分配的最大分区的大小,通常通常2m是整个可分配内存的大小是整个可分配内存的大小。伙伴系统伙伴系统假设系统的可利用空间容量为假设系统的可利用空间容量为2m个字,则系统开始运行时,整个内个字,则系统开始运行时,整个内存区是一个大小为存区是一个大小为2m的空闲分区。在系统运行过程中,由于不断的划分,的空闲分区。在系统运行过程中,由于不断的划分,可能会形成若干个不连续的空闲分区,将这些空闲分区根据分区的大小可
15、能会形成若干个不连续的空闲分区,将这些空闲分区根据分区的大小进行分类,对于每一类具有相同大小的所有空闲分区,单独设立一个空进行分类,对于每一类具有相同大小的所有空闲分区,单独设立一个空闲分区双向链表。这样,不同大小的空闲分区形成了闲分区双向链表。这样,不同大小的空闲分区形成了k(0km)个空闲个空闲分区链表。分区链表。伙伴系统伙伴系统当需要为进程分配一个长度为当需要为进程分配一个长度为n的存储空间时,首先计算一个的存储空间时,首先计算一个i值,使值,使2i1n2i,然后在空闲分区大小为,然后在空闲分区大小为2i的空闲分区链表中查找。若找到,的空闲分区链表中查找。若找到,即把该空闲分区分配给进程
16、。否则,表明长度为即把该空闲分区分配给进程。否则,表明长度为2i的空闲分区已经耗尽,的空闲分区已经耗尽,则在分区大小为则在分区大小为2i1的空闲分区链表中寻找。若存在的空闲分区链表中寻找。若存在2i1的一个空闲分区,的一个空闲分区,则把该空闲分区分为相等的两个分区,这两个分区称为一对伙伴,其中的则把该空闲分区分为相等的两个分区,这两个分区称为一对伙伴,其中的一个分区用于分配,而把另一个加入分区大小为一个分区用于分配,而把另一个加入分区大小为2i的空闲分区链表中。若的空闲分区链表中。若大小为大小为2i1的空闲分区也不存在,则需要查找大小为的空闲分区也不存在,则需要查找大小为2i2的空闲分区,若的
17、空闲分区,若找到则对其进行两次分割:第一次,将其分割为大小为找到则对其进行两次分割:第一次,将其分割为大小为2i1的两个分区,的两个分区,一个用于分配,一个加入到大小为一个用于分配,一个加入到大小为2i1的空闲分区链表中;第二次,将第的空闲分区链表中;第二次,将第一次用于分配的空闲区分割为一次用于分配的空闲区分割为2i的两个分区,一个用于分配,一个加入到的两个分区,一个用于分配,一个加入到大小为大小为2i的空闲分区链表中。若仍然找不到,则继续查找大小为的空闲分区链表中。若仍然找不到,则继续查找大小为2i3的空的空闲分区,以此类推。由此可见,在最坏的情况下,可能需要对闲分区,以此类推。由此可见,
18、在最坏的情况下,可能需要对2k的空闲分的空闲分区进行区进行k次分割才能得到所需分区。次分割才能得到所需分区。伙伴系统伙伴系统与一次分配可能要进行多次分割一样与一次分配可能要进行多次分割一样,一次回收也可能要进行多次合一次回收也可能要进行多次合并并,如回收大小为如回收大小为2i的空闲分区时的空闲分区时,若事先已存在若事先已存在2i的空闲分区时的空闲分区时,则应则应将其与伙伴分区合并为大小为将其与伙伴分区合并为大小为2i1的空闲分区的空闲分区,若事先已存在若事先已存在2i1的空的空闲分区时闲分区时,又应继续与其伙伴分区合并为大小为又应继续与其伙伴分区合并为大小为2i2的空闲分区的空闲分区,依此类依
19、此类推推。在伙伴系统中,其分配和回收的时间性能取决于查找空闲分区的位在伙伴系统中,其分配和回收的时间性能取决于查找空闲分区的位置和分割、合并空闲分区所花费的时间。与前面所述的多种方法相比较,置和分割、合并空闲分区所花费的时间。与前面所述的多种方法相比较,由于该算法在回收空闲分区时,需要对空闲分区进行合并,所以其时间由于该算法在回收空闲分区时,需要对空闲分区进行合并,所以其时间性能比前面所述的分类搜索算法差,但比顺序搜索算法好,而其空间性性能比前面所述的分类搜索算法差,但比顺序搜索算法好,而其空间性能则远优于前面所述的分类搜索法,比顺序搜索法略差。能则远优于前面所述的分类搜索法,比顺序搜索法略差
20、。伙伴系统伙伴系统在上述的分类搜索算法和伙伴系统算法中,都是将空闲分区根据分区在上述的分类搜索算法和伙伴系统算法中,都是将空闲分区根据分区大小进行分类,对于每一类具有相同大小的空闲分区,单独设立一个空闲大小进行分类,对于每一类具有相同大小的空闲分区,单独设立一个空闲分区链表。在为进程分配空间时,需要在一张管理索引表中查找到所需空分区链表。在为进程分配空间时,需要在一张管理索引表中查找到所需空间大小所对应的表项,从中得到对应的空闲分区链表表头指针,从而通过间大小所对应的表项,从中得到对应的空闲分区链表表头指针,从而通过查找得到一个空闲分区。如果对空闲分区分类较细,则相应的空闲分区链查找得到一个空
21、闲分区。如果对空闲分区分类较细,则相应的空闲分区链表也较多,因此选择合适的空闲链表的开销也相应增加,且时间性能降低。表也较多,因此选择合适的空闲链表的开销也相应增加,且时间性能降低。哈希算法哈希算法就是利用哈希快速查找的优点,以及空闲分区在可利用空间就是利用哈希快速查找的优点,以及空闲分区在可利用空间表中的分布规律,建立哈希函数,构造一张以空闲分区大小为关键字的哈表中的分布规律,建立哈希函数,构造一张以空闲分区大小为关键字的哈希表,该表的每一个表项记录了一个对应的空闲分区链表表头指针。希表,该表的每一个表项记录了一个对应的空闲分区链表表头指针。当进行空闲分区分配时,根据所需空闲分区大小,通过哈
22、希函数计算,当进行空闲分区分配时,根据所需空闲分区大小,通过哈希函数计算,即得到在哈希表中的位置,从中得到相应的空闲分区链表,实现最佳分配即得到在哈希表中的位置,从中得到相应的空闲分区链表,实现最佳分配策略。策略。哈希算法哈希算法2 2动态重定位的实现动态重定位的实现在动态运行时装入的方式中,作业装入内存后的所有地址都仍然是在动态运行时装入的方式中,作业装入内存后的所有地址都仍然是相对地址,将相对地址转换为物理地址的工作,被推迟到程序指令要真正相对地址,将相对地址转换为物理地址的工作,被推迟到程序指令要真正执行时进行。为使地址的转换不会影响到指令的执行速度,必须有硬件地执行时进行。为使地址的转
23、换不会影响到指令的执行速度,必须有硬件地址变换机构的支持,即须在系统中增设一个重定位寄存器,用它来存放程址变换机构的支持,即须在系统中增设一个重定位寄存器,用它来存放程序序(数据数据)在内存中的起始地址。程序在执行时,真正访问的内存地址是相在内存中的起始地址。程序在执行时,真正访问的内存地址是相对地址与重定位寄存器中的地址相加而形成的。图对地址与重定位寄存器中的地址相加而形成的。图4-10示出了动态重定位示出了动态重定位的实现原理。地址变换过程是在程序执行期间,随着对每条指令或数据的的实现原理。地址变换过程是在程序执行期间,随着对每条指令或数据的访问自动进行的,故称为动态重定位。当系统对内存进
24、行了访问自动进行的,故称为动态重定位。当系统对内存进行了“紧凑紧凑”而使而使若干程序从内存的某处移至另一处时,不需对程序做任何修改,只要用该若干程序从内存的某处移至另一处时,不需对程序做任何修改,只要用该程序在内存的新起始地址,去置换原来的起始地址即可。程序在内存的新起始地址,去置换原来的起始地址即可。可重定位分区分配可重定位分区分配图 4-10动态重定位示意图LOAD1,25003650100250050002500相对地址10000重定位寄存器LOAD1,250036510000101001250015000作业J处理机一侧 存储器一侧主存可重定位分区分配可重定位分区分配3 3动态重定位分
25、区分配算法动态重定位分区分配算法动态重定位分区分配算法与动态分区分配算法基本上相动态重定位分区分配算法与动态分区分配算法基本上相同,差别仅在于:在这种分配算法中,增加了紧凑的功能,同,差别仅在于:在这种分配算法中,增加了紧凑的功能,通常,在找不到足够大的空闲分区来满足用户需求时进行紧通常,在找不到足够大的空闲分区来满足用户需求时进行紧凑。图凑。图4-11示出了动态重定位分区分配算法。示出了动态重定位分区分配算法。可重定位分区分配可重定位分区分配图4-11动态分区分配算法流程图请求分配u.size分区检索空闲分区链(表)找到大于u.size的可用区否?按动态分区方式进行分配修改有关的数据结构返回
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 操作系统 第四
限制150内