个人信息
姓名:李瑶
学号: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:多进程的