欢迎来到天天文库
浏览记录
ID:47439000
大小:981.01 KB
页数:23页
时间:2020-01-11
《东北大学操作系统实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、课程编号:B080000070《操作系统》实验报告姓名班级指导教师石凯实验名称《操作系统》实验开设学期2016-2017第二学期开设时间第11周——第18周报告日期2017年7月3日评定成绩评定人石凯评定日期2017年7月5日东北大学软件学院实验一进程的同步与互斥实验题目:通过学习和分析基础例子程序,使用windows进程和线程编程(也可以采用Java或Unix/Linux的POSIX线程编程)实现一个简单的生产者/消费者问题的程序。关键代码:importjava.util.ArrayList;publicclassProduce{publicObjectobject;publicArra
2、yListlist;//用list存放生产之后的数据,最大容量为1publicProduce(Objectobject,ArrayListlist){this.object=object;this.list=list;}publicvoidproduce(){synchronized(object){/*只有list为空时才会去进行生产操作*/try{while(!list.isEmpty()){System.out.println("生产者"+Thread.currentThread().getName()+"waiting");object.wait
3、();}intvalue=9999;list.add(value);System.out.println("生产者"+Thread.currentThread().getName()+"Runnable");object.notifyAll();//然后去唤醒因object调用wait方法处于阻塞状态的线程}catch(InterruptedExceptione){e.printStackTrace();}}}}importjava.util.ArrayList;publicclassConsumer{publicObjectobject;publicArrayListl
4、ist;//用list存放生产之后的数据,最大容量为1publicConsumer(Objectobject,ArrayListlist){this.object=object;this.list=list;}publicvoidconsmer(){synchronized(object){try{/*只有list不为空时才会去进行消费操作*/while(list.isEmpty()){System.out.println("消费者"+Thread.currentThread().getName()+"waiting");object.wait();}list.clear
5、();System.out.println("消费者"+Thread.currentThread().getName()+"Runnable");object.notifyAll();//然后去唤醒因object调用wait方法处于阻塞状态的线程}catch(InterruptedExceptione){e.printStackTrace();}}}}实验结果:思考题:(1)如何控制进程间的相互通信?答:主要有:管道,信号,共享内存,消息队列(2)什么是进程的同步?什么是进程的互斥?分别有哪些实现方式?答:进程互斥是进程之间的间接制约关系。当一个进程进入临界区使用临界资源时,另一个进程必须
6、等待。只有当使用临界资源的进程退出临界区后,这个进程才会解除阻塞状态。进程同步也是进程之间直接的制约关系,是为完成某种任务而建立的两个或多个线程,这个线程需要在某些位置上协调他们的工作次序而等待、传递信息所产生的制约关系。进程间的直接制约关系来源于他们之间的合作。可以利用信号量来实现进程的同步与互斥。实验二处理机调度实验题目:设计一个按优先权调度算法实现处理器调度的程序数据结构及符号说明:typedefstructpb{//每个进程charpname[5];//进程的名字charstatus[8];//进程的状态inttime;//要求运行时间intpri;//进程的优先权intcputi
7、me;//cpu时间structpb*p;//队列结构,它的下一个。}pbc,*pbcp;流程设计:关键代码:voidattemper(pbcppbca){pbcppItem=pbca->p;pbcppIterator=pbca->p;while(pIterator!=NULL){if(pItem->pri<=pIterator->pri&&pIterator->time!=0){pItem=pIterator;}pIt
此文档下载收益归作者所有