7.进程概念(三)
一、进程优先级
是什么?
进程得到CPU资源的先后顺序。
为什么要有进程优先级?
目标资源稀缺,导致要通过优先级确定谁先谁后。
如何比较和分配?
进程优先级也是一种数字,int,task_struct
值越低,优先级越高,反之,越低。
基于时间片的分时操作系统,考虑公平性,优先级可能变化,但变化的幅度不能太大。
知识点:
PRI:进程优先级,默认80
NI:进程优先级的修正数据,nice值(默认为0)
进程优先级=PRI(默认)+NI
设计原因:优先级设计不合理,会导致优先级低的进程,长时间得不到CPU资源,进而导致进程饥饿。
查看进程优先级的命令用top命令更改已存在进程的nice:进入top后按“r”‒>输入进程PID‒>输入nice值nice和renice命令:
nice [选项] <命令> [参数]
renice -n 优先级值 -p 进程编号PID
系统调用:getpriority,setpriority
补充概念-竞争、独立、并行、并发竞争性:系统进程数目众多,CPU资源只有少量,甚至一个。独立性:多进程运行,需共享各种资源,多进程运行期间互不干扰。并行:多个进程在多个CPU下分别同时运行。(查看cpu信息,cat /proc/cpuinfo)并发:多个进程在一个CPU下采用进程切换的方式,在一段时间内,让多个进程都得以推进。(重点)
二、 进程切换(重点)
1.死循环进程如何运行?
a.一个进程一旦运行,会把自己的代码跑完吗?
不会,有时间片,运行时间片时间就切换。
时间片:当代计算机都是分时操作系统,没有进程都有它合适的时间片(其实就是一个计数器)。时间片到达,进程就被操作系统从CPU中剥离下来。b.死循环程序,不会使系统卡死,不会一直占有CPU
结论:
1)寄存器就是CPU内部的临时空间
2)寄存器!=寄存器里面的数据
3.如何切换?
进程切换:最核心的就是 保存和恢复当前进程的硬件上下文的数据 ,即CPU内寄存器的内容。
切换时,进程要把自己的进程硬件上下文保存起来,保存到task_struct中,TSS:任务状态段。
补充:
实时操作系统:应用场景---新能源汽车的刹车分时操作系统:内核优先级抢占,进程切换。
Linux进程调度真实算法: