下载此文档

操作系统实验报告进程调度.docx


文档分类:IT计算机 | 页数:约21页 举报非法文档有奖
1/21
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/21 下载此文档
文档列表 文档介绍
五邑大学实验报告操作系统课程2016~2017年度第1学期实验题目:进程调度院系: 计算机学院班级: 140801学号:3114002472姓名: 黄凯鑫任课教师:白明成绩评定:实验二题目:进程调度完成日期:2016年12月11日1、实验目的 (1)设计一个有n个进程工行的进程调度程序。每个进程由一个进程控制块(PCB)表示。进程控制块通常应包含下述信息:进程名、进程优先数、进程需要运行的时间、占用CPU的时间以及进程的状态等,且可按调度算法的不同而增删。(2)调度程序应包含2~3种不同的调度算法,运行时可任意选一种,以利于各种算法的分析比较。(3)系统应能显示或打印各进程状态和参数的变化情况,便于观察诸进程的调度过程2、实验内容(1)编制和调试示例给出的进程调度程序,并使其投入运行。(2)自行设计或改写一个进程调度程序,在相应机器上调试和运行该程序,其功能应该不亚于示例。(3)直观地评测各种调度算法的性能。3、算法设计算法:(1)优先数法。进程就绪链按优先数大小从高到低排列,链首进程首先投入运行。每过一个时间片,运行进程所需运行的时间片数减1,说明它已运行了一个时间片,优先数也减3,理由是该进程如果在一个时间片中完成不了,优先级应该降低一级。接着比较现行进程和就绪链链首进程的优先数,如果仍是现行进程高或者相同,就让现行进程继续进行,否则,调度就绪链链首进程投入运行。原运行进程再按其优先数大小插入就绪链,且改变它们对应的进程状态,直至所有进程都运行完各自的时间片数。(2)简单轮转法。进程就绪链按各进程进入的先后次序排列,进程每次占用处理机的轮转时间按其重要程度登入进程控制块中的轮转时间片数记录项(相当于优先数法的优先数记录项位置)。每过一个时间片,运行进程占用处理机的时间片数加1,然后比较占用处理机的时间片数是否与该进程的轮转时间片数相等,若相等说明已到达轮转时间,应将现运行进程排到就绪链末尾,调度链首进程占用处理机,且改变它们的进程状态,直至所有进程完成各自的时间片。实验源代码:#include<>#include<>#include<>#include<>#include<>#include<>enumstate//进程的状态{Ready, Working, Finish};structpcb//PCB数据结构{ intpid; intpriority; intcputime; intneedtime; intround; stateprocess; pcb*next;};inttimepiece;pcb*get_process(){ //优先数算法--输入进程个数 intproc; pcb*q; pcb*t; pcb*p; inti=0; cout<<"InputProcessNumber(1-10):"; cin>>proc; while(proc<1||proc>10){ cout<<endl<<"IllegalInput!"<<endl<<endl<<"InputProcessNumber(1-10):"; cin>>proc; } //cout<<endl<<endl<<"StartScheduling!!!\n\n"; getch(); srand((unsigned)time(NULL));//初始化随机数种子发生器 while(i<proc){ q=(structpcb*)malloc(sizeof(pcb)); q->pid=rand()%10000; q->needtime=rand()%10+1; q->cputime=0; q->priority=rand()%100; q->process=Ready; q->next=NULL;//利用随机数生成进程信息 if(i==0) { p=q; t=q; } else { t->next=q; t=q; }//尾插法建立PCB节点 i++; }//while returnp;}voiddisplay(pcb*p){ //优先数算法结果输出 cout<<"ProcessID"<<""<<"Cputime"<<""<<"Needtime"<<""<<"Priority"<<""<<"State"<<endl; while(p){ cout<<""<<p->pid; cout<<"\t\t"; cout<<p->cputime; cout<<"\t"; cout<<p->needtime; cout<<"\t"; if(p->needtime==0) cout<<"Done"; else cout<<p->priority; cout<<"\t\t"; switch(p->p

操作系统实验报告进程调度 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数21
  • 收藏数0 收藏
  • 顶次数0
  • 上传人薄荷牛奶
  • 文件大小262 KB
  • 时间2019-03-27