Linux_进程管理的基本概述

一、进程的基本概述

1️⃣:进程是已启动的可执行程序的运行中实例

2️⃣:/proc目录下以数字为名的目录,每一个目录代表一个进程,保存着进程的属性信息

3️⃣:每一个进程的PID是唯一的,就算进程退出了,其它进程也不会占用其PID

二、进程的组成部分

1️⃣:已分配内存的地址空间

2️⃣:安全属性,包括所有权凭据和特权

3️⃣:程序代码的一个或多个执行线程

4️⃣:进程状态

三、进程的环境

1️⃣:本地和全局变量

2️⃣:当前调度上下文

3️⃣:分配的系统资源,如文件描述符和网络端口

四、进程的产生

1️⃣:现有的(父)进程复制自己的地址空间(fork)来创建一个新的(子)进程结构

2️⃣:每个新进程分配有一个唯一的进程ID(PID),满足跟踪和安全性之需

3️⃣:PID与父进程ID(PPID)是新进程环境的元素

4️⃣:任何进程可创建子进程;所有进程都是第一个系统进程的后代;RHEL7上,第一个系统进程是systemd。

五、进程的分类

1️⃣:前台进程:与终端相关的进程,通过终端启动的进程

  注意:也可把在前台启动的进程送往后台,以守护模式运行

2️⃣:守护进程:daemon,与终端无关的进程(如内核),在系统引导过程中启动的进程

六、进程状态描述

1️⃣:Excuting           //正在运行

2️⃣:Ready              //准备就绪状态,也可称作睡眠状态

  • Uninterruptible sleep       //不可中断的睡眠,不可随时唤醒,只有当IO资源加载成功后才能唤醒
  • Interruptible sleep           //可中断的睡眠。可随时唤醒

3️⃣:Zombie                      //僵尸进程。正常运行结束了,但是不释放占据的内存

4️⃣:Stopped                     //停止态,暂停于内存中,但不会被调度,除非手动启动之

5️⃣:进程睡眠的原因:当一个执行中的进程,需要加载额外的IO资源的时候,由于IO设备的速度太慢,所以会转入睡眠状态等待,交出CPU给其他进程,以免浪费剩余执行时间

七、Linux进程状态

八、进程优先级

1、Linux进程优先级

1️⃣:进程优先级范围:0-139,数字越小,优先级越高

  • 0-99:实时优先级,内核调整
  • 100-139:静态优先级,用户可控制

2️⃣:进程优先级高的特点

  • 获得更多的CPU运行时间
  • 更优先获得CPU运行的机会

3️⃣:要修改进程的优先级可以通过调整进程的nice值来实现,nice值越小,优先级越高

  • nice值的范围是(-20,19),-20对应100,19对应139

2、相对优先级

1️⃣:由于并非所有进程都以同样的方式创建,可为采用SCHED_NORMAL策略运行的进程指定相对优先级。此优先级称为进程的nice值

2️⃣:一个进程可以有40种不同级别的nice值

3️⃣:这些nice级别的范围是从-20到19;默认情况下,进程将继承其父进程的nice级别,通常为0

  • nice级别越高,表示优先级越低(该进程容易将其CPU使用量让给其他进程)
  • nice级别越低,表示优先级越高(该进程更加不倾向于让出CPU)
  • 如果不存在资源争用(例如当活动进程数少于可用CPU核心数时),即使nice级别高的进程也将仍使用它们可使用的所有可用CPU资源
  • 但当请求CPU时间的进程数超过可用核心数时,nice级别较高的进程将比nice级别较低的进程收到更少的CPU时间

3、nice级别与权限

1️⃣:为很占CPU资源的进程设置较低的nice级别可能会对同一系统上运行的其他进程的性能造成负面影响,所以仅允许root用户设置负nice级别以及降低现有进程的nice级别

2️⃣:普通(非特权)用户仅允许设置正的nice级别,也就是只能对现有进程提升nice级别,而不能降低nice级别。  

4、进程优先级调整

1️⃣:调整已经启动的进程的nice值

  •  renice NI PID(例:renice 3 3704)

2️⃣:在启动时指定nice值:(-20,19)

  •  nice -n NI COMMAND

 

posted @ 2020-08-08 09:50  阮小言  阅读(149)  评论(0编辑  收藏  举报