操作系统原理实验报告

2018-12-04 16:29

[键入文字]

操作系统原理

实验报告

学 院: 专 业: 班 级: 学 号: 姓 名:

2011-2012学年 第2学期

目录

实验1 进程管理 ......................................... 2 实验2 进程通信 ......................................... 9 实验3 存储管理 ........................................ 15 实验4 文件系统 ........................................ 24

1

实验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. 记录并分析程序运行结果。

2

四、程序说明和程序流程图

实验1管道通信——所涉及的流程图:

实验2软中断信号——所涉及的流程图:

3

五、程序代码

/*expe1_1.c*/ #include 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, \ printf(\

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

4


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

下一篇:关于新农村政策与税费改革调查报告

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

马上注册会员

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