上海大学操作系统2实验报告合集1-8(2)
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:
或QQ:
处理(尽可能给您提供完整文档),感谢您的支持与谅解。

实验代码:
//操作系统实验--进程调度 #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
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库上海大学操作系统2实验报告合集1-8(2)在线全文阅读。
上海大学操作系统2实验报告合集1-8(2).doc
将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
下载失败或者文档不完整,请联系客服人员解决!