操作系统原理与Linux系统结课实验报告
更新时间:2023-08-30 08:49:01 阅读量: 教育文库 文档下载
(实验六 进程间通信)
操作系统原理与Linux系统结课实验报告
学 院:信息科学与工程学院
班 级:网络11-1班
姓 名:* * *
学 号:****
2014年5月20号
实验题目: 进程间通信
学号: ******** 姓名: ***
main() { int i,j; signal (17,func); if (i=fork() ) { printf("Parent: Signal 17 will be send to Child!! \n"); kill (i,17); wait(0); printf("Parent: finished!! \n"); } else { sleep(10); printf("Child:A signal from my parent is received!! \n"); exit(0); }
} func() { printf(It is signal 17 processing function!! \n); }
程序二:
//进程管道通信 #include <stdio.h> #include <signal.h> #include <unistd.h>
main() {
int x,fd[2]; char s[30]; pipe(fd); for(;;){ x=fork(); if (x==0) { sprintf(s,"Hello-world!!!\n"); write(fd[1],s,20); sleep(3); exit(0); } else { wait(0); read(fd[0],s,20); printf("&&***********&&\n"); } }
}
程序三:
//消息队列通信 #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <unistd.h>
#include <errno.h> #include <stropts.h> #include <time.h> #include <strings.h> #include <string.h> #include <stdio.h> #include <sys/ipc.h> #include <sys/msg.h>
struct msg { long msg_types; char msg_buf[511]; }; int main(void){ int qid; int pid; int len; struct msg pmsg; pmsg.msg_types = getpid(); sprintf (pmsg.msg_buf,"hello!this is :%d\n\0", getpid() ); len = strlen (pmsg.msg_buf); if ( (qid= msgget (IPC_PRIVATE, IPC_CREAT | 0666)) < 0 ){ perror( "msgget" ); exit(1); } if ( (msgsnd(qid, &pmsg, len, 0)) <0){ perror( "msgsn" ); exit(1); }
printf ("Successfully send a message to the queue: %d \n",qid); exit(0); }
四、运行结果
下图为实验桌面,gcc 编译过程中生成的文件。Gcc 编译过程(命令步骤) : 1) 、ls 2) 、cd 桌面 3) 、gcc -c test.c 4) 、gcc -c test.c -o mytest.o 5) 、./mytest.o 第 3 步为只编译.c 文
件,第 4 步对程序进行连接生成可执行的.o 文件并为 之改名,第 5 步就是执行.o 文件得出结果。
1、进程中断通信 进程软中断通信实验结果显示: 先输出打印 Parent: Signal 17 will be send to Child!! It is signal 17 processing function!! 睡眠 10 秒钟后,再输出打印 Child:A signal from my parent is received!! It is signal 17 processing function!! Parent: finished!!
2、进程管道通信 进程管道通信实验结果显示: 实验结果是每隔 3 秒钟,无限循环的输出打印一次字符串 “&&***********&&” 。
3、消息队列通信 消息队列通信实验结果显示: 第一次执行 mytest2.o 文件得出的实验结果是 Successfully send a message to the queue:0 ; 第二次执行 mytest2.o 文件得出的实验结果是 Successfully send a message to the queue:32769 ; 以后每次执行 mytest2.o 文件得出数值都是在上一次的的基础上+32769, 如: 第三次执行 mytest2.o 文件得出的实验结果是 Successfully send a message to the queue:65538 。
五、结论 1、软中断通信提供了一个简单的处理异步事件的方法,用户进程可以向自 己发送信号以中断程序的执行, 并自动转入指定的软中断处理函数中去执行用户 自行安排的处理内容,处理完毕后再返回用户进程继续执行; 实验中,指定的型号类型为 17 号即为用户自定义信号 2 类型,用 fork() 创建子进程,再用系统调用 signal()让父进程捕捉键盘的中断信号,之后, 父进程用系统调用 kill () 向子进程发出信号, 子进程捕捉到信号后输出 A signal from my parent is received! 2、管道是一种遵循先进先出原则的数据结构,也就是说,先进入管道的数 据,也能先从管道中读出,数据一旦读取后,就会自动删除。管道通信,以管道 数据结构作为内部数据存储方式,以文件系统作为数据存储媒体,将一个写进程 与一个读进程连接在一起,实现两个进程间的通信;
实验中,用 pipe(fd)来创建管道,用 x=fork()来创建子进程,然后将字符 串 写 到 子 进 程 中 write(fd[1],s,20) , 而 父 进 程 中 则 是 在 管 道 中 读 取 信 息 read(fd[0],s,20),打印输出“&&***********&&”。 3、消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法, 每个数据块都被认为含有一个类型, 接收进程可以独立地接收含有不同类型的数 据结构。 我们可以通过发送消息来避免命名管道的同步和阻塞问题。但是消息队 列与命名管道一样,每个数据块都有一个最大长度的限制; 实验中创建了一个消息结构体 struct msg{},这消息结构体的消息类型为 当前进程的 ID,然后,创建一个消息队列 if ( (qid= msgget (IPC_PRIVATE, IPC_CREAT | 0666)) < 0 ){ perror( "msgget" ); exit(1); } 接着,往消息
队列中发送消息 if ( (msgsnd(qid, &pmsg, len, 0)) <0){ perror( "msgsn" ); exit(1); } 最后,打印输出!
正在阅读:
操作系统原理与Linux系统结课实验报告08-30
《做情绪的主人》教案08-25
口语准备 - 图文04-23
机械设计基础习题集10-23
GCP检查现场考核问答重点01-23
小学省级文明单位申报材料03-08
怎样交好人际关系02-18
建筑结构复习资料11-15
《冲出亚马逊》观后感2000字(二)04-02
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 原理
- 操作系统
- 实验
- 报告
- 系统
- Linux
- 2018-2024年中国稀土顺丁橡胶行业全景调研及投资可行性报告(目录)
- 中国工商业用燃气表市场发展现状及未来五年运行态势预测报告
- 非谓语动词在语法填空的运用公开课教案
- 中国共产党党史知识竞赛试题
- 2014·高三总复习数学(理)2第10章 第2讲 排列与组合
- 心语雅园整合推广策划方案-房地产策划文案
- 企业文化体系框架-价值观篇
- 化妆品B2C电子商务运营计划书
- 【三维设计】2016届高三物理一轮复习(word版):第八章++磁场
- 离散数学第01讲
- 人教版六年级上册课内阅读专题训练题及答案
- “十三五”规划重点-村用风油互补发电系统项目建议书(立项报告)
- 基于RFC2544测试的网络测试仪的设计与实现
- 日语教育机构接收就学生,留学生指导方针【日本语】
- 《乡土中国》1-14章概括
- 第一章 电影的历史轨迹
- 2014年五年级英语5A第七单元测试题(译林牛津版)
- 2012届高三历史必修Ⅰ、Ⅱ、Ⅲ复习提纲
- 高职院校与企业共同培养高技能人才优势研究
- 链路及空间无线传播损耗计算