课程设计报告
2016~2017学年 第一学期
进程的管道通信机制和信号量同步互斥
实 习 类 别课程设计学 生 姓 名专 业软件工程学 号指 导 教 师学 院计算机科学技术二〇一起 止 周18~19周数2实习地点南研1213实验室课程设计目的及任务:
操作系统是计算机专业的核心专业课,“操作系统课程设计”是理解和巩固操作系统基本理论、原理和方法的重要的实践环节。
操作系统课程主要讲述的内容是多道操作系统的原理与技术,与其它计算机原理、编译原理、汇编语言、计算机网络、程序设计等专业课程关系十分密切。本课程设计的目的综合应用学生所学知识,建立系统和完整的计算机系统概念,理解和巩固操作系统基本理论、原理和方法,掌握操作系统基本理论与管理方式。在算法基础上,解决实际的管理功能的问题,提高学生实际应用、编程的能力。
主要任务是实现操作系统和相关系统软件的设计,其中涉及进程创建,同步,进程间的通信,存储管理,文件系统等操作系统概念。课程设计要求:
1、对需要上机完成的题目进行认真分析,列出实验具体步骤,写出符合题目要求的程序清单,准备出调试程序使用的数据。
2、以完整的作业包的形式提交原始代码、设计文档和可运行程序。课程设计报告字数不少于2000字,主要内容有:概述:设计主要完成的任务和解决的主要问题;设计的基本概念和原理;总体设计:实现的方法和主要技术路线;详细设计:使用主要控件、函数;简要的使用说明;总结:特色、经验、教训和感受;
完成课程设计题目二《掌握进程的管道通信机制和信号量同步互斥》进度安排及主要内容:
第一周:总体设计;确定实现方法和主要技术路线
第二周:详细设计及测试;使用具体语言实现算法;调试程序;编写课程设计报告。成绩:指导教师(签字)
年 月 日一 概述
1.1任务
掌握进程的管道通讯机制和信号量同步互斥机制。
1.进程的管道通讯
编制一个程序,程序中创建一个子进程。然后父子进程各自独立运行,父进程不断地在标准输入设备上读入小写字母,写入管道。子进程不断地从管道中读取字符,转换为大写字母后输出到标准输出设备上。当读到x时,结束。
2.信号量实现的同步互斥机制
编制一个程序,程序中创建5个子进程,代表五位哲学家,然后父进程结束。使用信号量机制解决哲学家进餐问题。当哲学家进餐时,屏幕输出:
[进程号] eating!
当哲学家思考时,屏幕输出:
[进程号] thinking!
相关的系统调用和函数:pipe(); write(); read(); semget(); sepop(); semctl();
要求:查找并阅读上述系统调用的相关资料,将上述相关的函数封装为P( )、V( )操作,使用你封装的P( )、V( )操作实现5位哲学家的同步和互斥。
1.2解决的主要问题
1.2.1进程管道通讯中解决的问题
(1)在进程的管道通讯中实现了父子进程各自独立运行
(2)父进程能不断地在标准输入设备上读入小写字母,写入管道
(3)子进程能不断地从管道中读取字符
(4)子进程能将读取的小写字符转换为大写字母后输出到标准设备上
(5)父进程在读到x后,子进程只转换x之前的字母
(6)对读取字符中有非法字符时提示出错信息
1.2.2信号量实现同步互斥中解决的问题
(1)程序中创建了5个子进程,代表五位哲学家,然后父进程结束
(2)将哲学家进餐过程中的相关函数封装为了P( )、V( )操作
(3)封装的P( )、V( )操作实现5位哲学家的同步和互斥。
(4)当哲学家进餐时,屏幕能输出[进程号]eating!
(5)当哲学家思考时时,屏幕能输出[进程号]thinking!
二、设计的基本概念及原理
2.1进程的管道通信
管道(Pipe)实际是用于进程间通信的一段共享内存,创建管道的进程称为管道服务器,连接到一个管道的进程为管道客户机。命名管道(Named Pipes)是在管道服务器和一台或多台管道客户机之间进行单向或双向通信的一种命名的管道。一个命名管道的所有实例共享同一个管道名,但是每一个实例均拥有独立的缓存与句柄,并且为客户——服务通信提供有一个分离的管道。实例的使用保证了多个管道客户能够在同一时间使用同一个命名管道。
PV操作的含义:PV操作由P操作原语和V操作原语组成(原语是不可中断的过程),对信号量进行操作,具体定义如下:
P(S):①将信号量S的值减1,即S=S-1;
②如果S<=0,则该进程继续执行;否则该进程置为等待状态,排入等待队列。
V(S):①将信号量S的值加1,即S=S+1;
②如果S>0,则该进程继续执行;否则释放队列中第一