操作系统复习4_存储器管理.pdf
《操作系统复习4_存储器管理.pdf》由会员分享,可在线阅读,更多相关《操作系统复习4_存储器管理.pdf(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第一章 存储器管理 4.1 存储器的层次结构存储器应容量大,便宜,速度跟上处理器 4.1.1 多级存储器结构 通常有三层,细分为六层,如图 4-1,越往上,速度越快,容量越小,价格越贵。寄存器和主存又称可执行存储器,进程可直接用指令访问,辅存只能用 I/O 访问。4.1.2 主存储器与寄存器 1.主存储器-内存,保存进程运行时的程序和数据。CPU 与外围设备交换的信息一般也依托于主存储器地址空间。为缓和访存速度远低于 CPU 执行指令的速度,在计算机系统中引入了寄存器和高速缓存。2.寄存器-与 CPU 协调工作,用于加速存储器的访问速度,如用寄存器存放操作数,或用地址寄存器加快地址转换速度等。
2、4.1.3 高速缓存和磁盘缓存 1.高速缓存-根据程序执行的局部性原理将主存中一些经常访问的信息(程序、数据、指令等)存放在高速缓存中,减少访问主存储器的次数,可大幅度提高程序执行速度。2.磁盘缓存-将频繁使用的一部分磁盘数据和信息,暂时存放在磁盘缓存中,可减少访问磁盘的次数。它依托于固定磁盘,提供对主存储器存储空间的扩充,即利用主存中的存储空间,来暂存从磁盘中读/写入的信息。4.2 程序的装入和链接 多道程序运行,需先创建进程。而创建进程第一步是将程序和数据装入内存。将源程序变为可在内存中执行的程序,通常都要经过以下几个步骤:编译-若干个目标模块;链接-链接目标模块和库函数,形成装入模块;装
3、入-将装入模块装入内存。图 4-2 对用户程序的处理步骤 寄存器高速缓存主存磁盘缓存磁盘可移动存储介质CPU 寄存器主存辅存库链接程序装入模块装入程序编译程序产生的目标模块第一步第二步第三步内存4.2.1 程序的装入无需连接的单目标模块装入(理解装入方式)1.绝对装入方式(Absolute Loading Mode)-只适用单道程序环境 如果知道程序的内存位置,编译将产生绝对地址的目标代码,按照绝对地址将程序和数据装入内存。由于程序的逻辑地址与实际内存地址完全相同,故不须对程序和数据的地址进行修改。绝对地址:可在编译时给出或由程序员直接赋予。若由程序员直接给出,不利于程序或数据修改,因此,通常
4、是在程序中采用符号地址,然后在编译或汇编时转换为绝对地址。2.可重定位装入方式(Relocation Loading Mode)-适于多道程序环境 多道程序环境下,编译程序不能预知目标模块在内存的位置。目标模块的起始地址是 0,其它地址也都是相对于 0 计算的。此时应采用可重定位装入方式,根据内存情况,将模块装入到内存的适当位置,如图 4-3 作业装入内存时的情况。3.动态运行时装入方式(Dynamic Run-time Loading)-适于多道程序环境 可重定位装入方式并不允许程序运行时在内存中移动位置。但是,在运行过程中它在内存中的位置可能经常要改变,此时就应采用动态运行时装入方式。动态
5、运行时的装入程序,在把装入模块装入内存后,并不立即把装入模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到程序真正执行时才进行。因此,装入内存后的所有地址都仍是相对地址。问题:程序装入内存后修改地址的时机是什么?4.3 连续分配方式 4.3.3 动态分区分配根据进程需要动态分配内存 1.分区分配中的数据结构 (1)空闲分区表用若干表目记录每个空闲分区的分区序号、分区始址及分区的大小等数据项。(2)空闲分区链-为实现对空闲分区的分配和链接,在每分区起始部分,设置前向指针,尾部则设置一后向指针。为检索方便,在分区前、后向指针中,重复设置状态位和分区大小表LOAD 1,2500365LOAD
6、1,2500365100001100012500150005000250010000作业地址空间内存空间目。当分区被分配后,把状态位由“0”改为“1”时,前、后向指针失去意义。图 4-5 空闲链结构 2.分区分配算法(P123)1)首次适应算法(first-fit)空闲分区链以地址递增次序链接 每次按分区链的次序从头查找,找到符合要求的第一个分区。2)循环首次适应算法FF 算法的变种 从上次找到的空闲分区位置开始循环查找,找到后,修改起始查找指针。3)最佳适应算法空闲分区按容量从小到大排序 把能满足要求的、最小的空闲分区分配给作业 4)最坏适应算法空闲分区按容量从大到小排序 挑选最大的空闲区分
7、给作业使用;5)快速适应算法根据容量大小设立多个空闲分区链表 3.分区分配操作 1.分配内存 请求分区 u.size;空闲分区 m.size;m.size-u.sizesize,说明多余部分太小,不再切割,将整个分区分配给请求者;否则从该分区中划分一块请求大小的内存空间,余下部分仍留在空闲分区链。如图 4-6 内存分配流程。2.回收内存(1)回收区与插入点的前一空闲分区 F1 相邻:合并,修改 F1 大小。(2)回收区与后一空闲分区 F2 相邻:合并,修改首地址和大小。(3)回收区同时与前、后两个分区邻接:合并,修改 F1 大小,取消 F2。(4)回收区不邻接:新建表项,填写首地址和大小,并插
8、入链表。如图 前向指针N20N个字节可用后向指针N20 图 4-6 内存分配流程 4.3.6 可重定位分区分配 1动态重定位的引入 例:在内存中有四个互不邻接的小分区,容量分别为 10KB、30KB、14KB 和 26KB。若现有一作业要获得 40KB 的内存空间,因连续空间不足作业无法装入。可采用的一种解决方法是:通过移动内存中作业的位置,以把原来多个分散的小分区拼接成一个大分区的方法,称为“拼接”或“紧凑。由于用户程序在内存中位置的变化,在每次“紧凑”后,都必须对移动了的程序或数据进行重定位。图 4-8 紧凑的示意 4.3.7 对换(即中级调度)1.对换(Swapping)的引入 从头开始
9、查表检索完否?m.sizeu.size?m.sizeu.sizesize?从该分区中划出u.size 大小的分区将该分区分配给请求者修改有关数据结构返回返回继续检索下一个表项将该分区从链中移出YNNYYN操作系统用户程序1用户程序310 KB30 KB用户程序614 KB用户程序926 KB操作系统用户程序1用户程序3用户程序6用户程序980 KB(a)紧凑前(b)紧凑后“活动阻塞”进程占用内存空间;外存上的就绪作业不能进入内存运行。所谓“对换”,是指把内存中暂时不能运行的进程或者暂时不用的程序和数据,调出到外存上,以便腾出足够的内存空间;再把已具备运行条件的进程或所需要的程序和数据,调入内存
10、。对换是提高内存利用率的有效措施。根据对换单位可分为:进程对换、页面对换和分段对换。为了能实现对换,系统应具备以下三方面功能:对换空间的管理、进程的换出与换入 2.进程的换出与换入(1)进程的换出 选择阻塞且优先级最低的进程,将它的程序和数据传送到磁盘对换区上。回收该进程所占用的内存空间,并对该进程的进程控制块做相应的修改。(2)进程的换入 找出“就绪”但已换出到磁盘上时间最久的进程作为换入进程,将之换入,直至已无可换入的进程。4.4 基本分页存储管理方式 前面的连续分配方案会形成许多“碎片”,“紧凑”方法可以解决碎片但开销大。是否允许进程离散装入?离散单位不同,称分页式存储和分段式存储。不具
11、备对换功能称为“基本分页式”,支持虚拟存储器功能称为“请求基本分页式”。4.4.1 页面与页表 1.页面 1)页面和物理块-将进程的逻辑地址空间分成若干个大小相等的片,称为页面,并为各页编号。相应地把内存空间分成与页面相同大小的若干个存储块,称为物理块,也同样编号。分配时,将进程中的页装入到物理块中,最后一页经常装不满一块而形成“页内碎片”。2)页面大小-页面的大小应选择适中。页面太小,内存碎片减小,利用率高;但页表过长,占大量内存。页面较大,页表长度小;但页内碎片大。因此,页面的大小应选择得适中,且页面大小应是 2 的幂,通常为 512 B8 KB。2.地址结构 分页地址中的地址结构如下:3
12、1 12 11 0 它含有两部分:页号P(1231位,最多有1M页)和页内位移量W(011位,每页的大小4KB);对某特定机器,其地址结构是一定的。若给定一个逻辑地址空间中的地址为 A,页面的大小为 L,则页号 P 和页内地址 d 可按下式求得:页号 P 位移量 W MODLAdLAINTP3.页表-实现从页号到物理块号的地址映射 用户程序0 页1 页2 页3 页4 页5 页n 页页表页号块号02132638495内存0123456789104.4.2 地址变换机构 任务:将逻辑地址转换为物理地址;页内地址变换:因页内地址与物理地址一一对应,可直接转换;页号变换:页表可实现从逻辑地址中页号到内
13、存中物理块号的变换;1基本的地址变换机构 a.页表功能可由一组专门的寄存器实现(原理);b.页表大多驻留内存,系统中只设置一页表寄存器来存放页表在内存的始址和页表长度(实际操作);c.进程未执行时,页表始址和长度存放在 PCB 中。执行时才将这两个数据装入页表寄存器中(过程)。图 4-12 分页系统的地址变换机构 2.具有快表的地址变换机构 a.仅用页表寄存器时,CPU 每存取一数据要两次访问内存(页表-地址变换-数据);b.为提高地址变换速度,可在地址变换机构中增设一具有并行查寻能力的特殊高速缓冲寄存器用以存放当前访问的那些页表项,称为“快表”。c.-在 CPU 给出逻辑地址,将页号 P 送
14、入快表 -页号匹配,读物理块号后送物理地址寄存器 -无匹配页号,再访问内存中页表,把从页表项中读出的物理块号送地址寄存器;同时,再将此页表项存入到快表中。-如快表已满,则 OS 须找到一换出页表项换出。为什么增加“快表”?为了提高地址变换速度,可在地址变换机构中增设一个具有并行查寻能力的特殊高速缓冲寄存器,又称为“联想寄存器”(Associative Memory),或称为“快表“快表”有何缺点?页表寄存器页表始址页表长度页号(3)页内地址逻辑地址L越界中断1块号b页表页号012物理地址3 图 4-13 具有快表的地址变换机构 4.5 基本分段存储管理方式 4.5.1 分段存储管理方式的引入(
15、为什么引入)推动内存从固定分配到动态分配直到分页存储,主要动力是内存利用率,而引入分段存储管理方式,主要是为了满足用户和程序员的下述一系列需要:1)方便编程-把作业按逻辑关系划分为若干段,每段有自己的名字和长度,并从 0 开始编址。LOAD 1,A|;STORE 1,B|2)信息共享-段是信息的逻辑单位。为实现共享,存储管理应与用户程序分段的组织方式相适应。3)信息保护-对信息的逻辑单位进行保护,应分段管理。4)动态增长-分段存储能解决数据段使用过程中动态增长。5)动态链接-运行过程中动态调入以段为单位的目标程序。4.5.2 分段系统的基本原理 1.分段 作业划分为若干段,如图 4-16,每个
16、段用段号来代替段名,地址空间连续。段的长度由逻辑信息长度决定,因而各段长度不等。其逻辑地址由段号(段名)和段内地址所组成,结构如下:31 16 15 0 该地址结构中,允许一个作业最多有 64K 个段,每个段的最大长度为 64KB。编译程序能自动根据源程序产生若干个段。2.段表 段号 段内地址 页表寄存器页表始址页表长度页号页内地址逻辑地址L越界中断块号b页表页号页号输入寄存器块号bb快表d物理地址每个段一个连续分区,各段可以离散存入不同分区。为每个进程建立一张段映射表(段表),其中每段占一个表项,记录该段在内存中的始址(又称为“基址”)和段长度。常将段表放在内存中。图 4-16 利用段表实现
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 复习 存储器 管理
限制150内