一、进程的基本概述

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

Linux_进程管理的基本概述的更多相关文章

  1. Linux_进程管理相关命令

    一.进程管理命令 1.ps -- 进程查看命令 1️⃣:ps(process state)命令用于列出当前的进程 2️⃣:可以显示详细的进程信息,包括: 用户识别符(UID),它确定进程的特权 唯一进 ...

  2. Linux_进程管理&计划任务

    目录 目录 top打开Linux系统任务管理控制台 ps进程查询指令 kill进程关闭指令 一个小实验 一次性计划任务 周期性计划任务 top打开Linux系统任务管理控制台 快捷键: P M k q ...

  3. 07、Spark集群的进程管理

    07.Spark集群的进程管理 7.1 概述 Spark standalone集群模式涉及master和worker两个守护进程.master进程是管理节点,worker进程是工作节点.spark提供 ...

  4. CentOS进程管理

    Linux系统中的基本运行单位是进程,通过对系统系统中的进程的管理能够对系统的实时运行状态进行了解和调度.Linux中提供了用于查看.调整和停止进程的命令.本文仍然以RHEL6说明Linux系统的进程 ...

  5. boost:进程管理

    概述 Boost.Process提供了一个灵活的C++ 进程管理框架.它允许C++ developer可以像Java和.Net程序developer那样管理进程.它还提供了管理当前执行进程上下文.创建 ...

  6. .Neter玩转Linux系列之五:crontab使用详解和Linux的进程管理以及网络状态监控

    一.crontab使用详解 概述:任务调度:是指系统在某个时间执行的特定的命令或程序. 任务调度分类: (1)系统工作:有些重要的工作必须周而 复始地执行. (2)个别用户工作:个别用户可能希望执 行 ...

  7. Linux性能及调优指南(翻译)之Linux进程管理

    本文为IBM RedBook的Linux Performanceand Tuning Guidelines的1.1节的翻译原文地址:http://www.redbooks.ibm.com/redpap ...

  8. 《Linux 性能及调优指南》1.1 Linux进程管理

    https://blog.csdn.net/ljianhui/article/details/46718835 本文为IBM RedBook的Linux Performanceand Tuning G ...

  9. Linux进程管理与调度-之-目录导航【转】

    转自:http://blog.csdn.net/gatieme/article/details/51456569 版权声明:本文为博主原创文章 && 转载请著名出处 @ http:// ...

随机推荐

  1. python基础(三):元组

    什么是元组 有时候你需要创建一系列不可修改的元素,元组可以满足这种需求.Python将不能修改的值称为不可变的,而不可变的列表被称为元组. 元组的定义和访问 元组使用圆括号来定义,我们已经知道:元组也 ...

  2. OO_Unit2_Summary

    经过三周的自己电梯瞎设计,下次坐电梯想我想的可能就不是如何优化调度算法,而是千万别把自己死锁在电梯里了(手动狗头) 一.设计策略 1. 需求分析: 作业一:单部多线程可稍带电梯,一部电梯,固定楼层,不 ...

  3. 【笔记】《Redis设计与实现》chapter22 二进制位数组 chapter23 慢查询日志 chapter24 监视器

    chapter22 二进制位数组 22.4 BITCOUNT命令的实现 遍历算法 查表算法 variable-precision SWAP算法 chapter23 慢查询日志 Redis的慢查询日志功 ...

  4. 玉帝传美猴王上天,大闹天宫之Java设计模式:命令模式

    目录 示例 改进代码 命令模式 定义 意图 主要解决问题 何时使用 优缺点 玉帝传美猴王上天 命令模式和策略模式的区别 示例 系统需要设计一个命令行界面,用户可输入命令来执行某项功能,系统的功能会不断 ...

  5. 多图详解 TCP 连接管理,太全了!!!

    TCP 是一种面向连接的单播协议,在 TCP 中,并不存在多播.广播的这种行为,因为 TCP 报文段中能明确发送方和接受方的 IP 地址. 在发送数据前,相互通信的双方(即发送方和接受方)需要建立一条 ...

  6. Jenkins 自动触发执行的配置

    1. 两种触发方式 2. jenkins 和 github 同步配置 ngrok 安装 webhook 配置 1. 两种触发条件 Jenkins 中建立的任务是可以设置自动触发,更进一步的实现自动化. ...

  7. Scrapy 爬虫项目框架

    1. Scrapy 简介 2. Scrapy 项目开发介绍 3. Scrapy 项目代码示例 3.1 setting.py:爬虫基本配置 3.2 items.py:定义您想抓取的数据 3.3 spid ...

  8. TP5学习记录(Model篇)

    ThinkPHP 数据库操作 数据库连接 #在config/database.php设置数据库连接参数或者利用Db::connect()方法设置数据库连接 /* * public static fun ...

  9. 《机器学习Python实现_10_09_集成学习_bagging_stacking原理及实现》

    介绍 前面对模型的组合主要用了两种方式: (1)一种是平均/投票: (2)另外一种是加权平均/投票: 所以,我们有时就会陷入纠结,是平均的好,还是加权的好,那如果是加权,权重又该如何分配的好?如果我们 ...

  10. hdu1815 2sat + 二分 + 建图

    题意:       给你两个总部,s1 ,s2,和n个点,任意两点之间都是通过这个总部相连的,其中有一些点不能连在同一个总部上,有一些点可以连接在同一个总部上,总部和总部之间可以直接连接,就是假如a, ...