九幽ir

导航

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

  • 姓名 :万大明
  • 学号 :201821121058
  • 班级 :计算1812

1. 编写程序

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

 

#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
int main(){
    pid_t fpid1,fpid2; 
    fpid1=fork();
    if(fpid1<0){
        printf("error in fork");
    }
    else if(fpid1==0){
        printf("Child process,my process is %d\n",getpid());
    }
    else{
        fpid2=fork();
        if(fpid2==0){
            printf("Child process,my process is %d\n",getpid());
        }
        else
            printf("Parent process,my process is %d\n",getpid());
    }
    sleep(1000);
    return 0;  
}  

2. 打印进程树

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

 

 

3. 解读进程相关信息

(1) ps -ef

 

 

UID: 即图中第一行列wandamin+”,该进程的执行者ID

PID: 这个进程的ID,为上述第二列的数字

PPID: 进程的父进程ID,例如上述表现为第三列23720是第二列1309的父进程ID

C: CPU所使用的资源占用比,上述表现为第四列的“0”

STIME: 进程的启动时间

TTY: 终端的次要装置码,上述为“pts/7”

TIME: 进程执行时间,上述为“00:00:00”

CMD: 所执行的命令,上述为“grep "test" ”,对应为“./test”

 

(2) ps -aux

 

USER: 进程拥有者

PID: 进程的ID号,上述第二列数字

%CPU: 占用的 CPU 使用率,为上述第三列

%MEM: 占用的内存使用率,上诉第四列,此时为0.0

VSZ: 占用的虚拟内存大小,上诉第五列

RSS: 占用的内存大小,上诉第六列

TTY: 终端的次要装置号码,为“pts/7”

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

START: 进程开始时间,上诉为“12:16”

TIME:进程执行的时间,为“0:00”

COMMAND:所执行的指令,上述为“grep "test" ”,对应为“./test”

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

1、vim命令具体操作方法:

            进入vim命令:vim 文件名.c(例如:vim test.c)注:c代表C语言代码

            vim操作:先按“ESC”,再输入“:”,输入一下命令即可执行对应操作。

                    :w 当前的内容保存
                    :wq 保存退出vi
                    :q! 放弃存盘退出
                    :zz 仅把修改过的内容存盘
                    :n1[,n2] w filename 把第n1行到n2行写入文件

2、无法打印进程树问题:

            解决方法:在代码中加入代码段"sleep(1000)",其中1000可以是其他

                              数值,代表时间限制。

 

posted on 2020-04-05 13:02  我不是酸柠檬与醋  阅读(320)  评论(0编辑  收藏  举报