- 1、本文档共30页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[键入文字]
操作系统原理
实验报告
学 院:
专 业:
班 级:
学 号:
姓 名:
2011-2012学年 第2学期
PAGE
PAGE 30
目录
TOC 实验1 进程管理 2
实验2 进程通信 9
实验3 存储管理 15
实验4 文件系统 24
实验1 进程管理
一、实验目的
1. 弄清进程和程序的区别,加深对进程概念的理解。
2. 了解并发进程的执行过程,进一步认识并发执行的实质。
3. 掌握解决进程互斥使用资源的方法。
二、实验内容
1. 管道通信
使用系统调用pipe( )建立一个管道,然后使用系统调用fork( )创建2个子进程p1和p2。这2个子进程分别向管道中写入字符串:“Child process p1 is sending message!”和“Child process p2 is sending message!”,而父进程则从管道中读出来自两个子进程的信息,并显示在屏幕上。
2. 软中断通信
使用系统调用fork( )创建2个子进程p1和p2,在父进程中使用系统调用signal( )捕捉来自键盘上的软中断信号SIGINT(即按Ctrl-C),当捕捉到软中断信号SIGINT后,父进程使用系统调用kill( )分别向2个子进程发出软中断信号SIGUSR1和SIGUSR2,子进程捕捉到信号后分别输出信息“Child process p1 is killed by parent!”和“Child process p2 is killed by parent!”后终止。而父进程等待2个子进程终止后,输出信息“Parent process is killed!”后终止。
三、实验要求
1. 根据实验内容编写C程序。
2. 上机调试程序。
3. 记录并分析程序运行结果。
四、程序说明和程序流程图
实验1管道通信——所涉及的流程图:
实验2软中断信号——所涉及的流程图:
五、程序代码
/*expe1_1.c*/
#include stdio.h
void main( )
{
int i, r, p1, p2, fd[2];
char buf[50], s[50];
pipe(fd); /* 父进程建立管道 */
while ((p1=fork())==-1); /* 创建子进程P1,失败时循环 */
if (p1==0) /* 由子进程P1返回,执行子进程P1 */
{
lockf(fd[1], 1, 0); /* 加锁锁定写入端 */
sprintf(buf, Child process P1 is sending messages! \n);
printf(Child process P1! \n);
write(fd[1], buf, 50); /* 把buf中的50个字符写入管道 */
sleep(5); /* 睡眠5秒,让父进程读 */
lockf(fd[1], 0, 0); /* 释放管道写入端 */
exit(0); /* 关闭P1*/
}
else /* 从父进程返回,执行父进程 */
{
while ((p2=fork())==-1); /* 创建子进程P2,失败时循环 */
if (p2==0) /* 从子进程P2返回,执行子进程P2 */
{
lockf(fd[1], 1, 0); /* 锁定写入端 */
sprintf(buf, Child process P2 is sending messages! \n);
printf(Child process P2! \n);
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(cannot read pipe! \n);
else printf(%s, s);
wait(0);
if ((r=read(fd[0], s, 50))== -1)
printf(cannot read pipe! \n);
else printf(%s, s);
exit(0);
}
}
/*exp1-2
您可能关注的文档
- XX网络设计方案.doc
- 软件体系结构实验三.doc
- zara-不仅仅是陈列.doc
- 三坊七巷名人故事.doc
- zhiye司机礼仪培训手册.ppt
- 三角函数复习提纲gai.doc
- 三年级科学下册《蚕的生长变化》PPT.ppt
- 安徽省中考语文模拟试题(含答案).doc
- 三箱传动式旋耕机的设计-淮海工学院-(2).doc
- 安全输血管理.ppt
- 第十一章 电流和电路专题特训二 实物图与电路图的互画 教学设计 2024-2025学年鲁科版物理九年级上册.docx
- 人教版七年级上册信息技术6.3加工音频素材 教学设计.docx
- 5.1自然地理环境的整体性 说课教案 (1).docx
- 4.1 夯实法治基础 教学设计-2023-2024学年统编版九年级道德与法治上册.docx
- 3.1 光的色彩 颜色 电子教案 2023-2024学年苏科版为了八年级上学期.docx
- 小学体育与健康 四年级下册健康教育 教案.docx
- 2024-2025学年初中数学九年级下册北京课改版(2024)教学设计合集.docx
- 2024-2025学年初中科学七年级下册浙教版(2024)教学设计合集.docx
- 2024-2025学年小学信息技术(信息科技)六年级下册浙摄影版(2013)教学设计合集.docx
- 2024-2025学年小学美术二年级下册人美版(常锐伦、欧京海)教学设计合集.docx
文档评论(0)