存储管理(一)
目录
4.1 存储器的工作原理
- 存储器层次
- 地址转换与存储保护
4.2 连续存储管理
- 固定分区存储管理
- 可变分区存储管理
- 内存不足的存储管理技术
存储管理是操作系统的重要组成部分,负责管理计算机系统的重要资源——内存。
内存空间一般分为两部分
- 系统区 用于存放操作系统内核程序和数据结构等。
- 用户区 用于存放应用程序和数据。
操作系统的主要任务之一是尽可能方便用户使用和提高内存利用率。此外,有效的存储管理也是多道程序设计的关键支撑。具体地说,存储管理包含以下功能:
-
存储分配 为进程分配内存空间以便运行,完成内存区的分配和去配工作。在虚存管理系统中,由于运行程序部分处于内存,部分位于外存,故不仅涉及内存也涉及外存空间的申请与释放工作
-
地址映射
-
程序保护
-
存储共享
-
存储扩充
4.1 存储器工作原理
-
4.1.1 存储器层次
image.png
-
4.1.2 地址转换与存储保护
-
程序的编译、链接、装载和执行
image.png
-
-
编译程序负责记录引用发生的位置,编译或汇编的结果产生相应的多个目标代码模块,每个都附有供引用使用的内部符号表和外部符号表。符号表中依次给出每个符号名及在本目标代码模块中的名字地址,在模块被链接时进行转换。
-
链接需要解析内部和外部符号表,把对符号名字引用转换为数值引用,要转换每个涉及名字地址的程序入口点和数据引用点成为数值地址。
-
装入时根据指定的内存块首地址,再次修改和调整被装载模块中的每个逻辑地址,将逻辑地址绑定到物理地址。
链接程序(linker)的作用是根据目标模块之间的调用和依赖关系,将主调模块、被调模块、以及所用到的库函数装配和链接成一个完整的可装载执行模块。
根据程序链接发生的时刻和链接方式,可分成三种:
(1)静态链接
(2)动态链接
(3)运行时链接
装载程序(loader)把可执行程序装入内存方式有三种:
(1)绝对装载。装载模块中的指令地址始终与其内存中的地址相同,即在模块中出现的所有地址都是内存绝对地址。
(2)可重定位装载。根据内存当时使用情况,决定将装载代码模块放入内存的物理位置。模块内使用的地址都是相对地址。
(3)动态运行时装载。为提高内存利用率,装入内存的程序可换出到磁盘上,适当时候再换入到内存中,对换前后程序在内存中的位置可能不同,即允许进程的内存映像在不同时候处于不同位置,此时模块内使用的地址必为相对地址。
可执行程序逻辑地址转换 (绑定)为物理地址的过程称地址重定位 、地址映射或地址转换,基于上述程序装载方式,可区分三种地址重定位。
(1) 静态地址重定位
(2) 动态地址重定位
( 3 ) 运行时链接地址重定位
存储保护
涉及:防止地址越界和控制正确存取。
各道程序只能访问自己的内存区而不能互相干扰,必须对内存中的程序和数据进行保护,以免受到其他程序有意或无意的破坏。可对进程执行时所产生的所有内存访问地址进行检查,确保进程仅访问它自己的内存区,这就是地址越界保护,越界保护依赖于硬件设施,常用的有:界地址和存储键。
进程访问分配给自己的内存区时,要对访问权限进行检查,如允许读、写、执行等,从而确保数据的安全性和完整性,防止有意或无意的误操作而破坏内存信息,这就是信息存取保护。
4.2 连续存储空间管理
4.2.1 固定分区存储管理
- 固定分区存储管理的基本思想
- 固定分区存储管理的数据结构
- 作业进入固定分区排队策略
4.2.2 可变分区存储管理
可变分区存储管理是按作业的实际大小来划分分区,且分区个数也是随机的,实现多个作业对内存的共享,进一步提高内存资源利用率。
可变分区存储管理数据结构
可变分区内存分配表可由两张表格组成:
- 已分配区表
-
未分配区表
image.png
链表空闲区管理方法
- 空闲区开头单元存放本空闲区长度及下个空闲区起始地址,把所有空闲区都链接起来,设置第一块空闲区地址指针,让它指向第一块空闲区地址。
- 申请空闲区。
- 归还空闲区。
可变分区管理分配算法
- 最先适应分配算法
- 下次适应分配算法
- 最优适应分配算法
- 最坏适应分配算法
- 快速适应分配算法
4.2.3 内存不足的存储管理技术
1.移动技术
有关移动问题讨论
- 移动条件
- 移动时机
- 移动算法
2. 对换技术
-
对换的作用
为平衡系统负载,通过选择一个进程,把其暂时移出到磁盘,腾出空间给其他进程使用,同时把磁盘中的某个进程再换进内存,让其投入运行,这种互换称对换。 -
对换进程选择
把时间片耗尽或优先级较低的进程换出,因为短时间内它们不会被投入运行;
数据区和堆栈是进程运行时创建和修改的,可通过文件系统把这些可变信息作为特殊文件移出。
批处理系统中,当有进程要求动态扩充内存且得不到满足时可触发对换;分时系统中,对换可与调度结合在一起,每个时间片结束或执行I/O操作时实施。 -
Unix对换器
3. 覆盖技术
- 覆盖技术
- 覆盖的实现技术
- 覆盖技术的不足