1 / 5
文档名称:

操作系统实验二实验报告.doc

格式:doc   大小:89KB   页数:5页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

操作系统实验二实验报告.doc

上传人:miaoshen1985 2021/12/3 文件大小:89 KB

下载得到文件列表

操作系统实验二实验报告.doc

文档介绍

文档介绍:操作系统实验二实验报告
基本信息
实验题目
线程和进/线程管道通信实验

王召德

2015-4-9
实验内容简要描述

l通过 Linux 系统中线程和管道通信机制的实验,加深对于线程控制和管道通信概念的理解,观察和体验并发进/线程间的通信和协作的效果 ,练习利用无名管道进行进/线程间通信的编程和调试技术。

设有二元函数 f(x,y) = f(x) + f(y)
其中:
f(x) = f(x-1) * x (x >1)
f(x)=1 (x=1)
f(y) = f(y-1) + f(y-2) (y> 2)
f(y)=1 (y=1,2)
请编程建立 3 个并发协作进程,它们分别完成 f(x,y)、f(x)、f(y)

intelPC
报告的主要内容l

根据上面例子提示,建立一个进程并生成两个子进程,分别把x,y通过管道通信传递给子进程1和子进程2l,子进程1计算出f(x)回传给父进程,子进程2计算出f(y)回传给父进程,父进程对f(x),f(y)求和得到f(x,y)

无l



无l


实验过程和结果l

1学时l

在调试过程中,两个子进程id搞错导致发送数据错误l



实验的总结
根据实验可以发现进程间可以通过通信协作完成任务;进程协作可以通过共享内存和消息传递的方式通信,此实验通过消息传递的方式进行通信,其特征是通信过程是同步的。进程通信是通过管道进行通信,管道是采用阻塞机制,一方发送未被读取便产生阻塞,一方接受时管道没有信息则产生阻塞,从而达到同步。
附录
程序源代码
#include <>
#include <>
#include <>
int f(int a);
int g(int b);
int main(int argc, char *argv[])
{
int x,y;
printf("请输入x,y的值:\n");
scanf("%d,%d",&x,&y);
int pid1,pid2;
int pipe1[2]; //存放第一个无名管道标号
int pipe2[2]; //存放第二个无名管道标号
int pipe3[2]; //存放第三个无名管道标号
int pipe4[2]; //存放第四个无名管道标号
// 存放要传递的整数
//使用 pipe()系统调用建立两个无名管道。建立不成功程序退出,执行终止
if(pipe(pipe1) < 0){
perror("pipe not create");
exit(EXIT_FAILURE);
}
if(pipe(pipe2) < 0){
perror("pi