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

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

目录
相关文章
|
10月前
|
存储 Linux API
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
在计算机系统的底层架构中,操作系统肩负着资源管理与任务调度的重任。当我们启动各类应用程序时,其背后复杂的运作机制便悄然展开。程序,作为静态的指令集合,如何在系统中实现动态执行?本文带你一探究竟!
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
|
算法 Linux 调度
深入理解Linux操作系统的进程管理
本文旨在探讨Linux操作系统中的进程管理机制,包括进程的创建、执行、调度和终止等环节。通过对Linux内核中相关模块的分析,揭示其高效的进程管理策略,为开发者提供优化程序性能和资源利用率的参考。
364 32
|
8月前
|
并行计算 Linux
Linux内核中的线程和进程实现详解
了解进程和线程如何工作,可以帮助我们更好地编写程序,充分利用多核CPU,实现并行计算,提高系统的响应速度和计算效能。记住,适当平衡进程和线程的使用,既要拥有独立空间的'兄弟',也需要在'家庭'中分享和并行的成员。对于这个世界,现在,你应该有一个全新的认识。
308 67
|
7月前
|
Web App开发 Linux 程序员
获取和理解Linux进程以及其PID的基础知识。
总的来说,理解Linux进程及其PID需要我们明白,进程就如同汽车,负责执行任务,而PID则是独特的车牌号,为我们提供了管理的便利。知道这个,我们就可以更好地理解和操作Linux系统,甚至通过对进程的有效管理,让系统运行得更加顺畅。
228 16
|
7月前
|
Unix Linux
对于Linux的进程概念以及进程状态的理解和解析
现在,我们已经了解了Linux进程的基础知识和进程状态的理解了。这就像我们理解了城市中行人的行走和行为模式!希望这个形象的例子能帮助我们更好地理解这个重要的概念,并在实际应用中发挥作用。
145 20
|
6月前
|
监控 Shell Linux
Linux进程控制(详细讲解)
进程等待是系统通过调用特定的接口(如waitwaitpid)来实现的。来进行对子进程状态检测与回收的功能。
134 0
|
6月前
|
存储 负载均衡 算法
Linux2.6内核进程调度队列
本篇文章是Linux进程系列中的最后一篇文章,本来是想放在上一篇文章的结尾的,但是想了想还是单独写一篇文章吧,虽然说这部分内容是比较难的,所有一般来说是简单的提及带过的,但是为了让大家对进程有更深的理解与认识,还是看了一些别人的文章,然后学习了学习,然后对此做了总结,尽可能详细的介绍明白。最后推荐一篇文章Linux的进程优先级 NI 和 PR - 简书。
206 0
|
6月前
|
存储 Linux Shell
Linux进程概念-详细版(二)
在Linux进程概念-详细版(一)中我们解释了什么是进程,以及进程的各种状态,已经对进程有了一定的认识,那么这篇文章将会继续补全上篇文章剩余没有说到的,进程优先级,环境变量,程序地址空间,进程地址空间,以及调度队列。
134 0
|
6月前
|
Linux 调度 C语言
Linux进程概念-详细版(一)
子进程与父进程代码共享,其子进程直接用父进程的代码,其自己本身无代码,所以子进程无法改动代码,平时所说的修改是修改的数据。为什么要创建子进程:为了让其父子进程执行不同的代码块。子进程的数据相对于父进程是会进行写时拷贝(COW)。
185 0
|
10月前
|
存储 网络协议 Linux
【Linux】进程IO|系统调用|open|write|文件描述符fd|封装|理解一切皆文件
本文详细介绍了Linux中的进程IO与系统调用,包括 `open`、`write`、`read`和 `close`函数及其用法,解释了文件描述符(fd)的概念,并深入探讨了Linux中的“一切皆文件”思想。这种设计极大地简化了系统编程,使得处理不同类型的IO设备变得更加一致和简单。通过本文的学习,您应该能够更好地理解和应用Linux中的进程IO操作,提高系统编程的效率和能力。
458 34