Linux之进程(二)

简介: Linux之进程(二)



一、进程优先级

1、基本概念

什么是优先级?优先级:进程获取cpu资源分配的先后顺序,就是指进程的优先权。优先权高的进程有优先执行权利。

为什么有优先级?优先级存在的主要原因就是CPU资源是有限的,一个CPU一次只能运行一个进程。如果进程太多,需要通过优先级来竞争资源。所以需要存在进程的优先级,来确定进程获取CPU资源的先后顺序。

2、Linux中的优先级

使用ps -l 命令可以看到下面的内容。其中 PID和PPID我们已经知道是什么了,下面我们来了解一下其它是什么。

UID : 代表执行者的身份。

PRI :代表这个进程可被执行的优先级,其值越小越早被执行。

NI :代表这个进程的nice值 。

1、PRI和NI

~ PRI即进程的优先级,通俗点说就是程序被CPU执行的先后顺序,此值越小,进程的优先级别越高。

~ NI就是我们所要说的nice值了,其表示进程可被执行的优先级的修正数值。

~ PRI值越小越快被执行,那么加入nice值后,将会使得PRI变为:PRI(new)=PRI(old)+nice,这样,当nice值为负值的时候,那么该程序将会优先级值将变小,即其优先级会变高,则其越快被执行。

~ 调整进程优先级,在Linux下,就是调整进程nice值。

~ nice其取值范围是-20至19,一共40个级别。

从上面的图中我们可以知道:PRI默认是80,NI(nice值)默认是0。

2、通过top命令更改进程NI值

top命令就相当于Windows操作系统中的任务管理器,它能够动态实时的显示系统当中进程的资源占用情况。

然后,按 r 键,系统就会提示你输入需要修改NI值的进程的PID。

输入进程PID并回车后,系统会提示你输入调整后的nice值。

修改完后,我们查看一下新的优先级:我们再用ps命令查看进程的优先级信息,即可发现进程的NI变成了14,PRI变成了94

若是想将NI值调为负值,也就是将进程的优先级调高,需要使用sudo命令提升权限。

3、四个特性

~ 竞争性: 系统进程数目众多,而CPU资源只有少量,甚至1个,所以进程之间是具有竞争属性的。为了高效完成任务,更合理竞争相关资源,便具有了优先级。

~ 独立性: 多进程运行,需要独享各种资源,多进程运行期间互不干扰。

~ 并行: 多个进程在多个CPU下分别,同时进行运行,这称之为并行。

~ 并发: 多个进程在一个CPU下采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为并发。

二、进程切换

上面讲到并发:多个进程在一个CPU下采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为并发。

如何切换?

首先,先了解一下时间片:大部分电脑只有一个CPU,所以一次只能运行一个进程。进程在运行的时候占有CPU,但是却不是一直占有到进程结束,因为进程都有自己的时间片!有了时间片的存在,进程会出现没有被执行完就被停止执行的情况。

简单来说:时间片就是一个进程在一次占用CPU资源时所能占用的时间,时间一到,不管程序是否执行完,都将切换到下一个进程来使用CPU。如果没有执行完,只有等下次再使用了CPU资源了。

但是,等下一次再次使用CPU资源时,我们怎么才能继续从上次运行到的地方接着运行呢?

如果一个进程正在运行,CPU内的寄存器里面,保存的是该进程的临时数据(例如,运行完一个函数,该函数有一个返回值,而这个返回值就存储在寄存器中)。临时数据也叫做上下文数据。

当该进程因时间片到了,要被切换时,进程会带走自己的上下文数据(数据保存至PCB里)。下次回来的时候,能够恢复上去,能够按照之前的逻辑继续向后运行,就像没有中断过一样。

注:寄存器被所有进程共享,上下文有多个,分别对应不同的进程。

目录
相关文章
|
2天前
|
Linux
Linux源码阅读笔记13-进程通信组件中
Linux源码阅读笔记13-进程通信组件中
|
2天前
|
消息中间件 安全 Java
Linux源码阅读笔记13-进程通信组件上
Linux源码阅读笔记13-进程通信组件上
|
29天前
|
运维 关系型数据库 MySQL
掌握taskset:优化你的Linux进程,提升系统性能
在多核处理器成为现代计算标准的今天,运维人员和性能调优人员面临着如何有效利用这些处理能力的挑战。优化进程运行的位置不仅可以提高性能,还能更好地管理和分配系统资源。 其中,taskset命令是一个强大的工具,它允许管理员将进程绑定到特定的CPU核心,减少上下文切换的开销,从而提升整体效率。
掌握taskset:优化你的Linux进程,提升系统性能
|
24天前
|
弹性计算 Linux 区块链
Linux系统CPU异常占用(minerd 、tplink等挖矿进程)
Linux系统CPU异常占用(minerd 、tplink等挖矿进程)
31 4
Linux系统CPU异常占用(minerd 、tplink等挖矿进程)
|
2天前
|
Linux
Linux源码阅读笔记10-进程NICE案例分析2
Linux源码阅读笔记10-进程NICE案例分析2
|
2天前
|
Linux 数据安全/隐私保护
Linux守护进程
Linux守护进程
|
2天前
|
Linux
Linux源码阅读笔记09-进程NICE案例分析1
Linux源码阅读笔记09-进程NICE案例分析1
|
2天前
|
存储 Linux API
Linux源码阅读笔记08-进程调度API系统调用案例分析
Linux源码阅读笔记08-进程调度API系统调用案例分析
|
2天前
|
Linux API
Linux源码阅读笔记07-进程管理4大常用API函数
Linux源码阅读笔记07-进程管理4大常用API函数
|
5天前
|
Linux 调度
Linux源码阅读笔记05-进程优先级与调度策略-实战分析
Linux源码阅读笔记05-进程优先级与调度策略-实战分析