个人信息

姓名:李瑶

学号:20182112002

班级:计算1811

1. 编写程序

在服务器上用VIM编辑器编写一个程序:一个进程创建(fork)两个子进程。给出源代码:

#include<stdio.h>
#include<sys/types.h>
 #include<unistd.h>
 int main()
 {
    pid_t pid;
    int i;
    for(i=0;i<2;i++){
     pid=fork();
     if(pid<=0)
         break;
     }
     if(pid<0){
     printf("error in fork\n");
     }
     else if(pid==0){
         printf("Child porcess,process id is %d\n",getpid());
     }
     else{
         printf("Parent process,process id is %d\n",getpid());
     }
     sleep(1000);
     return 0;
}

 

 

2. 打印进程树

 

运行结果:

 

 

进程树:

 

3. 解读进程相关信息

(1) ps -ef

使用ps -ef给出所创建进程的信息,并分析每个字段的含义。

UID      PID   PPID   C STIME TTY      TIME      CMD
liyao    25208 19116  0 19:44 pts/4    00:00:00 ./forktest
liyao    25209 25208  0 19:44 pts/4    00:00:00 ./forktest
liyao    25210 25208  0 19:44 pts/4    00:00:00 ./forktest

UID: 表示用户ID

PID: 进程的ID号,上述程序产生三个进程,它们的ID分别为25208,25209和25210

PPID: 父进程的ID,进程25208的父进程是进程19116,进程25209和进程25210的父进程是25208 

C: CPU使用的资源百分比

STIME: 系统启动时间

TTY: 终端的次要装置号码

TIME: 进程使用CPU的时间

CMD: 所下达的指令名称

(2) ps -aux

使用ps -aux给出所创建进程的信息,并分析每个字段的含义。

USER      PID    %CPU  %MEM  VSZ     RSS   TTY    STAT  START  TIME  COMMAND
liyao    25208   0.0   0.0   4508   752    pts/4   S    19:44  0:00  ./forktest
liyao    25209   0.0   0.0   4508    68    pts/4   S    19:44  0:00  ./forktest
liyao    25210   0.0   0.0   4508    68    pts/4   S    19:44  0:00  ./forktest

 

USER: 进程拥有者

PID: 进程的ID号

%CPU: 占用的 CPU 使用率

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

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

RSS: 占用的记忆体大小

TTY: 终端的次要装置号码

STAT: 该进程的状态,S表示中断

START: 进程开始时间

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

ps-aux指令执行后 start常见的状态除了S,还有哪些?

D:无法中断的休眠状态

R:正在运行可中在队列中可过行的

T:停止或被追踪

W:进入内存交换

Z:僵尸状态

<:优先级高的进程

N:优先级较低的进程

L:有些页面被锁进内存

l:多进程的  

 

posted on 2020-04-04 20:53  霓袅  阅读(173)  评论(0编辑  收藏  举报