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里)。下次回来的时候,能够恢复上去,能够按照之前的逻辑继续向后运行,就像没有中断过一样。

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

目录
相关文章
|
22天前
|
网络协议 Linux
Linux查看端口监听情况,以及Linux查看某个端口对应的进程号和程序
Linux查看端口监听情况,以及Linux查看某个端口对应的进程号和程序
99 2
|
22天前
|
Linux Python
linux上根据运行程序的进程号,查看程序所在的绝对路径。linux查看进程启动的时间
linux上根据运行程序的进程号,查看程序所在的绝对路径。linux查看进程启动的时间
40 2
|
26天前
|
消息中间件 Linux 开发者
Linux进程间通信秘籍:管道、消息队列、信号量,一文让你彻底解锁!
【8月更文挑战第25天】本文概述了Linux系统中常用的五种进程间通信(IPC)模式:管道、消息队列、信号量、共享内存与套接字。通过示例代码展示了每种模式的应用场景。了解这些IPC机制及其特点有助于开发者根据具体需求选择合适的通信方式,促进多进程间的高效协作。
52 3
|
24天前
|
消息中间件 Linux
Linux进程间通信
Linux进程间通信
32 1
|
25天前
|
C语言
Linux0.11 系统调用进程创建与执行(九)(下)
Linux0.11 系统调用进程创建与执行(九)
20 1
|
25天前
|
存储 Linux 索引
Linux0.11 系统调用进程创建与执行(九)(上)
Linux0.11 系统调用进程创建与执行(九)
38 1
|
30天前
|
Web App开发 Linux
在Linux中,如何杀死一个进程?
在Linux中,如何杀死一个进程?
|
30天前
|
域名解析 监控 安全
在Linux中,什么是守护进程,它们是如何工作的?
在Linux中,什么是守护进程,它们是如何工作的?
|
6天前
|
存储 监控 安全
探究Linux操作系统的进程管理机制及其优化策略
本文旨在深入探讨Linux操作系统中的进程管理机制,包括进程调度、内存管理以及I/O管理等核心内容。通过对这些关键组件的分析,我们将揭示它们如何共同工作以提供稳定、高效的计算环境,并讨论可能的优化策略。
13 0
|
28天前
|
消息中间件 Linux
在Linux中,进程间通信方式有哪些?
在Linux中,进程间通信方式有哪些?