计算机与信息工程学院实验报告 姓名 学号 专业 软件工程 年级 217 级 课程 操作系统 主讲老师 党兰学 实验时间(年月日时) 219 年 1 月 23 日 实验地点 计算机学院 21 机房 辅导老师 党兰学 实验题目 进程管理 实验目的 加深对进程概念的理解,明确进程和程序的区别; 进一步认识并发执行的实质; 了解父进程和子进程之间的关系; 查看进程管理命令。 实验环境(硬件和软件) 硬件 PC 机 软件 Oracle VM Virtualbox Linux 一、实验内容 练习在 shell 环境下编译执行程序 (注意 ①在 vi 编辑器中编写名为 sample.c 的 c 语言源程序 ②用 linux 自带的编译器 gcc 编译程序,例如 gcc –o test sample.c ③编译后生成名为 test.out 的可执行文件; ④最后执行分析结果;命令为 注意 linux 自带的编译程序 gcc 的语法是 gcc –o 目标程序名 源程序名,例如 gcc –o sample1 samplec,然后利用命令 来执行。假如仅用“gcc 源程序名”,将会把任何名字的源程序都编译成名为 a.out 的目标程序,这样新编译的程序会覆盖原来的程序,所以最好给每个源程序都起个新目标程序名。 进程的创建 仿照例子自己编写一段程序,使用系统调用 fork()创建两个子进程。当此程序运行时,在系统中有一个父进程和两个子进程活动。让每一个进程在屏幕上显示一个字符父进程显示“a”,子进程分别显示字符“b”和“c”。观察记录屏幕上的显示结果,并分析原因。 分析程序 实验内容要在给出的例子程序基础上,根据要求进行修改,对执行结果进行分析。二、实验步骤 利用 fork()创建一个小程序 编写程序 #include main () { int i=5; pid_t pid; pid=fork(); for(;i>;i--) { if (pid < ) printf("error in fork!"); else if (pid==) printf("i am the child process, my process id is %d and i=%d\n",getpid(),i); else printf("i am the parent process, my process id is %d and i=%d\n",getpid(),i); } for(i=5;i>;i--) { if (pid < ) printf("error in fork!"); else if (pid==) printf("the child process, my process id is %d and i=%d\n",getpid(),i); else printf("the parent process, my process id is %d and i=%d\n",getpid(),i); } } 运行程序 (3)分析程序 ...