操作系统第2次实验报告:创建进程
Posted qbbnb
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了操作系统第2次实验报告:创建进程相关的知识,希望对你有一定的参考价值。
- 姓名:祁翌炀
- 学号:201821121019
- 班级:计算1811
1. 编写程序
在服务器上用VIM编辑器编写一个程序:一个进程创建(fork)两个子进程。给出源代码:
1 #include <stdio.h> 2 #include <sys/types.h> 3 #include <unistd.h> 4 int main() 5 { 6 pid_t pid1=fork(); 7 if(pid1==0) 8 printf("child1的ID为:%d ",getpid()); 9 else if(pid1<0) 10 printf("child1 create error! "); 11 else 12 { 13 printf("father1的ID为:%d ",getpid()); 14 pid_t pid2=fork(); 15 if(pid2==0) 16 printf("child2的ID为:%d ",getpid()); 17 else if(pid2<0) 18 printf("child2 create error "); 19 else 20 printf("father2的ID为:%d ",getpid()); 21 } 22 sleep(1000); 23 return 0; 24 } 25 26 ~ ~ ~
编译启动child代码,观察父进程和子进程的ID;
2. 打印进程树
打印1所创建的进程树结构,给出带有自己名字的截图。
提示:
- 使用
unsigned sleep(unsigned seconds)
挂起进程,以便打印进程树 - 打印进程树命令
pstree -p pid
3. 解读进程相关信息
(1) ps -ef
使用ps -ef
给出所创建进程的信息,并分析每个字段的含义。
UID:-该用户的登录用户名。
PID:该进程的进程号
PPID:父进程的进程号。由图可知,2998 2999的两个子进程都是又2997的进程所创建
C:占用CPU的量,图中为0
STIME:创建该进程的时间,可知父进程连着子进程一起创建
TTY:pts/2 pts/0-2为远程登录终端, tty0-6为自己的终端登录。
TIME : 指程序使用掉 CPU 的时间,因为CPU消耗为0,所以他为0
CMD:可执行文件下达的命令
(2) ps -aux
使用ps -aux
给出所创建进程的信息,并分析每个字段的含义。
UESR:登陆者用户名
PID:进程的进程号
CPU:CPU占有率
MEM:内存占有率
VSZ:虚拟内存量
RSS:固定内存量
TTY:pts/2 pts/0-2为远程登录终端, tty0-6为自己的终端登录。
STAT:进程状态
T为停止
Z为僵尸进程
S为休眠
S+有子进程的进程
START:进程开始时间
TIME:进程使用CPU的时间
COMMAND:在当前时间使用的指令代码
4. 通过该实验产生新的疑问及解答
1:一开始不知道fork的含义是什么。然后如何去写这个创建的代码的时候也不知道如何下手。
后面了解了之后明白 应该先从父进程这边开始创建。父进程的pid=1的时候,他还没有子进程,所以这个
时候我们就可以让他创建子进程了。就利用一下判断语句进行让他循环。
然后同理,再创建第二个进程的前提是第一个子进程已经被创建好了。最后实现代码。
2:发现了在Ubuntu 用ps-aux的命令时候可以观察到其他同学在做什么东西。就是其他同学是啥时候登录的,
现在正在使用什么
以上是关于操作系统第2次实验报告:创建进程的主要内容,如果未能解决你的问题,请参考以下文章