资源预览内容
第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
亲,该文档总共5页全部预览完了,如果喜欢就下载吧!
资源描述
本文格式为Word版,下载可任意编辑操作系统课设报告 成 绩: 武汉华夏理工学院信息工程学院 2 课 程 设 计 题 目 用多线程同步方法解决读者阅览问题 系 别 信息工程系 专 业 软件工程 班 级 软件1151 姓名/学号 指导教师 杨铭熙 年 月 日 目 录 1.设计目的与要求 . 1 1.1设计目的 . 1 1.2设计要求 . 1 2.设计思想及系统平台 . 1 2.1设计思想 . 1 2.2系统平台及使用语言 . 1 3.细致算法描述 . 2 4.源程序清单 . 4 5.运行结果与运行处境 . 7 6.调试过程 . 9 7.总结 . 10 本科生课程设计劳绩评定表 . 11 3 正 文 1.设计目的与要求 1.1设计目的 通过研究linux多线程同步的问题,掌管对信号灯的操作方法,以及加深理解同步算法的思想。 1.2设计要求 用多线程同步解决读者阅览问题。设阅览室有5把椅子,几把椅子可用连续存储单元。 要求: 1) 每个读者进入阅览室后,即时显示“Entered” 及其线程自定义标识,还同时显示阅览室共有几名顾客及其所坐的位置。 2) 至少有10个读者,每人阅览至少3秒钟。 3) 多个读者须共享操作函数代码。 2.设计思想及系统平台 2.1设计思想 进程是指在系统中运行的一个应用程序,线程是系统调配处理器时间资源的根本单元,或者说进程之内独立执行的一个单元。对于操作系统而言,其调度单元是线程。一个进程至少包括一个进程,通常将线程称为主线程。一个进程从主线程的执行开头进而创造一个或多个附加线程,就是所谓基于多线程的多任务。从而理解到我的课程设计所需要的进程数和线程在我的程序中怎么用。首先座位是一个共享资源,而且有一个数量限制,这里就要用到互斥信号灯的操作和判断资源数量的信号灯。在算法上要专心留心斟酌,弄清规律依次,制止错误使用信号灯而带来的死锁。 2.2系统平台及使用语言 本次课程设计是在linux的系统平台下使用C语言实现对读者阅览问题的编程,所使用的工具有gedit编辑器、gcc编译器等。 1 3.细致算法描述 reader函数: 第一步:定义一个长度为5的整型数组buffer用来模拟连续的五个座位,一个座位资源信号灯sem_sit,一个互斥信号灯sem_mutual。 其次步:创造void* reader(int n)读者的函数,在函数的开头,使用sem_wait( 第三步:使用for循环pthread_creat()创造10个reader进程。 第四步:使用pthread_join()等待全体reader终止。 main线程的处理函数流程图如下: 2 开头 初始化信号灯 产生多进程 等待子进程全部终止 终止 main线程的处理函数: int main() reader线程的处理函数流程图如下: 开头 3 int i,j,pp,; pthread_t t10; sem_init( sem_init( for(i = 0;i 10;i+) for(j = 0;j 10;j+) = pthread_join(tj,NULL); if( != 0) printf( pp = pthread_create( if(pp != 0)printf( return 0; 登记进入 找空座位 读书 登记出来 终止 5
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号