山东大学操作系统实验5进程互斥实验

山东大学操作系统实验5进程互斥实验

ID:40957006

大小:350.50 KB

页数:14页

时间:2019-08-11

山东大学操作系统实验5进程互斥实验_第1页
山东大学操作系统实验5进程互斥实验_第2页
山东大学操作系统实验5进程互斥实验_第3页
山东大学操作系统实验5进程互斥实验_第4页
山东大学操作系统实验5进程互斥实验_第5页
资源描述:

《山东大学操作系统实验5进程互斥实验》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、计算机科学与技术学院实验报告 实验题目:实验五.进程互斥实验学号:日期:2014.4班级:计基地12姓名:实验目的:进一步研究和实践操作系统中关于并发进程同步与互斥操作的一些经典问题的解法,加深对于非对称性互斥问题有关概念的理解。观察和体验非对称性互斥问题的并发控制方法。进一步了解Linux系统中IPC进程同步工具的用法,训练解决对该类问题的实际编程、调试和分析问题的能力。实验要求:理发店问题:假设理发店的理发室中有3个理发椅子和3个理发师,有一个可容纳4个顾客坐等理发的沙发。此外还有一间等候室,可容纳13位顾客等

2、候进入理发室。顾客如果发现理发店中顾客已满(超过20人),就不进入理发店。在理发店内,理发师一旦有空就为坐在沙发上等待时间最长的顾客理发,同时空出的沙发让在等候室中等待时间最长的的顾客就坐。顾客理完发后,可向任何一位理发师付款。但理发店只有一本现金登记册,在任一时刻只能记录一个顾客的付款。理发师在没有顾客的时候就坐在理发椅子上睡眠。理发师的时间就用在理发、收款、睡眠上。总结和分析示例实验和独立实验中观察到的调试和运行信息,说明您对与解决非对称性互斥操作的算法有哪些新的理解和认识?为什么会出现进程饥饿现象?本实验的饥

3、饿现象是怎样表现的?怎样解决并发进程间发生的饥饿现象?您对于并发进程间使用消息传递解决进程通信问题有哪些新的理解和认识?根据实验程序、调试过程和结果分析写出实验报告。硬件环境:内存:1G操作系统:32位磁盘:32G软件环境:ubuntu11.02gcc4.8实验步骤:1、了解实验目的,掌握与进程间通信IPC中的3个对象:共享内存、信号灯数组、消息队列及有关的系统调用,并熟练掌握。2、阅读实验题目并分析实验的需求。实验题目:理发店问题(1)首先创建ipc.h文件,在里面定义生产者/消费者共用的IPC函数的原型和变量。

4、(2)然后创建ipc.c文件,在里面定义生产者/消费者共用的IPC的具体的相应函数。(3)声明两个消息队列,当沙发空闲时则会将空闲的消息放入相应的队列中,让顾客可以进入沙发中,当理发师空闲时,也会将相应的消息放入队列中,从而可以让顾客到理发椅上进行理发。(4)在消息队列中实现,当等待室里的人数少于十三个时,若从消息队列中获得信息,则顾客可以进入,当沙发上有空位时,在等待室的人可以进入沙发等待。(5)创建customer文件cons,里面声明两个消息队列,当获得允许进入的信息时,顾客进入等待室,当顾客理完发则会离开,

5、同时向消息队列中发送信息。(6)创建barbour文件bar,在里面声明三个队列,当理发师就绪则会向队列中发送消息,若顾客收到消息就会去理发,当顾客离开时,也会向队列中发送一条消息。同时理发师理发与收账是互斥的。通过上述的文件就可以实现相应的功能。3、分析清楚实验要求,便开始用编程语言进行编程,将分析的思路用编程语言实现。4、完成编写程序,要进行运行调试,找到编写中的错误,进行进一步的修改,直到程序运行过程中不再出现错误。5、完成程序的调试与修改,保存程序,对编程的过程进行总结,找到编程中的不足,并完成实验报告。实

6、现方式:编写以下文件直接在命令行Makefile:hdrs=ipc.hopts=-g-cc_src=cons.cipc.cc_obj=cons.oipc.op_src=bar.cipc.cp_obj=bar.oipc.oall:producerconsumerconsumer:$(c_obj)gcc$(c_obj)-oconsumercons.o:$(c_src)$(hdrs)gcc$(opts)$(c_src)producer:$(p_obj)gcc$(p_obj)-oproducerbar.o:$(p_src)

7、$(hdrs)gcc$(opts)$(p_src)clean:rmconsbar*.oipc.h:#include#include#include#include#include#include#include#defineBUFSZ256intget_ipc_id(char*proc_file,key_tkey);char*set_shm(key_tshm_key

8、,intshm_num,intshm_flag);intset_msq(key_tmsq_key,intmsq_flag);intset_sem(key_tsem_key,intsem_val,intsem_flag);intdown(intsem_id);intup(intsem_id);/*信号灯控制用的共同体*/typedefunionsemuns{i

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

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

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