zoukankan      html  css  js  c++  java
  • 操作系统第2次实验报告:创建进程

    0. 个人信息

    • 姓名  罗廷杨
    • 学号  201821121013
    • 班级  计算1811

    1. 编写程序

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

    #include<sys/types.h>
    #include<unistd.h>
    #include<stdio.h>
    #include<stdlib.h>
    int main()
    {
         int i;
         pid_t pid;
         //设置进程产生的个数
         for(i=0;i<2;++i){
             pid=fork();
             if(pid<=0){
                 break;
             }
         }
         sleep(20);//进程挂起
         if(pid<0){ //进程分配异常
             perror("fork error
    ");
         }
         else if(pid==0){ //子进程
             printf("
    This is %d child ,pid=%u",i+1,getpid());
         }
         else{ //父进程
             printf("This is the parent,pid=%u",getpid());
         }
         return 0;
     }

    2. 打印进程树

    1.编译1中所写的程序,并在后台运行

     程序运行结果

    2.根据父进程的PID,打印出进程树

    3. 解读进程相关信息

    (1) ps -ef

    luotingyang@jmu-cs-ubuntu:~/File$ ps -ef | grep "ft"
    UID         PID    PPID     C   STIME    TTY       TIME           CMD
    luoting+   24266   15312    0   17:13    pts/11    00:00:00       ./ft
    luoting+   24267   24266    0   17:13    pts/11    00:00:00       ./ft
    luoting+   24268   24266    0   17:13    pts/11    00:00:00       ./ft

    UID: 代表执行者的身份

    PID: 进程的ID号,上述程序产生三个进程,它们的ID分别为24266,24267和24268

    PPID: 父进程的ID,进程24266的父进程是进程15312,进程24267和进程24268的父进程是24266

    C: CPU使用的资源百分比

    STIME: 系统启动时间

    TTY: 终端的次要装置号码

    TIME: 进程使用CPU的时间

    CMD: 所下达的指令名称,运行可执行文件的命令./ft

    (2) ps -aux

    luotingyang@jmu-cs-ubuntu:~/File$ ps -aux | grep "ft"
    USER        PID   %CPU  %MEM    VSZ   RSS  TTY     STAT  START   TIME   COMMAND
    luoting+   24266   0.0   0.0    4376  748  pts/11   S    17:13   0:00    ./ft
    luoting+   24267   0.0   0.0    4376  68   pts/11   S    17:13   0:00    ./ft
    luoting+   24268   0.0   0.0    4376  68   pts/11   S    17:13   0:00    ./ft

    USER: 进程拥有者

    PID: 进程的ID号

    %CPU: 占用的 CPU 使用率

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

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

    RSS: 占用的记忆体大小

    TTY: 终端的次要装置号码

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

    START: 进程开始时间

    TIME:进程使用CPU的时间

    COMMAND:所执行的指令,运行可执行文件的命令./ft

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

    疑问:从C代码生成可执行文件的大致流程是什么样子的?

    此处以一个fock_test.c源程序为例,fock_test.c源程序首先经过预处器(cpp)处理,变成fock_test.i文件,然后经过编译器(ccl)处理变成汇编程序fock_test.s,接着被汇编器(as)进行处理成为可重定位的目标程序(二进制)fock_test.o,最后经过链接器(ld)处理成为可执行的目标程序(二进制)fock_test。可执行文件的格式大致如下图所示:

     

  • 相关阅读:
    HttpServletRequest
    实现重定向
    HttpServletResponse
    Servlet简介和ServletContext
    JavaWeb 之 Http
    JavaWeb 之 Cookie
    Pycharm2019.3.2专业版激活
    How to Use Arrays and Vectors
    软件工程学习心得
    MySQL 连接
  • 原文地址:https://www.cnblogs.com/lty1661489001/p/12614467.html
Copyright © 2011-2022 走看看