优先级调度算法设计与实现.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
优先级调度算法设计与实现

操作系统实验报告 实验地点: GS4304 实验日期: 2015-11-11 班级: 13数字媒体 学号: 姓名: 一、实验题目:优先级调度算法设计与实现 二、实验过程: 实验代码: //==================================================================== #include stdio.h #include dos.h #include conio.h #include math.h #define INTR 0x1C //INT 1Ch int xx=0; //记录中断次数的全局变量 void interrupt (*oldhandler)(...); //定义中断向量 //进程控制块结构体 struct PRO { char id; /*进程id号 */ int pri; //进程优先级 int p; /*优先级递增量*/ int s; /*优先级递减量*/ int status; //进程状态 }A={a,2,1,1,0},B={b,1,1,1,0},C={c,0,1,1,0}; //中断处理函数 void interrupt time(...) { int a; if(A.status==1) A.pri=A.pri-A.s; else A.pri=A.pri+A.p; if(B.status==1) B.pri=B.pri-B.s; else B.pri=B.pri+B.p; if(C.status==1) C.pri=C.pri-C.s; else C.pri=C.pri+C.p; xx++; } /*进程选择函数*/ char select() {if(A.pri=B.priA.pri=C.pri) {A.status=1;B.status=0;C.status=0;return A.id;} else if(B.priA.priB.pri=C.pri) {A.status=0;B.status=1;C.status=0;return B.id;} else {A.status=0;B.status=0;C.status=1;return C.id;} } /* 求素数函数*/ int prime (int n) {int k,i,j; k=sqrt(n); for(i=2;i=k;i++) if(n%i==0) return 0; return n; } //主函数 void main ( ) { int a[3]={100,100,100}; int u, v, w=0, x=0, y=0; char c; oldhandler=getvect(INTR); /*获取中断处理 INT 1Ch*/ setvect(INTR,time); /*将中断处理函数设为time()*/ gotoxy(10,2); printf(THE PROCESSES ARE PLAYING:\n); gotoxy(10,4); printf(Processid Prime Times\n); while(xx=300) {u=select(); switch (u) { case a: a[0]++; if(a[0]10000) a[0]=100; v=prime(a[0]); if(v) {gotoxy(10,6); printf( A %6d %6d, v, w++); } break; case b: a[1]++; if(a[1]10000) a[1]=100; v=prime(a[1]); if(v) {gotoxy(10,8); printf( B %6d %6d, v, x++); } break; case c: a[2]++; if(a[2]10000) a[2]=100; v=prime(a[2]); if(v) {gotoxy(10,10); printf( C %6d %6d, v, y++); } break; } gotoxy(13,12); printf(TIME INTERRUPT %d,xx); } setvect(INTR,oldhandler); /*恢复中断*/ getchar(); } //================================================================ 程序流程图

文档评论(0)

haihang2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档