您现在的位置:学赛首页 > 研究生院 > 软件学院 > 正文
操作系统第七章-存储器管理[1]
http://www.educity.cn 作者:ndeoin 来源:学赛网 2008年4月28日 发表评论 进入社区

  第7章 存储器管理

  存储器管理的主要目标是为用户提供方便、安全和充分大的存储器。

  存储器即主存、内存,分为两大部分:

  系统区:供操作系统使用

  用户区:划分为一个或多个区域,供用户进程使用。

  存储器管理的功能

  存储空间的分配和回收:

  地址变换:将逻辑地址变换为物理地址

  存储保护:防止因用户程序错误破坏系统或其他用户,防止程序之间的相互干扰

  存储扩充:在逻辑上为用户提供一个比实际内存更大的存储空间

  7.1 存储器管理的基本概念

  逻辑地址:用户编程时所使用的地址。又称相对地址、虚地址。

  地址空间:逻辑地址的集合。

  物理地址:内存中的地址。又称绝对地址、实地址。

  主存空间:物理地址的集合。

  地址变换

  地址变换:将逻辑地址转换为物理地址。又称地址映射、重定位。

  地址变换分为两类:

  静态地址变换

  动态地址变换

  静态地址变换

  静态地址变换:又称静态地址重定位,地址变换在程序装入时一次完成,以后不再改变。

  特点:不需硬件支持,但程序运行时不能在内存移动,程序需要连续存储空间,难以共享。

  静态地址变换示意图

  动态地址变换

  动态地址变换:又称动态重定位,在程序执行过程中,每次访问内存之前将要访问程序地址转换成内存地址。

  特点:需要硬件支持,不需连续空间,可以实现虚拟存储。

  动态地址变换示意图

  7.2 分区存储管理

  分区存储管理是多道程序系统中采用的一种最简单的方法。它把系统的内存划分为若干大小不等的区域,操作系统占一个区域,其他区域由并发进程共享,每个进程占一个区域。

  分区存储管理分为:

  固定分区

  动态分区

  1. 固定分区存储管理

  固定分区存储管理方法将内存空间划分为若干个固定大小的分区,每个分区中可以装入一道程序。分区的位置及大小在运行期间不能改变。

  为了便于管理内存,系统需要建立一张分区使用表,其中记录系统中的分区数目、分区大小、分区起始地址及状态。

  分区使用表例

  固定分区的内存分配

  分区分配:当有用户程序要装入时,由内存分配程序检索分区使用表,从中找出一个能满足要求的空闲分区分配给该程序,然后修改分区说明表中相应表项的状态;若找不到大小足够的分区,则拒绝分配内存。

  分区回收:当程序执行完毕不再需要内存资源时,释放程序占用的分区,管理程序只需将对应分区的状态置为未分配即可。

  特点:最早的多道程序存储管理方式,不能充分利用内存,存在内存碎片。

  2. 动态分区存储管理

  动态分区存储管理又称为可变分区存储管理,这种存储管理方法的实现思想是根据作业大小动态地建立分区,并使分区的大小正好适应作业的需要。因此系统中分区的大小是可变的,分区的数目也是可变的。

  动态分区中的数据结构

  在动态分区中常用的数据结构有:

  空闲分区表。用一个空闲分区表来登记系统中的空闲分区。其表项类似于固定分区。

  空闲分区链。将内存中的空闲分区以链表方式链接起来,构成空闲分区链。

  空闲分区表示意图

  空闲分区链示意图

  分区分配算法

[1]  [2]  [3]  [4]  [5]  [6]  [7]  [8]