1 / 5
文档名称:

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

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

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

分享

预览

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

上传人:012luyin 2016/7/10 文件大小:0 KB

下载得到文件列表

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

文档介绍

文档介绍:操作系统实验二实验报告基本信息 实验题目线程和进/ 线程管道通信实验 完***王召德 报告日期 2015- 4-9 实验内容简要描述 实验目标通过 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 报告的主要内容 实验的思路根据上面例子提示, 建立一个进程并生成两个子进程, 分别把 x,y 通过管道通信传递给子进程 1 和子进程 2, 子进程 1 计算出 f(x) 回传给父进程, 子进程 2 计算出 f (y) 回传给父进程, 父进程对 f(x),f(y) 求和得到 f (x,y) 实验模型的描述无 主要数据结构的分析说明无 主要算法代码的分析说明无 项目管理文件的说明无实验过程和结果 实验投入的实际学时数 1 学时 调试排错过程的记录在调试过程中, 两个子进程 id 搞错导致发送数据错误 多种方式测试结果的记录 实验结果的分析综合无实验的总结根据实验可以发现进程间可以通过通信协作完成任务;进程协作可以通过共享内存和消息传递的方式通信,此实验通过消息传递的方式进行通信,其特征是通信过程是同步的。进程通信是通过管道进行通信, 管道是采用阻塞机制, 一方发送未被读取便产生阻塞, 一方接受时管道没有信息则产生阻塞,从而达到同步。附录程序源代码#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("pipe not create"); exit(EXIT_FAILURE); } if(pipe(pipe3) < 0){ perror("pipe not create"); exi