操作系统(Operating System,简称OS),是电子计算机系统中负责支撑应用程序运行环境以及用户操作环境的系统软件,同时也是计算机系统的核心与基石。它的职责常包括对硬件的直接监管、对各种计算资源(如内存、处理器时间等)的管理、以及提供诸如作业管理之类的面向应用程序的服务等等。

课程主要内容
操作系统引论(1章)
进程管理(2-3章)
存储管理(4章)
设备管理(5章)
文件管理(6章)
操作系统接口(7章)
系统安全性(9章)
*分布式操作系统
第4章 存储器管理
存储器是计算机系统的重要组成部分,是计算机系统中的一种宝贵而紧俏的资源.操作系统中的存储管理是指对内存的管理,它是操作系统的重要功能之一.
存储管理的主要任务是为多道程序的运行提供良好的环境,方便用户使用存储器,提高存储器的利用率以及从逻辑上扩充存储器.为此
存储管理应具有以下功能:
实现内存的分配和回收
地址变换
"扩充"内存容量
进行存储保护
第4章 存储器管理主要内容
程序的装入和链接
连续分配存储管理方式
基本分页存储管理方式
基本分段存储管理方式
虚拟存储器的基本概念
请求分页存储管理方式
页面置换算法
请求分段存储管理方式
UNIX系统中存储器管理
本章作业
4.1 程序的装入和链接
在多道程序环境下,要使程序运行,必须创建进程,而创建进程第一件事就是将程序和数据装入内存.一个用户源程序要变为在内存中可执行的程序,通常要进行以下处理:
(1)编译:由编译程序将用户源程序编译成若干个目标模块
(2)链接:由链接程序将目标模块和相应的库函数链接成装入模块
(3)装入:由装入程序将装入模块装入内存
返回
分区分配方式存储管理
分区分配方式是满足多道程序设计需要的一种最简单的存储管理方法.
存储管理方法
将内存分成若干个分区(大小相等/不相等),除OS占一区外,其余的每一个分区容纳一个用户程序.按分区的变化情况,可将分区存储管理进一步分为:
固定分区存储管理
动态分区存储管理
二,固定分区分配方式(固定分区存储管理)
是最早使用的一种可运行多道程序的存储管理方法.
存储管理方法
内存空间的划分:将内存空间划分为若干个固定大小的分区,除OS占一区外,其余的一个分区装入一道程序.分区的大小可以相等,也可以不等,但事先必须确定,在运行时不能改变.即分区大小及边界在运行时不能改变.
系统需建立一张分区说明表或使用表,以记录分区号,分区大小,分区的起始地址及状态(已分配或未分配).
固定分区分配方式示意图
三,动态分区分配方式
动态分区分配又称为可变式分区分配,是一种动态划分存储器的分区方法.
存储管理方法
不事先将内存划分成一块块的分区,而是在作业进入内存时,根据作业的大小动态地建立分区,并使分区的大小正好适应作业的需要.因此系统中分区的大小是可变的,分区的数目也是可变的.
主要特点
管理简单,只需小量的软件和硬件支持,便于用户了解和使用.进程的大小与某个分区大小相等,从而主存的利用率有所提高.
1,分区分配中的数据结构
空闲分区表
用来登记系统中的空闲分区(分区号,分区起始地址,分区大小及状态).
解:按首次适应算法,
申请作业100k,分配3号分区,剩下分区为20k,起始地址160K ;
申请作业30k, 分配1号分区,剩下分区为2k,起始地址50K ;
申请作业7k, 分配2号分区,剩下分区为1k,起始地址59K ;
其内存分配图及分配后空闲分区表如下
例 :系统中的空闲分区表如下,现有三个作业分配申请内存空间100K,30K及7K.给出按首次适应算法的内存分配情况及分配后空闲分区表.
380K
首次适应算法的特点
优先利用内存低地址部分的空闲分区,从而保留了高地址部分的大空闲区.但由于低地址部分不断被划分,致使低地址端留下许多难以利用的很小的空闲分区(碎片或零头),而每次查找又都是从低地址部分开始,这无疑增加了查找可用空闲分区的开销.
返回
循环首次适应算法
算法要求
又称为下次适应算法,由首次适应算法演变而来.在为作业分配内存空间时,不再每次从空闲分区表/链首开始查找,而是从上次找到的空闲分区的下一个空闲分区开始查找,直到找到第一个能满足其大小要求的空闲分区为止.然后,再按照作业大小,从该分区中划出一块内存空间分配给请求者,余下的空闲分区仍留在空闲分区表/链中.
区号
空闲分区表
解:按循环首次适应算法,
申请作业100k,分配3号分区,剩下分区为20k,起始地址160K;
申请作业30k, 分配4号分区,剩下分区为301k,起始地址210K ;
申请作业7k, 分配1号分区,剩下分区为25k,起始地址27K ;
其内存分配图及分配后空闲分区表如下
例 :系统中的空闲分区表如下,现有三个作业分配申请内存空间100K,30K及7K.给出按循环首次适应算法的内存分配区号
(2)该算法分配后的空闲分区表
返回
算法特点
使存储空间的利用更加均衡,不致使小的空闲区集中在存储区的一端,但这会导致缺乏大的空闲分区.
最佳适应算法
算法要求:
空闲分区表/链按容量大小递增的次序排列.在进行内存分配时,从空闲分区表/链的首开始顺序查找,直到找到第一个满足其大小要求的空闲分区为止.
按这种方式为作业分配内存,就能把既满足作业要求又与作业大小最接近的空闲分区分配给作业.如果该空闲分区大于作业的大小,则与首次适应算法相同,将剩余空闲分区仍留在空闲分区表/链中.
例 :系统中的空闲分区表如下,现有三个作业分配申请内存空间100K,30K及7K.给出按最佳适应算法的内存分配情况及分配后空闲分区表.
区号
分配前的空闲分区表
内存分区
解:按最佳适应算法,分配前的空闲分区表如上表.
申请作业100k,分配3号分区,剩下分区为20k,起始地址160K;
申请作业30k, 分配2号分区,剩下分区为2k,起始地址50K ;
申请作业7k, 分配1号分区,剩下分区为1k,起始地址59K ;
其内存分配图及分配后空闲分区表如下
作业7K分配后的空闲分区表
(2)该算法分配后的空闲分区表
算法特点
若存在与作业大小一致的空闲分区,则它必然被选中,若不存在与作业大小一致的空闲分区,则只划分比作业稍大的空闲分区,,从而保留了大的空闲分区,但空闲区一般不可能正好和它申请的内存空间大小一样,因而将其分割成两部分时,往往使剩下的空闲区非常小,从而在存储器中留下许多难以利用的小空闲区(碎片或零头).
最坏适应算法
算法要求
空闲分区表/链按容量大小递减的次序排列.在进行内存分配时,从空闲分区表/链的首开始顺序查找,直到找到第一个比之大的空闲分区为止.剩下的空闲仍留在空闲分区表/链中.

邮箱
huangbenjincv@163.com