- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
操作系统实验三 时间片轮转法完成进程调度
实验三:时间片轮转法完成进程调度
实验目的:
加深对进程的理解
理解进程控制块的结构
理解进程运行的并发性
掌握时间片轮转法进程调度算法
实验内容:
建立进程控制块
设计三个链队列,分别表示运行队列、就绪队列和完成队列
用户输入进程标识符以及进程所需的时间,申请空间存放进程PCB信息。
每一个时间片结束输出各进程的进程号,CPU时间(即已经占用的CPU时间),所需时间(即还需要的CPU时间),以及状态(即用W表示等待,R表示运行,F表示完成)
实验程序:
#include stdio.h
#include stdlib.h
#include string.h
typedef struct node
{
char name[10]; /*进程标识符*/
int prio; /*进程优先数*/
int round; /*进程时间轮转时间片*/
int cputime; /*进程占用CPU时间*/
int needtime; /*进程到完成还要的时间*/
int count; /*计数器*/
char state; /*进程的状态*/
struct node *next; /*链指针*/
}PCB;
PCB *finish,*ready,*tail,*run; //队列指针
int N,t; //进程数,时间片的大小
void firstin()
{
run=ready; //就绪队列头指针赋值给运行头指针
run-state=R; //进程状态变为运行态
ready=ready-next; //就绪队列头指针后移到下一进程
}
void prt1(char a)//输出标题函数
{
if(toupper(a)==P) //优先级法
printf(进程名 占用CPU时间 到完成还要的时间 轮转时间片 状态\n);
}
void prt2(char a,PCB *q)//进程PCB输出
{
if(toupper(a)==P)//优先级法的输出
printf(%4s %8d %12d %14d %8c\n,q-name,q-cputime,q-needtime,q-round,q-state);
}
void prt(char algo)//输出函数
{
PCB *p;
prt1(algo);//输出标题
if(run!=NULL)//如果运行指针不空
prt2(algo,run);//输出当前正在运行的PCB
p=ready;//输出就绪队列PCB
while(p!=NULL)
{
prt2(algo,p);
p=p-next;
}
p=finish; //输出完成队列的PCB
while(p!=NULL)
{
prt2(algo,p);
p=p-next;
}
getchar(); //按住任意键继续
}
void insert(PCB *q)//时间片轮转的插入算法
{
PCB *p1,*s,*r;
s=q; //待插入的PCB指针
p1=ready; //就绪队列头指针
r=p1; //*r做pl的前驱指针
while(p1!=NULL)
if(p1-round=s-round)
{
r=p1;
p1=p1-next;
}
if(r!=p1)
{
r-next=s;
s-next=p1;
}
else
{
s-next=p1; //否则插入在就绪队列的头
ready=s;
}
}
void create(char alg)//时间片轮转法创建链表进程PCB
{
PCB *p;
int i,time;
char na[10];
ready=NULL;
finish=NULL;
run=NULL;
printf(输入进程名及其需要运行的时间(中间以空格隔开):\n);
for(i=1;i=N;i++)
{
p=new PCB;
scanf(%s %d,na,time);
strcpy(p-name,na);
p-cputime=0;
p-needtime=time;
p-state=W;//进程的状态
p-round=0;
if(ready!=NULL)
insert(p);
您可能关注的文档
- REACH附件17限制59类物质.doc
- 欧盟REACH法规详解.doc
- 纳米抗菌剂技术资料.doc
- REACH附件XVII 物质中文版(陈庆今译).doc
- ECHA公布第三批REACH SVHC正式清单.doc
- react入门环境搭建2.docx
- OWL-S API指南.doc
- J-Flash烧写STM32F103RET6芯片的设置方法与步骤.doc
- REACH更新.doc
- react基础概念.doc
- 艺术展讲话致辞大全 .pdf
- 统计局五五必威体育官网网址法制宣传教育工作自查报告 .pdf
- 西厢记读后感1000字范文(真题7篇) .pdf
- 精编贵州省黔西南布依族苗族自治州企业人力资源管理师之一级人力资源管理师考试及答案(名师系列).docx
- 西厢记的读书笔记 .pdf
- 精编贵州省贵阳市企业人力资源管理师之四级人力资源管理师考试王牌题库含解析答案.docx
- 精编贵州省黔南布依族苗族自治州企业人力资源管理师之一级人力资源管理师考试完整题库带答案(培优A卷).docx
- 精编贵州省黔东南苗族侗族自治州企业人力资源管理师之一级人力资源管理师考试精品题库精选答案.docx
- 精编贵州省遵义市企业人力资源管理师之四级人力资源管理师考试题库含答案【预热题】.docx
- 西厢记读后感汇总范文 .pdf
文档评论(0)