2016秋操作统大作业(进程互斥访问共享资源)(含答案).docVIP

2016秋操作统大作业(进程互斥访问共享资源)(含答案).doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2016秋操作统大作业(进程互斥访问共享资源)(含答案)

华南理工大学 “计算机操作系统”课程设计大作业 一、实验题目: linux下利用互斥实现线程访问共享资源 二、实验目的:掌握线程创建和终止,加深对线程和进程概念的理解,会用同步与互斥方法实现线程之间的通信。 三、实验内容 事先了解操作系统中经典的生产者-消费者问题,安装linux虚拟机(可以用virtualbox或者vmware软件)。在linux下创建三个生产者线程(P1,P2,P3)和一个消费者线程(C1),生产者和消费者线程共享一个长度为2KB的环型公共缓冲区,生产者向缓冲区写入消息,消费者从缓冲区中取走消息显示到屏幕。只要缓冲区未满,生产者可将消息送入缓冲区;只要缓冲区未空,消费者可从缓冲区取走一个消息。 每个消息具下列结构格式: 消息长度(1个字节),消息内容(n个字节)。 每个生产者每隔2秒生产一个消息加入缓冲区,并把消息产生时间和内容记录在一个文本文件中。P1每次生产的数据为26个大写字母, P2每次生产的数据为26个小写字母,P3每次生产的数据为10个阿拉伯数字。 消费者C1每隔3秒读取缓冲区中的一个消息并将消息内容显示到屏幕上。 用两种方法(不采线程用互斥和采用线程互斥技术)编写上述功能的程序,对比两种程序运行结果有何区别?不采线程用互斥时存在什么问题? 备注:编程中用到的函数 创建线程函数:pthread_create 互斥锁初始化:pthread_mutex_init 互斥锁加锁:pthread_mutex_lock 互斥锁解锁:pthread_mutex_unlock 四、实验要求: 每人完成一份大作业实验报告。报告分设计思想、数据定义、处理流程、源程序、运行结果截图、设计体会等部分。 给出数据定义和详细说明; 给出实现思想和设计流程; 调试完成源程序; 屏幕观察运行结果; 总结自己的设计体会; 编程语言及操作系统平台不限。 五、提交内容 本大作业每个人必须单独完成。最后需提交的内容包括:源程序(关键代码需要注释说明)、可运行程序、算法思路及流程图、心得体会。大作业必须以WORD附件的形式提交。 大作业严禁抄袭。发现抄袭一律以不及格论。大作业内容要完整,一定要有算法思路、流程图、心得体会、运行输出信息截屏等内容,如果只提交源代码则大作业成绩记为不合格。 2016-10-20 设计报告 线程的同步和互斥 在操作系统中引入线程以及线程并发性的概念后,增加了系统的效率,同时,由于资源有限导致线程之间的资源竞争和共享,因此产生一个问题,例如,当多个线程同时申请一台打印机的时候,如果不加限制,很可能使多个线程的输出结果交织在一起,产生错误的打印。下面我来为大家主要介绍并发执行的线程使用临界资源时,同步与互斥的以及控制方法。 1.临界资源的概念:多个线程不能同时使用的资源称为临界资源CR(Critical ?? Resource)。临界资源可以是一些独占设备,比如打印机等,也可以是一些共享变量,表格,链表等。 2.临界区:不论硬件临界资源还是软件临界资源,多个线程必须互斥的对其进行访问。每个线程中访问临界资源的那段代码称为临界区CS(Critical Section)。每个线程在进入临界区以前,应该对欲访问的临界资源进行检查,看他是否正在被访问。若是,则该线程不能进入临界区,若否,则该线程可以进入临界区对该资源进行访问,并设置只在被访问的标志。 3.线程互斥的概念:线程互斥是指多个线程不能同时使用同一个临界资源,即两个或两个以上线程必须互斥的使用临界资源,当然不能同时进入临界区。如:现在系统中有一台打印机,两个线程都要使用,为了保证打印结果正确,只能一个线程用完后另一个再用。在一个线程使用时必须做上占用标记,用完以后必须清楚标记。这样,另一个线程才会知道打印机空闲,然后开始使用。这两个逻辑上完全独立,毫无关系的线程,由于竞争同一个资源而相互制约,这就称为线程的互斥。 4.线程同步的概念:线程同步是指有协作关系的线程之间不断地调整他们之间的相对速度或者执行过程,以保证临界资源的合理利用和线程的顺利执行。实现线程同步的机制称为线程同步机制。不同的同步机制实现同步的方法可能不同,但一般都借助一个中间媒介来实现,如信号量,锁等。在现实中存在线程同步关系的线程很多,如:两个线程合作使用同一缓冲区,设线程A负责向缓冲区中输入数据,线程B负责缓冲区中输出数据。当线程A将数据缓冲区输满时,则只有当线程B将该数据输出后,线程???? A才可以继续使用该缓冲区,否则将造成数据丢失。此时,线程A,B之间就形成了同步关系。 ?? 同步机制遵循的规则: (1)空闲让进:并发线程中某个线程不再临界区时,不阻止其它线程进入临界区。 (2)忙则等待:

文档评论(0)

quechui388620 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档