最新Linux多进程并发执行实验

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、实验目的

1

2

1、对理论课中学习的进程、程序等的概念作进一步的理解,明确进程和程序3

的区别;

2、加深理解进程并发执行的概念,认识多进程并发执行的实质;

4

5

3、观察进程争夺资源的现象,分析其过程和原因,学习解决进程互斥的方法;6

4、对经典的多用户、多任务的优先级轮转调度系统Linux有一定的了解;

7

5、了解Linux系统中多进程之间通过管道通信的基本原理和应用方法。

8

9

二、实验内容

10

1、用virtual虚拟机运行linux虚拟系统;

11

2、分析并理解源程序;

12

3、在linux中输入相应程序并观察运行结果。

13

14

三、实验原理

15

(一)多进程并发执行是使用后台任务来实现任务的“多进程化”。在不加控16

制的模式下,不管有多少任务,全部都后台执行。也就是说,在这种情况下,有17

多少任务就有多少“进程”在同时执行。

18

(二)实验中要用到的函数

19

1、fork()函数——进程创建函数。

2、getpid()函数——取得目前进程的进程标识码。

20

21

3、exit()函数——用来正常终结目前进程的执行。

22

4、sleep()函数——用来延时,它会被挂起,把处理器让给其他的进程。

23

5、printf()函数——是格式化输出函数, 一般用于向标准输出设备按规24

定格式输出信息。

25

(三)实验中要用的命令

1、cd 命令:

26

27

功能:改变工作目录。

28

语法:cd [directory]

说明:该命令将当前目录改变至directory所指定的目录。若没有指定

29

30

directory,则回到用户的主目录。为了改变到指定目录,用户必须拥有对指定31

目录的执行和读权限。该命令可以使用通配符。

32

2、mkdir命令:

33

功能:创建一个目录(类似MSDOS下的md命令)。

34

语法:mkdir [选项] dir-name

35

说明:该命令创建由dir-name命名的目录。要求创建目录的用户在当前目录36

中(dir-name的父目录中)具有写权限,并且dirname不能是当前目录中已有37

的目录或文件名称。

38

3、ls 命令:

功能:ls是英文单词list的简写,其功能为列出目录的内容。这是用户最常

39

40

用的一个命令之一,因为用户需要不时地查看某个目录的内容。该命令类似于

41

DOS下的dir命令。

42

语法:ls [选项] [目录或是文件]

43

说明:对于每个目录,该命令将列出其中的所有子目录与文件。对于每个文44

件,ls将输出其文件名以及所要求的其他信息。默认情况下,输出条目按字母45

顺序排序。当未给出目录名或是文件名时,就显示当前目录的信息。

46

4、vim、clear命令在这里就不做介绍了。

47

(四)实验源程序如下:

48

#include

49

#include

50

#include

#include

51

52

#include

53

main(){

int pid1,pid2,i=1;

54

55

while((pid1=fork())==-1);

56

if(pid1==0){

57

printf("This is child process 1,pid=%d\n",getpid());

58

sleep(1);

59

for(i='A';i<='Z';i++){

printf("Child process1 print:%c\n",i);

60

61

sleep(1);

62

}

63

exit(0);

64

} else{

65

while((pid2=fork())==-1);

66

if(pid2==0){

67

printf("This is child process 2,pid=%d\n",getpid());

68

sleep(1);

69

for(i='a';i<='z';i++){

70

printf("Child process1 print:%c\n",i);

71

sleep(1);

72

} exit(0);

73

} else{printf("This is a parent process,pid=%d\n",getpid());

74

sleep(1);

75

for(i=1;i<=26;i++){

76

printf("Parent process print:%d\n",i);

77

sleep(1);

相关文档
最新文档