教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 政务民生 >

操作系统2014课程设计(2)

来源:网络收集 时间:2026-07-24
导读: status 进程状态 priority 进程优先数 nextwr 等待队链指针,指示在同一信号量上等待的下一个进程的标识。 ②信号量。对应于临界资源s1和s2分别有sem1和sem2,均为互斥号量,内容包括: value 信号量值,初值为1 fi

status 进程状态 priority 进程优先数

nextwr 等待队链指针,指示在同一信号量上等待的下一个进程的标识。 ②信号量。对应于临界资源s1和s2分别有sem1和sem2,均为互斥号量,内容包括:

value 信号量值,初值为1

firstwr 等待链指针,指示在该信号量上第一个等待进程的标识数。 ③保留区。用数组saveaera[3][4]表示。即每个进程都有一个大小为4个单元的保留区,用来保存被“中断”时的现场信息,如通用寄存器的内容和断点地址等。

④全程变量。

exe 执行进程指针,其值为进程标识数 i 用来模拟一个通用寄存器。

(4)用Turbo C编写的程序代码: #include #include #include #define TRUE 1 #define FALSE 0 #define MAXPRI 100 #define NIL -1 struct{ int id; char status;

int nextwr; //*等待链指针,指示在同一信号量上等待的下一个进行进程的标识符*

int priority; }pcb[3]; struct

{

int value;

int firstwr; /*等待链首指针,指示该信号量上第一个等待进程的标识数*/

}sem[2];

char savearea[3][4],addr; int i,s1=0,s2=0,seed,exe=NIL; init( ) { int j;

for(j=0;j<3;j++) {

pcb[j].id=j; pcb[j].status='r'; pcb[j].nextwr=NIL;

printf(\ scanf(\ pcb[j].priority=i; }

sem[0].value=1; sem[0].firstwr=NIL; sem[1].value=1; sem[1].firstwr=NIL; for(i=0;i<3;i++) for(j=0;j<4;j++) savearea[i][j]='0'; }

float random() { float m; srand(time(0)); m=(1+rand()%3)%3-0.1;

printf(\ getchar(); return(m); }

timeint(ad) /*time slice interupt*/ char ad; { float x; x=random();

if((x<0.33)&&(exe==0))return(FALSE); if((x<0.66)&&(exe==1))return(FALSE); if((x<1.0)&&(exe==2))return(FALSE); savearea[exe][0]=i; savearea[exe][1]=ad; pcb[exe].status='t';

printf(\ times slice interrupt exe=NIL; return(TRUE); }

scheduler( ) {

int pd;

if((pd=find())==NIL&&exe==NIL) return(NIL); /*quit system*/ if(pd!=NIL) {

if(exe==NIL) {

pcb[pd].status='e';

process%d enter into ready\\n\

exe=pd;

printf(\ }

else if(pcb[pd].priority

pcb[exe].status='r';

printf(\ pcb[pd].status='e'; exe=pd;

printf(\ } }

i=savearea[exe][0]; addr=savearea[exe][1]; return(exe); } find( ) {

int j,pd=NIL,w=MAXPRI; for(j=0;j<3;j++) {

if(pcb[j].status=='r') if(pcb[j].priority

w=pcb[j].priority; pd=j; } }

if (pd==NIL) for(j=0;j<3;j++)

{

if(pcb[j].status=='t') if(pcb[j].priority

w=pcb[j].priority; pd=j; } }

return(pd); } p(se,ad) int se; char ad; {

if(--sem[se].value>=0) return(FALSE); block(se);

savearea[exe][0]=i; savearea[exe][1]=ad; exe=NIL; return(TRUE); }

block(se) int se; { int w;

printf(\ pcb[exe].status='w'; pcb[exe].nextwr=NIL;

操作系统2014课程设计(2).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/447902.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)