下载此文档

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


文档分类:高等教育 | 页数:约5页 举报非法文档有奖
1/5
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/5 下载此文档
文档列表 文档介绍
操作系统实验二实验报告
基本信息
实验题目
线程和进/线程管道通信实验

王召德

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

操作系统实验二实验报告 来自淘豆网m.daumloan.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数5
  • 收藏数0 收藏
  • 顶次数0
  • 上传人miaoshen1985
  • 文件大小89 KB
  • 时间2021-12-03