上海大学操作系统2实验报告合集1-8(2)

2018-12-29 21:27

实验代码:

//操作系统实验--进程调度 #include #include #include #include const long n=5; struct pcbtype { long id, priority, runtime, totaltime; char status; //R, W, F -> 运行,就绪,完成 //进程控制块结构 }PCB[n+1]; long link[n+1]; //链表结构 long RUN, HEAD, TAIL; //选择算法 long ChooseAlgo() { char s[128]; printf(\gets(s); if (s[0]=='P' || s[0]=='p') } return 1; return 0; //初始化 void init() { long i; for (i=1; i<=n; i++) { PCB[i].id = i; PCB[i].priority = rand()%4+1; PCB[i].runtime = 0; PCB[i].totaltime = rand()%8+1; PCB[i].status = 'W'; } } //显示进程调度状况 void showit() { long i; printf(\printf(\for (i=1; i<=n; i++) printf(\printf(\for (i=1; i<=n; i++) printf(\printf(\for (i=1; i<=n; i++) printf(\printf(\for (i=1; i<=n; i++) printf(\printf(\for (i=1; i<=n; i++) printf(\printf(\if (RUN != -1) printf(\else printf(\printf(\for (i=HEAD; i!=-1; i=link[i]) printf(\printf(\} //优先数调度算法 HEAD=sort[1]; for (i=1; ii; j--) { if (PCB[sort[j]].priority > PCB[sort[j-1]].priority) { k=sort[j]; sort[j]=sort[j-1]; sort[j-1]=k; } } } //根据优先数排序 long sort[n+1]; PCB[RUN].priority -= 3; //优先级减3 PCB[RUN].runtime++; if (PCB[RUN].totaltime == 0) { PCB[RUN].status='F'; RUN = HEAD; if (HEAD != -1) HEAD = link[HEAD]; PCB[RUN].status='R'; } else { if (HEAD != -1 && PCB[RUN].priority < PCB[HEAD].priority) { k=HEAD; PCB[RUN].status = 'W'; //寻找等待链中的合适位置 while (k!=TAIL && PCB[link[k]].priority > PCB[RUN].priority) k=link[k]; if (k == TAIL) { link[k] = RUN; TAIL = RUN; link[RUN] = -1; RUN = HEAD; HEAD = link[HEAD]; PCB[RUN].status = 'R'; } else { link[RUN] = link[k]; link[k] = RUN; RUN = HEAD; //链首进程开始运行 //插入链中 //插入链尾之后 //进程运行完成 HEAD = link[HEAD]; PCB[RUN].status = 'R'; } } } } showit(); } //轮转调度算法 void main_round_robin() { long i; init(); //设置就绪链 HEAD = 1; for (i=1; i

上海大学操作系统2实验报告合集1-8(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:全国化学检验工职业技能大赛考试试卷

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: