读者写者问题-操作系统实验报告
14页1、实验内容 1、定义一个数据缓存buffer及用于实现同步互斥的信号量。 2、定义一个读者函数:l 当有写者在占用buffer时,读者应该等待,直到写者不再使用该buffer。l 当有其他读者在占用buffer时,读者可对buffer进行读取操作。l 当buffer中有数据时,则从其中读取一个数据,并显示然后退出。l 当buffer中没有数据时,应等待,直到buffer中有数据可读。 3、定义一个写者函数l 当有读者在占用buffer时,写者应该等待,直到所有的读者都退出为止。l 当有其他写者占用buffer时,该写者应该等待,直到占用buffer的写者退出为止。l 当buffer有空闲时,写者应该在buffer中写入一个数据并退出。l 当buffer满时,写者应该等待,直到buffer有空闲为止。 4、定义主函数,在其中可以任意创建读者与写者。l 可根据用户输入创建读者或写者进程(线程)。 5、用户界面2. 写者:开始读出的内容:1. 读者:开始结束21读者队列等待结束写出的内容:Hello world !结束实验当堂所要完成事情列表:1. 调试程序使其在读者优先模式下可以运行并且能实
2、现基本的功能得出正确的结果:能够实现读写互斥,写写互斥,读读不互斥,一个进程结束能够唤醒等待队列中的进程(先读者队列后写着队列)2. 根据实验要求完善功能:由用户决定写者向缓冲区中写入的内容,读者能够读出并显示出来;当缓冲区中没有数据时,读者要等待,直到缓冲区中有数据才能读3. 根据“读者优先”加以改变,增加一个“写者优先”模式,并且由用户来选择模式源代码:#include#includeint rcount=0;/正在读的读者数量int wcount=0;/写者队列中等待写操作的写者数量int read_id=0;/读进程号int write_id=0;/写进程号int w=1;/读写互斥信号量char temp300 = 0;int choice; /用户选择读者优先OR写者优先int sign; /标识temp空的信号量 0表示temp空void WFwakeup();void RFwakeup();struct rqueue/读者等待队列int readers200;int index;rq;struct wqueue/写者等待队列int writers200;int inde
3、x;wq;/*void first() /初始化int i;rq.index = 0;wq.index = 0;for(i = 0;i20;i+)rq.readersi = 0;wq.writersi = 0;*/*读进程读操作void read()int i = 0;read_id+;if(rcount = 0)/当前没有读进程在读 可能有写进程在写 可能CPU空闲if(w=1) /如果CPU空闲,读者拿到CPUw-;/ 相当于一个P操作rcount+;if(temp0 = 0)sign = 0;if(choice = 1)rq.readersrq.index+=read_id;/将读者进程加入等待队列RFwakeup();return;elserq.readersrq.index+=read_id;/将读者进程加入等待队列WFwakeup();return;/ifprintf(读者%d正在读n,read_id);for(i = 0;i 300;i+)/读取temp内容 即写者写的内容if(tempi = 0)printf(n);return;/ifprintf(%c,tempi);
《读者写者问题-操作系统实验报告》由会员hs****ma分享,可在线阅读,更多相关《读者写者问题-操作系统实验报告》请在金锄头文库上搜索。
工程联系单、洽商记录、变更、工程量确认单、签证及其区别
培养责任感主题班会课
2023二年级班主任第二学期工作计划样本(三篇).doc
高一英语期末考试题
突起路标和轮廓标及护栏材料质量要求
2023年小学教师教学经验交流会心得体会(精选6篇)_教师经验交流心得体会
学校教学工作计划1
寄宿学校新生入学协议书
2022语文S版语文一上《z c s》word教案
四年级下册的语文教案
2023年在区政府全体(扩大)会议暨廉政工作会议上讲话
青年节文化活动总结标准范文(二篇).doc
HP1003磨煤机说明书
2012年新人教版八年级物理上册《4.5光的色散》教案教学设计板书设计反思 - 中学物理化学生物教案反思
岗位职责书市场营销中心1
2023年医院科室工作计划例文(三篇).doc
生物技术制药复习题(含答案)
合法可用车辆出租协议格式版(9篇)
颗粒硅技术研发产业园项目企划书_模板
西北工业大学21春《质量控制及可靠性》离线作业2参考答案43
2022-09-17 4页
2023-02-01 4页
2022-11-29 12页
2023-10-15 2页
2022-11-01 6页
2023-07-09 3页
2023-01-02 4页
2022-11-08 4页
2022-08-19 8页
2023-05-12 5页