一. 内容总览
二. 内存空间的分配和回收
为了能将用户程序装入内存,必须为它分配一定大小的内存空间。连续分配方式是最早出现的一种存储器分配方式
该分配方式为一个用户程序分配一个连续的内存空间,即程序代码或数据的逻辑地址相邻,体现在内存空间分配时物理地址的相邻
①连续分配管理方式
1. 单一连续分配方式
2. 固定分区分配
操作系统怎么记录内存中各个分区的占用或者空闲的情况呢?
3. 动态分区分配
问题一:系统要用什么样的数据结构记录内存的使用情况
问题二:当有很多空闲分区都能满需要时,应该选择哪个分区进行分配
选择分区时,可以通过动态分区分配算法来决定
(1). 首次适应算法
(2). 最佳适应算法
(3). 最坏适应算法
(4). 邻近适应算法
(5). 总结
问题三:如何进行分区的分配和回收操作
分配方式一
分配方式二
回收进程4 情况一
回收进程3 情况二
回收进程4 情况三
回收进程2 情况四
动态分区分配算法总结
4. 连续分配方式的缺点
②非连续分配管理方式
如果允许将一个进程分散地装入到许多不相邻的分区中,便可充分地利用内存空间,而无需再进行紧凑
基于这个思想,产生了非连续分配方式,或者称为离散分配方式
根据离散分配时所分配的地址空间的基本单位的不同,又可以将离散分配分为三种:分页存储器管理方式、分段存储器管理方式、段页式存储器管理方式
1. 基本分页存储管理
将用户程序的地址空间分为若干个固定大小的区域,称为页或页面。相应的将内存空间分为若干个物理块或页框,页和块的大小相同。这样就可以将用户程序的任一页放入任一物理块中,实现了离散分配
分页存储管理方式引入的目的:
提高内存的利用率
(1). 非连续分配举例
(2). 分页存储管理基本概念
(3). 采用分页技术之后如何实现地址转换
将进程地址空间分页之后,操作系统该如何实现逻辑地址到物理地址的转换?
(4). 为什么将页面大小设置为2的整数幂就可以方便计算机计算?
原因:在计算机内部,地址是用二进制表示的, 如果页面大小 刚好是 2 的整数幂,则计 算机硬件可以很快速的把逻辑地址拆分 成(页号,页内偏移量)
举例1:
举例2:
(5). 逻辑地址的结构
(6). 页表
(7). 为什么每个页表项的长度是相同的,页号是隐含的
(8). 基本地址变换机构
基本地址变换机构简单来说:就是用于实现逻辑地址到物理地址转换的一组硬件机构
举例
对页表项大小进一步探讨
解决办法
注:一个进程的页表太大(页表项太多的话),那么这个进程的页表一般装到内存里面也是尽可能的然他们装在连续的内存空间里面,这样的话我们可以使用统一的计算方式,就可以得到我们想要得到的页表项存储的位置
(9). 具有快表的地址变换机构
1. 局部性原理
2. 什么是快表(TLB)
快表就是计算机组成原理里面的cache
3. 引入快表之后,地址的变换过程
查询完第一个指令(0,0)之后,查询第二个指令(0.4)的时候,发现快表已近命中,则可以通过快表内存块号和内存偏移量得到物理地址
其中快表当中存放的是页表的一部分副本
举例:
总结:
(10). 两级页表
1. 单级页表存在什么问题?如何解决?
问题一:
问题二:
如何解决呢?
2. 两级页表的原理、逻辑地址结构
3. 如何实现地址变换?
4. 两级页表问题需要注意的几个细节
5. 总结
2. 基本分段存储管理
主要是为了满足用户(程序员)在编程和使用上多方面的要求,把用户程序的地址空间分为若干个大小不同的段,每段可定义一组相对完整的信息。在存储器分配时,以段为单位,这些段在内存中可以不相连接,所以也实现了离散分配
分段存储管理系统引入的目的:
一方面:由于程序都可分为若干个段,如主程序、子程序段A、子程序段B、数据段、栈段,每个段都是一个独立的逻辑单位
另一方面:实现和满足信息共享、信息保护、动态链接、信息的动态增长等需要,都是以段为基本单位
(1). 什么是分段
(2). 什么是段表
(3). 如何实现地址变换
(4). 分段、分页管理的对比
3. 段页式存储管理
是分页和分段两种存储管理方式相结合的产物,它同时具有两者的优点,是现在应用比较广泛的一种存储方式
(1). 分页、分段管理方式中最大的优缺点
(2). 分段+分页的结合—段页式管理方式
(3). 段页式管理的逻辑地址结构
(4). 段表、页表
(5). 如何实现地址变换
三. 内存空间的扩充
1. 覆盖技术
举例:
2. 交换技术(对换技术)
原理:当时的计算机内存特别小,系统把所有的用户作业存放在磁盘上,每次只能调入一个作业进入内存,当该作业的一个时间片用完时,将它调至外存的后备队列上等待,再从后备队列上将另一个作业调入内存
(1). 对换的类型
- 类型一:整体对换
又称为处理机的中级调度或者是进程对换
因为是以进程为单位进行对换的
- 类型二:部分对换
又叫页面(分段)对换:以进程的一个页面/分段为单位
主要用于虚拟存储器系统中的请求分页和请求分段式存储器管理
(2). 为实现进程对换,系统需实现的功能
- 对换空间的管理(包括文件区和对换区)
- 对换区空闲盘块管理中的数据结构
- 对换空间的分配和回收
- 进程的换入换出
3. 虚拟存储技术
虚拟存储器作为现代操作系统中存储器管理的一项重要技术,实现了内存扩充的功能。
这个功能并不是从物理上实际的扩大内存容量,而是在逻辑上实现对内存容量的扩充
用户感觉内容容量比实际内存容量大得多,也可让比内存空间更大的程序运行
①虚拟内存的基本概念
(1). 传统存储管理方式的特征、缺点
(2). 局部性原理
(3). 虚拟内存的定义和特征
当用户看到自己的程序能在系统中正常运行时,他会认为,该系统所具有的内存容量一定比自己的程序大
所谓虚拟存储器:指具有请求调入功能和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统
其逻辑容量由内存容量和外存容量之和一起决定的,其运行的速度接近内存,每位价格接近外存
(4). 如何实现虚拟内存技术
②请求分页存储管理方式
1. 知识总览
2. 页表机制
3. 缺页中断机构
情况一:内存中有空闲块
情况二:内存中没有空闲块
4. 地址变换机构
5. 页面置换算法
(1). 最佳置换算法(OPT)
(2). 先进先出置换算法(FIFO)
(3). 最近最久未使用置换算法(LRU)
注:该算法的实现需要专门的硬件支持,虽然算法性能,但是实现困难,开销大
(4). 时钟置换算法(CLOCK)
(5). 改进型的时钟置换算法
情况一:
情况二:
情况三:
情况四:
(6). 以上算法总结
6. 页面分配策略
在为进程分配内存的时候,涉及三个问题:
- 为保证进程正常运行,所需的最小物理块数的确定
- 在为每个进程分配物理块时,应该采取什么样的分配策略,即所分配的物理块是固定的还是可变的
- 为不同进程所分配的物理块数,是采取平均分配算法还是根据进程的大小按比例分配
(1). 驻留集
(2). 页面分配、置换策略
综上存在3种页面分配、置换策略
1. 固定分配局部置换
2. 可变分配全局置换
3. 可变分配局部置换
4. 三种置换策略的比较
(3).调入页面的时机
(4). 从何处调页
(5). 抖动(颠簸)现象
抖动预防的方法
- 采取局部置换策略
- 把工作集算法融入到处理机调度中
- 利用L=S准则调节缺页率
- 选择暂停的进程
(6). 工作集
③请求分段存储管理方式
④请求段页式存储管理方式
四. 地址转换
五. 存储保护