《操作系统》课程实验报告--线程与进程同步与互斥.docx
《《操作系统》课程实验报告--线程与进程同步与互斥.docx》由会员分享,可在线阅读,更多相关《《操作系统》课程实验报告--线程与进程同步与互斥.docx(11页珍藏版)》请在第一文库网上搜索。
1、操作系统课程实验报告实验题目:线程与进程同步与互斥实验IK述【实验目的及要求】Io生产者消费者问题(信号量)参考教材中的生产者消费者算法,创建5个进程,其中两个进程为生产者进程,3个进程为消费者进程。一个生产者进程试图不断地在一个缓冲中写入大写字母,另一个生产者进程试图不断地在缓冲中写入小写字母。3个消费者不断地从缓冲中读取一个字符并输出。为了使得程序的输出易于看到结果,仿照的实例程序,分别在生产者和消费者进程的合适的位置加入一些随机睡眠时间。可选的实验:在上面实验的基础上实现部分消费者有选择地消费某些产品。例如一个消费者只消费小写字符,一个消费者只消费大写字母,而另一个消费者则无选择地消费任
2、何产品。消费者要消费的产品没有时,消费者进程被阻塞。注意缓冲的管理。2。用线程实现睡觉的理发师问题,(同步互斥方式采用信号量或InUteX方式均可)理发师问题的描述:一个理发店接待室有n张椅子,工作室有1张椅子;没有顾客时,理发师睡觉;第一个顾客来到时,必须将理发师唤醒;顾客来时如果还有空座的话,他就坐在一个座位上等待;如果顾客来时没有空座位了,他就离开,不理发了;当理发师处理完所有顾客,而又没有新顾客来时,他又开始睡觉。3o读者写者问题教材中对读者写者问题算法均有描述,但这个算法在不断地有读者流的情况下,写者会被阻塞。编写一个写者优先解决读者写者问题的程序,其中读者和写者均是多个进程,用信号
3、量作为同步互斥机制。【实验环境】操作系统:1inuxmint编译器:gcc实验内容【实验过程】一、实验步骤:1.生产者消费者问题(信号量)1.1实验原理:通过一个有界缓冲区把生产者和消费者联系起来。假定生产者和消费者的优先级是相同的,只要缓冲区未满,生产者就可以生产产品并将产品送入缓冲区。类似地,只要缓冲区未空,消费者就可以从缓冲区中取走产品。应该禁止生产者向满的缓冲区送入产品,同时也应该禁止消费者从空的缓冲区中取出产品,这一机制有生产者线程和消费者进程程之间的互斥关系来实现。与计算打印两进程同步关系相同,生产者和消费者两进程P和C之间应满足下列两个同步条件: 只有在缓冲池中至少有一个缓冲区已
4、存入消息后,消费者才能从中提取信息,否则消费者必须等待。 只有缓冲池中至少有一个缓冲区是空时,生产者才能把消息放入缓冲区,否则生产者必须等待。1.2伪代码:创建信号量并初始化semaphoremutex=1;/对缓存区设置临界区semaphorefu11=0;/缓冲区已经被占据的数目Semaphoreempty=N;缓冲区空巢数目生产者voidproduce()Whi1e(I)P(empty);P(mutex);addToBuf();V(mutex);V(fu11);)消费者voidconsumer()Whi1e(I)P(fu11);P(mutex);moveFromBuf();V(mutex
5、);V(empty);13实验结果与分析Termina1-+huangbinhuangbin-X450VC-/OS1abs/Iab21ab2.$./ProduceeAndConsumer我是生产小写字母的生产者进程,PID=2616我产生字母:g,放在buffer中的第0号位直我是生产大写字母的生产者进程,PID=2620我产生字母:G,放在buffer中的第1号位置我是生产小写字母的生产者进程,PID=2616我产生字母:m,放在buffer中的第2号位置我是第0个消费者子进程,PID=2617我消费放在buffer中的第2号位置的字母:m我是生产大写字母的生产者进程,PID=2620我产生
6、字母:M,放在buffer中的第2号位置我是第1个消费者子进程,PID=2618我消费放在buffer中的第2号位置的字母:M我是第2个消费者子进程,PID=2619我消费放在buffer中的第1号位置的字母:G我是生产小写字母的生产者进程,PID=2616我产生字母:j,放在buffer中的第1号位置分析:创建5个进程,其中两个进程为生产者进程,3个进程为消费者进程。一个生产者进程试图不断地在一个缓冲中写入大写字母,另一个生产者进程试图不断地在缓冲中写入小写字母。3个消费者不断地从缓冲中读取一个字符并输出。生产者和消费者两进程P和C之间应满足下列两个同步条件: 只有在缓冲池中至少有一个缓冲区
7、已存入消息后,消费者才能从中提取信息,否则消费者必须等待。 只有缓冲池中至少有一个缓冲区是空时,生产者才能把消息放入缓冲区,否则生产者必须等待。2、用线程实现睡觉的理发师问题2. 1设计原理利用三个信号量和一个控制变量来协调理发师、理发椅和顾客之间的活动。1信号量CUStOmerS用来记录等候理发的顾客数,并用于阻塞理发师进程,初值为02 .信号量barbers记录正在等候顾客的理发师数,初值为13 .信号量Waiting用来记录等候理发的顾客数,初值为04 .信号量mutex为Waiting变量设置临界区,初值为12. 2伪代码SemaphoreCustomers=O;Semaphoreba
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 课程 实验 报告 线程 进程 同步