版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第四章存储器管理 第四章存储器管理 4.1 存储器的层次结构存储器的层次结构 4.2程序的装入和链接程序的装入和链接 4.3连续分配存储管理方式连续分配存储管理方式4.4 对换对换4.4分页存储管理方式分页存储管理方式4.5分段存储管理方式分段存储管理方式第四章存储器管理 4.1 存储器的层次结构存储器的层次结构 一、多级存储器结构一、多级存储器结构 在现代计算机系统在现代计算机系统中,存储器是信息中,存储器是信息的来源与归宿,占据重的来源与归宿,占据重要位置。但是,在现有要位置。但是,在现有技术条件下,任何一种技术条件下,任何一种存储装置,都无法同时存储装置,都无法同时从速度与容量两方面,从
2、速度与容量两方面,满足用户的需求。实际满足用户的需求。实际上它们组成了一个速度上它们组成了一个速度由快到慢,容量由小到由快到慢,容量由小到大的存储装置层次。大的存储装置层次。 寄存器高速缓存主存磁盘缓存磁盘可移动存储介质CPU寄存器主存辅存图图4-1 计算机系统存储层次示意计算机系统存储层次示意 速速度度快快慢慢小小大大容容量量OS管理管理设备管理设备管理第四章存储器管理 二、各种存储器二、各种存储器1 1主存储器主存储器简称内存、主存、简称内存、主存、可执行存储器;可执行存储器;主要部件,保存进程运行时的程主要部件,保存进程运行时的程序和数据,序和数据,若干兆字节、中等速度、中等价格。若干兆
3、字节、中等速度、中等价格。 主存储器的访问速度远低于主存储器的访问速度远低于CPU执行指令的速度,为缓和这一矛盾,执行指令的速度,为缓和这一矛盾,在计算机系统中引入了寄存器和高速缓存。在计算机系统中引入了寄存器和高速缓存。 2 2寄存器寄存器速度最快,价格昂贵,容量小。以字速度最快,价格昂贵,容量小。以字(word)为单位。寄存器用于加为单位。寄存器用于加速存储器的访问速度,如:用寄存器存放操作数。速存储器的访问速度,如:用寄存器存放操作数。3高速缓存高速缓存 少量的、容量小(几十少量的、容量小(几十KB几几MB )、非常快速、昂贵。)、非常快速、昂贵。 主存中常访问的信息存放在高速缓存中,减
4、少访主次数。主存中常访问的信息存放在高速缓存中,减少访主次数。第四章存储器管理 4 4磁盘缓存磁盘缓存目前磁盘的目前磁盘的I/OI/O速度远低于对主存的访问速度,将速度远低于对主存的访问速度,将频繁使用频繁使用的一部分的一部分磁盘数据和信息,暂时存放在磁盘缓存中,可减少访问磁盘的次数。磁盘数据和信息,暂时存放在磁盘缓存中,可减少访问磁盘的次数。 即利用主存中的存储空间,来暂存从磁盘中读出即利用主存中的存储空间,来暂存从磁盘中读出( (或写入或写入) )的信息。的信息。 掉电则丢失。掉电则丢失。文件文件硬盘硬盘存放存放内存内存调入调入磁盘磁盘缓冲缓冲备备份份磁带磁带文件出文件出现于不现于不同的存
5、同的存储层次储层次中中第四章存储器管理 三、存储管理的目的三、存储管理的目的 1) 1) 主存的分配和管理主存的分配和管理 当用户需要内存时,系统为之分配相应的存储空间;不需要时,及时回收,当用户需要内存时,系统为之分配相应的存储空间;不需要时,及时回收,以供其它用户使用。以供其它用户使用。 2) 2) 提高主存储器的利用率提高主存储器的利用率 不仅能使多道程序动态地共享主存,提高主存利用率,最好还能共享主存不仅能使多道程序动态地共享主存,提高主存利用率,最好还能共享主存中某个区域的信息。中某个区域的信息。 3) 3) “扩充扩充”主存容量主存容量 为用户提供比为用户提供比主存物理空间主存物理
6、空间大得多的大得多的地址空间地址空间,以至使用户感觉他的作业,以至使用户感觉他的作业是在这样一个大的存储器中运行。是在这样一个大的存储器中运行。 4) 4) 存储保护存储保护 确保多道程序都在各自分配到存储区域内操作,互不干扰,防止一道程序确保多道程序都在各自分配到存储区域内操作,互不干扰,防止一道程序破坏其它作业或系统文件的信息。破坏其它作业或系统文件的信息。第四章存储器管理 四、预备知识(补充)四、预备知识(补充)1.1.定位(存储分配)定位(存储分配) 为具体的程序和数据等为具体的程序和数据等分配分配存储单元或存储区工作。存储单元或存储区工作。2.2.映射映射 把逻辑地址转换为相应的物理
7、地址的过程。把逻辑地址转换为相应的物理地址的过程。3.3.隔离隔离 按按存取权限存取权限把合法区与非法区分隔,实现存储保护。把合法区与非法区分隔,实现存储保护。第四章存储器管理 4.名空间名空间程序员在程序中定义的标识符程序员在程序中定义的标识符程序符号集合程序符号集合由程序员自定义由程序员自定义没有地址的概念没有地址的概念符号指令符号指令数据说明数据说明I/OI/O说明说明第四章存储器管理 5、逻辑地址、逻辑地址空间、逻辑地址、逻辑地址空间逻辑地址逻辑地址 (相对地址、虚地址相对地址、虚地址) 用户的程序经过汇编或编译后形成目标代码,用户的程序经过汇编或编译后形成目标代码,目标代码通常采用相
8、对地址的形式,其首地址目标代码通常采用相对地址的形式,其首地址为为0,其余指令中的地址都相对于首地址而编,其余指令中的地址都相对于首地址而编址。址。用户的程序地址用户的程序地址(指令地址或操作数地址指令地址或操作数地址)均为均为逻辑地址。逻辑地址。不能用逻辑地址在内存中读取信息。不能用逻辑地址在内存中读取信息。(why)作业地址空间(作业逻辑地址空间、作业虚空间)作业地址空间(作业逻辑地址空间、作业虚空间) 用户程序所有的逻辑地址集合对应的空间。用户程序所有的逻辑地址集合对应的空间。由编译程序生成由编译程序生成作业地址空间作业地址空间01 n-1 指令、数据指令、数据mov r1,500123
9、0100500599作业地址空间作业地址空间第四章存储器管理 6、物理地址、物理地址空间、物理地址、物理地址空间物理地址物理地址 (绝对地址、实地址绝对地址、实地址) 物理地址是计算机主存单元的真物理地址是计算机主存单元的真实地址,又称为绝对地址或实地实地址,又称为绝对地址或实地址。址。 可直接寻址。可直接寻址。主存空间(物理地址空间、存储空主存空间(物理地址空间、存储空间)间) 物理地址的集合所对应的空间组物理地址的集合所对应的空间组成了主存空间。成了主存空间。主存空间主存空间01 n-1 第四章存储器管理 地址映射地址映射Load A 200 3456 。 。1200物理地址空间物理地址空
10、间Load A data1data1 3456名空间名空间Load A 200 34560100200编译编译连接连接逻辑地址空间逻辑地址空间BA=1000图图: : 名空间、地址空间、存储空间名空间、地址空间、存储空间源程序源程序目标程序目标程序可执行程序可执行程序第四章存储器管理 7.7.存储共享存储共享内存共享:内存共享: 两个或多个进程共用内存中相同区。两个或多个进程共用内存中相同区。目的:目的: 节省内存空间,提高内存利用率。节省内存空间,提高内存利用率。实现进程通信:实现进程通信: 数据共享。数据共享。共享内容:共享内容:代码共享。代码共享。 数据共享。数据共享。第四章存储器管理
11、8.8.存储保护与安全存储保护与安全1) 1) 保护目的保护目的为多个程序共享内存提供保障为多个程序共享内存提供保障, ,使在内存中的各道程序使在内存中的各道程序, , 只能访只能访问它自己的区域,避免各道程序间相互干拢,特别是当一道程序发问它自己的区域,避免各道程序间相互干拢,特别是当一道程序发生错误时生错误时, , 不致于影响其他程序的运行。不致于影响其他程序的运行。通常由硬件完成保护功能,通常由硬件完成保护功能,由软件辅助实现。由软件辅助实现。特权指令不能完成存储保护。特权指令不能完成存储保护。2) 2) 存储保护存储保护.保护系统程序区不被用户侵犯。保护系统程序区不被用户侵犯。(有意或
12、无意的)(有意或无意的).不允许用户程序读写不属于自己地址空间的数据。不允许用户程序读写不属于自己地址空间的数据。 (系统区地址空间,其他用户程序的地址空间)(系统区地址空间,其他用户程序的地址空间)3) 3) 保护过程保护过程-防止地址越界防止地址越界每个进程都有自己独立的进程空间,如果一个进程在运行时所产每个进程都有自己独立的进程空间,如果一个进程在运行时所产生的地址在其地址空间之外,则发生地址越界。即当程序要访问某生的地址在其地址空间之外,则发生地址越界。即当程序要访问某个内存单元时,由个内存单元时,由硬件检查硬件检查是否允许,如果允许则执行,否则产生是否允许,如果允许则执行,否则产生地
13、址越界中断,由操作系统进行相应处理。地址越界中断,由操作系统进行相应处理。第四章存储器管理 9.9.内存内存“扩充扩充” 通过虚拟存储技术实现通过虚拟存储技术实现 用户在编制程序时,不应该用户在编制程序时,不应该受内存容量限制受内存容量限制,所以要采用一定技术来,所以要采用一定技术来“扩充扩充”内存的容量,使用户得到比实际内存容量大的多的内存空间。内存的容量,使用户得到比实际内存容量大的多的内存空间。具体实现是在硬件支持下,软硬件相互协作,将内存和外存结合起来具体实现是在硬件支持下,软硬件相互协作,将内存和外存结合起来统一使用。通过这种方法把内存扩充,使用户在编制程序时不受内存统一使用。通过这
14、种方法把内存扩充,使用户在编制程序时不受内存限制。限制。第四章存储器管理 4.2 4.2 程序的装入和链接程序的装入和链接 在多道程序环境下,要使在多道程序环境下,要使程序运行,必须创建进程,而程序运行,必须创建进程,而创建进程第一件事就是将程序创建进程第一件事就是将程序和数据装入内存。一个用户源和数据装入内存。一个用户源程序要程序要变为变为在内存中可执行的在内存中可执行的程序,通常要进行以下处理程序,通常要进行以下处理: (1 1)编译:编译:由编译程序将由编译程序将用户源程序编译成若干个目标用户源程序编译成若干个目标模块模块 (2 2)链接链接:由链接程序将由链接程序将目标模块和相应的库函
15、数链接目标模块和相应的库函数链接成装入模块成装入模块 (3 3)装入装入:由装入程序将由装入程序将装入模块装入内存装入模块装入内存库目标程序块1目标程序块2第一步链接程序装入模块(.exe)第二步装入程序第三步用户源程序(.c;.c+)编译程序.obj第四章存储器管理 一、程序的装入一、程序的装入( (由装入程序将装入模块由装入程序将装入模块(exe(exe文件文件) )装入内存装入内存) )1 1绝对装入方式绝对装入方式(Absolute Loading Mode)(Absolute Loading Mode)(早期)(早期)如果在编译时,如果在编译时,事先知事先知用户程序在内存的驻留位置,
16、则编译程序用户程序在内存的驻留位置,则编译程序在编译时就产生绝对地址的目标代码。装入程序就直接把装入模块中在编译时就产生绝对地址的目标代码。装入程序就直接把装入模块中的程序和数据装入到指定的位置,(不需进行地址转换)的程序和数据装入到指定的位置,(不需进行地址转换) 该装入方式只适用于该装入方式只适用于单道程序环境单道程序环境。第四章存储器管理 2可重定位装入方式可重定位装入方式(Relocation Loading Mode) 在多道程序环境下,目标模块中的其它地址都是相对于在多道程序环境下,目标模块中的其它地址都是相对于0 0编址。应根据编址。应根据内存的当前情况,将装入模块装入到内存的适
17、当位置。内存的当前情况,将装入模块装入到内存的适当位置。 通常是把通常是把在装入时在装入时对目标程序中指令和数据的修改过程称为对目标程序中指令和数据的修改过程称为重定位重定位。 图图4-3作业装入内存时的情况作业装入内存时的情况LOAD 1,2500365LOAD 1,2500365100001100012500150005000250010000作业地址空间内存空间修改指令地址修改指令地址修改数据地址修改数据地址指令中的相对指令中的相对地址是否要修改?地址是否要修改? 装入模装入模块中所有块中所有的逻辑地的逻辑地址与实际址与实际装入内存装入内存的物理地的物理地址不同。址不同。从此装入从此装入
18、第四章存储器管理 物理地址物理地址基地址基地址相对地址相对地址地址变换在装入地址变换在装入时一次完成,以时一次完成,以后不改变,静态后不改变,静态再定位。再定位。是否允许程序是否允许程序运行时在内存运行时在内存中移动位置?中移动位置?第四章存储器管理 3 3动态运行时装入方式动态运行时装入方式(Dynamic Run-time Loading)(Dynamic Run-time Loading)可重定位装入方式可重定位装入方式: : 装入模块装入到内存中任何允许的位置。装入模块装入到内存中任何允许的位置。不允许程序运行时在内存中不允许程序运行时在内存中移动位置移动位置。 实际情况:实际情况:程
19、序程序在运行过程中它在内存中的位置在运行过程中它在内存中的位置可能经常要改变可能经常要改变。 动态运行时的装入程序,在把装入模块装入内存后,并动态运行时的装入程序,在把装入模块装入内存后,并不不立即把立即把装入模块中的装入模块中的相对地址转换为绝对地址相对地址转换为绝对地址,而是把这种地址转换推迟到程序,而是把这种地址转换推迟到程序真正要真正要执行时执行时才进行。因此,才进行。因此, 装入内存后的所有地址都仍是相对地址。装入内存后的所有地址都仍是相对地址。 第四章存储器管理 二、程序的链接二、程序的链接根据链接时间的不同,程序链接分成三种:根据链接时间的不同,程序链接分成三种:(1) (1)
20、静态链接。静态链接。(2) (2) 装入时动态链接。装入时动态链接。 (3) 运行时动态链接。运行时动态链接。第四章存储器管理 1 1静态链接方式静态链接方式(Static Linking)(Static Linking)图图 4-4程序链接示意图程序链接示意图 模块 ACALL B;Return;0L-1模块 BCALL C;Return;0M-1模块 CReturn;0N-10模块 AJSR“L”Return;L-1模块 BJSR“LM”Return;LL+M-1L+ML+M+N-1模块 CReturn;(a) 目标模块(b ) 装入模块 是一种是一种事先链接方式事先链接方式,即在程序运行
21、之前,先将各目标模块及它们,即在程序运行之前,先将各目标模块及它们所需的库函数,链接成一个完整的装入模块所需的库函数,链接成一个完整的装入模块( (执行文件执行文件) ),以后不再拆开。,以后不再拆开。 实现静态链接应解决的问题:实现静态链接应解决的问题: (1 1)相对地址的修改)相对地址的修改 (2 2)变换外部调用符号)变换外部调用符号 存在问题:存在问题:(1 1)不便于对目标模块的修改和更新。)不便于对目标模块的修改和更新。 如要更新其中一个模块,如要更新其中一个模块, 需要打开装入模块。需要打开装入模块。(2 2)无法实现对目标模块的共享。)无法实现对目标模块的共享。PPAB静态静
22、态链接链接第四章存储器管理 2 2装入时动态链接装入时动态链接(Load-time Dynamic Linking)(Load-time Dynamic Linking) 将用户源程序编译后所得到的将用户源程序编译后所得到的一组目标模块一组目标模块,在装入内存时,采,在装入内存时,采用边装入边链接的链接方式。用边装入边链接的链接方式。 优点:优点: (1) (1) 便于修改和更新。便于修改和更新。各目标模块是分开存放的各目标模块是分开存放的;修改容易;修改容易; (2) (2) 便于实现对目标模块的共享。便于实现对目标模块的共享。PPAB静态静态链接链接PAB装入装入时动时动态链态链接接存在问
23、题:存在问题: 由于程序运行所有由于程序运行所有可能用的目标模块可能用的目标模块在装入时均全部链接在装入时均全部链接在一起,所以将会把一些不会运行的目标模块也链接进去。如在一起,所以将会把一些不会运行的目标模块也链接进去。如程序中的错误处理模块。程序中的错误处理模块。第四章存储器管理 3 3运行时动态链接运行时动态链接(Run-time Dynamic Linking)(Run-time Dynamic Linking) 定义:定义: 对某些模块的链接对某些模块的链接推迟到程序执行推迟到程序执行时才进行链接。时才进行链接。 在执行过程中,当发现一个被调用模块尚未装入内存时,立即在执行过程中,当
24、发现一个被调用模块尚未装入内存时,立即由由OS去找到该模块并将之装入内存,把它链接到调用者模块上。去找到该模块并将之装入内存,把它链接到调用者模块上。凡在凡在执行过程中未被用到的目标模块,执行过程中未被用到的目标模块,都不会被调入内存和被链接到装入模都不会被调入内存和被链接到装入模块上,这样不仅可加快程序的装入过程,而且可节省大量的内存空间。块上,这样不仅可加快程序的装入过程,而且可节省大量的内存空间。 第四章存储器管理 三、重定位三、重定位 地址映射:地址映射: 把作业地址空间中使用的把作业地址空间中使用的逻辑地址逻辑地址变换成内存空间中的变换成内存空间中的物理地址物理地址的的过程。如下图,
25、作业过程。如下图,作业i i经过重定位,把地址集合映射到以经过重定位,把地址集合映射到以10001000为始址的为始址的内存中,作为作业内存中,作为作业i i的存储空间。的存储空间。作业作业i第四章存储器管理 1. 重定位的类型重定位的类型 1) ) 静态重定位静态重定位 当用户程序被装入内存时,当用户程序被装入内存时,一次性一次性实现逻辑地址到物理实现逻辑地址到物理地址的转换,以后不再转换(一般在装入内存时由软件完地址的转换,以后不再转换(一般在装入内存时由软件完成),成),作业作业i在执行前在执行前一次变址,直到该作业完成退出内存为一次变址,直到该作业完成退出内存为止。止。 第四章存储器管
26、理 动态重定位动态重定位 在程序运行过程中要在程序运行过程中要访问数据时访问数据时再进行地址变换。由地址变换再进行地址变换。由地址变换机构进行的地址变换,硬件上需要重定位寄存器的支持。机构进行的地址变换,硬件上需要重定位寄存器的支持。 重定位寄存器:重定位寄存器:在执行一条指令取操作数时,要将指令给出的有效在执行一条指令取操作数时,要将指令给出的有效地址地址(500)(500)与重定位寄存器中的内容(与重定位寄存器中的内容(10001000)相加,得访问地址)相加,得访问地址(15001500),从而实现了地址动态修改。),从而实现了地址动态修改。装入装入时未时未修改修改第四章存储器管理 4.
27、3连续分配存储管理方式连续分配存储管理方式 一、单一连续分配方式一、单一连续分配方式 最简单的一种存储管理方式,但只最简单的一种存储管理方式,但只能用于能用于单用户、单任务的单用户、单任务的OSOS中。中。存储管理方法存储管理方法:将内存分为:将内存分为系统区系统区(内存(内存低端,分配给低端,分配给OSOS用)和用)和用户区用户区(内存高端,(内存高端,分配给用户用)。采用静态分配方式,即分配给用户用)。采用静态分配方式,即作业一旦进入内存,就要等待它运行结束作业一旦进入内存,就要等待它运行结束后才能释放内存。后才能释放内存。主要特点主要特点:管理简单,只需小量的软件和管理简单,只需小量的软
28、件和硬件支持,便于用户了解和使用。但因内硬件支持,便于用户了解和使用。但因内存中只装入一道作业运行,内存空间浪费存中只装入一道作业运行,内存空间浪费大,各类资源的利用率也不高。大,各类资源的利用率也不高。系统区-os用户区用户程序第四章存储器管理 工作流程工作流程 单一连续区分配采用单一连续区分配采用静态重定位方式静态重定位方式,即作业或进程一旦进入主,即作业或进程一旦进入主存,就一直等到它运行结束后才能释放主存。下图所示的主存分配与存,就一直等到它运行结束后才能释放主存。下图所示的主存分配与回收法。并且由回收法。并且由装入程序检查装入程序检查其绝对地址是否越界,即可达到保护系其绝对地址是否越
29、界,即可达到保护系统的目的。统的目的。缺点:缺点: 不支持多道。不支持多道。 主存利用率不高。主存利用率不高。 程序的运行受主存容量限制。程序的运行受主存容量限制。第四章存储器管理 分区分配方式存储管理分区分配方式存储管理 分区分配方式分区分配方式是满足是满足多道多道程序设计需要的一种最简单的存储程序设计需要的一种最简单的存储管理方法。管理方法。存储管理方法存储管理方法 将内存分成若干个分区(大小相等将内存分成若干个分区(大小相等/ /不相等),除不相等),除OSOS占一区外,占一区外,其余的每一个分区容纳一个用户程序。按分区的变化情况,可将其余的每一个分区容纳一个用户程序。按分区的变化情况,
30、可将分区存储管理进一步分为:分区存储管理进一步分为: 固定分区存储管理固定分区存储管理 动态分区存储管理动态分区存储管理第四章存储器管理 二、固定分区分配二、固定分区分配(固定分区存储管理)固定分区存储管理) 是最早使用的一种可运行多道程序的存储管理方法是最早使用的一种可运行多道程序的存储管理方法。 存储管理方法存储管理方法 内存空间的划分内存空间的划分:将内存空间划分为若干个固定大小的分区,将内存空间划分为若干个固定大小的分区,除除OSOS占一区外,其余的一个分区装入一道程序。分区的大小占一区外,其余的一个分区装入一道程序。分区的大小可以相等,也可以不等,但事先必须确定,在运行时不能改可以相
31、等,也可以不等,但事先必须确定,在运行时不能改变。即变。即分区大小及边界在运行时不能改变分区大小及边界在运行时不能改变。 系统需系统需建立一张分区说明表或使用表建立一张分区说明表或使用表,以记录分区号、分区以记录分区号、分区大小、分区的起始地址及状态(已分配或未分配)大小、分区的起始地址及状态(已分配或未分配)。第四章存储器管理 固定分区分配方式示意图固定分区分配方式示意图os用户程序p4p1p20k20k56k65k125k135k区号区号大小大小起址起址状态状态136k20k已分配已分配29k56k未分配未分配360k65k已分配已分配410k125k已分配已分配分区说明表分区说明表第四章
32、存储器管理 分区分区4分区分区3分区分区2分区分区1操作系统操作系统多个等待队列多个等待队列单个等待队列单个等待队列分区分区4分区分区3分区分区2分区分区1操作系统操作系统图:固定分区示意图图:固定分区示意图第四章存储器管理 内存分配内存分配 当某个用户程序要装入内存时,由内存分配程序当某个用户程序要装入内存时,由内存分配程序检索分区说检索分区说明表明表,从表中找出一个满足要求的尚未分配的分区分配该程,从表中找出一个满足要求的尚未分配的分区分配该程序,同时序,同时修改说明表修改说明表中相应分区的状态;若找不到大小足够中相应分区的状态;若找不到大小足够的分区,则拒绝为该程序分配内存。的分区,则拒
33、绝为该程序分配内存。 当程序执行完毕,释放占用的分区,管理程序将修改说明表当程序执行完毕,释放占用的分区,管理程序将修改说明表中相应分区的状态为未分配,实现内存资源的回收。中相应分区的状态为未分配,实现内存资源的回收。主要特点主要特点:管理简单,但因作业的大小并管理简单,但因作业的大小并不一定与某个分区大不一定与某个分区大小相等小相等,从而使一部分存储空间被浪费。所以主存的利用率不高。,从而使一部分存储空间被浪费。所以主存的利用率不高。例例 题题操作系统作业A作业B作业C24 KB32 KB64 KB128 KB256 KB分区号大小/KB起址/KB状态11220已分配23232已分配3646
34、4已分配4128128未分配(b) 存储空间分配情况(a) 分区说明表分配分配回收回收第四章存储器管理 例:例:在某系统中,采用固定分区分配管理方式,内存分区(单位字在某系统中,采用固定分区分配管理方式,内存分区(单位字节)情况如图所示,现有大小为节)情况如图所示,现有大小为1K1K、9K9K、33K33K、121K121K的多个作业要求进的多个作业要求进入内存,试画出它们进入内存后的空间分配情况,并说明主存浪费多大?入内存,试画出它们进入内存后的空间分配情况,并说明主存浪费多大?10k20k28k60k180k511k234(1)内存分区图内存分区图os区号区号大小大小起址起址状态状态1 1
35、8k8k20k20k未分配未分配2 232k32k28k28k未分配未分配3 3120k120k60k60k未分配未分配4 4331k331k180k180k未分配未分配(2)分区说明表)分区说明表第四章存储器管理 区号区号 大小大小起址起址状态状态18k20k已分配已分配232k28k已分配已分配3120k60k已分配已分配4331k180k已分配已分配(2)分区说明表)分区说明表0k20k28k60k180k511k23(1)内存分配图内存分配图(3)主存浪费空间主存浪费空间=(8-1)+(32-9)+(120-33)+(331-121) =7+23+87+210=327(k)解:解:根据
36、分区说明表,将根据分区说明表,将4个分区依次分配给个分区依次分配给4个作业,同时个作业,同时修改分区说明表,其内存分配和分区说明表如下所示:修改分区说明表,其内存分配和分区说明表如下所示:1K9K33K121K结论:浪费严重;产生内部碎片结论:浪费严重;产生内部碎片第四章存储器管理 三、动态分区分配方式三、动态分区分配方式 动态分区分配又称为动态分区分配又称为可变式分区分配可变式分区分配,是一种动态划分存储器,是一种动态划分存储器的分区方法。的分区方法。存储管理方法存储管理方法 不事先将内存划分成一块块的分区,而是在作业进入内存时,不事先将内存划分成一块块的分区,而是在作业进入内存时,根据根据
37、作业的大小作业的大小动态地建立分区,并使分区的大小动态地建立分区,并使分区的大小正好适应正好适应作业的需作业的需要。因此系统中分区的大小是要。因此系统中分区的大小是可变的可变的,分区的数目分区的数目也是可变的。也是可变的。 主要特点主要特点 管理简单,只需小量的软件和硬件支持,便于用户了解和使用。管理简单,只需小量的软件和硬件支持,便于用户了解和使用。进程的大小与某个分区大小相等,从而主存的利用率有所提高。进程的大小与某个分区大小相等,从而主存的利用率有所提高。第四章存储器管理 1 1、分区分配中的数据结构、分区分配中的数据结构空闲分区表空闲分区表 用来登记系统中的空闲分区用来登记系统中的空闲
38、分区( (分区号分区号, ,分区起始地址分区起始地址, ,分区大小及状态分区大小及状态). ). 分区号分区号大小大小KBKB起始地址起始地址KBKB状态状态1闲空闲2 2空表目空表目3 3520520504504空闲空闲4 4空表目空表目5 5空闲分区链空闲分区链 用用链头指针链头指针将系统中的空闲分区链接起来,构成空闲分区链。每个将系统中的空闲分区链接起来,构成空闲分区链。每个空闲分区的起始部分存放相应的控制信息空闲分区的起始部分存放相应的控制信息( (如大小如大小, ,指向下一空闲分区的指向下一空闲分区的指针等指针等).).352KB504KB504KB32KB
39、32KB 520KB520KB空闲分区链头指针空闲分区链头指针第四章存储器管理 2 2、分区分配算法、分区分配算法 为了将一个作业装入内存,应按照一定的分配算法从空闲分区为了将一个作业装入内存,应按照一定的分配算法从空闲分区表(链)中选出一个满足作业需求的分区分配给作业,如果这个空表(链)中选出一个满足作业需求的分区分配给作业,如果这个空闲分区的容量比作业申请的闲分区的容量比作业申请的空间要大空间要大,则将该分区,则将该分区一分为二一分为二,一部,一部分分配给作业,剩下的部分仍然留在空闲分区表(链)中,同时修分分配给作业,剩下的部分仍然留在空闲分区表(链)中,同时修改空闲分区表(链)中相应的信
40、息。目前常用分配算法有:改空闲分区表(链)中相应的信息。目前常用分配算法有:q首次适应算法首次适应算法q循环首次适应算法循环首次适应算法q最佳适应算法最佳适应算法q最坏适应算法最坏适应算法第四章存储器管理 首次适应算法(最先适应算法)首次适应算法(最先适应算法)算法算法 空闲分区(链)按地址递增空闲分区(链)按地址递增的次序排列。在进行内存分的次序排列。在进行内存分配时配时, ,从空闲分区表从空闲分区表/ /链首链首开始顺序查找开始顺序查找, ,直到找到第一个满足直到找到第一个满足其大小要求的空闲分区为止。然后再按照作业大小,从该分其大小要求的空闲分区为止。然后再按照作业大小,从该分区中划出一
41、块内存空间分配给请求者,区中划出一块内存空间分配给请求者,余下余下的空闲分区仍留的空闲分区仍留在空闲分区表(链)中。在空闲分区表(链)中。第四章存储器管理 区号区号大小大小起址起址132k20k28k52k3120k60k4331k180k空闲分区表空闲分区表解:解:按按首次适应算法首次适应算法, 申请作业申请作业100k,分配分配3号分区,剩下分区为号分区,剩下分区为20k,起始地址,起始地址160K ; 申请作业申请作业30k, 分配分配1号分区,剩下分区为号分区,剩下分区为2k,起始地址,起始地址50K ; 申请作业申请作业7k, 分配分配2号分区,剩下分区为号分区,剩下分区为1k,起始
42、地址,起始地址59K ;其内存分配图及分配后空闲分区表如下其内存分配图及分配后空闲分区表如下:例例 :系统中的空闲分区表如下,现有三个作业分配申请内存空间系统中的空闲分区表如下,现有三个作业分配申请内存空间100K、30K及及7K。给出按首次适应算法的内存分配情况及分配后空闲。给出按首次适应算法的内存分配情况及分配后空闲分区表。分区表。第四章存储器管理 区号区号大小大小起址起址12k50k21k59k320k160k4331k380k(3)该算法分配后的空闲分区表该算法分配后的空闲分区表0k20k52k60k180k511k(1)内存分配图内存分配图50K59K160K380Kv首次适应算法的
43、特点首次适应算法的特点 优先利用优先利用内存低地址部分的空闲分区内存低地址部分的空闲分区, ,从而保留了高地址部分的大空闲区。从而保留了高地址部分的大空闲区。但由于但由于低地址部分不断被划分低地址部分不断被划分, ,致使低地址端留下许多难以利用的很小的空闲分致使低地址端留下许多难以利用的很小的空闲分区区( (碎片或零头碎片或零头),),而每次查找又都是从低地址部分开始而每次查找又都是从低地址部分开始, ,这无疑这无疑增加了查找可用增加了查找可用空闲分区的开销。空闲分区的开销。区号区号大小大小起址起址132k20k28k52k3120k60k4331k180k(2)分配前空闲分区表分配前空闲分区
44、表三个作业分配申请内存空间三个作业分配申请内存空间100K、30K及及7K。第四章存储器管理 循环首次适应算法循环首次适应算法算法算法 又称为又称为下次适应算法下次适应算法,由首次适应算法演变而来。在为作,由首次适应算法演变而来。在为作业分配内存空间时业分配内存空间时, ,不再每次从空闲分区表不再每次从空闲分区表/ /链首开始查找链首开始查找, ,而是而是从从上次找到的空闲分区的下一个空闲分区上次找到的空闲分区的下一个空闲分区开始查找开始查找, ,直到找到第直到找到第一个能满足其大小要求的空闲分区为止。然后,再按照作业大一个能满足其大小要求的空闲分区为止。然后,再按照作业大小,从该分区中划出一
45、块内存空间分配给请求者,余下的空闲小,从该分区中划出一块内存空间分配给请求者,余下的空闲分区仍留在空闲分区表分区仍留在空闲分区表/ /链中。链中。第四章存储器管理 区号区号大小大小起址起址132k20k28k52k3120k60k4331k180k空闲分区表空闲分区表解:解:按循环首次适应算法,按循环首次适应算法, 申请作业申请作业100k,分配分配3号分区,剩下分区为号分区,剩下分区为20k,起始地址起始地址160K; 申请作业申请作业30k, 分配分配4号分区,剩下分区为号分区,剩下分区为301k,起始地址,起始地址210K ; 申请作业申请作业7k, 分配分配1号分区,剩下分区为号分区,
46、剩下分区为25k,起始地址,起始地址27K ;其内存分配图及分配后空闲分区表如下:其内存分配图及分配后空闲分区表如下:例例 :系统中的空闲分区表如下,现有三个作业分配申请内存空间系统中的空闲分区表如下,现有三个作业分配申请内存空间100K、30K及及7K。给出按循环首次适应算法的内存分配情况及分配后空闲分区。给出按循环首次适应算法的内存分配情况及分配后空闲分区表。表。第四章存储器管理 区号区号大小大小起址起址125k27k28k52k320k160k4301k210k(3)该算法分配后的空闲分区表该算法分配后的空闲分区表v算法特点算法特点 使存储空间的利用使存储空间的利用更加均衡更加均衡,不致
47、使小的空闲区集中在存储,不致使小的空闲区集中在存储区的一端,但这会导致区的一端,但这会导致缺乏大的空闲分区缺乏大的空闲分区。 0k 20k 52k 60k180k511k(1)内存分配图内存分配图27K52K160K210K区号区号大小大小起址起址132k20k28k52k3120k60k4331k180k(2)分配前空闲分区表分配前空闲分区表三个作业分配申请内存空间三个作业分配申请内存空间100K、30K及及7K。第四章存储器管理 最佳适应算法最佳适应算法算法算法 空闲分区表空闲分区表/ /链按容量大小递增链按容量大小递增的次序排列。在进行内存的次序排列。在进行内存分配时,从空闲分区表分配时
48、,从空闲分区表/ /链的首开始顺序查找,直到找到第一链的首开始顺序查找,直到找到第一个满足其大小要求的空闲分区为止。个满足其大小要求的空闲分区为止。 按这种方式为作业分配内存,就能把既满足作业要求又按这种方式为作业分配内存,就能把既满足作业要求又与作业大小与作业大小最接近最接近的空闲分区分配给作业。如果该空闲分区大的空闲分区分配给作业。如果该空闲分区大于作业的大小,则与首次适应算法相同,将剩余空闲分区仍留于作业的大小,则与首次适应算法相同,将剩余空闲分区仍留在空闲分区表在空闲分区表/ /链中。链中。第四章存储器管理 0k 20k 52k 60k180k511k2134例例 :系统中的空闲分区表
49、如下,现有三个作业分配申请内存空间系统中的空闲分区表如下,现有三个作业分配申请内存空间100K、30K及及7K。给出按最佳适应算法的内存分配情况及分配后。给出按最佳适应算法的内存分配情况及分配后空闲分区表。空闲分区表。区号区号大小大小起址起址18k52k232k20k3120k60k4331k180k分配前的空闲分区表分配前的空闲分区表内存分区内存分区按从小到大排队按从小到大排队第四章存储器管理 解:解:按按最佳适应算法最佳适应算法,分配前的空闲分区表如上表。,分配前的空闲分区表如上表。 申请作业申请作业100k,分配分配3号分区,剩下分区为号分区,剩下分区为20k,起始地址起始地址160K;
50、 申请作业申请作业30k, 分配分配2号分区,剩下分区为号分区,剩下分区为2k,起始地址,起始地址50K ; 申请作业申请作业7k, 分配分配1号分区,剩下分区为号分区,剩下分区为1k,起始地址,起始地址59K ;其内存分配图及分配后空闲分区表如下其内存分配图及分配后空闲分区表如下区号大小起址18k52k320k160k232k20k4331k180k作业作业100K分配后的空闲分区表分配后的空闲分区表区号大小起址22k50k18k52k320k160k4331k180k作业作业30K分配后的空闲分区表分配后的空闲分区表区号大小起址11k59k22k50k320k160k4331k180k作业
51、作业7K分配后的空闲分区表分配后的空闲分区表区号区号大小大小起址起址18k52k232k20k3120k60k4331k180k分配前的空闲分区表分配前的空闲分区表第四章存储器管理 (2)该算法分配后的空闲分区表该算法分配后的空闲分区表 0k 20k 52k 60k180k511k(1)内存分配图内存分配图50K59K160K180K区号区号大小大小起址起址11k59k22k50k320k160k4331k180kv算法特点算法特点 若存在与作业大小一致的空闲分区若存在与作业大小一致的空闲分区, ,则它必然被选中,若则它必然被选中,若不存在不存在与与作业大小一致的空闲分区,则只划分比作业稍大的
52、空闲分区,作业大小一致的空闲分区,则只划分比作业稍大的空闲分区,, ,从而保从而保留了大的空闲分区留了大的空闲分区, ,但空闲区一般不可能正好和它申请的内存空间大小但空闲区一般不可能正好和它申请的内存空间大小一样一样, ,因而将其分割成两部分时因而将其分割成两部分时, ,往往使往往使剩下的空闲区非常小剩下的空闲区非常小, ,从而在存从而在存储器中留下许多难以利用的小空闲区(碎片或零头)储器中留下许多难以利用的小空闲区(碎片或零头)。第四章存储器管理 最坏适应算法最坏适应算法算法算法 空闲分区表空闲分区表/ /链按容量大小递减链按容量大小递减的次序排列。在进行的次序排列。在进行内存分配时,从空闲
53、分区表内存分配时,从空闲分区表/ /链的首开始顺序查找,直到链的首开始顺序查找,直到找到第一个比之大的空闲分区为止。剩下的空闲仍留在找到第一个比之大的空闲分区为止。剩下的空闲仍留在空闲分区表空闲分区表/ /链中。链中。第四章存储器管理 区号区号大小大小起址起址1331k180k2120k60k332k20k48k52k空闲分区表空闲分区表例例 :系统中的空闲分区表如下,现有三个作业分配申请内存空系统中的空闲分区表如下,现有三个作业分配申请内存空间间100K、30K及及7K。给出按最坏适应算法的内存分配情况及分。给出按最坏适应算法的内存分配情况及分配后空闲分区表。配后空闲分区表。按从大到小排队按
54、从大到小排队第四章存储器管理 区号大小起址1231k280k2120k60k332k20k48k52k作业作业100K分配后的空闲分区表分配后的空闲分区表区号大小起址1201k310k2120k60k332k20k48k52k作业作业30K分配后的空闲分区表分配后的空闲分区表区号大小起址1194k317k2120k60k332k20k48k52k作业作业7K分配后的空闲分区表分配后的空闲分区表解:解:按按最坏适应算法最坏适应算法,分配前的空闲分区表如上表。,分配前的空闲分区表如上表。 申请作业申请作业100k,分配分配1号分区,剩下分区为号分区,剩下分区为231k,起始地址起始地址280K;
55、申请作业申请作业30k, 分配分配1号分区,剩下分区为号分区,剩下分区为201k,起始地址,起始地址310K ; 申请作业申请作业7k, 分配分配1号分区,剩下分区为号分区,剩下分区为194k,起始地址,起始地址317K ;其内存分配图及分配后空闲分区表如下:其内存分配图及分配后空闲分区表如下:区号区号大小大小起址起址1331k180k2120k60k332k20k48k52k空闲分区表空闲分区表第四章存储器管理 区号区号大小大小起址起址1194k317k2120k60k332k20k48k52k(2)该算法分配后的空闲分区表该算法分配后的空闲分区表3 0k 20k 52k 60k180k51
56、1k(1)内存分配图内存分配图20K52K60K280K310K317Kv算法特点算法特点 总是挑选满足总是挑选满足作业要求的最大作业要求的最大的分区分配给作业。这样使分给作业后剩下的分区分配给作业。这样使分给作业后剩下的空闲分区也较大,可装下其它作业。但由于最大的空闲分区总是因首先分配的空闲分区也较大,可装下其它作业。但由于最大的空闲分区总是因首先分配而划分,当有而划分,当有大作业到来大作业到来时,其存储空间的申请往往会得不到满足。时,其存储空间的申请往往会得不到满足。第四章存储器管理 3 3分区分配操作分区分配操作1) 1) 分配内存分配内存根据内存分配算法根据内存分配算法图图 4-7内存
57、分配流程内存分配流程 从头开始查表检索完否?m.sizeu.size?m.size-u.sizesize?从该分区中划出u.size大小的分区将该分区分配给请求者修改有关数据结构返回返回继续检索下一个表项将该分区从链中移出YNNYYN设设: : u.size: 请求的分区大小为;请求的分区大小为; m.size: 空闲分区的大小;空闲分区的大小; size: 规定不再切割的剩余分规定不再切割的剩余分区的大小;区的大小; 该分区该分区整体分整体分配配分成分成两部两部分分找一个空找一个空闲区能满闲区能满足作业大足作业大小小第四章存储器管理 (2 2)回收内存)回收内存 当作业执行结束时,应回收已使
58、用完毕的分区。系统根据当作业执行结束时,应回收已使用完毕的分区。系统根据回收分区的大小及首回收分区的大小及首地址地址,在空闲分区表中检查,在空闲分区表中检查是否有邻接的空闲分区是否有邻接的空闲分区,如有,则合成为一个大的空闲,如有,则合成为一个大的空闲分区,然后修改有关的分区状态信息。分区,然后修改有关的分区状态信息。v 回收分区与回收分区与已有空闲分区已有空闲分区的相邻情况有以下四种的相邻情况有以下四种: 1)回收分区上邻接一个空闲分区)回收分区上邻接一个空闲分区,合并后首地址为空闲分区的首地址合并后首地址为空闲分区的首地址,大小为二者之和。大小为二者之和。 2)回收分区下邻接一个空闲分区)
59、回收分区下邻接一个空闲分区,合并后首地址为回收分区的首地址合并后首地址为回收分区的首地址,大小为二者之和。大小为二者之和。 3)回收分区上下邻接空闲分区)回收分区上下邻接空闲分区,合并后首地址为上空闲分区的首地址合并后首地址为上空闲分区的首地址,大小为三者之和。大小为三者之和。 4)回收分区不邻接空闲分区,这时在空闲分区表中新建一表项,并填写分区大小等)回收分区不邻接空闲分区,这时在空闲分区表中新建一表项,并填写分区大小等信息。信息。回收分区空闲分区(a)空闲分区回收分区(b)空闲分区回收分区空闲分区(c)内存回收情况内存回收情况思考:思考: 哪种回收哪种回收情况,回收情况,回收后,空闲分后,
60、空闲分区数目要减区数目要减少一个?少一个?第四章存储器管理 四、可重定位分区分配方式四、可重定位分区分配方式1、碎片问题、碎片问题 在分区存储管理方式中,必须把作业装入到在分区存储管理方式中,必须把作业装入到一片连续的一片连续的内存空间。如果系统中有若干个小的分区,其总容量内存空间。如果系统中有若干个小的分区,其总容量大于要大于要装入的作业装入的作业,但由于它们不相邻接,也将致使作业不能装入,但由于它们不相邻接,也将致使作业不能装入内存。内存。例例 :如图所示系统中有四个小空闲分区,不相邻,但总容量为如图所示系统中有四个小空闲分区,不相邻,但总容量为90KB,如果现有一作业要求分配,如果现有一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 网络防护培训2026年合同
- 餐饮业员工食品安全培训资料
- 培训机构学员满意度调查分析
- 安全培训制度采石厂
- 2026年起降场地勤人员待命室与设备储藏间设置
- 2026年高频电火花修整实现砂轮在线修锐成形
- 浙江省宁波市鄞州区重点中学2026年初三年级摸底考试(化学试题)试卷含解析
- 2026届江苏省重点中学初三5月月考(化学试题文)试题含解析
- 广西壮族自治区南宁市2026届初三下-(期中)化学试题试卷含解析
- 2026年河南省郑州市七十三中学初三中考保温金卷生物试题试卷含解析
- 2026年甘肃事业单位联考笔试易考易错模拟试题(共500题)试卷后附参考答案
- 《化工HSE与清洁生产》课件-项目6 危险化学品
- 2026年六安职业技术学院单招职业适应性考试题库含答案详解(考试直接用)
- 运输企业物流标准化管理制度
- 2026年《禁毒法》知识测试题及答案(全优)
- 2026陕煤集团榆林化学有限责任公司招聘(162人)笔试模拟试题及答案解析
- 人工智能与文学创作的未来
- 【544】人际心理治疗(IPT)
- 2026中国藏语系高级佛学院招聘应届高校毕业生6人考试备考试题及答案解析
- 2026年春季学期统编版三年级下册语文教学计划(含进度表)(2024新教材)
- 2023年边缘计算相关项目实施方案
评论
0/150
提交评论