- 45
- 0
- 约8.92千字
- 约 14页
- 2017-01-30 发布于重庆
- 举报
山东大学操作系统实验5进程互斥实验
计算机科学与技术学院实验报告
?
实验题目:实验学号: 日期:2014.4 班级:姓名: 实验目的:
进一步研究和实践操作系统中关于并发进程同步与互斥操作的一些经典问题的解法,加深对于非对称性互斥问题有关概念的理解。观察和体验非对称性互斥问题的并发控制方法。进一步了解Linux系统中IPC进程同步工具的用法,训练解决对该类问题的实际编程、调试和分析问题的能力。 理发店问题:假设理发店的理发室中有3个理发椅子和3个理发师,有一个可容纳4个顾客坐等理发的沙发。此外还有一间等候室,可容纳13位顾客等候进入理发室。顾客如果发现理发店中顾客已满(超过20人),就不进入理发店。
在理发店内,理发师一旦有空就为坐在沙发上等待时间最长的顾客理发,同时空出的沙发让在等候室中等待时间最长的的顾客就坐。顾客理完发后,可向任何一位理发师付款。但理发店只有一本现金登记册,在任一时刻只能记录一个顾客的付款。理发师在没有顾客的时候就坐在理发椅子上睡眠。理发师的时间就用在理发、收款、睡眠上。
总结和分析示例实验和独立实验中观察到的调试和运行信息,说明您对与解决非对称性互斥操作的算法有哪些新的理解和认识?为什么会出现进程饥饿现象?本实验的饥饿现象是怎样表现的?怎样解决并发进程间发生的饥饿现象?您对于并发进程间使用消息传递解决进程通信问题有哪些新的理解和认识?根据实验程序、调试过程和结果分析写出实验报告。 硬件环境:操作系统:32位
磁盘: G
软件环境:ubuntu11.02
gcc4.8 实验步骤:
(1) 首先创建ipc.h文件,在里面定义生产者/消费者共用的IPC函数的原型和变量。
(2) 然后创建ipc.c文件,在里面定义生产者/消费者共用的IPC的具体的相应函数。
(3)声明两个消息队列,当沙发空闲时则会将空闲的消息放入相应的队列中,让顾客可以进入沙发中,当理发师空闲时,也会将相应的消息放入队列中,从而可以让顾客到理发椅上进行理发。
(4)在消息队列中实现,当等待室里的人数少于十三个时,若从消息队列中获得信息,则顾客可以进入,当沙发上有空位时,在等待室的人可以进入沙发等待。
(5)创建customer文件cons,里面声明两个消息队列,当获得允许进入的信息时,顾客进入等待室,当顾客理完发则会离开,同时向消息队列中发送信息。
(6)创建barbour文件bar,在里面声明三个队列,当理发师就绪则会向队列中发送消息,若顾客收到消息就会去理发,当顾客离开时,也会向队列中发送一条消息。同时理发师理发与收账是互斥的。通过上述的文件就可以实现相应的功能。
3、分析清楚实验要求,便开始用编程语言进行编程,将分析的思路用编程语言实现。
4、 完成编写程序,要进行运行调试,找到编写中的错误,进行进一步的修改,直到程序运行过程中不再出现错误。
5、 完成程序的调试与修改,保存程序,对编程的过程进行总结,找到编程中的不足,并完成实验报告。
实现方式:Makefile:
hdrs = ipc.h
opts = -g -c
c_src = cons.c ipc.c
c_obj = cons.o ipc.o
p_src = bar.c ipc.c
p_obj = bar.o ipc.o
all: producer consumer
consumer: $(c_obj)
gcc $(c_obj) -o consumer
cons.o: $(c_src) $(hdrs)
gcc $(opts) $(c_src)
producer: $(p_obj)
gcc $(p_obj) -o producer
bar.o: $(p_src) $(hdrs)
gcc $(opts) $(p_src)
clean:
rm cons bar *.o
ipc.h:
#include stdio.h
#include stdlib.h
#include sys/types.h
#include sys/ipc.h
#include sys/shm.h
#include sys/sem.h
#include sys/msg.h
#define BUFSZ 256
int get_ipc_id(char *proc_file,key_t key);
char *set_shm(key_t shm_key,int shm_num,int shm_flag);
int set_msq(key_t msq_key,int msq_flag);
int set_sem(key_t sem_key,int sem_val,int sem_flag);
int down(int sem_id);
int up(int sem_id);
您可能关注的文档
- 实验三 网络服务与进程.doc
- 短进程与时间片调度算法 -.doc
- 用C++编写进程调度模拟程序。.doc
- 计算机操作系统小论文-Linux进程调度.doc
- 实验二 进程撤销模拟.doc
- 采用静态优先权优先算法的进程调度程序.doc
- 计算机应用技术专业大学生职业生涯规划书.doc
- linux进程和线程通信.doc
- 辽宁工程技术大学大学软件项目实训报告.doc
- 操作系统第二次实验报告.doc
- 2026年葡萄酒行业法规政策变化及应对策略报告.docx
- 2026年汽车照明行业市场需求及技术发展市场发展机制分析.docx
- 2026年食品防腐剂竞争格局与政策法规影响评估.docx
- 2026年区块链金融监管政策影响分析报告.docx
- 2026年量子通信行业发展趋势研判报告.docx
- 2026年国内流量传感器行业技术发展白皮书.docx
- 2026年笔记本电脑芯片市场发展趋势与政策分析报告.docx
- 2026年全球3D打印生物组织行业深度分析及细胞培养技术应用前景.docx
- 2025-2030中国飞机自动驾驶系统行业市场现状供需分析及投资评估规划分析研究报告.docx
- 2025-2030中国可穿戴补丁行业市场现状供需分析及投资评估规划分析研究报告.docx
最近下载
- 初中英语衡水体作文范文10篇.pdf VIP
- 基层工会预决算填报操作手册(2024.02).pdf
- 品胜加盟条件要领.pdf VIP
- 2026年党支部在改作风树新风等“对照5个方面”存在的问题及整改措施普通党员对照检查材料(五个对照)2篇例文.docx VIP
- 建筑公司员工手册(完整版).docx VIP
- 外研新交际英语(2024)新教材小学一年级英语下册Unit 1 课时3教学设计.docx VIP
- (正式版)DB12∕T 1361-2024 《地热尾水回灌技术规程》.pdf VIP
- 2026年教科版三年级科学下册(全册)教学设计(附教材目录).pdf VIP
- GB_T 25849-2024 移动式升降工作平台 设计、计算、安全要求和试验方法.pdf VIP
- 安全生产监管培训课件.pptx VIP
原创力文档

文档评论(0)