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。可执行文件的格式大致如下图所示:

     

  • 相关阅读:
    学习Windows(BAT)、Linux(Shell)编程,并分别写一个脚本文件解决自己的一个问题
    国外著名黑客信息
    设置电脑护眼配色,减少电脑对眼睛的伤害(转)
    Java基础学习笔记
    [转] java正则表达式中的数量词
    JAVA学习间项目笔记
    [转]Java堆和栈的区别 经典总结
    Delphi下Webbrowser的使用技巧
    Pascal精要笔记
    网页元素特征字符串
  • 原文地址:https://www.cnblogs.com/lty1661489001/p/12614467.html
Copyright © 2011-2022 走看看