操作系统课程设计报告书

发布 2019-07-27 15:05:40 阅读 8125

题目1 连续动态内存管理模拟实现。

1.1 题目的主要研究内容及预期达到的目标。

1)针对操作系统中内存管理相关理论进行设计,编写程序并进行测试,该程序管理一块虚拟内存。重点分析三种连续动态内存分配算法,即首次适应算法、循环首次适应算法和最佳适应算法。

2)实现内存分配和**功能。

1.2 题目研究的工作基础或实验条件。

1)硬件环境:pc机。

2)软件环境:windows xp,visual c++ 6.0

1.3 设计思想。

首次适应算法的实现:从空闲分区表的第一个表目起查找该表,把最先能够满足要求的空闲区分配给作业,这种方法的目的在于减少查找时间。为适应这种算法,空闲分区表中的空闲分区要按地址由低到高进行排序。

该算法优先使用低址部分空闲区,在低址空间造成许多小的空闲区,在高址空间保留大的空闲区。

循环首次适应算法的实现:在分配内存空间时,不再每次从表头开始查找,而是从上次找到空闲区的下一个空闲开始查找,直到找到第一个能满足要求的的空闲区为止,并从中划出一块与请求大小相等的内存空间分配给作业。该算法能使内存中的空闲区分布得较均匀。

最佳适应算法的实现:从全部空闲区中找到能满足作业要求的、且最小的空闲分区,这种方法能使碎片尽量小。为适应此算法,空闲分区表中的空闲分区要按从小到大进行排序,从表头开始查找第一个满足要求的自由分配。

1.4 流程图。

内存分配流程图,如图1-1所示。是。否。

否。是。是。否。

图1-1 内存分配流程图。

内存**流程图,如1-2所示。

图1-2 内存**流程图。

1.5 主要程序**。

1)分配内存。

void allocate(char z,float l)

int i,k;

float ad;

k=-1;for(i=0;iif(free_table[i].length >=l &&free_table[i].flag ==1)

if(k==-1 ||free_table[i].lengthk=i;

if(k==-1)

printf("无可用空闲区");

return;

if(free_table[k].length-l <=minisize)

free_table[k].flag=0;

ad=free_table[k].address;

l=free_table[k].length;

elsefree_table[k].length=free_table[k].length-l;

ad=free_table[k].address+free_table[k].length;

i=0;while(used_table[i].flag!=0 &&ii++;

if(i>=n)

printf("无表目填写已分分区,错误");

if(free_table[k].flag==0)

free_table[k].flag=1;

elsefree_table[k].length=free_table[k].length+l;

return;

elseused_table[i].address=ad;

used_table[i].length=l;

used_table[i].flag=z;

return;

2)**内存。

void reclaim(char z)

int i,k,j,s,t;

float s,l;

s=0;while((used_table[s].flag!=z ||used_table[s].flag==0)&&s s++;

if(s>=n)

used_table[s].flag=0;

s=used_table[s].address;

l=used_table[s].length;

j=-1;k=-1;

i=0;while(i i++;

if(k!=-1)

if(j!=-1)

elsefree_table[k].length=free_table[k].length+l;

else if(j!=-1)

elsereturn;

3)主函数。

void main( )

int i,a;

float l;

char z;

free_table[0].address=10240;

free_table[0].length=102400;

free_table[0].flag=1;

for(i=1;i free_table[i].flag=0;

for(i=0;i used_table[i].flag=0;

while(1)

1.6 运行结果及分析。

1)分配主存。

设作业名为w,作业所需长度为10。如图1-3所示。

图1-3 分配主存。

2)显示主存。

因为空闲区的初始地址为10240,空闲区的初始长度为102400,由于分配给作业w的作业所需长度为10,故未分配的分区长度为102390。如图1-4所示。

图1-4 显示主存。

输出已分配区表,如图1-5所示。

图1-5 输出已分配区表。

由图1-5可知,根据首次适应算法,首先选择地址较低的空闲区。因此分配给作业w的起始地址即为112630。

3)**主存。

由于已分配给作业w的分区长度为10,此时**其主存,已将作业w从中去除,故该分区为空(“0”表示“空栏目”),但此时已存在一个长度为10的分区。如图1-6所示。

操作系统课程设计报告书

目录。进程调度模拟程序 1 一 设计目的及要求 1 二 概要设计 1 三 算法流程图 2 四 源程序及注释 6 五 运行结果及分析 16 六 课程设计总结 19 七 参考文献 19 编写一个进程调度程序,允许多个进程并行执行。本次设计将采用三种算法实现进程。的并行执行,分别是最高优先数优先的调度算法...

操作系统课程设计报告

西安郵電大學。院系名称 计算机学院。专业名称 软件工程。班级 1104 学生姓名 赵大伟。学号 8位 04113124 指导教师 舒新峰。设计起止时间 2013.11.10 2013.11.20 1 通过观察 分析实验现象,深入理解进程及进程在调度执行和内存空间等方面的特点,掌握在posix 规范中...

操作系统课程设计报告

课程设计。课程名称操作系统。题目名称多级文件系统 2 学生学院计算机学院 专业班级。学号。学生姓名。指导教师。年月日。目录。一 课程设计 6 二 开发工具及环境 6 三 设计内容 6 四 结构图 8 五 部分 9 六 运行截图 11 七 参考文献 15 八 心得体会 15 本课程设计要求设计一个模拟...