第17讲 第四章 内存管理(二)

更新时间:2023-08-18 20:05:01 阅读量: 资格考试认证 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

河北科技师范学院大专课程

操作系统第十五讲主讲人:曾晓宁2014-5-13 1

第5章 内存管理计算机系统中的存储器可以分为两种:内存储器 和辅助存储器。前者可被 CPU直接访问,后者不 能。辅助存储器与CPU之间只能够在输入输出控 制系统的管理下,进行信息交换。

既然内存储器可被CPU直接访问,因此它是计算 机系统中的一种极为重要的资源。在操作系统中, 把管理内存储器的部分又称为“存储管理”。能 否合理地使用内存,会在很大程度上影响到整个 计算机系统的性能。2

2014-5-13

第4章 内存管理4.1 4.2 4.3 4.4 4.5 内存管理功能 分区管理 页式管理 段式管理 段页式管理

2014-5-13

4.1 内存管理功能

4.1.1 内存的分配与回收 (重点是研究内存分配给多个用户使用和各种分 配算法) 4.1.2 地址重定位 (研究各种地址变换机构以及静态和动态重定 方法) 4.1.3 内存的共享与保护 (研究保护各类程序、数据区的方法) 4.1.4 虚拟存储器 (主要研究虚拟存储器和各种调度算法)2014-5-13 4

回忆复 习

4.1.1 内存的分配与回收

1、内存的分配方式 内存分配按分配时机的不同,可分为两种方式。 (1)静态分配 (2)动态分配2、内存分配机制的功能

⑴设臵一个内存分配数据结构; ⑵分配内存空间。 ⑶回收主存空间。2014-5-13 5

4.1.2 地址重定位1、内存空间与逻辑地址空间 2、静态重定位和动态重定位 将程序的逻辑地址空间中的逻辑地址转换为内存空 间中的物理地址,这一过程称为地址重定位;

是指当目标程序被装入内存时,由重定位装入程序, 一次性完成逻辑地址到物理地址的转换。指把目标程序装入内存时,并不立即把逻辑地址转 达换为物理地址,而是在程序运行过程中,当CPU 访问程序和数据时,才进行地址转换。

2014-5-13

重定位寄存器 0

. . .LOAD A 200 200

1000 有效地址

. . .LOAD A 200

程 序 由 此 0装 入

1000 1100

100

+

200

. . .3456

. . .

3456

. . .300

. . . . . .

1200

1300

动态重定位过程示意2014-5-13 7

4.1.3 内存的共享和保护1、内存共享 是指两个或多个进程公用内存中相同的 区域,即它们的内存空间有重叠的部分,这 样被共享的程序和数据,只需在内存中保留 一个副本。2、内存保护 主要任务是保证在内存中的每道程序只能在给定 的存储区域内活动并互不产生干扰。 防止地址越界 防止操作越权(对共享区有访问权)2014-5-13 8

4.1.4 虚拟存储器(主存扩充)1、局部性原理 在一段时间内,程序的执行仅于某个部分,即 程序对内存空间的访问也只限于某个区域。 2、虚拟存储器:是采用请求调入功能和臵换功 能,把内存与外存有机

的结合起来使用,从 逻辑上对内存容量进行扩充的一种存储器系 统。

2014-5-13

4.2 分区管理也称连续分配方式,是指程序装入的内存 空间必须是连续的; 4.2.1 单分区 4.2.2 固定分区 4.2.3 可变分区

2014-5-13

4.2.1 单分区基本思想:

用户区:供用户使用,在任一时刻,只 有一个进程存在,且这个进程总是从用 户区的起始地址开始连续存放,从装入 到执行完毕,独占整个用户区。适用于单用户单任务的OS。

2014-5-13

4.2.2 固定分区固定分区是能满足多道程序设计的最简单的 存储管理方式。 基本思想: 把内存空间划分成若干个固定大小的连续 存储区,称为分区。 每个分区只能装入一道程序,内存被划分 成几个分区,就允许装入几道程序。 设臵了一张内存分配表。12

2014-5-13

缺点:不能充分利用内存空间。 程序的大小通常不可能与某个分区的大小 恰好相等,会产生内碎片。 由于分区大小事先已经固定,限制了装入程 序的大小; 分区数目限制了可并发执行的进程数目。

2014-5-13

4.2.3 可变分区内存不事先进行划分,而是在装入程序时, 根据装入程序的实际需要来分配内存空间, 这样,内存分区的个数、各分区的大小、在 内存中活动的内存个数都是随时间变化的。

2014-5-13

可变分区管理的数据结构(1)空闲分区表 (2)空闲分区链 在每个空闲分区的起始单元设臵两个域, 一个域用于存放空闲分区的大小;

另一个域存放指向下一个空闲分区起始地址的

指针。 操作系统开辟一个单元,存放第1个空闲分区 的起始地址,这个单元被称为“链首指针”。 最后一个空闲分区的next中存放标志“NULL” 表明它是最后一个。15

2014-5-13

空闲区表和空闲区队列举例

2014-5-13

常用的内存分配算法当装入一个程序时,按一定的分配 算法,从空闲分区链中查找满足需求的 空闲分区进行分配,常用的分配算法有 以下4种: (1)首次适应算法 (2)循环首次适应算法 (3)最佳适应算法 (4)最坏适应算法2014-5-13 17

方面 排序方法

开始位置

确定依据 第一个大小能 满足要求的 第一个大小能 满足要求的 最佳的、第一 个大小能满足 要求的、 长度最大的

算法 首次适 应法

地址从小 链首 到大

循环首次 地址从小 上次找到的 下一个分区 适应法 到大 最佳适应 长度从小 链首 到大 算法

最坏适应 长度从大 链首 到小 算法2014-5-13

三种策略比较上述三种放臵策略各有利弊,到底哪种最好 不能一概而论,而应针对具体进程序列来分 析。 对于某一进程序列来说,某种算法能将该进 程序列中所有进程安臵完毕,那么

我们说该 算法对这一进程序列是合适的。 对于某一算法而言,如它不能立即满足某一 要求,而其它算法却可以满足此要求,则这 一算法对该进程序列是不合适的。 回忆结束2014-5-13 19

举例

经分析可知:最 佳适应法对这个进程 例1:有进程序列:进程A要求 18K;进程B要 序列是合适的,而其 求25K,进程C要求30K。系统中空闲区按三种 它两种对该进程序列 是不合适的。 算法组成的空闲区队列:分析哪种算法对此进 分给A, 分给B, 程序列是最合适的。 空闲12K 空闲21K 分给A, 空闲2K 分给B,分给C, 空闲5K 空闲16K 分给A, 空闲28K 分给B, 空闲5K

2014-5-13

练习

经分析可知:最 坏适应法对这个进程 序列是合适的,而其 有进程序列:进程A要求21K;进程 B要求30K,进程C 它两种对该进程序列 分给B, 分给A, 是不合适的。 空闲16K 要求25K。分析哪种算法对此进程序列是最合适的。 空闲9K

分给A, 空闲9K分给A, 空闲25K

分给B, 空闲16K

分给B, 空闲0K

再分给C, 空闲0K2014-5-13 21

本文来源:https://www.bwwdw.com/article/6rpj.html

Top