操作系统原理实验报告(2)

2019-01-19 12:13

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

sprintf(buf, \ printf(\

write(fd[1], buf, 50); /* 把buf中的字符写入管道 */ sleep(5); /* 睡眠5秒 */

lockf(fd[1], 0, 0); /* 释放管道写入端 */ exit(0); /* 关闭P2*/ } wait(0);

if ((r=read(fd[0], s, 50))== -1) printf(\ else printf(\ wait(0);

if ((r=read(fd[0], s, 50))== -1) printf(\ else printf(\ exit(0); } } 2.

#include #include #include int p1,p2;

第 5 页 共 16 页

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

void main() { void ppdo(); void p1do(); void p2do(); signal(SIGINT,ppdo); p1=fork(); if(p1==0) {

signal(SIGUSR1,p1do); for(;;); } else { p2=fork(); if(p2==0) {

signal(SIGUSR2,p2do); for(;;); } } wait(0); wait(0);

printf(\ exit(0); }

void ppdo() { kill(p1,SIGUSR1); kill(p2,SIGUSR2);

第 6 页 共 16 页

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

}

void p1do()

{ printf(\ exit(0); }

void p2do()

{ printf(\ exit(0);

第 7 页 共 16 页

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

六、程序运行结果及分析

1. 2.

程序相对比较简单,运行的时候基本没有错误。但编写程序是还需小心认真。

第 8 页 共 16 页

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

实验2 进程通信

一、实验目的

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 页


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

下一篇:14电气EDA实验指导书(1)

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

马上注册会员

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