14-15-2操作系统原理实验报告(计131、132)(新)(2)

2019-03-10 13:59

操作系统原理实验报告 2014-2015学年 第2学期

实验2 线程管理

一、实验目的

1. 弄清线程与进程的区别,加深对线程概念的理解。

2. 了解并发线程的调度和执行过程,进一步理解线程同步机制。 3. 掌握多线程编程的基本方法。

二、实验内容

生产者与消费者问题(Producer-consumer problem),或称有限缓冲区问题(Bounded-buffer problem),是一个多线程/进程同步问题的经典案例。该问题描述了共享固定大小缓冲区的两类线程:即“生产者”线程和“消费者”线程在实际运行时会发生的问题。生产者的主要作用是生成一定量的数据(产品)放入缓冲区中,然后重复此过程。与此同时,消费者从缓冲区中取出数据并消耗。解决该问题的关键是如何保证生产者不会在缓冲区满时放入数据,而消费者也不会在缓冲区中空时消耗数据。使用POSIX thread库函数pthread_create创建若干个(至少2个)生产者线程和1个或若干个消费者线程,利用POSIX线程同步机制互斥锁和条件变量实现生产者线程和消费者线程的同步。

三、实验要求

1. 根据实验内容编写C程序。 2. 上机调试程序。

3. 记录并分析程序运行结果。

第 5 页 共 16 页

操作系统原理实验报告 2014-2015学年 第2学期

四、程序说明和程序流程图

第 6 页 共 16 页

操作系统原理实验报告 2014-2015学年 第2学期

五、程序代码

第 7 页 共 16 页

操作系统原理实验报告 2014-2015学年 第2学期

六、程序运行结果及分析

第 8 页 共 16 页

操作系统原理实验报告 2014-2015学年 第2学期

实验3 进程通信

一、实验目的

1. 了解进程间通信IPC的三种方式:消息队列、共享内存和信号量。 2. 掌握使用消息队列进行进程间通信的有关系统调用和编程方法。 3. 掌握使用共享内存进行进程间通信的有关系统调用和编程方法。

二、实验内容

1. 消息队列

使用系统调用msgget( )、msgsnd( )、msgrcv( )和msgctl( ),用消息队列机制实现客户进程和服务器进程间的通信。客户进程首先建立一个描述符为msgqid的消息队列,接着向服务器进程发送一个消息正文为自己的进程标识pid且类型为1的消息,然后接收来自服务器进程的消息,并在屏幕上显示:“Client receives a message from xxxx!”,其中“xxxx”为服务器进程的进程标识。服务器进程首先捕捉软中断信号(除不能捕捉的SIGKILL),若捕捉到时则调用函数cleanup( )删除消息队列,终止服务器进程。否则重复下列操作:接收所有类型为1的消息,并在屏幕上显示:“Server receives a message from xxxx!”,其中“xxxx”为客户进程的进程标识;然后服务器进程将客户进程的进程标识作为返回消息的类型,而将自己的进程标识作为消息正文发送给客户进程。

2. 共享内存

使用系统调用shmget( )、shmat( )和shmctl( ),用共享内存机制实现进程间的通信。其中一个进程向共享内存中写入数据,另一个进程从共享内存中读出数据并显示在屏幕上。

三、实验要求

1. 根据实验内容编写C程序。 2. 上机调试程序。

3. 记录并分析程序运行结果。

第 9 页 共 16 页


14-15-2操作系统原理实验报告(计131、132)(新)(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:教案29:九九口诀表

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: