操作系统试验指导书南京中医药大学试验教学网Word格式文档下载.docx
- 文档编号:14900791
- 上传时间:2022-10-25
- 格式:DOCX
- 页数:16
- 大小:156.41KB
操作系统试验指导书南京中医药大学试验教学网Word格式文档下载.docx
《操作系统试验指导书南京中医药大学试验教学网Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《操作系统试验指导书南京中医药大学试验教学网Word格式文档下载.docx(16页珍藏版)》请在冰豆网上搜索。
李玲娟李刚
2005年10月12日
目录
实验一进程调度1
实验二分区式存储管理4
实验三虚拟存储管理8
实验四文件管理11
实验一进程调度
实验性质:
设计
建议学时:
6学时
实验目的:
通过这次实验,加深对进程概念的理解,进一步掌握进程状态的转变、进程调度的策略及对系统性能的评价方法。
预习内容:
阅读教材《计算机操作系统》第二章和第三章,掌握进程管理及调度相关概念和原理。
基本实验内容:
设计程序模拟进程的轮转法调度过程。
假设初始状态为:
有n个进程处于就绪状态,有m个进程处于阻塞状态。
采用轮转法进程调度算法进行调度(调度过程中,假设处于执行状态的进程不会阻塞),且每过t个时间片系统释放资源,唤醒处于阻塞队列队首的进程。
程序要求如下:
1).输出系统中进程的调度次序;
2).计算CPU利用率。
实现提示:
用C语言实现提示:
1)程序中进程可用PCB表示,其类型描述如下:
structPCB_type{
charname;
//进程名
intstate;
//进程状态
2——表示“执行”状态
1——表示“就绪”状态
0——表示“阻塞”状态
intcpu_time;
//运行需要的CPU时间(需运行的时间片个数)
}
2)设置两个队列,将处于“就绪”状态的进程PCB挂在队列ready中;
将处于“阻塞”状态的进程PCB挂在队列blocked中。
队列类型描述如下:
structQueueNode{
structPCB_typePCB;
StructQueueNode*next;
}
并设全程量:
structQueueNode*ready_head=NULL,//ready队列队首指针
*ready_tail=NULL,//ready队列队尾指针
*blocked_head=NULL,//blocked队列队首指针
*blocked_tail=NULL;
//blocked队列队尾指针
3)设计子程序:
start_state();
//读入假设的数据,设置系统初始状态
dispath();
//模拟调度
calculate();
//计算CPU利用率
实验要求:
1)上机前认真使用C语言编写好程序,采用TurboC作为编译环境;
2)上机时独立调试程序
3)根据具体实验要求,填写好实验报告(包括思想、源程序、实例运行结果)。
测试用数据:
n=2
m=3
t=5
ready_head
blocked_head
dispath()算法流程图:
/*use_cpu中记录CPU运行时间
/*unuse_cpu中记录CPU空闲时间
否
是
是否
是
否
是
否
是
实验二分区式存储管理
6
通过这次实验,加深对内存管理的认识,进一步掌握内存的分配、回收算法的思想。
阅读教材《计算机操作系统》第四章,掌握存储器管理相关概念和原理。
实验内容:
设计程序模拟内存的动态分区法存储管理。
内存空闲区使用自由链管理,采用最坏适应算法从自由链中寻找空闲区进行分配,内存回收时假定不做与相邻空闲区的合并。
假定系统的内存共640K,初始状态为操作系统本身占用64K。
在t1时间之后,有作业A、B、C、D分别请求8K、16K、64K、124K的内存空间;
在t2时间之后,作业C完成;
在t3时间之后,作业E请求50K的内存空间;
在t4时间之后,作业D完成。
要求编程序分别输出t1、t2、t3、t4时刻内存的空闲区的状态。
实现提示(C语言):
1.程序中自由链队列的结点类型可描述如下:
structfreelink{
intlen,address;
/*len为分区长度
/*address为分区起始地址
structfreelink*next;
内存占用区用链表描述,其结点类型描述如下:
structbusylink{
charname;
/*作业或进程名name=’S’表示OS占用
intlen,address;
structbusylink*next;
}
structfreelink*free_head=NULL;
//自由链队列(带头结点)队首指针
structbusylink*busy_head=NULL,//占用区队列队(带头结点)首指针
*busy_tail=NULL;
//占用区队列队尾指针
2.设计子函数:
voidstart(void);
/*设置系统初始状态*/
{structfreelink*p;
structbusylink*q;
free_head=(structfreelink*)malloc(sizeof(structfreelink));
free_head->
next=NULL;
//创建自由链头结点
busy_head=busy_tail=(structbusylink*)malloc(sizeof(structbusylink));
busy_head->
//创建占用链头结点
p=(structfreelink*)malloc(sizeof(structfreelink));
p->
address=64;
len=640-64;
(OS占用了64K)
next=p;
q=(structbusylink*)malloc(sizeof(structbusylink));
q->
name=’S’;
/*S表示操作系统占用*/
len=64;
address=0;
next=q;
busy_tail=q;
voidrequireMemo(charname,intrequire);
/*模拟内存分配*/
voidfreeMemo(charname);
/*模拟内存回收*/
voidpast(inttime);
/*模拟系统过了time时间*/
voidprintlink();
/*输出内存空闲情况(自由链的结点)*/
3.设计主函数:
main()
{start();
past(t1);
requireMemo(‘A’,8);
requireMemo(‘B’,16);
requireMemo(‘C’,64);
requireMemo(‘D’,124);
printlink();
past(t2);
freeMemo(‘C’);
past(t3);
requireMemo(‘E’,50);
freeMemo(‘D’);
4)上机前认真使用C语言编写好程序,采用TurboC作为编译环境;
5)上机时独立调试程序
6)根据具体实验要求,填写好实验报告(包括思想、源程序、实例运行结果)。
requireMemo(charname,intrequire)流程图如下:
否
freeMemo(charname)流程图如下:
是
实验三虚拟存储管理
验证
3
存储管理的主要功能之一是合理的分配空间。
请求页式管理是一种常用的虚拟存储管理技术。
本实验的目的是请求页式存储管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换方法。
(1)通过随机数产生一个指令序列,共320条指令。
指令的地址按下述原则生成:
1、50%的指令是顺序执行的;
2、25%的指令是均匀分布在前地址部分;
3、25%的指令是均匀分布在后地址部分。
具体的实施方法是:
1在[0,319]的指令地址之间随机选取一起点m;
2顺序执行一条指令,即执行地址为m+1的指令;
3在前地址[0,m+1]中随机选取一条指令并执行,该指令的地址为m’;
4顺序执行一条指令,其地址为m’+1;
5在后地址[m’+2,319]中随机选取一条指令并执行;
6重复上述步骤,直至执行320次指令。
(2)将指令序列变换成页地址流
设:
①页面大小为1K;
②用户内存容量为4页到32页;
③用户虚存容量为32K;
在用户虚存中,按每K存放10条指令排列虚存地址,即320条指令在虚存中的存放方式为:
第0条~第9条指令为第0页(对应的虚存地址为[0,9]);
第10条~第19条指令为第1页(对应的虚存地址为[10,19]);
.
第310条~第319条指令为第31页(对应的虚存地址为[310,319]);
按以上方式,用户指令可组成32页。
(3)计算并输出下述各种算法在不同的内存容量下的缺页率。
1先进先出的算法(FIFO);
2最近最少使用算法(LRR);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 试验 指导书 南京中医药大学 教学