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
Linux_进程管理的基本概述的更多相关文章
- Linux_进程管理相关命令
一.进程管理命令 1.ps -- 进程查看命令 1️⃣:ps(process state)命令用于列出当前的进程 2️⃣:可以显示详细的进程信息,包括: 用户识别符(UID),它确定进程的特权 唯一进 ...
- Linux_进程管理&计划任务
目录 目录 top打开Linux系统任务管理控制台 ps进程查询指令 kill进程关闭指令 一个小实验 一次性计划任务 周期性计划任务 top打开Linux系统任务管理控制台 快捷键: P M k q ...
- 07、Spark集群的进程管理
07.Spark集群的进程管理 7.1 概述 Spark standalone集群模式涉及master和worker两个守护进程.master进程是管理节点,worker进程是工作节点.spark提供 ...
- CentOS进程管理
Linux系统中的基本运行单位是进程,通过对系统系统中的进程的管理能够对系统的实时运行状态进行了解和调度.Linux中提供了用于查看.调整和停止进程的命令.本文仍然以RHEL6说明Linux系统的进程 ...
- boost:进程管理
概述 Boost.Process提供了一个灵活的C++ 进程管理框架.它允许C++ developer可以像Java和.Net程序developer那样管理进程.它还提供了管理当前执行进程上下文.创建 ...
- .Neter玩转Linux系列之五:crontab使用详解和Linux的进程管理以及网络状态监控
一.crontab使用详解 概述:任务调度:是指系统在某个时间执行的特定的命令或程序. 任务调度分类: (1)系统工作:有些重要的工作必须周而 复始地执行. (2)个别用户工作:个别用户可能希望执 行 ...
- Linux性能及调优指南(翻译)之Linux进程管理
本文为IBM RedBook的Linux Performanceand Tuning Guidelines的1.1节的翻译原文地址:http://www.redbooks.ibm.com/redpap ...
- 《Linux 性能及调优指南》1.1 Linux进程管理
https://blog.csdn.net/ljianhui/article/details/46718835 本文为IBM RedBook的Linux Performanceand Tuning G ...
- Linux进程管理与调度-之-目录导航【转】
转自:http://blog.csdn.net/gatieme/article/details/51456569 版权声明:本文为博主原创文章 && 转载请著名出处 @ http:// ...
随机推荐
- HTML(〇):简介导读
网页 什么是网页 网站(Website):是指在因特网上根据一定的规则,使用HTML(标准通用标记语言)等工具制作的用于展示特定内容相关网页的集合. 网页(webpage):是网站中的一页,通常是HT ...
- css详解background八大属性及其含义
background(背景) 以前笔者在css盒模型以及如何计算盒子的宽度一文中提到过盒模型可以看成由 元素外边距(margin).元素边框(border).元素内边距(padding)和元素内容(c ...
- Java 8 Optional
这是一个可以为null的容器对象.如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象. package com.polaris; import java.util.A ...
- Compound Words UVA - 10391
You are to find all the two-word compound words in a dictionary. A two-word compound word is a wor ...
- ASP.Net 管道模型 VS Asp.Net Core 管道 总结
1 管道模型 1 Asp.Net Web Form管道 请求进入Asp.Net工作进程后,由进程创建HttpWorkRequest对象,封装此次请求有关的所有信息,然后进入HttpRuntime类进 ...
- 幻读:听说有人认为我是被MVCC干掉的
@ 目录 前言 系列文章 一.我是谁? 二.为什么有人会认为我是被MVCC干掉的 三.我真的是被MVCC解决的? 四.再聊当前读.快照读 当前读 快照读 五.告诉你们吧!当前读的情况下我是被next- ...
- misdirection靶机work_through
web打点 nmap扫描 Nmap scan report for 192.168.218.135 Host is up (0.000014s latency). Not shown: 65531 c ...
- 0-0 Linux安装在VMvare虚拟机上
一.安装VMware虚拟机: 双击, 上面一步会提示你输入密钥,你只要双击这个,复制里面的一串码粘贴进去就可以. 点击完成,至此VM虚拟机安装完成. 二.在VMvare虚拟机上安装centos. 1. ...
- Blade模板引擎教程-常用语法格式
打印变量或者默认值,这个语法会自动转义变量内容中的html标记,使得html标签原样输出Welcome, {{ $name or 'California' }} 打印变量原始内容,不进行转义的用法{! ...
- Think5之删除单条数据功能
//删除单条学员信息 public function deleteStu(Request $request){ $stu_id = $request->param('id'); $result ...