写者优先实验报告

上传人:cl****1 文档编号:568631925 上传时间:2024-07-25 格式:PDF 页数:4 大小:145.14KB
返回 下载 相关 举报
写者优先实验报告_第1页
第1页 / 共4页
写者优先实验报告_第2页
第2页 / 共4页
写者优先实验报告_第3页
第3页 / 共4页
写者优先实验报告_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《写者优先实验报告》由会员分享,可在线阅读,更多相关《写者优先实验报告(4页珍藏版)》请在金锄头文库上搜索。

1、实验报告/*学号:姓名:/* 实验序号:1*/* 实验名称:用信号量来实现读者写者问题(写者优先)*/* 实验目的:理解进程(或线程)及信号量的概念*/* 实验当堂所要完成的事情列表*/上网查找有关 API 函数, 例如句柄, 创建进程的函 数, 以及 这些函 数的 对应 参数 都有哪 些, 这些 参数 有什么 作用 等。 例如 :WaitForSingleObject(),CreateSemaphore()等。2. 对与实验有关的知识进行查看,例如查看有关参考书,和上课用的PPT 等,深入了解这些原理, 例如用信号量来实现进程之间的互斥, 以及落实到具体的代码实现应该怎么组织数据结构,用哪些

2、具体的API 函数,函数之间的传参应该怎么办等。3. 根据预习报告,虽有借鉴之嫌,但是还是可以启发一下程序的具体结构,将程序执行的结构图画出来。*/*源代码(必须含注释,要求规范性)及程序流程图*/.pp : 定义控制台应用程序的入口点。. n);. n);rc=rc-1;if(rc=0)ReleaseSemaphore(&buffer,1,NULL);.n ); .n);ReleaseSemaphore(&buffer,1,NULL);printf(写者释放对 buffer 的互斥访问n);void main ()HANDLE Data2;函数的调用问题等待所有读线所有读线程处解决:API

3、函数和普通函数其实本质上都是一样的,但是进程和普通的变量不一样。例已有进程对开始读/写判断是否有读申请资源,进程完成再执行理完毕,释放读/写行读操作如 P-V 原语,这对函数必须是成对出现的,buffer 进行读写否则没有意义。互斥信号量但是在 API 函数中并没有 P 函数和 V 函 数 , 需 要 自 己 查 找 或 者 上 网 搜 索 。 还 有 函 数 的 嵌 套 调 用 , 例 如 :CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)(reader),&Data1,0,NULL),这个函数是我直接利用了别人的代码,调用了reader 函数,但是前

4、面的那个参数至今未明白,上网看了一下,说是强制转换。*/*运行过程中出现的问题及其相应解决:1读写信号量的不互斥解决:在刚写好程序的时候,发现读者和写者程序同时调用, 表现为交叉打印,所以用了程序逐句执行,逐句执行到最后, 出现了汇编代码,只好不了了之。 后来经过仔细观察之后才发现可能是函数的参数有问题,修改了参数之后,程序变得正常了。2每个读者一来都要判断是否有数据可读,但是当第一个读者已经拿到数据缓存区的使用权时,接下来的读者便无法对数据进行读操作; 而同时有写者等待的情况下, 一旦第一个读者读完后,写者便只能写,写完读者才能读解决:这是由于同步信号量导致的结果。对于同一个缓冲区,只能实现

5、读者读,然后写者写,又读者读,写者写, 所以便不能实现若干个读者同时进行读操作。 只需调整为当第一个读者来的时候拿到读数据的使用权后, 直到没有读者等待后, 再交出缓冲区的使用权, 再让写者写即可解决此问题。3. 运行过程中会出现直接跳出的现象解决:是运行环境的问题, 如果是 VS2012 会在程序运行完之后直接跳转退出, 可以加入System(“pause”)暂停语句是程序停止。*/ 3/10/*实验总结 3/10这是第一次对 API 函数的应用,发现 API 函数虽然名字很长,但是认真去做还是比较好做出来,毕竟函数是死的,只要参数满足,就可以调用,而不用自己编写,这是操作系统提供的接口,

6、可以对进行系统级的编程, 对程序的进一步开发有很大的帮助。 API 函数很多,需要仔细的查询,所以只要用心慢慢去做就可以了。多进程或多线程的读者写者程序比较复杂,所以只有自己利用 API 函数写了一个单线程的程序。自己也看了很多多线程的程序,是给互斥的进程加上了循环,但是一加上循环,程序考虑的点就会变的更多, 考虑到自己可以将程序弄的更加明白, 所以我还是选择了单线程的编写。程序中,读者和写者共享同一个资源缓冲区。需要对各个线程的操作进行一定的互斥,防止多个线程在并发执行的过程中,发生死锁现象。但是考虑到单线程,没有并发,但是资源共享了,就是分配一个资源,所以程序才会容易很多。写操作系统的实验需要参考很多的书, 只有见识的够多才能写出代码, 所以 duoduyixie书,比如参考书等很有必要。运行截图:*/

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号