计算机操作系统报告

  • 格式:doc
  • 大小:699.00 KB
  • 文档页数:33

下载文档原格式

  / 33
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

淮阴工学院

计算机操作系统报告

姓名: 学号:

班级:

学院: 计算机与软件工程学院

专业: 计算机科学与技术

指导教师:

2017 年1

2

实验一:存储器的分配与回收算法实现

一、实验内容

1. 模拟操作系统的主存分配,运用可变分区的存储管理算法设计主存分配和回收程序,

并不实际启动装入作业。

2. 采用最先适应法、最佳适应法、最坏适应法分配主存空间。

3. 当一个新作业要求装入主存时,必须查空闲区表,从中找出一个足够大的空闲区。若

找到的空闲区大于作业需要量,这是应把它分成二部分,一部分为占用区,加一部分又成为一个空闲区。

4. 当一个作业撤离时,归还的区域如果与其他空闲区相邻,则应合并成一个较大的空闲

区,登在空闲区表中。

5. 运行所设计的程序,输出有关数据结构表项的变化和内存的当前状态。

二、实验要求:

1.详细描述实验设计思想、程序结构及各模块设计思路;

2.详细描述程序所用数据结构及算法;

3.明确给出测试用例和实验结果;

4.为增加程序可读性,在程序中进行适当注释说明;

5.认真进行实验总结,包括:设计中遇到的问题、解决方法与收获等;

6.实验报告撰写要求结构清晰、描述准确逻辑性强;

三、实验过程

1.设计思想:

运用可变分区的存储管理算法设计主存分配和回收。一个新作业要求装入主存时,必须查空闲区表,从中找出一个足够大的空闲区。若找到的空闲区大于作业需要量,这是应把它分成二部分,一部分为占用区,加一部分又成为一个空闲区。一个作业撤离时,归还的区域如果与其他空闲区相邻,则应合并成一个较大的空闲区,登在空闲区表中。

设计思路:

利用链表对已有作业进行排序,并根据地址判断该作业状态。 2.所用数据库结构:

循环链表

3.测试用例和结果:

初始内存状况:(选择最坏适应法)

*******************************************

=开始地址= =大小= =结束地址= =状态=

*******************************************

80 60 140 0

*******************************************

30 40 70 0

*******************************************

0 20 20

*******************************************

第一次分配32,

第二次分配14,

第三次分配23

最终结果:

空闲内存如下:

********************************************************

=开始地址= =大小= =结束地址= =状态=

********************************************************

44 26 70 0

********************************************************

0 20 20 0

********************************************************

135 5 140 0

********************************************************

已分配区如下:

**************************************************************

开始地址大小结束地址状态进程号

**************************************************************

80 32 112 1 1

**************************************************************

112 23 135 1 1

**************************************************************

30 14 44 1 2

**************************************************************

4.注释已在代码中

5.实验总结:

存储器的分配与回收算法实现方法,采用最先适应法、最佳适应法、最坏适应法分配主存空间。当一个新作业要求装入主存时,必须查空闲区表,从中找出一个足够大的空闲区。若找到的空闲区大于作业需要量,这是应把它分成二部分,一部分为占用区,加一部分又成为一个空闲区。当一个作业撤离时,归还的区域如果与其他空闲区相邻,则应合并成一个较大的空闲区,登在空闲区表中。

本次实验对于队列数据结构有些陌生,发现自己对课程的掌握不太牢固,课后应进行仔细的复习,加深印象。对某些算法的理解不太透彻,应该巩固完善。在网络和同学的帮助下最终得以解决。并使我更加深刻的了解了计算机操作系统中内存分配的执行过程,内存回收的执行过程的方式。对以后的学习和应用奠定了良好的基础。

6.实验源代码:

#include

#include

#include

#include

#include

//链式结构

typedef struct rt

{

//起始地址

int startaddress;

//内存区大小

int size;

//内存区状态

int state;

struct rt *next;

struct rt *last;

//已分配区的进程号

int thread;

}memory;

//空闲区链表

memory *head=NULL;

//已分配区链表

memory *top=NULL;

//全局进程号

int threadnum;

//按首地址排序

void sort()

{

//循环指针变量

memory *p,*q;

int r;

int t;

//交换记录变量

int s;

p=head;

//冒泡排序

for(p=p->next;p!=NULL;p=p->next)

{

for(q=p->next;q!=NULL;q=q->next)

{

if(q->startaddressstartaddress)

{

t=p->startaddress;p->startaddress=q->startaddress;q->startaddress=t;

s=p->size;p->size=q->size;q->size=s;