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

相关推荐
_.Switch11 分钟前
Python 自动化运维持续优化与性能调优
运维·开发语言·python·缓存·自动化·运维开发
南猿北者15 分钟前
Docker Volume
运维·docker·容器
矛取矛求3 小时前
Linux如何更优质调节系统性能
linux
内核程序员kevin4 小时前
在Linux环境下使用Docker打包和发布.NET程序并配合MySQL部署
linux·mysql·docker·.net
kayotin4 小时前
Wordpress博客配置2024
linux·mysql·docker
Ztiddler5 小时前
【Linux Shell命令-不定期更新】
linux·运维·服务器·ssh
小小不董5 小时前
Oracle OCP认证考试考点详解082系列16
linux·运维·服务器·数据库·oracle·dba
IPdodo全球网络5 小时前
如何利用静态住宅IP优化Facebook商城的网络稳定性与运营效率
运维·服务器
a1denzzz5 小时前
Linux系统的网络设置
linux·服务器·网络
运维&陈同学6 小时前
【模块一】kubernetes容器编排进阶实战之k8s基础概念
运维·docker·云原生·容器·kubernetes·云计算