进程优先级

一、基本概念:是进程得到CPU资源的先后顺序。

本质是目标资源稀缺。

优先级:能得到资源,先后的问题。

权限:是否得到资源。

进程优先级是一个数字,值越低越高。

优先权高的进程有优先执行权利,配置进程优先权对多任务环境的Linux系统很有用,可以盖上系统性能。

基于时间片的分时操作系统,要考虑公平性,进程的优先级差别就不会很大,否则导致资源分配不均。优先级未来可能变化但幅度不会很大。

二、查看系统进程:

1.在linux或者unix系统中,用ps‒l命令则会类似输出以下几个内容:

系统怎么知道一个进程的拥有者所属组和other?使用UID。

Linux系统中,访问任何资源都是进程访问,进程就代表用户。

PRI:进程的优先级,默认80

NI:进程优先级的修正数据,nice值。

进程的真实优先级=PRI+nice,默认都是从80开始调整

Linux进程优先级范围60,99,为了资源调度更公平。

2.进程与进程之间的关系:竞争、独立、并行、并发

竞争:系统进程数目众多,而CPU资源只有少量,甚至1个,所以进程之间是具有竞争属性的。为 了高效完成任务,更合理竞争相关资源,便具有了优先级。

独立:多进程运行,需要独享各种资源,多进程运行期间互不干扰。

并行:多个进程在多个CPU同时进行。

并发:多个进程在一个CPU切换进行同时推进。

3.进程切换:死循环进程如何进行?一个进程占有CPU代码会不会跑完?不会,时间片到了就会切换。

理解CPU和寄存器:寄存器就是CPU内的临时保存数据的空间。寄存器不等于寄存器里的数据。

如何切换:当兵:学校就叫CPU,辅导员叫做调度器,你是进程,学籍就是进程运行的临时数据,CPU寄存器内的临时数据,保留学籍,保留上下文数据,CPU寄存器内的数据保留起来,去当兵,就是进程被从CPU上剥离下来。回来了就相当于做了一次切换。

所以进程切换最核心的就是保存和恢复当前进程硬件上下文的数据即CPU寄存器的内容

当前进程的上下文数据保存在PCB里。

三、调度:

一个CPU一个运行队列runqueue,里面有queue[140],是一个指针数组,有一百四十个数字,前面100个是实时优先级,后面40个才是优先级。里面保存到都是task_struct*类型的

优先级计算:x-60+(140-40),里面保存的都是tast struct*,优先级多少就链入到里面,宏观上先看优先级,优先级相同的就先进先出。FIFO。

调度器选择一个进程调度,找一个进程时间复杂度O(N),如何挑选进程?

通过位图,unsigned int bitmap[5],比特位的位置表示queue[140]的下标,内容表示是否存在进程。比如00000100,调度器先挑队列,再挑进程,以后只需要看位图就可以调度进程,这样子可以做到以O(1)的时间复杂度去挑选进程。

设计一个结构体struct runqueue_elem,里面有array、bitmap位图、queue[40]存放优先级数字。

runqueue里面还有两个指针,类型是struct runqueue_elem*,一个叫active,一个叫expired,一个指向,一个指向, 然后这两个指针存放在struct runqueue_elem里的数组array里。

active指向的queue[140]调出要进行的进程到CPU完成之后就调回expired里的queue[140],调度过的进程都要到过期队列里,调度的过程中活跃队列里进程会越来越少,过期队列里会越来越多。这是为了已经调度过的队列不要再插优先级低且还没调度过的队列里。直到活跃队列里没有进程了,就交换active和expired的地址然后以此类推。

相关推荐
zl_dfq4 小时前
Linux 之 【进程等待】
linux
遇见火星4 小时前
Linux性能调优:理解CPU中的平均负载和使用率
linux·运维·服务器·cpu
Chennnng5 小时前
Ubuntu 安装过程的 6 大常见问题类型
linux·运维·ubuntu
阿干tkl6 小时前
传统网络与NetworkManager对比
linux·网络
Evan芙6 小时前
Linux 进程状态与进程管理命令
linux·运维·服务器
码农12138号7 小时前
Bugku HackINI 2022 Whois 详解
linux·web安全·ctf·命令执行·bugku·换行符
Joren的学习记录7 小时前
【Linux运维进阶知识】Nginx负载均衡
linux·运维·nginx
用户2190326527357 小时前
Java后端必须的Docker 部署 Redis 集群完整指南
linux·后端
胡先生不姓胡8 小时前
如何获取跨系统调用的函数调用栈
linux
Jtti8 小时前
服务器防御SYN Flood攻击的方法
运维·服务器