zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    为什么this在Promise不起作用
    MySQL和内存中的js对象交互
    Promise对象如何在.then()中进行resolve和reject
    微信群聊原理实现
    聊天应用后台好友数据存储问题
    【转】 SpringBoot中使用log4j日志
    【转】 SpringBoot快速入门
    【转】 [springBoot系列]--springBoot注解大全
    【转】 SpringBoot源码学习系列之启动原理简介
    【转】 JavaWeb
  • 原文地址:https://www.cnblogs.com/itwangqiang/p/13456465.html
Copyright © 2011-2022 走看看