目录

  • 1 绪论
    • 1.1 课程引入
    • 1.2 操作系统的发展过程
    • 1.3 操作系统的基本类型
    • 1.4 操作系统的特征
    • 1.5 操作系统的功能
    • 1.6 操作系统的组织结构
    • 1.7 章节测验
    • 1.8 考研真题讲解
  • 2 操作系统的关键技术
    • 2.1 操作系统的硬件环境
    • 2.2 中央处理器
    • 2.3 系统调用
    • 2.4 存储系统
    • 2.5 中断机制
    • 2.6 缓冲技术
    • 2.7 章节测验
    • 2.8 考研真题讲解
  • 3 进程的描述与控制
    • 3.1 进程概述
    • 3.2 进程状态及转换
    • 3.3 进程控制
    • 3.4 进程互斥
    • 3.5 进程同步
    • 3.6 经典互斥与同步
    • 3.7 进程通信
    • 3.8 线程
    • 3.9 章节测验
    • 3.10 考研真题讲解
  • 4 资源分配与死锁
    • 4.1 资源管理概述
    • 4.2 进程死锁
    • 4.3 死锁预防
    • 4.4 死锁避免
    • 4.5 死锁的检测和解除
    • 4.6 章节测验
    • 4.7 考研真题讲解
  • 5 处理机管理
    • 5.1 处理机的多级调度
    • 5.2 作业调度与进程调度
    • 5.3 调度算法
    • 5.4 两道批处理调度
    • 5.5 实时调度
    • 5.6 章节测验
    • 5.7 考研真题讲解
  • 6 存储管理
    • 6.1 存储管理概述
    • 6.2 分区存储管理
    • 6.3 页式存储管理
    • 6.4 页面置换算法
    • 6.5 段式存储管理
    • 6.6 段页式存储管理
    • 6.7 “抖动”与工作集
    • 6.8 章节测验
    • 6.9 考研真题讲解
  • 7 文件管理
    • 7.1 文件和文件系统
    • 7.2 文件的逻辑结构与存取方法
    • 7.3 文件的物理结构
    • 7.4 文件存储空间管理
    • 7.5 文件目录
    • 7.6 文件共享与安全
    • 7.7 磁盘调度算法
    • 7.8 章节测验
    • 7.9 考研真题讲解
  • 8 设备管理
    • 8.1 设备管理概述
    • 8.2 设备数据传输方式
    • 8.3 设备分配
    • 8.4 设备驱动程序
    • 8.5 章节测验
    • 8.6 考研真题讲解
存储管理概述


为什么需要进行存储管理?

存储管理是操作系统的重要组成部分,它负责管理计算机系统的重要资源主存储器。由于任何程序、数据必须占用主存空间后才能执行,因此存储管理直接影响系统的性能。

主存储空间一般分为两部分:一部分是系统区,存放操作系统常驻内存部分;另一部分是用户区,存放用户的程序和数据等。存储管理主要是对用户区域进行管理,当然也包括对辅存的管理。目的是要尽可能地方便用户使用和提高主存储器的效率。




存储管理的四个核心功能包括:

(1)内存空间的管理

记录每个内存单元的使用情况设置相应的内存分配表,根据不同的内存划分形式可以采用不同的数据结构:

  • 位示图:用一位(bit)表示一个空闲页面(0:空闲,1:占用)。

  • 空闲页面表:包括首页面号和页面个数,连续若干的页面作为一组登记在表中。

  • 空闲块表:空闲块首址和空闲块长度,没有记录的区域即为进程所占用。

  • 空闲块链表:将所有的空闲块链成一个链表。


(2)地址变换(重定位)

用户编程时使用的地址称为逻辑地址。而当程序运行时,它将被装入主存储器地址空间的某些部分,此时程序和数据的实际地址一般不可能同原来的逻辑地址一致,我们把程序在内存中的实际地址称为物理地址。

为了保证程序的正确运行,必须把程序和数据的逻辑地址转换为物理地址,这一工作称为地址转换或重定位。

  • 静态重定位:当用户程序被装入内存时,一次性实现逻辑地址到物理地址的转换,以后不再转换。一般在装入内存时由重定位装入程序完成。

  • 动态重定位:在程序运行过程中要访问数据时再进行地址变换,即在逐条指令执行时完成地址映射。一般为了提高效率,此工作由硬件地址映射机制来完成。


(3)内存扩充

内存的容量是受实际的存储单元限制的,而运行的程序又不受内存大小的限制,这就需要有效的存储管理技术来实现内存的逻辑扩充,这种扩充不是增加实际的存储单元,而是通过虚拟存储技术、覆盖技术、交换技术等技术来实现的。

1. 覆盖技术

目标是在较小的可用内存中运行较大的程序。常用于多道程序系统,与分区存储管理配合使用。

原理核心在于:一个程序的几个代码段或数据段,按照时间先后来占用公共的内存空间将程序的必要部分(常用功能)的代码和数据常驻内存;可选部分(不常用功能)在其他程序模块中实现,平时存放在外存中(覆盖文件),在需要用到时才装入到内存;不存在调用关系的模块不必同时装入到内存,从而可以相互覆盖。(即不同时用的模块可共用一个分区)。

2. 交换技术

将暂时不能执行的程序送到外存中,从而获得空闲内存空间来装入新程序,或读入保存在外存中而目前到达就绪状态的进程。交换单位为整个进程的地址空间。

3. 虚拟存储技术

把内存与外存有机的结合起来使用,从而得到一个容量很大的“内存”,这就是虚拟存储。当进程运行时,先将一部分程序装入内存,另一部分暂时留在外存,当要执行的指令不在内存时,由系统自动完成将它们从外存调入内存工作。


(4)内存共享和保护

1. 内存共享

当多个进程都要调用某子程序时,只把一个装入内存,让两个进程共享该子程序,提高内存的利用率。

2. 内存保护

  • 防止地址越界:每个进程都有自己独立的进程空间,如果一个进程在运行时所产生的地址在其地址空间之外,则发生地址越界。即当程序要访问某个内存单元时,由硬件检查是否允许,如果允许则执行,否则产生地址越界中断。

  • 防止操作越权:对于允许多个进程共享的存储区域,每个进程都有自己的访问权限。如果一个进程对共享区域的访问违反了权限规定,则发生操作越权。


本节资料