没有合适的资源?快使用搜索试试~ 我知道了~
操作系统实验报告-(7).doc
资源推荐
资源详情
资源评论
怀化学院 数学系信息与计算科学专业 《操作系统》 实验报告
实验名称:进程管理
学号 班级 姓名
1 实验目的:
(1)加深对进程概念的理解,明确进程和程序的区别。
(2)进一步认识并发执行的实质。
(3)分析进程竞争资源现象,学习解决进程互斥的方法。
(4)了解Linux系统中进程通信的基本原理。
2 实验预备内容:
(1)阅读Linux的sched.h源文件,加深对进程管理概念的理解。
(2)阅读Linux的fork.c源文件,分析进程的创建过程。
3 实验内容:
(1)进程的创建
编写一段源程序,使系统调用fork()创建两个子进程,当此程序运行时,在系统中有一
个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”;
子进程分别显示字符“b”和字符“c”。试观察纪录屏幕上的显示结果,并分析原因。
(2)进程的控制
修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,在观察程序执
行时屏幕出现的现象,并分析原因。
如果在程序中使用调用lockf()来给每一个子进程加锁,可以实现进程之间的互斥,观察
并分析出现的现象。
(3)①编写一段程序,使其现实进程的软中断通信。
要求:使用系统调用fork()创建两个子进程,再用系统调用signal()让父进程捕捉键盘
上来的中断信号(即按DEL键);当捕捉到中断信号后,父进程用系统调用Kill()向两个子
进程发出信号,子进程捕捉到信号后分别输出下列信息后终止:
Child Processll is Killed by Parent!
Child Processl2 is Killed by Parent!
父进程等待两个子进程终止后,输出如下的信息后终止
Parent Process is Killed!
②在上面的程序中增加语句signal (SIGNAL, SIG-IGN) 和signal (SIGQUIT, SIG-IGN),
观察执行结果,并分析原因。
(4)进程的管道通信
编制一段程序,实现进程的管理通信。
使用系统调用pipe()建立一条管道线;两个子进程P1 和P2 分别向管道中写一句话:
Child 1 is sending a message!
Child 2 is sending a message!
而父进程则从管道中读出来自于两个子进程的信息,显示在屏幕上。
要求父进程先接收子进程P1 发来的消息,然后再接收子进程P2 发来的消息。
怀化学院 数学系信息与计算科学专业 《操作系统》 实验报告
4 实验步骤:
1.进程的创建
〈任务〉
编写一段程序,使用系统调用 fork( )创建两个子进程。当此程序运行时,在系统中有
一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符;父进程显示字符
“a”,子进程分别显示字符“b”和“c”。试观察记录屏幕上的显示结果,并分析原因。
〈程序〉
#include<stdio.h>
main()
{
int p1,p2;
if(p1=fork()) /*子进程创建成功*/
putchar('b');
else
{
if(p2=fork()) /*子进程创建成功*/
putchar('c');
else putchar('a'); /*父进程执行*/
}
}
<运行结果>
bca(有时会出现 abc 的任意的排列)
分析:从进程执行并发来看,输出 abc 的排列都是有可能的。
原因:fork()创建进程所需的时间虽然可能多于输出一个字符的时间,但各个进程的时间片
的获得却不是一定是顺序的,所以输出 abc 的排列都是有可能的。
2.进程的控制
怀化学院 数学系信息与计算科学专业 《操作系统》 实验报告
<任务>
修改已编写好的程序,将每个程序的输出由单个字符改为一句话,再观察程序执行时屏幕
上出现的现象,并分析其原因。如果在程序中使用系统调用 lockf()来给每个程序加锁,可
以实现进程之间的互斥,观察并分析出现的现象。
〈程序 1〉
#include<stdio.h>
main()
{
int p1,p2,i;
if(p1=fork())
{
for(i=0;i<500;i++)
printf("parent%d\n",i);
wait(0); /* 保证在子进程终止前,父进程不会终止*/
exit(0);
}
else
{
if(p2=fork())
{
for(i=0;i<500;i++)
printf("son %d\n",i);
wait(0); /* 保证在子进程终止前,父进程不会终止*/
exit(0); /*向父进程信号 0 且该进程推出*/
}
else
{
for(i=0;i<500;i++)
printf(“grandchild %d\n",i);
exit(0);
}
}
}
〈运行结果〉
剩余12页未读,继续阅读
资源评论
是空空呀
- 粉丝: 181
- 资源: 3万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功