OS实验指导书(精品).doc_第1页
OS实验指导书(精品).doc_第2页
OS实验指导书(精品).doc_第3页
OS实验指导书(精品).doc_第4页
OS实验指导书(精品).doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

os实验指导书(精品) 实验一实验一进程同步(进程同步(2学时)学时) 1、实验目的 1、实验目的加强对进程概念的理解,尤其是进程的同步与互斥机制。 2、实验任务 2、实验任务编程实现生产者-消费者问题的模拟。 建议用C语言编写源代码。 3、实验要求 3、实验要求 (1)生产者消费者对缓冲区进行互斥操作。 (2)缓冲区大小为10,缓冲区满则不允许生产者生产数据,缓冲区空则不允许消费者消费数据。 (3)生产者消费者各循环操作10次。 4、设计思路和采取的方案 4、设计思路和采取的方案 (1)整个程序以伪代码形式给出,给出的是框架,起到模拟效果。 (2)利用P,V操作使得在同一时刻,生产者和消费者只能有一个对存储区操作(即临界区)。 (3)如果两者同时对存储区操作,即同时取和生产的话,必定会有一个等待,当另一个完成操作后自己才会被唤醒。 (4)生产者在存储区满时不能再生产,进入等待,消费者同理 (5)完成同步互斥效果/*-以下为代码部分-*/定义全局变量int empty=n;/该信号量表示缓冲池中空缓冲区的数量int full=0;/该信号量表示缓冲池中满空缓冲区的数量/P操作void P(int&mutex)*mutex-;if(*mutex0)/当前进程挂起的程序实现/V操作void V(int&mutex)*mutex+;if(*mutexprior=NULL;block_first-next=block_last;block_last-prior=block_first;block_last-next=NULL;block_last-data.address=0;block_last-data.size=MAX_length;block_last-data.ID=0;block_last-data.state=Free;return OK;/-分配主存-Status alloc(int ch)/-首次适应算法-Status First_fit(int ID,int request)/传入作业名及申请量/为申请作业开辟新空间且初始化DuLinkList temp=(DuLinkList)malloc(sizeof(DuLNode);temp-data.ID=ID;temp-data.size=request;temp-data.state=Busy;DuLNode*p=block_first-next;while(p)if(p-data.state=Free&p-data.size=request)/有大小恰好合适的空闲块p-data.state=Busy;p-data.ID=ID;return OK;break;if(p-data.state=Free&p-data.sizerequest)/有空闲块能满足需求且有剩余temp-prior=p-prior;int ID,request;coutID;coutrequest;if(request0|request=0)coutdata.ID=Free;if(p-prior-data.state=Free)/与前面的空闲块相连p-prior-data.size+=p-data.size;p-prior-next=p-next;p-next-prior=p-prior;if(p-next-data.state=Free)/与后面的空闲块相连p-data.size+=p-next-data.size;p-next-next-prior=p;p-next=p-next-next;break;return ERROR;p=p-next;temp-next=p;temp-data.address=p-data.address;p-prior-next=temp;p-prior=temp;p-data.address=temp-data.address+temp-data.size;p-data.size-=request;return OK;break;/-显示主存分配情况-void show()cout+n;cout+主存分配情况+n;coutnext;while(p)coutdata.ID=Free)coutch;Initblock();/开创空间表int choice;/操作选择标记while (1)cout*n;cout*1:分配内存2:回收内存*n;cout*3:查看分配0:退出*n;cout*n;coutnext;cinchoice;if(choice=1)alloc(ch);/分配内存else if(choice=2)/内存回收int ID;coutID;free(ID);else if(choice=3)show();/显示主

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论