操作系统指导书Word文档格式.docx
《操作系统指导书Word文档格式.docx》由会员分享,可在线阅读,更多相关《操作系统指导书Word文档格式.docx(16页珍藏版)》请在冰点文库上搜索。
一、实验目的
多道程序设计中,经常是若干个进程同时处于就绪状态,必须依照某种策略来决定那个进程优先占有处理机。
因而引起进程调度。
本实验模拟在单处理机情况下的处理机调度问题,加深对进程调度的理解。
二、实验内容
1.优先权法、轮转法
简化假设
1)进程为计算型的(无I/O)
2)进程状态:
ready、running、finish
3)进程需要的CPU时间以时间片为单位确定
2.算法描述
1)优先权法——动态优先权
当前运行进程用完时间片后,其优先权减去一个常数。
2)轮转法
三、流程图
开始
键盘输入进程数n,和调度方法的选择
优先权法?
轮转法
产生n个进程,对每个进程产生一个PCB,并用随机数产生进程的优先权及进程所需的CPU时间
按优先权大小,把n个进程拉成一个就绪队列
初始化其他数据结构区
链首进程投入运行
时间片到,进程所需的CPU时间减1,优先权减3,输出个进程的运行情况
所需的CPU时间=0?
撤销进程
就绪队列为空?
结束
将进程插入就绪队列
N
Y
B
产生n个进程,对每个进程用随机数产生进程的轮转时间片数及进程所需的时间片数,已占用CPU的时间片数置为0
按进程产生的先后次序拉成就绪队列链
时间片到,进程所需时间片数减1,已占用CPU时间片数加1
输出各进程的运行情况
进程所需时间片数=0?
撤销该进程
就绪队列为空吗?
占用CPU的时间片数=轮转时间片数?
占用CPU的时间片数置为0
把该进程插入就绪队列尾
四、实验要求
1.
产生的各种随机数的取值范围加以限制,如所需的CPU时间限制在1~20之间。
2.进程数n不要太大通常取4~8个
3.使用动态数据结构
4.独立编程
5.至少三种调度算法
五、实验报告
主要包括实验预习和实验报告两部分。
学生在上机做实验前,要根据教师布置的题目,对实验内容应作相应的预习,编写相关程序,准备好测试数据,进行静态检查后方可上机。
实验结束后,根据实验过程和结果写出实验报告,主要内容包括对实验数据、实验中的特殊现象、实验操作的成败、实验的关键点等内容进行整理、解释、分析总结,回答思考题,提出实验结论或提出自己的看法等。
严禁抄袭或拷贝他人的成果,自觉培养科学、严谨的作风。
六、其它说明
学生在实验过程中应遵守实验室的各项规章制度,注意人身和设备安全,配合和服从实验室人员管理。
实验二作业调度实验
用高级语言编写和调试一个或多个作业调度的模拟程序,以加深对作业调度算法的理解。
二、例题
为单道批处理系统设计一个作业调度程序。
由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所占用的CPU时限等因素。
作业调度算法:
采用先来先服务(FCFS)调度算法,即按作业提交的先后次序进行调度。
总是首先调度在系统中等待时间最长的作业。
每个作业由一个作业控制块JCB表示,JCB可以包含如下信息:
作业名、提交时间、所需的运行时间、所需的资源、作业状态、链指针等等。
作业的状态可以是等待W(Wait)、运行R(Run)和完成F(Finish)三种状态之一。
每个作业的最初状态总是等待W。
各个等待的作业按照提交时刻的先后次序排队,总是首先调度等待队列中队首的作业。
每个作业完成后要打印该作业的开始运行时刻、完成时刻、周转时间和带权周转时间,这一组作业完成后要计算并打印这组作业的平均周转时间、带权平均周转时间。
调度算法的流程图如下:
三、实验要求
1、编写并调试一个单道处理系统的作业等待模拟程序。
作业等待算法:
分别采用先来先服务(FCFS),最短作业优先(SJF)、响应比高者优先(HRN)的调度算法。
对每种调度算法都要求打印每个作业开始运行时刻、完成时刻、周转时间、带权周转时间,以及这组作业的平均周转时间及带权平均周转时间,以比较各种算法的优缺点。
2、编写并调度一个多道程序系统的作业调度模拟程序。
采用基于先来先服务的调度算法。
可以参考课本中的方法进行设计。
对于多道程序系统,要假定系统中具有的各种资源及数量、调度作业时必须考虑到每个作业的资源要求。
3、编写并调试一个多道程序系统的作业调度模拟程序。
采用基于优先级的作业调度。
可以参考课本中的例子自行设计。
四、实验报告
五、其它说明
实验三银行家算法
死锁会引起计算机工作僵死,因此操作系统中必须防止。
本实验的目的在于让学生独立的使用高级语言编写和调试一个系统动态分配资源的简单模拟程序,了解死锁产生的条件和原因,并采用银行家算法有效地防止死锁的发生,以加深对课堂上所讲授的知识的理解。
二、实验要求
设计有n个进程共享m个系统资源的系统,进程可动态的申请和释放资源,系统按各进程的申请动态的分配资源。
系统能显示各个进程申请和释放资源,以及系统动态分配资源的过程,便于用户观察和分析;
三、数据结构
1.可利用资源向量Available,它是一个含有m个元素的数组,其中的每一个元素代表一类可利用的资源的数目,其初始值是系统中所配置的该类全部可用资源数目。
其数值随该类资源的分配和回收而动态地改变。
如果Available(j)=k,标是系统中现有Rj类资源k个。
2.最大需求矩阵Max,这是一个n×
m的矩阵,它定义了系统中n个进程中的每一个进程对m类资源的最大需求。
如果Max(i,j)=k,表示进程i需要Rj类资源的最大数目为k。
3.分配矩阵Allocation,这是一个n×
m的矩阵,它定义了系统中的每类资源当前一分配到每一个进程的资源数。
如果Allocation(i,j)=k,表示进程i当前已经分到Rj类资源的数目为k。
Allocationi表示进程i的分配向量,有矩阵Allocation的第i行构成。
4.需求矩阵Need,这是一个n×
m的矩阵,用以表示每个进程还需要的各类资源的数目。
如果Need(i,j)=k,表示进程i还需要Rj类资源k个,才能完成其任务。
Needi表示进程i的需求向量,由矩阵Need的第i行构成。
上述三个矩阵间存在关系:
Need(i,j)=Max(i,j)-Allocation(i,j);
四、银行家算法
参考教材P96
五、安全性算法
1.设置两个向量。
Work:
它表示系统可提供给进程继续运行的各类资源数目,它包含m个元素,开始执行安全性算法时,Work=Available。
Finish:
它表示系统是否有足够的资源分配给进程,使之运行完成,开始Finish(I)=false;
当有足够资源分配给进程Pi时,令Finish(i)=true;
2.从进程集合中找到一个能满足下述条件的进程。
Finish(i)==false;
Needi≤work;
如找到则执行步骤3;
否则,执行步骤4;
3.当进程Pi获得资源后,可顺利执行直到完成,并释放出分配给它的资源,故应执行
Work=work+Allocationi
Finish(i)=true;
转向步骤2;
4.若所有进程的Finish(i)都为true,则表示系统处于安全状态;
否则,系统处于不安全状态。
六、流程
开始
输入资源数m,及各类资源总数,初始化Available向量
输入进程数n,i=1
输入进程i的最大需求向量max。
i≤n
max≤资源总数
提示错误重新输入
i加1
任选一个进程作为当前进程
输入该进程的资源请求量Request
调用银行家算法,及安全性算法,完成分配,或并给出提示
该进程的Need向量为0
该进程已运行结束
Need矩阵为0
所有进程运行都结束
结束
初始化need矩阵
七、实验报告
八、其它说明
实验四存储管理
存储管理的主要功能之一是合理地分配空间。
请求页式管理是一种常用的虚拟存储管理技术。
本实验的目的是通过请求页式管理中页面置换算法模拟设计,了解虚拟存储技术的特点,掌握请求页式存储管理的页面置换算法。
(1)
通过计算不同算法的命中率比较算法的优劣。
同时也考虑了用户内存容量对命中率的影响。
页面失效次数为每次访问相应指令时,该指令所对应的页不在内存中的次数。
在本实验中,假定页面大小为1k,用户虚存容量为32k,用户内存容量为4页到32页。
(2)produce_addstream通过随机数产生一个指令序列,共320条指令。
A、指令的地址按下述原则生成:
1)50%的指令是顺序执行的
2)25%的指令是均匀分布在前地址部分
3)25%的指令是均匀分布在后地址部分
B、具体的实施方法是:
1)在[0,319]的指令地址之间随机选取一起点m;
2)顺序执行一条指令,即执行地址为m+1的指令;
3)在前地址[0,m+1]中随机选取一条指令并执行,该指令的地址为m’;
4)顺序执行一条指令,地址为m’+1的指令
5)在后地址[m’+2,319]中随机选取一条指令并执行;
6)重复上述步骤1)~5),直到执行320次指令
C、将指令序列变换称为页地址流
在用户虚存中,按每k存放10条指令排列虚存地址,即320条指令在虚存中的存放方式为:
第0条~第9条指令为第0页(对应虚存地址为[0,9]);
第10条~第19条指令为第1页(对应虚存地址为[10,19]);
。
第310条~第319条指令为第31页(对应虚存地址为[310,319]);
按以上方式,用户指令可组成32页。
(3)计算并输出下属算法在不同内存容量下的命中率。
1)先进先出的算法(FIFO);
2)最近最少使用算法(LRU);
生成地址流
输入算法号S
1≤S≤4
形成地址页号
用户内存空间msize=2
Msize≤32
OPT()
FIFO()
LRU()
LFU()
Msize加1
S=?
是否用其他算法继续
1
2
3
4
提示出错,重新输入
三、系统框图
四、运行结果
运行程序:
a、终端先显示:
Startmemorymanagement.
Producingaddressflow,waitforwhile,please.
b、地址流、地址页号流生成后,终端显示:
Therearealgorithmsintheprogram
1、Optimizationalgorithm
2、Leastrecentlyusedalgorithm
3、Firstinfirstoutalgorithm
4、Leastfrequentlyusedalgorithm
Selectanalgorithmnumber,please.
用户输入适当淘汰算法的号码,并按回车,若是第一次选择,输出相应的地址页号流。
然后输出该算法分别计算的用户内存从2k~32k时的命中率,若输入的号码不再1~4中,则显示:
thereisnotthealgorithmintheprogram,并重复b。
c、输出结果后,终端显示“doyoutryagainwithantheralgorithm(y/n)”。
若键入y则重复b,否则结束。
(一般讲四种算法都用过后结束,以便比较)。
五、运行结果讨论
1、比较各种算法的命中率
2、分析当用户内存容量增加是对命中率的影响
六、实验报告
七、其它说明