动态异长分区的存储分配与回收算法
实验5 动态异长分区的存储分配与回收算法
5.1 实验目的
理解存储管理的功能,掌握动态异长分区的存储分配与回收算法。 存储器是计算机系统中的关键资源,存储管理一直是操作系统的最主要功能之一。存储管理既包括内存资源管理,也包括用于实现分级存储体系的外存资源的管理。通常, 内存与外存可采用相同或相似的管理技术,如内存采用段式存储管理,则外存也采用段式存储管理。存储管理需要完成如下功能: 存储分配、存储共享、存储保护、存储扩充、地址映射。 当一个作业进入内存时,由操作系统将其变为进程,并为进程分配存储空间。进程运行结束时, 由操作系统将其所占用的存储空间收回。
不同的操作系统对内存空间的划分与分配方法是不同的,通常分为两类:静态等长分区的分配和动态异长分区的分配。静态等长分区常用于页式存储管理方式与段页式存储管理方式,存储空间被静态地划分为若干个长度相等的区域,每个区域被称作一个页面。 动态异长分区常用于界地址存储管理方式与段式存储管理方式,存储空间被动态地划分为若干个长度不等的区域。
5.2 实验要求
本实验要求模拟动态异长分区的分配算法、回收算法和碎片整理算法。 5.3 实验步骤
5.3.1 数据结构分析
为了实现存储资源的分配和回收,操作系统需
要记录内存资源使用情况,即哪些区域尚未分配,哪些区域已经分配以及分配给哪些进程等。为此一般需要两个表,一个为分配表, 另外一个为空闲区域表。前者记录已经分配的区域, 后者记录着所有当前未被进程占用的空闲区域, 如图5-1所示。
图5-1 空闲区域表
显然, 没有记录于表中的区域即为已被进程所
占用的非空闲区域,在实际的操作系统中,这些区域登记在进程的PCB中。而PCB中除了关于内存资源的信息外,还有其它大量信息。
由于本实验是对存储管理算法的模拟,所以用一个线程来代表一个进程,用线程驻留区域表来描述线程占用的内存空间,如图5-2所示。

图5-2 线程驻留区表
同时,需要一张表来记录各个线程对内存的请求信息,如图5-3所示。


5.3.2 算法分析
常用的动态异长分区的分配算法有:最先适应算法、最佳适应算法和最坏适应算法。
你可能喜欢
- 首次适应算法
- 可变分区存储管理
- 动态分区分配方式的模拟
- 哲学家就餐问题
- linux网络编程
- 操作系统课程设计
- 操作系统内存管理
- 时间片轮转调度算法
- 首次适应算法,最佳适应算法,最坏适应算法3页
- 基于首次适应算法的存储器管理系统的设计源代码1页
- 首次适应算法和循环首次适应算法9页
- 首次适应算法最佳适应算法3页
- 循环首次适应算法6页
- 操作系统首次适应算法动态分配C语言代码10页
- 可变分区存储管理及可重定位分区存储管理实验报告10页
- 模拟实现一个简单的可变分区存储管理系统13页
- 操作系统实验一可变分区存储管理7页
- 可变分区存储管理3页
- 模拟实现一个简单的固定(可变)分区存储管理系统15页
- 实验2可变分区管理及存储管理22页
- 计算机操作系统实验报告 动态分区分配方式的模拟12页
- 动态分区分配方式的模拟实验报告模板24页
- 动态分区分配方式的模拟实验报告模板23页
- 动态分区分配方式的模拟6页
- 动态分区分配方式的模拟代码(c++)4页
- 实验四 动态分区分配方式的模拟 答案7页
- 哲学家就餐问题13页
- 哲学家就餐问题3页
- 关于哲学家就餐问题的SPIN检测12页
- 操作系统哲学家就餐问题实验报告11页
- 哲学家就餐问题研究与模拟7页
- 求解哲学家就餐问题的两个Petri网模型4页
- linux网络编程之TCP和UDP12页
- linux入门网络编程38页
- linux网络编程select函数使用例程5页
- linux 网络编程1页
- linux网络编程常用函数详解与实例(socket--bind--listen--accept)(6页
- linux网络编程socket入门13页
- 操作系统课程设计报告_CQUPT12页
- 操作系统课程设计--请求调页22页
- 操作系统课程设计13页
- 操作系统课程设计12页
- 《计算机操作系统》课程设计5页
- 操作系统课程设计任务书313页
- 操作系统之linux_MM内存管理44页
- 第3讲 现在的操作系统怎么管理内存63页
- 第2讲 早期操作系统怎么管理内存20页
- 操作系统 第7章 内存管理29页
- 华南理工大学 操作系统课件第5章内存管理108页
- 操作系统-内存管理测验10页


