操作系统原理-第3章 存储器管理_第1页
操作系统原理-第3章 存储器管理_第2页
操作系统原理-第3章 存储器管理_第3页
操作系统原理-第3章 存储器管理_第4页
操作系统原理-第3章 存储器管理_第5页
已阅读5页,还剩92页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第3章 存储器管理,3.1 内存管理概述(次重点) 3.2 分区存储管理(次重点) 3.3 页式存储管理(重点) 3.4 段式存储管理(非重点) 3.5 段页式存储管理(自学),内存管理的核心任务,Cache、内存、外存三级存储结构,程序和数据的长期保存,程序和数据进入内存才能被处理,缓存一些关键数据,如何让容量有限的内存被多任务安全高效地共享是现代操作系统内存管理的核心任务,也是本章介绍的主要内容。,本章需掌握的知识要点,内存管理任务 三种内存管理方式 两类算法(内存分配、页面置换) 三组区别,3.1 存储管理的概念,1、存储管理策略的分类,OS本身的程序和数据与其他程序一起共享主存,为安全

2、起见,多道程序系统常由OS把内存初始化为系统区和用户区两大部分:,内存,系统区(存放OS程序和数据),用户区(存放用户程序、数据),对用户区内存的管理可采取不同的策略,这些策略可以按照不同的方法进行分类。,存储管理策略的分类,1)静态划分及动态划分 静态划分:固定分区、分页、段页式 动态划分:可变分区、分段、伙伴系统,2)实存管理与虚存管理 实存管理 连续分配(包括固定分区、可变分区和伙伴系统) 实分页(Paging ) 实分段(Segmentation ) 虚存管理 请求分页(Demand paging)- 主流技术 请求分段(Demand segmentation) 段页式( segmen

3、tation with paging ),2、物理地址和逻辑地址,物理地址:存储单元的地址编号,又称绝对地址或实地址 -物理地址的集合称为物理地址空间 逻辑地址:用户程序中使用的地址,又称相对地址或虚地址 -逻辑地址的集合称为逻辑地址空间 -逻辑地址空间起始地址一般是0,程序装入内存时(后),必须将逻辑地址转换成物理地址才能运行,一般采用可重定位方式: 静态重定位:运行之前,由装入程序完成重定位 动态重定位:运行时,由硬件地址变换机构完成重定位,装入,Load 1, 1200 3456,1200,物理地址空间,Load 1, data1 data1 3456,源程序,Load 1, 200 3

4、456,0,100,200,编译 连接,逻辑地址空间,BA=1000,1100,系统采用静态重定位, 程序装入内存时的示例(内外存副本不一致):,装入,Load 1, 200 3456,1200,物理地址空间,Load 1, data1 data1 3456,源程序,Load 1, 200 3456,0,100,200,编译 连接,逻辑地址空间,BA=1000,1100,系统采用动态重定位, 程序装入内存时的示例(内外存副本一致):,1000,3456,LOAD 1, 200,0,100,200,300,LOAD 1, 200,3456,逻辑地址空间,1100,1200,1300,物理地址空间

5、,200,VR,+,1000,BR,运行时动态计算物理地址,显然,采用动态重定位时,程序可在内存中浮动。,3、程序的链接,程序经编译后,形成一组目标模块,再利用链接程序将这组目标模块链接成装入模块(可执行文件)。,三种链接方式: 静态链接 装入时动态链接 运行时动态链接,4、存储管理的功能,(1)内存空间的分配与回收 记录内存的使用情况 设置相应的内存分块表(内存分配回收的依据) 内存空间划分问题?静态或动态,等长或不等长 确定分配算法考虑连续性与离散性,驻留性与交换性,一次性与多次性,静态方式与动态方式 内存碎片问题及解决办法 确定回收策略 (2)地址转换(又称地址重定位、地址映射) 指为了

6、保证CPU执行指令时可正确访问存储单元,需将用户程序中的逻辑地址(相对地址,虚地址)转换为运行时由机器直接寻址的物理地址(绝对地址,实地址)的过程,(3)内存的共享与保护 进程共用相同内存区可节省空间,便于通信,所共享的代码应为纯代码(或者叫可重入的代码) 内存保护限定程序只能访问自己所在的内存区,保护了OS和其他程序常用界限寄存器对法和存取控制字来实现 (4)内存的扩充 常用覆盖、交换和虚拟存储技术等实现对内存的逻辑扩充,以使小内存能够运行大程序,4、存储管理的功能(续),1)覆盖技术 把内存的同一区域分配给一道程序的的若干个子程序或数据段 需要的时候将其调入内存 2)交换技术 将内存中暂时

7、不用的信息交换到外存上 将需要的数据从外存调入内存 3)虚拟存储 主流技术 通过软件和硬件技术把内存和外存构成一个二级存储体系 在用户眼里是一个大容量存储器(速度是内存的,容量是外存的) 也利用了覆盖和交换技术,5、内存扩充技术 -以时间换空间,覆盖示意图,6、存储管理分类按内存划分策略,分区式存储管理:操作系统对内存进行分区,规定每个分区只能装入一个作业或进程。-包括单一连续区、固定分区和可变分区。 分页式存储管理:内存空间和虚存空间都分成大小相等的页(如4k),虚存空间每一页可以按照某种策略装入内存空间的某一页。-目前最常用的的内存管理方式。 分段式存储管理:内存以段为单位进行动态分区,进

8、程的段可以装入存储空间的一个分区。-便于编程及程序共享 段页式存储管理:结合段式和页式优点,先对进程空间分段,再对每个段进行分页。开销比较大,适用于大型系统。,3.2 分区式存储管理 早期的一类实存管理技术,系统给每个作业或进程分配一个连续的内存分区。 单一连续区分配(静态分区技术) 固定分区分配(静态分区技术) 可变分区分配(动态分区技术) 可重定位分区分配(动态分区技术) 伙伴系统(动态分区技术),1. 单一连续区存储管理,系统静态地将内存划分为两个区域: 一个供操作系统使用 一个供用户使用,且每次只能装入一个作业或进程 适用于单用户单任务操作系统。,系统预先把可分配的内存空间分割成若干个

9、连续区域,每一区域称为分区,每个分区的大小可以相同也可以不同,分区的个数与大小固定不变,每个分区每次只能装一个作业。,2. 固定分区存储管理 单一连续区在多道程序系统中的直接应用,job3,设置“主存分配表”,来管理主存空间的使用,1)主存空间分配与释放,三个分区的主存分配表,主存分配:寻找没被占用且长度满足进程要求的分区。典型如顺序分配法。,主存释放:更改主存分配表相应栏目。,2)地址转换与存储保护,地址转换 常采用“静态重定位”方法 作业在装入时:物理地址=逻辑地址+分区下限地址 存储 保护 采用“界限寄存器对”法 程序执行时判断:下限地址 =1,分段地址映射及存储保护机制,地址越界,比较

10、,+,3、段的共享与保护,段的共享 多个进程的某个段对应同一个物理段; 段的信息具有完整的逻辑意义,比页的共享更容易些 段的保护 段表长度寄存器以及段表表目中的段长比较; 存取控制检查:段表中设置有存取控制字段,一般是“只读”、“可写”以及“执行”三种权限的组合。,4、分段与分页的区别,页是信息的物理单位,页的内容通常无完整意义;段是信息的逻辑单位,段的内容具有完整逻辑意义; 分页是静态的,分段是动态的; 页的大小固定,段的大小取决于用户所写的程序; 分页主要是为了节省内存,分段主要为了满足用户需求; 分页进程地址空间是一维线性连续的,分段进程地址空间是二维的; 分页是对用户透明的,而分段是用

11、户可见的。,1. 基本原理 实分段与虚拟存储技术的结合。程序运行前,不必调入所有分段,当所访问的段不在内存中,则将其动态调入。 相比于实分段,虚拟段式的页表进行了一些扩充:,3.4.2 虚拟段式存储管理,段长、段基址、存取控制同实分段页表项; 增长位:是否允许段动态增长 其他信息同虚拟页式存储管理的页表项,2 缺段中断与越界中断,缺段中断 当所需要的段不在内存中时,产生“缺段中断”,调用缺段中断服务程序进行调段: 如若内存中有足有的连续空闲空间,则装入该段 如没有,则检查空闲区总和是否满足要求,如满足,则应采用“紧缩”技术,否则,需要淘汰一(些)段。,越界中断 进程在执行过程中,有时需要扩大分

12、段,如数据段。由于要访问的地址超出原有的段长,产生“越界中断”。 操作系统处理中断时 ,首先判断该段的“增长位”,如可扩充,则增加段的长度;否则按出错处理。,大型程序包含:若干程序段,若干数据段,这些段没有必要同时调入内存。 进程的某些程序段在进程运行期间可能根本不用,如某些错误处理分支; 互斥执行的程序段没有必要同时驻留内存; 有些程序段执行一次后不再用到。,3. 段的动态链接,静态链接:在程序运行之前,由链接装配程序把它们连接成一个可运行的目标程序,并在程序运行时都装入内存。 问题:链接时间长,目标代码长,浪费内存空间。 动态链接:在程序运行过程中需要某段时才将该段链接上。该链接由操作系统

13、完成。 实现:需编译器配合支持。,动态链接与静态链接,动态链接的实现 multics的一种实现方法,段名-段号对照表 (每进程一个),符号表:每段一个,(1) 编译(汇编)时: 遇到访问外段指令,如Load 1,X|Y,将其转换为对本段中引入的链接间接字的间接引用。采用间接寻址,指向一个间接链接字:,动态链接的实现(续),动态链接的实现(续),(2) 执行时: 遇到间接指令,且L=1, 发生链接中断,处理程序: (a) 由D取出符号地址; (b) 由段名查段名-段号对照表,是否分配段号。 已分配段号:取出该段号,找到该段,查符号表得段内地址; (段号,段内地址)D, 0 L 未分配段号:将该段读入内存,分配段号, 填写段表,填写段名-段号对照表,转(b),汇编前:,. Load 1, X| .,W段,X段, 1234 .,示例,汇编后,连接前:,X 3,连接后:,动态连接问题,动态连接与共享的矛盾 动态连接:修改连接字(代码) 段的共享:要求纯代码(pure code) 解决方法 共享代码分为“纯段”和“杂段” 纯段共享, 杂段私用。,P109P112:综合练习题三 补充题1(似习题7.4) 某分页系统中,经快表完成的一次内存访问需100ns,经页表完成的一次

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论