进程优先级

一、基本概念:是进程得到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的地址然后以此类推。

相关推荐
REDcker28 分钟前
Linux信号机制详解 POSIX语义与内核要点 sigaction与备用栈实践
linux·运维·php
cui_ruicheng1 小时前
Linux进程间通信(三):System V IPC与共享内存
linux·运维·服务器
蚰蜒螟2 小时前
深入 Linux 内核同步机制:从 futex 到 spinlock 的完整旅程
linux·windows·microsoft
运维全栈笔记2 小时前
Linux安装配置Tomcat保姆级教程:从部署到性能调优
linux·服务器·中间件·tomcat·apache·web
dllmayday3 小时前
Linux 上用终端连接 WiFi
linux·服务器·windows
ACP广源盛139246256733 小时前
IX8024与科学大模型的碰撞@ACP#筑牢科研 AI 算力高速枢纽分享
运维·服务器·网络·数据库·人工智能·嵌入式硬件·电脑
峥无4 小时前
Linux系统编程基石:静态库·动态库·ELF文件·进程地址空间全景图
linux·运维·服务器
用户2367829801684 小时前
从 chmod 755 说起:Unix 文件权限到底是怎么算的?
linux
Strugglingler4 小时前
【systemctl 学习总结】
linux·systemd·systemctl·journalctl·unit file
嵌入式×边缘AI:打怪升级日志6 小时前
100ASK-T113 Pro 开发板 Bootloader 完全开发指南
linux·ubuntu·bootloader