李元金 计算机与信息工程学院 E-mail: liyuanjin10@126.com 第 12 讲 存储器管理(1) 李元金 计算机与信息工程学院 E-mail: liyuanjin10@126.com 1/
本章内容 存储器的层次结构 程序的装入和链接 连续分配方式 基本分页存储管理方式 基本分段存储管理方式 虚拟存储器的基本概念 请求分页存储管理方式 页面置换算法 请求分段存储管理方式 计算机科学与技术系 信息与教育技术中心 2/
存储器管理 教学目标 教学内容 了解存储器的层次结构 理解程序的装入和链接方式 掌握存储器的连续分配方式 掌握可重定位分区分配方式 掌握对换的含义 教学内容 存储器的层次结构 程序的装入和链接 连续分配方式 可重定位分区分配 对换 3/
复习 银行家算法 死锁的检测与解除 4/
存储器的层次结构 多级存储器结构 可执行存储器 三级:最高层为CPU寄存器,中间为主存,最底层是辅存。 操作系统的存储管理,负责对可执行储存器的分配、回收以及提供在存储层次间数据移动的管理机制。 可执行存储器 5/
存储器的层次结构 主存储器与寄存器 主存储器 寄存器 主存储器是计算机系统中的一个主要部件。用于保存进程运行时的程序和数据,也称可执行存储器。 寄存器 寄存器用于加速存储器的访问速度,如用寄存器存放操作数,或用作地址寄存器加快地址转换速度等。 6/
存储器的层次结构 高速缓存和磁盘缓存 高速缓存 磁盘缓存 容量大于或远大于寄存器,而比内存约小两到三个数量级左右,访问速度快于主存储器。 磁盘缓存本身并不是一种实际存在的存储介质,它依托于固定磁盘,提供对主存储器空间的扩充,即利用主存中的存储空间,来暂存从磁盘中读出(或写入)的信息。 7/
程序的装入和链接 图 4-2 对用户程序的处理步骤 8/
程序的装入和链接 程序的装入 绝对装入方式 可重定位装入方式 程序中所使用的绝对地址,既可在编译或汇编时给出, 也可由程序员直接赋予。 把在装入时对目标程序 指令和数据的修改过程称 为重定位。(静态重定位) 图 4-3 作业装入内存时的情况 9/
程序的装入和链接 动态运行时装入方式 动态运行时的装入程序在把装入模块装入内存后,并不立即把装入模块中的相对地址转换为绝对地址,而是把这种地址转换推迟到程序真正要执行时才进行。因此, 装入内存后的所有地址都仍是相对地址。 10/
程序的装入和链接 程序的链接 静态链接 装入时动态链接 运行时动态链接 在程序运行之前,先将各目标模块及它们所需的库函数,链接成一个完整的装配模块,以后不在拆开。 装入时动态链接 将用户源程序编译后所得到的一组目标模块,在装入内存时,采用边装入边链接的链接方式。 运行时动态链接 对某些目标模块的链接,是在程序执行中需要该目标模块时,才对它进行的链接。 11/
程序的装入和链接 静态链接方式 图 4-4 程序链接示意图 12/
程序的装入和链接 在将这几个目标模块装配成一个装入模块时,须解决以下两个问题: 对相对地址进行修改。 变换外部调用符号。 13/
程序的装入和链接 装入时动态链接 运行时动态链接 装入时动态链接方式有以下优点: 便于修改和更新。 便于实现对目标模块的共享。 这种链接方式是将对某些模块的链接推迟到执行时才执行,亦即,在执行过程中,当发现一个被调用模块尚未装入内存时,立即由OS去找到该模块并将之装入内存, 把它链接到调用者模块上。凡在执行过程中未被用到的目标模块,都不会被调入内存和被链接到装入模块上,这样不仅可加快程序的装入过程,而且可节省大量的内存空间。 14/
连续分配方式 是指为一个用户分配一个连续的内存空间。 分配方式 单一连续分配 固定分区分配 动态分区分配 动态重定位分区分配 15/
连续分配方式 单一连续分配 采用这种存储管理方式时,可把内存分为系统区和用户区两部分,系统区仅提供给OS使用,通常是放在内存的低址部分;用户区是指除系统区以外的全部内存空间, 提供给用户使用。 固定分区分配 将内存用户空间划分为若干个固定大小的区域,在每个分区中只装入一道作业。 划分分区的方法 分区大小相等, 即使所有的内存分区大小相等。 分区大小不等。 16/
连续分配方式 内存分配 图 4-5 固定分区使用表 17/
连续分配方式 动态分区分配 根据进程的实际需要,动态地为之分配内存空间。 实现可变分区分配时,涉及到分区分配中所用的数据结构、分区分配算法和分区的分配与回收操作。 18/
连续分配方式 分区分配中的数据结构 空闲分区表 空闲分区链 图 4-7 空闲链结构 19/
连续分配方式 分区分配操作 分配内存 图 4-8内存分配流程 20/ 20/
连续分配方式 回收内存 图 4-9 内存回收时的情况 21/ 21/
连续分配方式 分区分配算法 首次适应算法 循环首次适应算法 最佳适应算法 最坏适应算法 快速适应算法 哈希算法 22/
连续分配方式 例1:有作业序列:作业A要求18K;作业B要求25K,作业C要求30K。选择一种合适的分区分配算法。 23/
连续分配方式 24/
可重定位分区分配 动态重定位的引入 在连续分配方式中,必须把一个系统或用户程序装入一连续的内存空间。如果在系统中只有若干个小的分区,即使它们容量之和大于要装入的程序,但由于这些分区不相邻接,也无法把该程序装入内存。 碎片:不能被利用的小分区。 25/
可重定位分区分配 紧凑(拼接) 将内存中的所有作业进行移动,使他们全部相邻,这样,即可把原来分散的多个小分区拼接成一个大分区,这时候就可把作业装入该区。这种通过移动内存中作业的位置,以把原来多个分散的小分区拼接成一个大分区的方法称为紧凑(拼接) 。 26/
可重定位分区分配 动态重定位的引入 图 4-11 紧凑的示意 27/
可重定位分区分配 动态重定位的实现 图 4-10 动态重定位示意图 28/
动态重定位分区分配算法 图 4-11 动态分区分配算法流程图 29/
对 换 对换的引入 所谓“对换”, 是指把内存中暂时不能运行的进程或者暂时不用的程序和数据调出到外存上,以便腾出足够的内存空间,再把已具备运行条件的进程或进程所需要的程序和数据调入内存。对换是提高内存利用率的有效措施。 整体对换(进程对换) 部分对换 (页面对换、分段对换) 30/
对 换 对换空间的管理 外存分为:文件区和对换区 为了能对对换区中的空闲盘块进行管理,在系统中应配置相应的数据结构,以记录外存的使用情况。其形式与内存在动态分区分配方式中所用数据结构相似,即同样可以用空闲分区表或空闲分区链。在空闲分区表中的每个表目中应包含两项, 即对换区的首址及其大小,它们的单位是盘块号和盘块数。 对换区的分配和回收。 31/
对 换 进程的换出与换入 进程的换出过程 系统首先选择处于阻塞状态且优先级最低的进程作为换出进程,然后启动盘块,将该进程的程序和数据传送到磁盘的对换区上。若传送过程未出现错误,便可回收该进程所占用的内存空间,并对该进程的进程控制块做相应的修改。 32/
对 换 进程的换入过程 系统应定时地查看所有进程的状态,从中找出“就绪”状态但已换出的进程,将其中换出时间(换出到磁盘上)最久的进程作为换入进程,将之换入,直至已无可换入的进程或无可换出的进程为止。 33/
作业 P152 1,4,6,7,10,11,12 34/