好文档 - 专业文书写作范文服务资料分享网站

操作系统预习报告1 

天下 分享 时间: 加入收藏 我要投稿 点赞

内蒙古工业大学数据科学与应用学院

实 验 报 告

课程名称: 操作系统 实验名称: 进程通信 实验类型: 验证性□ 综合性□设计性?

实验室名称: 虚拟基础实验室 班级: 学号:

姓名: 组别: 同组人: 成绩:

实验日期: 2019.11.24

实验报告撰写要求

一、 实验前用预习报告纸撰写预习报告,预习报告包括以下内容

1. 实验目的

2. 实验用仪器设备、器材或软件环境

3. 实验原理、方案设计、程序框图、预编程序等 4. 实验过程中需要记录的实验数据表格 二、 实验过程中,要认真观察,仔细记录

三、 完成实验后用实验报告纸撰写实验报告,包括以下内容

1. 仪器设备型号及编号 2. 实验器材或软件环境 3. 实验步骤、程序调试方法 4. 实验数据处理及结果分析 5. 实验中存在的问题 6. 体会及思考题

四、 报告撰写时,要求格式规范、书写整齐

内蒙古工业大学数据科学与应用学院

预习报告成绩: 指导教师审核(签名): 年 月 日 预习报告

一、实验目的

1.加深对各种进程通信基本工作原理的理解。 2.理解和掌握Linux系统中进程通信API的应用方法。

3.进一步认识进程软中断通信、管道通信和消息队列通信的实质。 4.分析、设计进程软中断通信的实现方法。

5.分析、设计进程的管道通信,实现父子进程的单机通信机制。 6.分析、设计进程的消息队列通信,实现客户机/服务器通信机制。

二、实验环境

1.笔记本电脑Linux系统

三、实验预备知识

1.阅读Linux进程通信技术(软中断、管道和消息队列)的使用方法。

2.阅读Linux系统中单机和多机通信技术,掌握各种通信技术API的基本应用方法。

四、实验内容

1.进程的软中断通信 【举例1】

编制一段程序,使用系统调用fork()创建两个子进程,再用系统调用signal()让父进程捕捉键盘上来的中断信号(即按任意字母键和Enter键),当捕捉到中断信号后,父进程用系统调用kill()向两个子进程发出信号,子进程捕捉到信号后,分别输出下列信息后终止: child process 1 is killed by parent! child process 2 is killed by parent!

父进程等待两个子进程终止后,输出以下信息后终止: parent process is killed! 【程序】

#include #include #include

第 页

内蒙古工业大学数据科学与应用学院

#include

void waiting(),stop(); int wait_mark; main() {

int p1,p2;

while((p1=fork())= =-1); /*创建进程p1*/ if(p1>0) {

while((p2=fork())= =-1); /*创建进程p2*/ if(p2>0)

{

Printf(“parent run!\\n”); Printf(“p1=%d\\n”,p1); Printf(“p2=%d\\n”,p2); wait_mark=1; getchar();

kill(p1,16); /*向p1发软中断信号16*/ kill(p2,17); /*向p2发软中断信号17*/ sleep(5); /*父进程睡眠5秒*/ wait(0); /*等待子进程结束,同步*/ wait(0); /*等待另一子进程结束,同步*/ lockf(stdout,1,0); /*标准输出加锁*/ printf(“parent process is killed!\\n”);

lockf(stdout,0,0); /*标准输出解锁*/ exit(0); /*父进程终止*/ }

else {

printf(“p2 run!\\n”);

第 页

内蒙古工业大学数据科学与应用学院

wait_mark=1;

signal(17,stop); /*接收父进程发来的软中断信号17,并转stop*/ waiting();

lockf(stdout,1,0); /*标准输出加锁*/ printf(“child process 2 is killed by parent!\\n”); lockf(stdout,0,0); /*标准输出解锁*/ exit(0); /*子进程p2终止*/

} } else {

printf(“p1 run!\\n”);

wait_mark=1;

signal(16,stop); /*接收父进程发来的软中断信号16,并转stop*/ waiting();

lockf(stdout,1,0); /*标准输出加锁*/ printf(“child process 1 is killed by parent!\\n”); lockf(stdout,0,0); /*标准输出解锁*/ exit(0); /*子进程p1终止*/

} }

void waiting() {

printf(“waiting begin!\\n”); while(wait_mark!=0); printf(“waiting end!\\n”); } void stop() {

wait_mark=0; printf(“signal stop!”); }

第 页

操作系统预习报告1 

内蒙古工业大学数据科学与应用学院实验报告课程名称:操作系统实验名称:进程通信实验类型:验证性□综合性□设计性?
推荐度:
点击下载文档文档为doc格式
6y98a6hush6u75f0b3w102ra61x6wi01dgt
领取福利

微信扫码领取福利

微信扫码分享