操作系统4_存储器管理
文章目录
- 操作系统4_存储器管理
-
- 1. 存储器的管理功能
-
- 1.1 地址映射/地址重定位
- 1.2 主存分配与回收
- 1.3 存储保护
- 1.4 主存扩充/虚拟内存
- 2. 存储器的层次结构
- 3. 程序的接入与链接
-
- 3.1 程序的链接
- 3.2 程序的装入
- 4. 分区存储管理
-
- 4.1 单一连续分配
- 4.2 固定分区分配
- 4.3 可变分区分配
-
- 4.3.1 顺序搜索
- 4.3.2 索引搜索
- 4.4 可重定位分区分配
- 4.5 对换
- 分区存储管理特点:连续、碎片
- 5. 分页存储管理
-
- 5.1 基本思想
- 5.2 地址变换
-
- 5.2.1 逻辑地址
- 5.2.2 物理地址
- 5.2.3 地址转换/地址变换
- 5.3 多级页表
- 6. 分段存储管理
- 7. 段页式存储管理
-
- 7.1 基本原理
- 7.2 核心数据结构
- 7.3 地址结构及转换
- 7.4 缺点
1. 存储器的管理功能
1.1 地址映射/地址重定位
- 基本概念
- 内存地址:内存的每个存储单元都有一个编号,这种编号称为内存地址/物理地址/绝对地址
- 内存空间:内存地址的集合称为内存空间/物理地址空间
- 逻辑地址:
- 要求用户用内存地址编程是非常困难的,尤其是在多道程序设计的环境中
- 用户编程所用的地址称为逻辑地址/程序地址/虚地址
- 由逻辑地址组成的空间称为逻辑地址空间/程序地址空间
- 地址映射:把用户程序装入内存时对有关指令的地址部分的修改定义为从程序地址到内存地址的地址映射/地址重定位
- 地址映射的方式
- 静态地址映射:程序被装入内存时由操作系统的连接装入程序完成程序的逻辑地址到内存地址的转换
- 映射方法:假定程序装入内存的首地址为BR,程序地址为VR,内存地址为MR,则地址映射按下式进行:
MR=BR+VR
例如,程序装入内存的首地址为1000,则装配程序就按MR=1000+VR
对程序中所有地址部分进行修改,修改后指令Load A
,200就变为Load A,1200
- 优点:不需要硬件的支持
- 缺点:程序必须占用连续的内存空间;一旦程序装入后不能移动
- 映射方法:假定程序装入内存的首地址为BR,程序地址为VR,内存地址为MR,则地址映射按下式进行:
- 动态地址映射:
- 映射时刻:动态地址重定位是在程序执行的过程中,每次访问内存之前,将要访问的程序转换为内存地址
- 映射实施:一般来说这种转换是由专门的硬件机构来完成的
- 映射方法:最简单的硬件机构是重定位寄存器;在地址重定位机构(一个基地址寄存器BR、一个程序地址寄存器VR、一个内存地址寄存器MR);计算方法
MR = BR + VR
- 具体过程:
- 程序装入内存后,它所占用的内存区的首地址由系统送入基地址寄存器BR中
- 在程序执行的过程中,若要访问内存,将访问的逻辑地址送入VR中
- 地址转换机构把VR和BR中的内容相加,并将结果送入MR中,作为实际访问的地址
- 优点:程序占用的内存空间是动态可变的,当程序从某个存储区移到另一个区域时,只需要修改相应的寄存器BR的内容即可;一个程序不一定要求占用一个连续的内存空间;可以部分地装入程序运行;便于多个进程共享同一个程序的代码
- 缺点:需要硬件的支持;实现存储管理的软件算法较为复杂
- 静态地址映射:程序被装入内存时由操作系统的连接装入程序完成程序的逻辑地址到内存地址的转换
1.2 主存分配与回收
主要完成内存的分配和回收工作,要求设计者选择和确定以下几种策略和结构:
- 调入策略
- 放置策略
- 置换策略
- 分配结构
- 引起内存分配和回收的原因
1.3 存储保护
-
存储保护:保证内存中的多道程序只能在给定的存储区域内活动并不产生干扰(防止地址越界、防止越权(对共享区有访问权))
-
硬件支持:界地址寄存器/界限寄存器
界地址寄存器是被广泛使用的一种存储保护技术
机制比较简单,易于实现
-
实现方法:
- 在CPU中设置一对下限寄存器和上限寄存器,存放用户作业在主存中的下限和上限地址
- 也可将一个寄存器作为基址寄存器,另一寄存器作为限长寄存器(指示存储区长度)
- 每当CPU要访问主存,硬件自动将被访问的主存地址与界限寄存器的内容进行比较,以判断是否越界
- 如果未越界,则按此地址访问主存,否则将产生程序中断/越界中断(存储保护中断)
-
图示
1.4 主存扩充/虚拟内存
- 主存扩充/虚拟内存:为了满足程序员在编程时不受内存结构和容量限制的需求,操作系统为用户提供了一种可以与内存结构不同的存储器,这种存储器被称为虚拟存储器;虚拟存储器是由虚拟内存构成的,这些内存空间被称为虚存空间;虚存空间可以扩展到实际内存之外,因此被形象地称为“虚拟”空间
- 基本原理:
- 将程序正在使用的部分内容放在内存,而暂时不用的部分放在外存,在需要时由系统调入内存,并将不需要(或暂不需要)的部分调出内存
- 由于程序在执行时,在一段时间内一般仅使用它的程序的一部分(或一小部分),所以程序仅有部分装入内存完全能够正确执行
- 要由操作系统结合相关硬件来完成上述工作,这样计算机好像为用户提供了一个容量远大于内存的存储器,这个存储器称为虚拟存储器
2. 存储器的层次结构
- (从上到下,容量增大,速度减慢)
- CPU
- 寄存器
- 主存
- 高速缓存SRAM
- 主存
- 主存储器SDRAM
- 主存
- 磁盘