电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

操作系统实践

操作系统实践_第1页
操作系统实践_第2页
操作系统实践_第3页
学院:计算机科学学院专业:软件工程 2018 年 4 月 20 日姓名苗琪学号2016040121078班级2 班指导老师李琼课程名称操作系统实践成绩实验名称进程同步与互斥的模拟与实现1•实验目的目的:掌握软件方法和信号灯方法解决进程的同步与互斥问题。重点:进程的互斥、进程的同步、锁、PV 信号灯。难点:进程同步与互斥的实现。2•实验内容请使用 PV 信号灯方法解决并实现生产者一消费者问题。3•实验环境硬件环境:PC 机软件环境:Windows 操作系统,用 JAVA 语言实现;或 Linux 操作系统,用 C 语言实现。武谨欢細多複头验//消息类//缓冲类型//信号量//消息变量//设置信号量初4 •实验方法和步骤(含设计)要求:有问题分析过程,算法(用伪代码描述),流程图,源代码等。问题的描述如下:假设一组生产者进程卩,卩 2,…,P 和一组消费者进程 c,c,…,C,通过 n 个缓冲区组成缓冲池,共同完成“生产和消费”任务。每个缓冲区存放一个消息,生产者将生产出的消息放入空缓冲区,消费者从满缓冲区中取出消息。当所有缓冲区均满时,生产者必须等待消费者提供空缓冲区;当缓冲池中所有缓冲区全为空时,消费者必须等待生产者提供有消息缓冲区。另外,对所有生产者和消费者进程来说,把缓冲池看成一个整体,因此缓冲池是临界资源,即任何一个进程在对池中某个缓冲区进行“存”或“取”操作时须和其他进程互斥执行。用信号量机制来解决这种问题,首先定义下列公共信号量。① 信号量 mutex。初值为 1,用于控制互斥访问缓冲池。② 信号量 full。初值为 0,用于计数。full 值表示当前缓冲池中“满”缓冲区数。③ 信号量 empty。初值为 n,用于计数。Empty 值表示当前缓冲池中“空”缓冲区数。有限缓冲区生产者/消费者进程描述如下:typedefstruet{}item;typedefstruet{struetiteminst;struetbuffer*next;}buffer;semaphorefull,empty,mutex;struetitemnextp,nextc;full=0;empty 二n;mutex=1;生产进程代码框架如下:do{produeeaniteminnextpP(empty);P(mutex);・//获得一个空缓冲区・//将 nextp 数据复制到空缓冲区・//将缓冲区加入满缓冲区队列V(full);V(mutex);}while(1);消费者进程代码框架如下:do{P(full);P(mutex);//获得一个满缓冲区//将满缓冲区数据复制到 nextc//将缓冲区还回空缓冲队列V(empty);V(mutex);consumetheiteminnextc}while(1);流程图如下:源代码如下:#include#includeconstunsignedshortS...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部