操作系统——实验二

1、打开一个vi进程。通过ps命令以及选择合适的参数,只显示名字为vi的进程。寻找vi进程的父进程,直到init进程为止。记录过程中所有进程的ID和父进程ID。将得到的进程树和由pstree命令的得到的进程树进行比较。

答:

(1)打开一个终端,执行vi。

(2)打开另一个终端,执行ps -a,可以看到PID为6331的进程为vi。

(3)执行ps -lax,寻找PID为6331的一行,PPID为6320,即父进程的PID。

(4)输入ps -ef|grep 6320,追踪进程,6331-6320-6306-3232-1968-1507-1。

(5)输入pstree -p,查看进程树。我们可以发现经过比较,两者相同。


2、编写程序,首先使用fork系统调用,创建子进程。在父进程中继续执行空循环操作;在子进程中调用exec打开vi编辑器。然后在另外一个终端中,通过ps –Al命令、ps aux或者top等命令,查看vi进程及其父进程的运行状态,理解每个参数所表达的意义。选择合适的命令参数,对所有进程按照cpu占用率排序。

答:

(1)编写1.c。编译执行。

(2)创建另一个终端,输入ps aux查看。USER指用户名,PID是进程号,%CPU是进程CPU使用率,%MEM是进程内存使用率,VSZ是总虚拟内存大小,RSS是进程使用总物理内存大小,TTY是终端的次要装置号码,STAT是进程的状态,START是进程开始时间,COMMAND是此进程的命令。输入ps -aux|sort -k3,3nr 对所有进程按照cpu占用率排序。

3、使用fork系统调用,创建如下进程树,并使每个进程输出自己的ID和父进程的ID。观察进程的执行顺序和运行状态的变化。

答:

(1)编写2.c,编译执行。可以看到p1进程的ID号为15627;P2进程的ID号为15628,其父进程为15627,即p1;P3进程的ID号为15629,其父进程为15627,即p1;P4进程的ID号为15630,其父进程为15628,即p2;P5进程的ID号为15631,其父进程为15628,即p2;

4、修改上述进程树中的进程,使得所有进程都循环输出自己的ID和父进程的ID。然后终止p2进程(分别采用kill -9 、自己正常退出exit()、段错误退出),观察p1、p3、p4、p5进程的运行状态和其他相关参数有何改变。

(1)编写循环并用kill -9结束p2进程。可以看到p2

代码连接:BJTU_operating-system-lesson/Lab2 at master · Jerlllly/BJTU_operating-system-lesson · GitHub

你可能感兴趣的:(操作系统——实验二)