操作系统第2次实验报告:创建进程

  • 姓名:徐思婕
  • 学号:201821121004
  • 班级:计算1811

1. 编写程序

  • 在服务器上用VIM编辑器编写一个程序:一个进程创建(fork)两个子进程。给出源代码:
#include<sys/types.h>                     
#include<unistd.h>
#include<stdio.h>
int main()
{ pid_t fpid1,fpid2;
if((fpid1=fork())==0) printf("Child1 process,my process id is %d\n",getpid()); else { if((fpid2=fork())==0) printf("Child2 process,my process id is%d\n",getpid()); else printf("Parent process,my process id is %d\n",getpid()); } sleep(1000); return 0; }
  • 运行结果:

          

 

2. 打印进程树

  • 打印1所创建的进程树结构,给出带有自己名字的截图:

          

 

3. 解读进程相关信息

(1) ps -ef

  • 使用ps -ef给出所创建进程的信息:
UID      PID   PPID   C  STIME  TTY     TIME      CMD
xusijie  21054 17746  0 16:49 pts/0   00:00:00 ./test
xusijie  21055 21054  0 16:49 pts/0   00:00:00 ./test
xusijie  21056 21054  0 16:49 pts/0   00:00:00 ./test
  • 分析每个字段的含义:

          UID:用户ID为xusijie

          PID:进程ID为21054、21055、21056

          PPID:父进程ID为17746、21054、21054

          C:CPU使用的资源百分比为0

          STIME:进程启动时间为16:49

          TTY:登入者的终端机位置

          TIME:使用的CPU时间为0

          CMD:所下达的指令

(2) ps -aux

  • 使用ps -aux给出所创建进程的信息:
USER     PID    %CPU  %MEM  VSZ    RSS  TTY    STAT  START   TIME  COMMAND
xusijie  21054  0.0   0.0   4508   792  pts/0   S    16:49   0:00  ./test
xusijie  21055  0.0   0.0   4508    72  pts/0   S    16:49   0:00  ./test
xusijie  21056  0.0   0.0   4508    72  pts/0   S    16:49   0:00  ./test
  • 分析每个字段的含义:

          USER:用户为xusijie

          PID:进程ID为21054、21055、21056

          %CPU:占用的 CPU 使用率为0

          %MEM:占用的记忆体使用率为0

          VSZ:占用的虚拟记忆体大小为4508KB

          RSS:占用的记忆体大小分别为792、72与72

          TTY:登入者的终端机位置

          STAT:该进程的状态为S(中断)

          START:进程被触发的时间16:49

          TIME:使用的CPU时间为0

          CMD:所下达的指令

 

4. 通过该实验产生新的疑问及解答

  • Q:STAT是进程的状态,除了S以外还有哪些状态码?  

         A:

状态码 状态 含义
R 运行 正在运行或在运行队列中等待
D 不可中断 收到信号不唤醒和不可运行,进程必须等待直到有中断发生
Z 僵死 进程已终止,但进程描述符存在,直到父进程调用wait4()系统调用后释放
T 停止 进程收到SIGSTOP,SIGSTP,SIGTIN,SIGTOU信号后停止运行
posted @ 2020-04-03 17:56  一昼  阅读(223)  评论(0编辑  收藏  举报