《操作系统》实验报告看就没错(共27页).doc
《《操作系统》实验报告看就没错(共27页).doc》由会员分享,可在线阅读,更多相关《《操作系统》实验报告看就没错(共27页).doc(27页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上操作系统实验报告时间:2013年11月19日2013年12月11日地点:科技楼423室班级:计科班学号:姓名: 电话:上交时间:2013年12月11日注意:所有程序都应有一定的注释说明,用VC实现,附上实验结果。实验1:进程管理要求:编写程序,模拟实现创建新的进程;查看运行进程;换出某个进程;撤销某个进程。提示:1、进程状态简单处理为:0为不在内存,1为在内存,2为阻塞,3为挂起。2、撤销进程指将进程的状态从运行变为阻塞。3、程序的结构可以处理为在主函数中用switch语句调用各种表示进程管理功能的函数。#include iostream.h#include wind
2、ows.h/#define N 3typedef structint ID;int PRIORITY;int CPUTIME;int ALLTIME;int STARTBLOCK;int BLOCKTIME;int STATE;/0-运行 1-阻塞 2-就绪 3-结束 4-未到达int REACH;int TIME;PROCESS;void textcolor (int color) SetConsoleTextAttribute (GetStdHandle (STD_OUTPUT_HANDLE), color );void main()int i,time,max,l,l1,time1,fl
3、ag=0,total=0,N,server10,sum=0;PROCESS pro10;textcolor(13);cout注意:本程序中状态代表如下endl0-运行 1-阻塞 2-就绪 3-结束 4-未到达endlendl;textcolor(15);coutN;couttime;cout请输入各进程初始状态:endl;coutID PRIORITY REACH ALLTIME STARTBLOCK BLOCKTIMEendl;for(i=0;iproi.IDproi.PRIORITYproi.REACH;cinproi.ALLTIMEproi.STARTBLOCKproi.BLOCKTIM
4、E;serveri=proi.ALLTIME;if(proi.REACH=0) proi.STATE=0;else proi.STATE=4;docoutendl当前时刻为:total;textcolor(12);coutendl=各进程状态为=endl;textcolor(15);coutID PRIORITY CPUTIME ALLTIME STARTBLOCK BLOCKTIME STATEendl;for(i=0;iN;i+)coutproi.ID proi.PRIORITY proi.CPUTIME ;coutproi.ALLTIME proi.STARTBLOCK proi.BLO
5、CKTIME proi.STATE;coutendl;total+=time;for(i=0;iN;i+)if(proi.STATE=4&proi.REACHtotal)proi.STATE=1;for(i=0;iN;i+)time1=proi.ALLTIME;if(proi.STATE=0)if(proi.ALLTIME=time)/proi.CPUTIME+=time1;proi.ALLTIME=0;proi.STATE=3;proi.TIME=total-time+time1;else/proi.CPUTIME+=time;proi.ALLTIME-=time;proi.STARTBLO
6、CK-;if(proi.STARTBLOCK=0)proi.STATE=1;proi.BLOCKTIME=time1;proi.STARTBLOCK=time1;proi.PRIORITY-=3;proi.TIME=total;if(proi.STATE=1)proi.BLOCKTIME-;if(proi.BLOCKTIME=0) proi.STATE=2;proi.TIME=total;if(proi.STATE=2)/proi.CPUTIME+=time;proi.PRIORITY+;proi.TIME=total;max=-100;l1=-1;l=-1;for(i=0;imax&(pro
7、i.STATE=0|proi.STATE=2)l=i;max=proi.PRIORITY;if(proi.STATE=0) l1=i;if(l!=-1&l!=l1) prol.STATE=0;if(l1!=-1) prol1.STATE=2;flag=0;for(i=0;iN;i+)if(proi.STATE!=3)flag=1;break;if(flag=0) break;while(1);coutendl当前时刻:total;textcolor(12);coutendl=各进程状态为=endl;textcolor(15);coutID PRIORITY CPUTIME ALLTIME ST
8、ARTBLOCK BLOCKTIME STATEendl;for(i=0;iN;i+)coutproi.ID proi.PRIORITY proi.CPUTIME ;coutproi.ALLTIME proi.STARTBLOCK proi.BLOCKTIME proi.STATE;coutendl;coutendl各进程运行结束!endl;cout进程号 到达时间 结束时间 周转时间 带权周转时间endl;textcolor(10);for(i=0;iN;i+)cout proi.ID proi.REACH proi.TIME proi.TIME-proi.REACH (float)(pro
9、i.TIME-proi.REACH)/serveriendl;sum+=proi.TIME-proi.REACH;cout平均周转时间为:(float)sum/Nendl;textcolor(15);实验2:进程调度要求:1、 设计进程控制块PCB的结构,分别适用于优先权调度算法和时间片轮转调度算法。2、 建立进程就绪队列。3、 编制两种进程调度算法:优先权调度(实现动态优先级)和时间片轮转调度。提示:1、 假设利用两种算法对五个进程进行调度,每个进程有运行、就绪、阻塞三种状态,初始状态为就绪态。2、 为了便于处理,程序中的某进程运行时间以时间片为单位计算。各进程的优先数或轮转时间数以及进程需
10、运行的时间片数的初值由用户给定。3、 在优先权调度算法中,优先数可以先取50,进程每执行一次,优先数减3,CPU时间片数加1,进程还需要的时间片数减1。在时间片轮转调度算法中,采用固定时间片,即每执行一次进程,该进程的执行时间片数为已执行了2个单位,这时CPU时间片数加2,进程还需要的时间片数减2,并将该进程排列到就绪队列的队尾。4、 对于优先数一致的情况,采用FIFO策略解决。#include#includeusing namespace std;class Processpublic: string ProcessName; / 进程名字 int Time; / 进程需要时间 int le
11、val; / 进程优先级 int LeftTime; / 进程运行一段时间后还需要的时间;/void Copy ( Process proc1, Process proc2); / 把proc2赋值给proc1void Sort( Process pr, int size) ; / 此排序后按优先级从大到小排列void sort1(Process pr, int size) ; / 此排序后按需要的cpu时间从小到大排列void Fcfs( Process pr, int num, int Timepice); / 先来先服务算法void TimeTurn( Process process,
12、int num, int Timepice); / 时间片轮转算法void Priority( Process process, int num, int Timepice); / 优先级算法/void main() int TimePice; int num; cout *创建进程*nendl; coutnum; const int Size =30; Process processSize ; for( int i=0; i num; i+) string name; int CpuTime; int Leval; coutn 输入第 i+1 个进程的名字、 运行时间和优先级 : name
13、; cin CpuTime Leval; processi.ProcessName =name; processi.Time =CpuTime; processi.leval =Leval; coutendl; int a; coutendl; coutTimePice; coutn *选择调度算法:*nendl; cout*endl; cout* 1: FCFS 2: 时间片轮换 3: 优先级调度 4: 最短作业优先 *endl; cout* a; for ( int k=0;knum;k+) processk.LeftTime=processk.Time ;/对进程剩余时间初始化 cout
14、 / 说明: 在本程序所列进程信息中, 优先级一项是指进程运行后的优先级 ! ; coutendl; coutendl; if(a=1) Fcfs(process,num,TimePice); else if(a=2) TimeTurn( process, num, TimePice);else if(a=3) Sort( process, num); Priority( process , num, TimePice); else / 最短作业算法,先按时间从小到到排序,再调用Fcfs算法即可 sort1(process,num); Fcfs(process,num,TimePice); v
15、oid Copy ( Process proc1, Process proc2) proc1.leval =proc2.leval ; proc1.ProcessName =proc2.ProcessName ; proc1.Time =proc2.Time ;void Sort( Process pr, int size) /以进程优先级高低排序 for( int i=1;i0 & temp.levalsize/2;d-) Process temp; temp=pr d; pr d = pr size-d-1; pr size-d-1=temp; void sort1 ( Process p
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 实验 报告 没错 27
限制150内