欢迎来到天天文库
浏览记录
ID:35753622
大小:22.00 KB
页数:18页
时间:2019-04-16
《操作系统进程调度算法 操作系统实验一进程调度模拟算法》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、操作系统进程调度算法操作系统实验一进程调度模拟算法课程名称操作系统计算机科学与技术分院信1001—2班组学号实验者姓名实验日期2013年4月11日评分教师签名实验一进程调度模拟算法操作系统进程调度算法操作系统实验一进程调度模拟算法课程名称操作系统计算机科学与技术分院信1001—2班组学号实验者姓名实验日期2013年4月11日评分教师签名实验一进程调度模拟算法操作系统进程调度算法操作系统实验一进程调度模拟算法课程名称操作系统计算机科学与技术分院信1001—2班组学号实验者姓名实验日期2013年4月11日评分教师签名实验一
2、进程调度模拟算法一、实验目的通过进程调度实验,了解了优先数算法和时间片轮转算法的具体实施办法,体会了优先数算法和时间片轮转算法进程调度的过程,掌握了有关进程控制快、进程队列等概念,提高了编程技巧和对算法的理解和掌握。二、实验要求进程调度是处理机管理的核心内容,本实验要求用高级语言编写模拟进程调度程序,以便加深理解有关进程控制快、进程队列等概念。三、实验过程1.准备分别用两种调度算法对伍个进程进行调度。每个进程可有三种状态;执行状态(RUN)、就绪状态(READY,包括等待状态)和完成状态(FINISH),并假定初始状态
3、为就绪状态。进程控制块结构如下:NAME——进程标示符PRIO/ROUND——进程优先数/进程每次轮转的时间片数(设为常数2)CPUTIME——进程累计占用CPU的时间片数NEEDTIME——进程到完成还需要的时间片数STATE——进程状态NEXT——链指针进程的就绪态和等待态均为链表结构,共有四个指针如下:RUN——当前运行进程指针READY——就需队列头指针TAIL——就需队列尾指针FINISH——完成队列头指针运行和显示程序开始运行后,首先提示:请用户选择算法,输入进程名和相应的NEEDTIME值。每次显示结果均
4、为如下5个字段:namecputimeneedtimeprioritystate注:1.在state字段中,”R”代表执行态,”W”代表就绪(等待)态,”F”代表完成态。2.应先显示”R”态的,再显示”W”态的,再显示”F”态的。3.在”W”态中,以优先数高低或轮转顺序排队;在”F”态中,以完成先后顺序排队。2.主要流程和源代码实验一源代码#include#include#include#includetypedefstructnode{charname[10];intprio;intround;intcputime;
5、intneedtime;intcount;charstate;structnode*next;}PCB;PCB*finish,*ready,*tail,*run;intN;voidfirstin(void);voidprint1(chara);voidprint2(charchose,PCB*p);voidprint(charchose);voidinsert_prio(PCB*q);voidprior_init(charchose);voidpriority(charchose);voidinsert_rr(PCB*
6、q);voidroundrun_init(charchose);voidroundrun(charchose);voidmain()//主函数{charchose=‘‘;while((chose!=‘q’)&&(chose!=‘Q’)){fflush(stdin);printf(“选择进程优先级算法请输入P,选择循环轮转算法请输入R,退出请输入Q”);printf(“请输入你的选择:”);scanf(“%c”,&chose);if((chose!=‘q’)&&(chose!=‘Q’)){system(“cls”);
7、if((chose==‘P’)
8、
9、(chose==‘p’)){prior_init(chose);priority(chose);system(“cls”);}elseif((chose==‘r’)
10、
11、(chose==‘R’)){roundrun_init(chose);roundrun(chose);system(“cls”);}}}printf(“谢谢使用!”);}voidfirstin(void){if(ready!=NULL){run=ready;ready=ready->next;run->state=‘
12、R’;run->next=NULL;}else{run=NULL;}}voidprint1(chara){if(toupper(a)==‘P’){printf(“namecputimeneedtimeprioritystate”);}else{printf(“namecputimeneedtimecountroundstate
此文档下载收益归作者所有