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

相关推荐
此生只爱蛋23 分钟前
【Linux】正/反向代理
linux·运维·服务器
qq_54702617930 分钟前
Linux 基础
linux·运维·arm开发
zfj32136 分钟前
sshd除了远程shell外还有哪些功能
linux·ssh·sftp·shell
废春啊42 分钟前
前端工程化
运维·服务器·前端
我只会发热1 小时前
Ubuntu 20.04.6 根目录扩容(图文详解)
linux·运维·ubuntu
爱潜水的小L1 小时前
自学嵌入式day34,ipc进程间通信
linux·运维·服务器
保持低旋律节奏1 小时前
linux——进程状态
android·linux·php
zhuzewennamoamtf1 小时前
Linux I2C设备驱动
linux·运维·服务器
zhixingheyi_tian1 小时前
Linux 之 memory 碎片
linux
邂逅星河浪漫2 小时前
【域名解析+反向代理】配置与实现(步骤)-SwitchHosts-Nginx
linux·nginx·反向代理·域名解析·switchhosts