实验一 进程管理
一、实验目的:
1.加深对进程概念的理解,明确进程和程序的区别;
2.进一步认识并发执行的实质;
3.分析进程争用资源的现象,学习解决进程互斥的方法;
4.了解Linux系统中进程通信的基本原理;
二、实验预备内容:
1.阅读Linux的源码文件,加深对进程管理概念的理解;
2.阅读Linux的fork()源码文件,分析进程的创建过程;
三、实验环境说明:
1.此实验采用的是Win7(32bit)下虚拟机 build-2249910;
2.ubuntu 版本;
3.直接编写c文件在终端用命令行执行;
4.虚拟机分配8G内存中的1024M;
5.虚拟机名称knLinux;
6.ubuntu用户名kn;
四、实验内容:
1.进程的创建:
a)题目要求:
编写一段程序,使用系统调用fork() 创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符:父进程显示字符“a”,子进程分别显示字符“b”和“c”。试观察记录屏幕上的显示结果,并分析原因。
b)程序设计说明:
一个父进程,两个子进程,分别输出显示a,b,c。
c)源代码:
d)运行结果:
createprocessae)分析:
由输出结果可知,运行结果不唯一,可以是abc,acb,bca等多种情况。因为在程序中,并没有三个进程之间的同步措施,所以父进程和子进程的输出顺序是随机的。在试验次数足够大的情况下,6中顺序都有可能出现:abc, acb, bac, bca, cab, cba。
2.进程的控制:
a)修改已经编写的程序,将每个进程输出一个字符改为每个进程输出一句话,再观察程序执行时屏幕上出现的现象,并分析原因。
i.程序设计说明:
将第一个程序中输出字符的语句改为输出parent process和child process1&2的语句。
ii.源代码:
iii.运行结果:
iv.分析:
发现在结果中,运行结果同第一个程序,但是在一个进程输出语句的中途不会被打断,语句都是完整的。但是三条语句的先后顺序随机,不能够确定。
b)如果在程序中使用系统调用lockf () 来给每一个进程加锁,可以实现进程之间的互斥,观察并分析出现的现象。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论