- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
《操作系统》课程设计报告 姓名 云丹霞 学号级11级 八班 八组 实验室: A108 提交日期 8月30日 成绩 指导教师 实验题目:基于信号量与P/V操作同步机制的读者/写者问题的设计与实现 实验要求:功能要求 (1)设置读者、写者个数输入(界面);实现读者、写者进程的动态创建; (2)用信号量与P/V操作同步机制实现写者优先的读者/写者问题。 (3)设计并实现运行结果(界面)包括: 动态显示多个读者或一个写者的读/写操作互斥状态: 显示正在进行读或写操作的进程,以及等待读或写操作的进程; 动态显示写者优先的过程: 即当有读者进程在读时,有写者进程要求写操作,后续的读者进程应该等待;并且当读操作的读者进程结束读操作后,等待的写者进程应能立即进行写操作。设计相应的等待队列 所需数据结构: CRITICAL_SECTION cs_Read; //临界区cs-Read HANDLE h_Mutex1; //句柄,方便指向互斥对象 ThreadInfo thread_info[MAX_THREAD_NUM] //线程数组 struct ThreadInfo //定义结构体 { int serial; //线程序号 char entity; //线程类别(判断是读者还是写者线程) double delay; //线程延迟时间 double persist; //线程读写操作时间 }; 4 相关API函数 CreateThread()在调用进程的地址空间上创建一个线程 ExitThread()用于结束当前线程 Sleep()可在指定的时间内挂起当前线程 CreateMutex()创建一个互斥对象,返回对象句柄 OpenMutex()打开并返回一个已存在的互斥对象句柄,用于后续访问 ReleaseMutex()释放对互斥对象的占用,使之成为可用 WaitForSingleObject()可在指定的时间内等待指定对象为可用状态 InitializeCriticalSection()初始化临界区对象 EnterCriticalSection()等待指定临界区对象的所有权 LeaveCriticalSection()释放指定临界区对象的所有权 算法设计: 读者写者问题为了保证共享数据的完整性要求: R-R可以同时:读者不修改数据,不影响其它进程,可同时。 R-W不可同时:有读者,不能有写者;有写者,不能有读者。 W-W不可同时:如果同时写,数据是不确定的。考虑到写者优先,即当有读者进程在读时,有写者进程要求写操作,后续的读者进程应该等待;并且当读操作的读者进程结束读操作后,等待的写者进程应能立即进行写操作。 两个临界区: 构筑读者进程写着进程的临界区,一起数据可以同时被多个读者和写者共享使用,要求保证读者写者互斥使用,所以,在读者进程中,使用数据的程序段应该构成临界区,在写者进程中,使用的数据的程序段应该构成临界区,所以,设置了两个临界区,读者临界区和写者临界区。 三个互斥对象: 写者优先一旦有一个写者到来时,应该尽快让写者进行写,如果有一个写者在等待,则新到的读者操作不能读操作,为此添加一个整型变量writecount,记录写者的数目,当writecount=0时才可以释放读者进行读操作! 为了实现对全局变量writecount的互斥访问,设置了一个互斥对象Mutex3。为了实现写者优先,设置一个临界区对象,当有写者在写或等待时,读者必须阻塞在临界区对象上。读者除了要一个全局变量readcount实现操作上的互斥外,还需要一个互斥对象对阻塞在这一个过程实现互斥,这两个互斥对象分别为mutex1和mutex2。 流程图: 任务分工及各分工实现方法: 我负责的是读者进程,编写了一个WP_ReaderThread(void *p)函数来实现这个功能。传入一个结构体指针p,将线程结构体中的线程信息读出参数,按随机数产生的时间实现随机延迟。此时读者想要进去读临界区EnterCriticalSection(cs_Read);,便使用wait_for_mutex1=WaitForSingleObject(h_Mutex1,-1)和ReleaseMutex(h_Mutex1);对此进行监控。读者进入临界区后,读者队列里读者数增加,readcount++,故需要 w
您可能关注的文档
- 铁路选线课程设计任务书4444.doc
- 填料箱盖课程设计含CAD图纸.doc
- 梯形钢屋架课程设计1.doc
- 套筒座工艺规程及夹具课程设计郑科院.doc
- 孙富勤专业课程设计.doc
- 数字信号处理课程设计-巴特沃斯带阻滤波器的设计.doc
- 数字温度计课程设计基于单片机.doc
- 数字式红外测速仪课程设计(完整版.doc
- 数字闹钟课程设计.doc
- 数字逻辑电路课程设计_交通灯控制器.doc
- GB/T 15072.1-2025贵金属合金化学分析方法 第1部分:金含量的测定.pdf
- 《GB/T 15072.1-2025贵金属合金化学分析方法 第1部分:金含量的测定》.pdf
- JJF 2316-2025光伏用反射标准板校准规范.pdf
- 计量规程规范 JJF 2316-2025光伏用反射标准板校准规范.pdf
- 《JJF 2316-2025光伏用反射标准板校准规范》.pdf
- JJF 1221-2025汽车排气污染物检测用底盘测功机校准规范.pdf
- 计量规程规范 JJF 1221-2025汽车排气污染物检测用底盘测功机校准规范.pdf
- 《JJF 1221-2025汽车排气污染物检测用底盘测功机校准规范》.pdf
- JJF 2306-2025微机电系统(MEMS)惯性冲击开关校准规范.pdf
- 计量规程规范 JJF 2306-2025微机电系统(MEMS)惯性冲击开关校准规范.pdf
文档评论(0)