操作系统实习报告 -1_第1页
操作系统实习报告 -1_第2页
操作系统实习报告 -1_第3页
操作系统实习报告 -1_第4页
全文预览已结束

下载本文档

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

文档简介

操作系统实习报告日期:实习题目:基于Windows环境的读者写者问题完成人姓名:杨雪亚班级:物联网工程学号:2014141461034实习内容简要描述创建一个控制台进程。此进程包含n个线程。用这n个线程来表示n个读者或写者。每个线程按相应测试数据文件(后面有介绍)的要求进行读写操作。用信号量机制分别实现读者优先和写者优先的读者-写者问题。运行结果显示要求:要求在每个线程创建、发出读写操作申请、开始读写操作和结束读写操作时分别显示一行提示信息,以确定所有处理都遵守相应的读写操作限制。主要代码结构(附注释)publicclassreaderfirst{classwriterextendsThread{//写者进程publicwriter(intno,doublest,doublert);publicvoidrun();}classreaderextendsThread{//读者进程publicreader(intno,doublest,doublert);publicvoidrun();}publicvoidrun();//数据写入和读取publicstaticvoidmain(Stringargs[]){//主程序 (newreaderfirst()).run(); }}结果分析(或错误原因分析)运行结果如左注释:如果上述表格空间不够,可以另附表格进行说明附代码:importjava.util.concurrent.Semaphore;publicclassreaderfirst{ Semaphoremutex=newSemaphore(1);//提供互斥reader_count信号量 Semaphorewrt=newSemaphore(1);//提供读者写者同步信号量 intrwn=0;//读者等待数 intreader_count=0;//读者数,初始值为0 classwriterextendsThread{//写者进程 intnum; doublesleeptime; doubleruntime; publicwriter(intno,doublest,doublert){ num=no; sleeptime=st; runtime=rt; } publicvoidrun(){ try{ sleep((int)(sleeptime*1000)); System.out.println("第"+num+"号写者想写,现在共有读者"+reader_count +"个"); if(rwn==0){ wrt.acquire(); System.out.println("第"+num+"号写者正在写,请等待..."); sleep((int)(runtime*1000)); System.out.println("第"+num+"号写者写完了"); wrt.release(); } }catch(InterruptedExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }System.out.println(num+”“+sleeptime+”“+runtime); } } classreaderextendsThread{//读者进程 intnum; doublesleeptime; doubleruntime; publicreader(intno,doublest,doublert){ num=no; sleeptime=st; runtime=rt; } publicvoidrun(){ try{ sleep((int)(sleeptime*1000)); System.out.println("第"+num+"号读者想读"); rwn++; mutex.acquire(); rwn--; if(reader_count==0){ wrt.acquire(); } reader_count++; System.out.println("第"+num+"号读者正在读"); System.out.println("现在共有"+reader_count+"个读者"); mutex.release(); sleep((int)(runtime*1000)); mutex.acquire(); reader_count--; System.out.println("第"+num+"号读者读完了,此时共有"+reader_count +"个读者"); if(reader_count==0){ wrt.release(); } mutex.release(); }catch(InterruptedExceptione){ //TODOAuto-generatedcatchblock e.printStackTrace(); }System.out.println(num+”“+sleeptime+”“+runtime); } } publicvoidrun(){ readerr1=newreader(1,3,5); writerw2=newwriter(2,4,5); readerr3=newreader(3,5,2); readerr4=newreader(4,6,5); writerw5=newwriter(5,5.2,3);

温馨提示

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

评论

0/150

提交评论