Linux进程的概念、诞生和死亡

一. 进程的概念?

1. 什么是程序?什么是进程?

        程序就是一堆待执行的代码。 -> 静态的文本数据。 例如: project.c(C语言程序) / project(可执行程序)。
        进程就是当程序被CPU加载,根据每一行代码做出相应的效果,才能形成一个动态的过程,这个过程就称之为进程。

2. 在linux下,如何开启一个新的进程?
  直接在linux下执行程序即可。
  例如: ./project -> 开启一个新的进程!

3. 当进程开启,系统会为进程分配什么资源?
  1)会分配进程对应内存空间。
  2)任务结构体 -> struct task_struct -> 在linux下,任何进程就像一个任务。

二. 关于查看进程信息的linux命令。

1)查看整个linux系统的ID号 -> ps -ef(静态)
gec@ubuntu:~$ ps -ef
用户名    PID   PPID      创建时间        持续时间       进程名字
root      1     0      0   16:37     ?       00:00:00      /sbin/init        -> 祖先进程
gec     2272    1    0   16:37     ?       00:00:01      gnome-terminal        -> linux终端
gec     2278   2272      0   16:37    pts/1       00:00:00      bash          -> linux终端的子进程,叫bash进程
gec     2720   2278     0   18:54    pts/1       00:00:00      ps -ef          -> bash进程的子进程,shell命令

2)查看进程CPU使用率 -> top(动态)
gec@ubuntu:~$ top

Tasks:    150 total      -> 当前系统有150个进程
    2 running     -> 2个在运行态
    148 sleeping     -> 148个睡眠态
    0 stopped    -> 0个暂停态
    0 zombie     -> 0个僵尸态

PID   USER   PR   NI    VIRT   RES   SHR   S   %CPU   %MEM    TIME+   COMMAND
1049   root    20    0   96160    26m   6700   S    5.3      2.6     0:18.50   Xorg

S -> state当前进程状态
%CPU -> 当前瞬间CPU占用率
%MEM -> 当前瞬间内存占用率

3)查看整个系统的关系图 -> pstree
gec@ubuntu:~$ pstree

三. 进程的诞生与死亡。

1.进程有什么状态?
  进程生老病死就是从进程开启到进程结束经历所有状态。

  就绪态: 不占用CPU资源,不运行代码。
  运行态: 占用CPU资源,运行代码。
  暂停态: 占用CPU资源,不运行代码,可以切换到就绪态/运行态
  睡眠态: 占用CPU资源,运行代码,可以切换到就绪态/运行态
  僵尸态: 占用CPU资源,不运行代码,不可以切换到就绪态/运行态
  死亡态: 不占用CPU资源,不运行代码。

2. 什么是占用CPU资源?
  就是进程自身的资源(任务结构体)没有释放。

3. 什么是僵尸态?
  进程结束时,一定会切换到僵尸态。所谓僵尸态,就是本进程已经结束,但是自身的资源还没有释放掉。

4. 需要注意的地方:
  1)进程在暂停态时,如果收到继续的信号,是切换到就绪态,而不是运行态。
  2)进程退出时,一定会变成僵尸态。
  3)进程不可以没有父进程,也不能同时拥有两个父进程。
  4)孤儿进程特点: 当自己的父进程退出后,会马上寻找继父,而不是等到变成僵尸再找。
  5)init祖先进程特点: 一定会帮所有的孤儿回收资源。

posted @ 2019-11-06 11:16  水镜·八咫  阅读(332)  评论(0)    收藏  举报