操作系统进程通信程序

操作系统进程通信程序

ID:20537571

大小:66.50 KB

页数:7页

时间:2018-10-12

操作系统进程通信程序_第1页
操作系统进程通信程序_第2页
操作系统进程通信程序_第3页
操作系统进程通信程序_第4页
操作系统进程通信程序_第5页
资源描述:

《操作系统进程通信程序》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、includenstdio.h”#include"malloc.h"#include'*string.h"intml,m2,i,ep,num;typedefstructnode{intid;intsize;chartextllOOJ;structnode*next;}buftype;struct{intid;charstatus;intwaiterl;intpriority;charstack[5];intsm;buftype*front;buftype*rear;}pcb[4];struct{intvalue;intwaiter

2、2;}sem[3];charaddr;init(){intj,k;for(j=1;j<=3;j++){pcb[j].id=j;pcbfjl.status='r';pcb[j].waiter1=0;pcb[j].priority=j;for(k=0;k<=4;k++)pcb[j].stack[k]=*0*;pcbfjl.sm=0;pcb[j].front=NULL;pcb[j].rear=NULL;for(j=l;j<=2;j++){sem(j].value=0;sem

3、jj.waiter?=0;}i=0;ep=0;addr=’O’

4、;m2=0;ml=0;voidsort(chara[],intn){inti,j,flag;chartemp;flag=1;for(i=1;iaU+l]){flag=1;temp=a[j];aU]=a[j+lha[j+1]=temp;))}voidsend(intrec_id,chara[],intn){buftype*p;p=(buftype*)malloc(sizeof(buftype));p-〉id=rec_id;p->size

5、=n;p->next=NULL;strcpy(p->text,a);if(pcbfrec_idl.sm<=0){pcb[rec_id].front=p;pcblrec_id].rear=p;pcbfrec」dl.sm++;}else{pcb[rec_idj.rear->next=p;pcb[rec」dl.rear=p;pcb[rec_id].sm++;}}intreceive(intrec_id,charb[l){buftype*p;if(pcb[rec_id].sm<=0){printf(unomessage!!n);ret

6、urn0;)else{p=pcbfrec_idl.front;pcb[rec_id].sm—;pcb[rec_id].front=pcb[rec_id].front->next;strcpy(b,p-〉text);free(p);if(pcb[rec_id].front==NULL)pcb[rec_id].rear=NULL;return1;)}schedulerO{intpd;for(;;){pd=fmd();if(pd==0)return(0);if(ep==0){pcb[pd].status=’e’;ep=pd;elseif

7、(pcb[pd].priority

8、3();break;default:printfC'pdenor");}}}find(){intj;for(j=l;j<=3;j++)if(pcb[j].status==’r.)return(j);return(0);}p(se,p,ad)intse;intp;charad;intw;sem[sel.value—;if(sem[se].value>=0)return(1);else{printf(”process%dblocked'p);ep=0;pcb[p].status=’w’;pcblpj.waiterl=0;w=s

9、em[se].waiter2;if(w=0)sem[sel.waiter2=p;else{while(pcb[w].waiter1!=0)w=pcbfwl.waiterl;pcb[w].waiterl=p;)pcb[p].stack[l]=i;pc

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。