操作系统_实验报告2


github库链接https://github.com/jrqricky/Hello-World

一、ps命令

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

使用ps -f命令逐层查找的进程树路径
操作系统_实验报告2
使用pstree命令查找的进程树路径
操作系统_实验报告2

二、fork命令

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

操作系统_实验报告2
使用ps -Al命令查询
操作系统_实验报告2
使用ps aux命令查询
操作系统_实验报告2
使用top命令排序查询
操作系统_实验报告2

三、创建进程树

要求:使用fork系统调用,创建如下进程树,并使每个进程输出自己的ID和父进程的ID。观察进程的执行顺序和运行状态的变化。
操作系统_实验报告2

操作系统_实验报告2
操作系统_实验报告2

四、丢失父进程

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

(1)Kill -9 方法
操作系统_实验报告2
操作系统_实验报告2
操作系统_实验报告2
(2)exit(1) 正常退出方法
操作系统_实验报告2
操作系统_实验报告2
(3)指针越界段错误退出方法
操作系统_实验报告2
操作系统_实验报告2