进程调度+存储管理+磁盘调度++银行家算法+资料系统.docx
- 文档编号:155866
- 上传时间:2022-10-04
- 格式:DOCX
- 页数:26
- 大小:102.93KB
进程调度+存储管理+磁盘调度++银行家算法+资料系统.docx
《进程调度+存储管理+磁盘调度++银行家算法+资料系统.docx》由会员分享,可在线阅读,更多相关《进程调度+存储管理+磁盘调度++银行家算法+资料系统.docx(26页珍藏版)》请在冰豆网上搜索。
操作系统实验
实验一进程调度
一、设计目的
在多道程序设计中,如果若干个进程同时处于就绪状态,必须依照某种策略来决定那个进程优先占有处理机。
因而引起进程调度。
此设计采用优先调度法处理机调度问题,以此加深对进程调度的理解。
二、设计任务与要求
1.用语言来实现对n个进程采用不同调度算法的进程调度。
2.每个用来标识进程的进程控制块PCB用结构来描述,包括以下字段:
(1)进程优先数ID,其中0为闲逛进程,用户进程的标识数为1,2,3…。
(2)进程优先级Priority,闲逛进程(idle)的优先级为0,用户进程的优先级大于0,且随机产生,优先数越大,优先级越高。
(3)进程占用的CPU时间CPUtime,进程每运行一次,累计值等于4。
(4)进程总共需要运行时间Alltime,利用随机函数产生。
(5)进程状态,0:
就绪态;1:
运行态;2:
阻塞态。
(6)队列指针next,用来将多个进程控制块PCB链接为队列。
3.优先数改变的原则
(1)进程在就绪队列中每呆一个时间片,优先数增加1。
(2)进程每运行一个时间片,优先数减3。
4.在调度前,系统中拥有的进程数PCB_number由键盘输入,经初始化后,所有的进程控制块PCB链接成就绪队列。
三、实验流程图
四.实验过程:
(1)输入:
进程流文件(1.txt),其中存储的是一系列要执行的进程,每个作业包括四个数据项:
进程名
进程状态(1就绪
2等待
3运行)
所需时间
优先数(0级最高)
进程0
1
50
2
进程1
2
10
4
进程2
1
15
0
进程3
3
28
5
进程4
2
19
1
进程5
3
8
7
输出:
进程执行流等待时间,平均等待时间
(2)程序代码
#include
constintblock_time=4;//定义时间片的长度为4秒constintMAXPCB=100;//定义最大进程数
//定义进程结构体typedefstructnode
{
intid;
intstatus;intalltime;intpriority;intfinished;
intwait_time;node*next;
}pcb;
pcbpcbs[MAXPCB];intcount;inti;
//初始化函数voidinitial()
{
cout<<"请输入进程数:
";cin>>i;
count=i;for(i=0;i { pcbs[i].id=i+1; pcbs[i].status=1;pcbs[i].time=random(20);pcbs[i].priority=random (2);pcbs[i].finished=0;pcbs[i].wait_time=0; } } //优先数调度算法voidorder() { } voidpri() { if(count! =0){} intpassed_time=0;inttotal; intqueue[MAXPCB]; intcurrent_privilege=1000;for(i=0;i { current_privilege=1000;for(j=0;j { if((pcbs[j].finished==0)&&(pcbs[j].privilege {p=j;current_privilege=pcbs[j].privilege; } } queue[i]=p;pcbs[p].finished=1; pcbs[p].wait_time+=passed_time;passed_time+=pcbs[p].time; } //输出优先数调度执行流cout< cout<<"优先数调度执行流: "< cout<<"进程名等待时间"< { cout<<""< } total=0;for(i=0;i {total+=pcbs[i].wait_time;} cout<<"总等待时间: "< "< } //主函数voidmain() { intflag;version();initial();flag=readData();if(flag==1) {FIFO(); init();privilege();init(); timer(); } } (3)运行结果: 输入进程流文件名1.txt即可得出以下输出结果: 实验二银行家算法 一、实验目的 死锁会引起计算机工作僵死,因此操作系统中必须防止。 本实验的目的在于让学生独立的使用高级语言编写和调试一个系统动态分配资源的简单模拟程序,了解死锁产生的条件和原因,并采用银行家算法有效地防止死锁的发生,以加深对课堂上所讲授的知识的理解。 二、实验要求 设计有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); 四、银行家算法 Requesti是进程Pi的请求向量。 Requesti(j)=k表示进程Pi请求分配Rj类资源k个。 当Pi发出资源请求后,系统按下述步骤进行检查: 1.如果Requesti≤Need,则转向步骤2;否则,认为出错,因为它所请求的资源数已超过它当前的最大需求量。 2.如果Requesti≤Available,则转向步骤3;否则,表示系统中尚无足够的资源满足Pi的申请,Pi必须等待。 3.系统试探性地把资源分配给进程Pi,并修改下面数据结构中的数值: Available=Available-Requesti Allocationi=Allocationi+Requesti Needi=Needi-Requesti 4.系统执行安全性算法,检查此次资源分配后,系统是否处于安全状态。 如果安全才正式将资源分配给进程Pi,以完成本次分配;否则,将试探分配作废,恢复原来的资源分配状态,让进程Pi等待。 假定系统有5个进程(p0,p1,p2,p3,p4)和三类资源(A,B,C),各种资源的数量分别为10,5,7,在 T0时刻的资源分配情况如下图: Max Allocation Need Available ABC A B C A B C ABC P0 7 5 3 0 1 0 7 4 3 3 3 2 (2 3 0) P1 3 2 2 2 0 0 1 2 2 (3 0 2) (0 2 0) P2 9 0 2 3 0 2 6 0 0 P3 2 2 2 2 1 1 0 1 1 P4 4 3 3 0 0 2 4 3 1 五、安全性算法 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+AllocationiFinish(i)=true;转向步骤2; 4.若所有进程的Finish(i)都为true,则表示系统处于安全状态;否则,系统处于不安全状态。 六、 系统流程图 开始 输入资源数m, 及各类资源总数,初始 输入进程数 结束 Y i≤n N N max≤资源 Y i加1 输入进程i的最大需求向量 初始化need 提示错误重新 该进程的Need N 输入该进程的资源请求量 Y Need矩阵为 N 任选一个进程作为 该进程已运行 所有进程运行 调用银行家算法,及安全性算法,完成分配, Y 七.银行家算法程序代码 #include typedefstructMax1 //资源的最大需求量 { intm_a;intm_b;intm_c; }Max; typedefstructAllocation1 //已分配的资源数 { inta_a;inta_b;inta_c; }Allocation; typedefstructNeed1 //还需要的资源数
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 进程 调度 存储 管理 磁盘 银行家 算法 资料 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)