![2016秋操作系统大作业进程互斥访问共享资源含答案_第1页](http://file2.renrendoc.com/fileroot_temp3/2021-11/17/bcb9a9f1-b1c4-4f07-a92f-9032af07887e/bcb9a9f1-b1c4-4f07-a92f-9032af07887e1.gif)
![2016秋操作系统大作业进程互斥访问共享资源含答案_第2页](http://file2.renrendoc.com/fileroot_temp3/2021-11/17/bcb9a9f1-b1c4-4f07-a92f-9032af07887e/bcb9a9f1-b1c4-4f07-a92f-9032af07887e2.gif)
![2016秋操作系统大作业进程互斥访问共享资源含答案_第3页](http://file2.renrendoc.com/fileroot_temp3/2021-11/17/bcb9a9f1-b1c4-4f07-a92f-9032af07887e/bcb9a9f1-b1c4-4f07-a92f-9032af07887e3.gif)
![2016秋操作系统大作业进程互斥访问共享资源含答案_第4页](http://file2.renrendoc.com/fileroot_temp3/2021-11/17/bcb9a9f1-b1c4-4f07-a92f-9032af07887e/bcb9a9f1-b1c4-4f07-a92f-9032af07887e4.gif)
![2016秋操作系统大作业进程互斥访问共享资源含答案_第5页](http://file2.renrendoc.com/fileroot_temp3/2021-11/17/bcb9a9f1-b1c4-4f07-a92f-9032af07887e/bcb9a9f1-b1c4-4f07-a92f-9032af07887e5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、华南理工大学“计算机操作系统力课程设计大作业一、实验题目:linux下利用互斥实现线程访问共享资源二、实验目的:掌握线程创建和终止,加深对线程和进程概念的理解,会用同 步与互斥方法实现线程之间的通信。三、实验内容事先了解操作系统中经典的生产者-消费者问题,安装linux虚拟机(可以 用virtualbox 或者vmware软件)。在linux 下创建三个生产者线程(P1, P2, P3)和一个消费者线程(C1),生产者和消费者线程共享一个长度为2KB的环型公共缓冲区,生产者向缓冲区写入消息,消费者从缓冲区中取走消息显示到屏 幕。只要缓冲区未满,生产者可将消息送入缓冲区;只要缓冲区未空,消费者
2、可从缓冲区取走一个消息。每个消息具下列结构格式:消息长度(1个字节),消息内容(n个字节)。每个生产者每隔2秒生产一个消息加入缓冲区,并把消息产生时间和内容 记录在一个文本文件中。P1每次生产的数据为26个大写字母,P2每次生产的 数据为26个小写字母,P3每次生产的数据为10个阿拉伯数字。消费者C1每隔3秒读取缓冲区中的一个消息并将消息内容显示到屏幕上。用两种方法(不采线程用互斥和采用线程互斥技术)编写上述功能的程序, 对比两种程序运行结果有何区别?不采线程用互斥时存在什么问题?备注:编程中用到的函数创建线程函数:pthread_create互斥锁初始化: pthread_mutex_ini
3、t 互斥锁加锁:pthread_mutex_lock 互斥锁解锁:pthread_mutex_unlock四、实验要求:每人完成一份大作业实验报告。报告分设计思想、数据定义、处理流程、 源程序、运行结果截图、设计体会等部分。1)给出数据定义和详细说明;2)给出实现思想和设计流程;3)调试完成源程序;4)屏幕观察运行结果;5)总结自己的设计体会;编程语言及操作系统平台不限。五、提交内容本大作业每个人必须单独完成。最后需提交的内容包括:源程序(关键代 码需要注释说明)、可运行程序、算法思路及流程图、心得体会。大作业必须以 WORD件的形式提交。大作业严禁抄袭。发现抄袭一律以不及格论。大作业内容要完
4、整,一定要 有算法思路、流程图、心得体会、运行输出信息截屏等内容,如果只提交源代 码则大作业成绩记为不合格。2016-10-20设计报告线程的同步和互斥在操作系统中引入线程以及线程并发性的概念后,增加了系统的效率,同时,由于资源有限导致线程之间的资源竞争和共享,因此产生一个问题,例如,当多个线程 同时申请一台打印机的时候,如果不加限制,很可能使多个线程的输出结果交织在 一起,产生错误的打印。下面我来为大家主要介绍并发执行的线程使用临界资源时, 同步与互斥的以及控制方法。1. 临界资源的概念:多个线程不能同时使用的资源称为临界资源CR(CriticalResource)。临界资源可以是一些独占设
5、备,比如打印机等,也可以是一些共享变量,表格,链表等。2. 临界区:不论硕件临界资源还是软件临界资源,多个线程必须互斥的对其进行访问。每个线程中访问临界资源的那段代码称为临界区CS (Critical Section )。每个线程在进入临界区以前,应该对欲访问的临界资源进行检查,看他是否正在被访问。若是,则该线程不能进入临界区,若否,则该线程可以进入临界区对该资源进行访 问,并设置只在被访问的标志。3. 线程互斥的概念:线程互斥是指多个线程不能同时使用同一个临界资源,即两个或两个以上线程必须互斥的使用临界资源,当然不能同时进入临界区。如:现在系 统中有一台打印机,两个线程都要使用,为了保证打印
6、结果正确,只能一个线程用 完后另一个再用。在一个线程使用时必须做上占用标记,用完以后必须清楚标记。这样,另一个线程才会知道打印机空闲,然后开始使用。这两个逻辑上完全独立, 毫无关系的线程,由于竞争同一个资源而相互制约,这就称为线程的互斥。4. 线程同步的概念:线程同步是指有协作关系的线程之间不断地调整他们之间的相对速度或者执行过程,以保证临界资源的合理利用和线程的顺利执行。实现线程同 步的机制称为线程同步机制。不同的同步机制实现同步的方法可能不同,但一般都 借助一个中间媒介来实现,如信号量,锁等。在现实中存在线程同步关系的线程很 多,如:两个线程合作使用同一缓冲区,设线程A负责向缓冲区中输入数
7、据,线程B负责缓冲区中输出数据。当线程 A将数据缓冲区输满时,则只有当线程 B将该数 据输出后,线程A才可以继续使用该缓冲区,否则将造成数据丢失。此时,线程A,B之间就形成了同步关系。同步机制遵循的规则:(1) 空闲让进:并发线程中某个线程不再临界区时,不阻止其它线程进入临界区。(2) 忙则等待:只允许同一时刻一个线程进入临界区,其它欲进入临界区的线程等 待。(3) 有限等待:欲访问临界区的线程要在有限的时间内访问到临界区,避免陷入死 等”状态。(4) 让权等待:当线程不能进入自己的临界区的时候,应立即释放CPU,以避免线 程陷入忙等”状态。锁机制:实现互斥的一种方式是采用锁机制,即提供上锁(
8、Lock)和开锁(Unlock) 原语,以及一个锁变量 w或者锁位(1bit)。当线程进入临界区之前,首先测试 w 的状态,w=1,表示上锁,意味着该资源以及占用;w=0表示开锁,意味着该资源以及空闲,可以进入临界区使用临界资源。这种利用锁机制解决互斥访问的方法安全可靠,但是效率不高。因此出现了信号量。信号量:(Semaphore也叫信号灯,是在信号同步机制中用于实现线程的同步和互 斥有效的数据结构。信号量有很多种类型的数据结构。如:整型信号量、记录型信 号量、AND型信号量、及信号量集等。在这里我们主要介绍整型信号量,其它类型 信号量读者可以自己查阅相关资料。整型信号量是信号量最简单的类型,
9、也是各种 信号量类型中必须包含的类型,整型信号量的数值表示当前系统中可用的该类型临 界资源的数量。如整型信号量 S,则s值得意义为:s>0:表示系统中空闲的该类临界资源的个数;s=0:表示系统中该类临界资源正好全部被占用,而且没有线程在等待该资源。s<0:s的绝对值表示系统中等待该类临界资源的线程的个数。wait(s)和signal(s)的原语操作可以描述为:wait(s): while s<=0 该线程等待s:s=s-1;Signal(s): s: s=s+1;信号量机制:信号量机制中,申请和释放临界资源的两个原语操作为wait操作和signal操作,有时也称为P操作和V操
10、作。线程同步问题的一个典型案例:生产者 一消费者问题,这是一个著名的线程同步问题。描述为:有一群生产者线程在生产产品,并将这些产品提供给消费者线程去消费,为方便生产者线程与消费者线程能并发执行,在两者之间设置一个具有n个缓冲区的缓冲池,生产者线程将生产一个商品并放入到一个缓冲区中,消费者线程可 以从一个缓冲区中取走一个商品消费。问题分析:显然消费者线程不能到一个空的缓冲区中去取商品,生产者线程也不能 将产品放入一个已经装满产品且尚未取走的缓冲区中。一个数组表示具有n和缓冲区的缓冲池,设输入输出指针分别为 in和out, in表示 下一个可存放产品的缓冲区,out表示下一个可取得产品的缓冲区。
11、考虑是循环缓冲 池,每当生产者线程向缓冲池中生产一个产品时,in=(in+1)mod n;每当消费者线程从缓冲池中取走一个产品后,out=(out+1)mod n。故当out=in时,缓冲池空,当 out=(in+1)mod n时,表示缓冲池满。012 .生产者消费者问题缓冲池为解决生产者一消费者问题各线程的同步问题,设以下信号量:sem_mutex互斥使用缓冲池信号量,初始情况下无线程进入缓冲池,因此初值设为1;empty_sem_mutex使用缓冲池中空缓冲区的信号量,由于初始情况下所有缓冲区为 空,因此设置为n;full_sem_mutex:使用缓冲池中满缓冲区的信号量,由于初始情况下所
12、有缓冲区为空, 因此设置为0;程序:#include<pthread.h>#include<stdio.h>#include<stdlib.h>#include<semaphore.h>#define BUFF_SIZE10intbufferBUFF_SIZE;int in=0;int out=0;int p=1;sem_t sem_mutex;sem_tempty_sem_mutex;sem_tfull_sem_mutex;void *Producer()(while(1)(sem_wait(&empty_sem_mutex);sem_
13、wait(&sem_mutex);if(p>10)p=1;bufferin=p+;printf("nproduce%dn”,bufferin);if(out=(in=(in+1)%BUFF_SIZE)(printf("buffer isfulln");sem_post(&sem_mutex);sem_post(&full_sem_mutex);void *Consumer()(while(1)sem_wait(&full_sem_mutex);sem_wait(&sem_mutex);printf("ncon
14、sume%dn”,bufferout);if(out=(out+1)%BUFF_SIZE)=in)(printf("buffer isemptyn");sem_post(&sem_mutex);sem_post(&empty_sem_mutex);int main()(pthread_t ptid,ctid;sem_init(&sem_mutex,0,1);/unlocksem_mutex=1;sem_init(&empty_sem_mutex,0,10);/unlockempty_sem_mutex=10;sem_init(&ful
15、l_sem_mutex,0,0);/lockprintf("nmutex initedsuccess!");if(pthread_create(&ptid,NULL,Producer,NULL)(printf("n Error creatingthread1”);exit(1);elseprintf("ncreate threadlsuccess!");)if(pthread_create(&ctid,NULL,Consumer,NULL)(printf("n Error creatingthread2”);exit(
16、1);)else(printf("ncreate thread2success!”);)if(pthread_join(ptid,NULL)(printf("n Error joining threadproducer");exit(1);)if(pthread_join(ctid,NULL)(printf("n Error joining threadconsumer");exit(1);)sem_destroy(&empty_sem_mutex);sem_destroy(&full_sem_mutex);sem_destroy(&sem_mutex);/exit the main threadpthread_exit(NULL);return
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电力行业助理的工作职责简述
- 高校人才培养方案的更新
- 2025年全球及中国石油和天然气行业用有机缓蚀剂行业头部企业市场占有率及排名调研报告
- 2025-2030全球桶形立铣刀行业调研及趋势分析报告
- 2025年全球及中国医疗推车液晶显示器行业头部企业市场占有率及排名调研报告
- 2025-2030全球轮胎式破碎机行业调研及趋势分析报告
- 2025年全球及中国剧场动作自动化设备行业头部企业市场占有率及排名调研报告
- 2025年全球及中国单线金刚石线切割机行业头部企业市场占有率及排名调研报告
- 2025-2030全球履带调节器行业调研及趋势分析报告
- 2025-2030全球防水低光双筒望远镜行业调研及趋势分析报告
- 安全生产网格员培训
- 小学数学分数四则混合运算300题带答案
- 林下野鸡养殖建设项目可行性研究报告
- 心肺复苏术课件2024新版
- 2024年内蒙古呼和浩特市中考文科综合试题卷(含答案)
- 大型商场招商招租方案(2篇)
- 会阴擦洗课件
- 2024年交管12123学法减分考试题库和答案
- 临床下肢深静脉血栓的预防和护理新进展
- 2024年山东泰安市泰山财金投资集团有限公司招聘笔试参考题库含答案解析
- 内镜下粘膜剥离术(ESD)护理要点及健康教育
评论
0/150
提交评论