2008~2009学年度第 1 学期编号__8__信息工程系计算机教研室任课教师曹维祥
课程名称操作系统
授课班级:应0701、02,维0701,软0701 授课日期:10.27~11.2
课型:理论课课时安排:2课时
教学内容:3.1 固定分区存储管理
3.2 可变分区存储管理
教学目标:1.掌握绝对地址、相对地址等概念
2.理解地址重定位的作用及静态和动态重定位的异同
3.掌握外部碎片、内部碎片的概念
4. 掌握单一连续分区、固定分区、可变分区存储管理
教学重点:1.绝对地址、相对地址等概念
2.地址重定位的作用
3. 外部碎片、内部碎片的概念
4.单一连续分区、固定分区、可变分区存储管理
教学难点:1.绝对地址、相对地址等概念
2.地址重定位的作用
教学方法:讲授
教学用具:无
教学过程:
[复习]
存储管理的功能[导入新课]
[新课]
一、基本概念
1.存储器的层次
三级存储器结构(粗分):
(1)寄存器――当前要执行的指令或要处理的数据
(2)内存――正在运行的程序和相关数据
(3)外存――“资料”长期保存
CPU不能直接去存取外存上的信息,外存上的程序或数据必须先移到内存中,才能被CPU访问。内存是一个大型的,由字节构成的一维数组,每一个单元都有自己的地址。
注:存储管理主要是对内存的管理、分配,涉及到的外存,也是对内存管理的支持。
2.地址重定位
(1)物理地址(绝对地址)
内存单元唯一的、真实的地址,CPU最终依据物理地址区分(存取)各单元。(2)逻辑地址(相对地址)
程序中相对本程序的“0”(开始)编址所产生的地址。
(3)地址空间
地址集合
物理地址空间――存储空间
逻辑地址空间――地址空间(4)地址重定位
相对地址转换为绝对地址的过程,称为地址重定位。
(5)为什么要地址重定位?
多道程序下,编写程序时无法事先知道内存区域中哪一部分是空闲的,哪一部分已被占用,也就无法在程序中直接使用物理地址,但程序不可避免的要使用地址。这之间有个矛盾,解决方法是编写(编译)程序时,使用相对地址,而在程序执行时(或者执行之前)将相对地址转换成绝对地址。
例:调用子程序的操作最终转化为跳转指令,跳到该子程序所在的第一条指令的地址。编写程序时并不知道这个子程序加载到内存的哪一个区域,也就无法直接指定该地址。
(6)地址的静态重定位
程序运行之前,为用户程序实行地址重定位的工作。一般由操作系统的加载程序完成。
特点:
A)程序运行之前
B)可完全由软件(操作系统)来实现,不需要硬件支持
C)一次性集中完成D)重定位后,不方便在内存中移动程序
二、单一连续分区管理
适用于单道系统,将内存分为2个连续区域:系统区、用户区。整个用户区只加载一个用户程序,且为该程序独占
系统区:由操作系统占用
用户区:由用户程序占用
1.主存空间的分配与回收
(1)分配:首先,从作业队列中取出一个作业;判断作业的大小是否大于用户区的大小,若大于则作业不能装入,否则,可以把作业装入用户区。它一次只能装入一个作业。
(2)回收:
作业一旦进入主存,就要等到它结束后才能释放主存,再装入第二个作业即可。2.地址转换与存储保护
(1)地址转换
它采用静态重定位方式。
(2)存储保护通过和界限寄存器的值进行比较,不满足时产生一个“地址越界”中断信号,由操作系统进行处理,以达到存储保护的目的。
注:只有用户程序与操作系统之间的保护,无用户程序之间的保护。
3.管理特点
(1)管理简单。
(2)资源利用率低。不管用户区有多大,它一次只能装入一个作业,这样造成
了存储空间的浪费,使系统整体资源利用率不高。
4.大作业与小作业
小作业:内部碎片――分配给用户程序了,但用户程序未使用的内存区域。(其它程序也不能使用)
大作业:覆盖技术
早期为程序设计人员提供的一种扩充内存的技术,其中心思想是允许一个作业的若干个程序段使用同一个存储区,被共用的存储区被称为“覆盖区”。(程序可能不会同时用到全部的子程序,用到各个子程序时,将该子程序加载到该“覆盖区”)
5.交换
早期内存容量不够大,在小内存下实现具有“多道”的效果的技术。
将作业信息都存放在辅助存储器上,根据单一连续分区存储管理的分配策略,每次只让其中的一个进入内存投入运行。当运行中提出输入输出请求或分配给的时间片用完时,就把这个程序从内存储器“换出”到辅助存储器,把辅助存储器里的另一个作业“换入”内存储器运行。这样,从宏观上看,系统中同时就有几个作业处在运行之中。
注:覆盖和交换均达到了“扩充”内存的目的。
三、固定分区存储管理
早期多道系统下采用的存储管理方式,系统启动后将用户内存区域划分为若干个大小不等的固定区域,每个区域称为一个分区,每个分区装入一个作业。
分区大小和数量均相对固定。
为什么大小不等?
方便装入大小不等的作业,减少内部碎片的影响。
1.主存空间的分配与回收
(1)采用的数据结构
一般设置了一张分区分配表。
分区分配表的内容包括:分区序号、起始地址、大小、状态。
状态栏的值为“0”表示分区空闲,可以装入作业;当装入作业后,其值改为作业名,表示这个分区被该作业占有。
(2)主存空间的分配
检查分区分配表,选择状态标志为“0”的分区,按某种分配策略(首次适应、最佳适应法)检查,若符合,则将作业装入该分区。
注:大作业不能装入。
(3)主存空间的回收
当作业运行结束时,根据作业名到分区分配表中进行检查,从状态栏的记录可知该作业占用的分区,把该分区的状态标志置成“0”,表示该分区就空闲了,可以用来装入新的作业。
2.地址转换与存储保护
(1)地址转换
采用静态重定位方式。
(2)存储保护
系统设置了一对寄存器,称为“下限寄存器”和“上限寄存器”记录当前在运行作业在主存储器中的下限和上限地址。
当CPU执行作业的指令时检查:“下限地址<=绝对地址<=上限地址”。
注:用户程序和操作系统之间;用户程序之间
3.特点(1)简单
(2)还是存在内部碎片;大作业不能装入
注:为什么会存在内部碎片?
分区大小固定
若空闲的内存大小(不连续)大小大作业,为什么大作业还是不能装入?
现在只是内部碎片,该分区已分配给其它程序。外部碎片时,原因:要求连续的存储空间。
四、可变分区存储管理
系统启动后不划分固定的分区,而是在作业要求装入主存时,根据作业的大小动态地划分分区,使分区的大小正好适应作业的要求。各分区的大小是不定的,主存中分区的数目也是不定的。
1.外部碎片
内存区域中未分配给任何作业,但因区域过小,又不能分配给作业的区域。
可变分区下解决了内部碎片,但又出现外部碎片。解决方法是合并空闲分区,这又要求程序能在内存移动。静态重定位的机制不适合程序在内存中的移动。
2.动态重定位
程序执行时,进行地址的转换。也就是说执行指令时,对指令中的地址进行转换工作。
特点:
A) 程序运行时(时间)
B) 要硬件支持(谁做)
C) 指令中涉及到地址时(怎么做)
D) 方便在内存中移动程序(结果)
3.空闲区的合并
一般有两种合并时机:
(1)当大作业要求未满足时
(2)作业结束时
注:合并是不得已而为之(严重影响系统效率)
4.分区的管理与组织
操作系统按什么方式记录、管理内存的使用情况。(1)表格法(2)单链表
(3)双链表
表格法实现简单,但要专门保留一块区域存放表格,表格多大?(可以存放多少项?,多了――浪费;少了――不够用
注:数据结构的知识,顺序表、链表等及特点
数据的逻辑形式、物理组织形式。
5.空闲分区的分配算法
按什么策略分配分区。
(1)最先适应法
分配最先找到的、满足存储需求的那个空闲分区
(2)最佳适应法
分配能够满足存储需求的、最小的空闲分区
(3)最坏适应法
分配能够满足存储需求的、最大的空闲分区
最佳适应法每次分配后,有可能造成一个很小的外部碎片,经过若干次后,系统中会存在很多很小外部碎片,系统必须频繁的合并分区;最坏适应法分配后,剩下的空闲区域相对比较大,可能能够装入另一个作业,形成碎片机率相对小。
6.地址的重定位与存储保护
(1)重定位
动态重定位
(2)存储保护
上限寄存器与下限寄存器
[小结]
总结:
单道→多道:固定分区→可变分区
内部碎片→出现外部碎片为什么可解决内部碎片?
根据作业大小,动态分配区域
静态重定位→动态重定位程序加载到内存后,相对地址不需
改动,可移动
不一定是真的要移动(为移动而移动),如交换时,作业再调入内存时,不需要加载到同样的位置
单一连续分区、固定分区、可变分区都要求程序在内存中战用连续的内存区域。若不要求占用连续存储区域,即可解决外部碎片。
[作业]
P81 2
[课后小结]
第13页下载本文