第二题----进程调度
一、实验目的
多道程序设计中,经常是若干个进程同时处于就绪状态,必须依照某种策略来决定那个进程优先占有处理机。因而引起进程调度。本实验模拟在单处理机情况下的处理机调度问题,加深对进程调度的理解。
二、实验要求
(1)要求学生设计并实现模拟进程调度的算法:时间片轮转及先来先服务。 (2)理解进程控制块的结构。 (3)理解进程运行的并发性。 (4)掌握进程调度算法。
三、设计要求
在多道程序运行环境下,进程数目一般多于处理机数目,使得进程要通过竞争来使用处理机。这就要求系统能按某种算法,动态地把处理机分配给就绪队列中的一个进程,使之运行,分配处理机的任务是由进程调度程序完成的。一个进程被创建后,系统为了便于对进程进行管理,将系统中的所有进程按其状态,将其组织成不同的进程队列。于是系统中有运行进程队列、就绪队列和各种事件的进程等待队列。进程调度的功能就是从就绪队列中挑选一个进程到处理机上运行。
四、流程图
开始 输入要打开进程的文件 FIFO调度算法 输出 时间片轮转法 输出 结束
时间片轮转 N Pcbs[i].finished==0 Y 运行态 N Pcbs[i+1].finished==0 Y 就绪态 i++ N 全部完成 Y End输出
五、实验过程 1.1.txt
进程名 进程状态(1就绪 2等待 3运行) 所需时间 优先数(0级最高) 进程0 1 10 2 进程1 2 10 4 进程2 1 20 0 进程3 3 30 5 进程4 2 40 1 进程5 3 20 7 2.源代码
#include const int MAXPCB=100; //定义最大进程数 const int round_time=10;//定义轮转时间片 //定义进程结构体 typedef struct pcb { char name[20]; int status; Pcbs[i+1].finished=1 完成 Pcbs[i].finished=1 完成 int time; int privilege; int finished; int wait_time; }pcb; pcb pcbs[MAXPCB]; int quantity; //读数据函数 int readData() { FILE *fp; char fname[20]; int i; cout<<\"Input the file's name:\"; cin>>fname; if((fp=fopen(fname,\"r\"))==NULL) { cout<<\"Error\"< { int i; for(i=0;i //从第一个进程开始轮转 cout<<\"---------------------------\"< 六、实验结果 FIFO调度输出结果. 时间片轮转调度输出结果 PS:只显示运行态和就绪态,不显示的进程均为等待态。 Round1 Round2 Round3 Round4 完成的顺序是0 1 2 5 3 4 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务