Linux---优先级+并发+进程调度队列

目录

一、优先级

二、并发

三、Linux2.6内核进程调度队列


一、优先级

我们发现操作系统中有很多等待队列,也就是说进程需要排队,而排队的本质就是确认优先级,优先级高的排在前面,低的排在后面

为什么要有优先级?

本质就是资源不足,就像我们去食堂打饭需要排队一样,如果窗口够多,我们就不需要排队

优先级是什么?

是为了得到某种资源的先后顺序

怎么做?

优先级其实就是pcb中的一个int字段,数值越小,优先级越大
大家要分清楚优先级和权限这两个概念:权限是能不能 做某件事/访问某个资源,而优先级是你访问资源的先后顺序,前提是你有这个权限

Linux中进程优先级范围是60~99,一般进程的默认优先级为80

Linux是支持动态优先级调整的,通过进程中pcb中的nice值:进程优先级的修正数据

pri(新)=pri(旧)+nice

下图是修改优先级的方法之一

UID : 代表执行者的身份
PID : 代表这个进程的代号
PPID :代表这个进程是由哪个进程发展衍生而来的,亦即父进程的代号
PRI :代表这个进程可被执行的优先级,其值越小越早被执行
NI :代表这个进程的nice值
注意:

1、pri(新)=pri(旧)+nice,这里的pri(旧)=80不会变,我们每次就只能在80的基础上改变

2、nice的范围是 -20,19,小于-20的按-20算,大于19的按19算

这里解释一下,优先级的范围被限定的原因---为了保证公平,即所有的进程都能被合理调度,如果一个进程的优先级太高会导致优先级低的进程长时间得不到CPU的资源,产生进程饥饿


二、并发

下面介绍几个概念

  • 竞争性: 系统进程数目众多,而CPU资源只有少量,甚至1个,所以进程之间是具有竞争属性的。为了高效完成任务,更合理竞争相关资源,便具有了优先级
  • 独立性: 多进程运行,需要独享各种资源,多进程运行期间互不干扰
  • 并行: 多个进程在多个CPU下分别,同时进行运行,这称之为并行
  • 并发: 多个进程在一个CPU下采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为并发

前面三个概念都很容易理解,这里主要还是讲一下并发,我们的电脑一般都是单核CPU,我们的CPU在运行程序时,不是一个进程一直在运行,它是每个进程都会运行一个时间片(这个和计算机组成原理有关),然后进行轮换,如果有进程的优先级高于将要运行的进程,那么它就会优先抢占CPU资源,这种方式叫做基于时间片的轮转式抢占式内核,由于时间片很短,所以在我们看来这些进程好像是同时运行的,所以叫并发


三、Linux2.6****内核进程调度队列

上图的两个指针active和expired的来回交换就实现了总体进程的切换,并且保证了每个进程都能被调度,如果只有一个指针数组存放队列,那么我们只要不停的创建优先级高的进程,那么优先级低的进程就一直不会被调度,造成进程饥饿,无法保证调度的公平。

相关推荐
JXCY13S5052 分钟前
集群及lvs基础知识
运维·服务器
小此方4 分钟前
Re:Linux系统篇(四十九)线程篇 · 二:为什么现代操作系统选择分页式存储?分页如何解决物理内存碎片?分页结构如何演化到页表、页目录、MMU?
linux·运维·驱动开发
Huangjin007_1 小时前
【Linux 系统篇(十一)】基础开发工具(六) —— 版本控制器 Git
linux·运维·git
j7~1 小时前
【Linux】二十六.线程篇三《Linux多线程编程:线程控制、线程ID以及进程地址空间分布、线程局部存储__thread以及clone系统调用》---详解
linux·运维·服务器·开发语言·c++·多线程编辑·线程的控制
PC2005-cloud8 小时前
博文已索引但不展示:一次 Bing SEO 问题排查记录
服务器·人工智能
沸速存储9 小时前
整机瓶颈判断思路,自上而下定位卡顿根源
运维·服务器·电脑·内容运营
奈斯先生Vector9 小时前
告别工具碎片化:基于 Nano Banana 全模态 AI 聚合架构搭建“文本-图像-视频”自动化协同生产线
运维·数据库·人工智能·架构·自动化·aigc·音视频
乌萨奇也要立志学C++9 小时前
【Linux】网络基础 从零理解网络通信:局域网、跨网传输与 Socket 预备知识
linux·服务器·网络
DLYSB_10 小时前
AIOps 大模型实战:基于 LangChain 运维 Agent 的根因诊断与现场声光播报闭环
运维·langchain·报警灯
RisunJan11 小时前
Linux命令-slabtop(实时显示内核 slab 缓存信息)
linux