华南理工大学 “计算机操作系统”课程设计大作业 一、实验题目: 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 四 、实验要求 : 每人 完 成 一份 大作业实验报 告 。报 告 分 设计思 想 、数据定 义 、处 理流 程、源程序 、运 行 结果 截 图 、设计体 会等 部 分 。 1) 给 出 数据定 义 和详 细 说 明 ; 2) 给 出 实现思 想 和设计流 程; 3) 调 试 完 成 源程序 ; 4) 屏幕观 察 运 行 结果 ; 5) 总 结自 己 的设计体 会; 编程语 言 及 操作系统平 台 不限 。 五 、提 交 内容 本大作业每个人 必 须 单 独 完 成 。最 后 需 提 交 的内容包 括 :源程序 (关 键 代码 需 要注 释 说 明 )、可运 行 程序 、算法思 路 及 流 程图 、心 得 体 会。大作业必 须 以WORD 附 件的形 式提 交 。 大作业严禁抄袭。发现抄袭一律以不及格论。大作业内...