欢迎来到天天文库
浏览记录
ID:6327174
大小:229.00 KB
页数:15页
时间:2018-01-10
《操作系统读者与写者问题课程设计报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、沈阳理工大学课程设计专用纸No1课程设计任务书学院信息学院专业计算机科学与技术学生姓名学号题目读者与写者问题(进程同步问题)内容及要求:内容:读者与写者问题(进程同步问题)实验目的:了解进程同步的概念,理解信号量机制的原理,掌握信号量解决同步问题的方法,进而学会进程的同步与互斥。设计要求:编程模拟教材中讨论读者与写者的问题,要求能显示结果。任务交付:1.程序源代码;2课程设计论文及电子文档。进度安排:16周——确定题目,查找资料,上机编程;20周——上机编程调试,验收答辩,提交课程序设计报告书。指导
2、教师(签字):年月日学院院长(签字):年月日12沈阳理工大学课程设计专用纸No112沈阳理工大学课程设计专用纸No1目录一、课程设计目的及要求1二、相关知识1三、题目分析2四、概要设计4五、代码及流程5六、运行结果11七、设计心得12八、参考文献1212沈阳理工大学课程设计专用纸No1一、课程设计目的及要求读者与写者问题(进程同步问题)用n个线程来表示n个读者或写者。每个线程按相应测试数据文件的要求,进行读写操作。请用信号量机制分别实现读者优先和写者优先的读者-写者问题。读者-写者问题的读写操作限制
3、:1)写-写互斥;2)读-写互斥;3)读-读允许;写者优先的附加限制:如果一个读者申请进行读操作时已有另一写者在等待访问共享资源,则该读者必须等到没有写者处于等待状态后才能开始读操作。二、相关知识WindowsAPI:在本实验中涉及的API有:1线程控制:CreateThread完成线程创建,在调用进程的地址空间上创建一个线程,以执行指定的函数;它的返回值为所创建线程的句柄。HANDLECreateThread(LPSECURITY_ATTRIBUTESlpThreadAttributes,//SD
4、DWORDdwStackSize,//initialstacksizeLPTHREAD_START_ROUTINElpStartAddress,//threadfunctionLPVOIDlpParameter,//threadargumentDWORDdwCreationFlags,//creationoptionLPDWORDlpThreadId//threadidentifier);2ExitThread用于结束当前线程。VOIDExitThread(DWORDdwExitCode//exit
5、codeforthisthread);3Sleep可在指定的时间内挂起当前线程。VOIDSleep(DWORDdwMilliseconds//sleeptime);4信号量控制:WaitForSingleObject可在指定的时间内等待指定对象为可用状态;DWORDWaitForSingleObject(HANDLEhHandle,//handletoobjectDWORDdwMilliseconds//time-outinterval);12沈阳理工大学课程设计专用纸No1hHandle为等待的对
6、象,也就是实现同步或者互斥的对象。该函数一执行,相应的信号量就减去1,如果信号量小于等于0,那么他一直在循环。5实现信号量互斥和同步CreateSemaphore用于创建信号量,根据参数的不同可以利用它实现互斥和同步。ReleaseSemaphore用于释放信号量,使用后相应的信号量加1HANDLECreateSemaphore(LPSECURITY_ATTRIBUTESlpSemaphoreAttributes,//SDLONG,lInitialCount,//initialcountLONG,l
7、MaximumCount,//maximumcountLPCTSTRlpName//objectname);ReleaseSemaphore(HANDLEhSemaphore,//handletosemaphoreLONGlRelseaseCount,//contincrementamountLPLONGlpPreviousCount//previouscount);三、题目分析将所有的读者和所有的写者分别放进两个等待队列中,当读允许时就让读者队列释放一个或多个读者,当写允许时,释放第一个写者操作。
8、(1)构筑读者进程和写者进程间的临界区题目中说的一批数据被多个读者、写者共享使用,允许多个读者同时访问这些数据,但是如果有一个写者在访问数据时,就不允许其他读者或写者使用,所以,对这一批数据既要保证读者和写者互斥使用,也要保证写者与写者互斥使用。也就是说,在读者进程程序中,使用数据的程序段应该构成临界区;在写者进程程序中,使用数据的程序段应该构成临界区。(2)判定是否是第一个读者根据上面的分析,希望在读者进程中有一个办法能判定请求进入临界区的是否是第一个读者。如果是第
此文档下载收益归作者所有