华南理工大学 “计算机操作系统”课程设计大作业 一、实验题目: 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 四 、实验要求 : 每人 完 成 一份 大作业实验报 告
报 告 分 设计思 想 、数据定 义 、处 理流 程、源程序 、运 行 结果 截 图 、设计体 会等 部 分