进程调度
什么是进程调度
像我们现在windows系统就是多任务的,同一时刻很多进程都在运行,同时运行着,画画板,qq音乐,idea…
我的系统上任务的数量(进程的数量)有几十个,上百个,但是我的CPU
核数只有几个,如何做到这件事情就是所谓的“进程调度”。
并行与并发
为了完成进程调度就必须要了解并行与并发的概念
-
并行:微观上,两个CPU核心同时执行两个代码
-
并发:微观上,一个CPU核心,先执行一会任务一,在执行一会任务2…再执行一会任务1
-
两者之间的区分:
并发与并行都是操作系统在微观上所控制的,我们只能再微观上进行区分,宏观上区分不了
在我们实际操作中基本上
进程的主要属性(主要为了完成进程调度)
-
状态
这个状态就描述了当前这个进程接下来应该怎么调度就绪状态:随时可以去CPU上执行
阻塞状态/睡眠状态:暂时不可以去CPU上执行
Linux中的进程状态还有很多其他的…
-
优先级
先给谁分配时间,后给谁分配时间,以及给谁分的多给谁分的少 -
记账信息
统计了每个进程,都分别被执行了多久,分别执行了那些命令
分别都排队等了多久了…
给进程调度提供一个执导依据的 -
上下文
就表示上次调出CPU的时候,当时程序的执行状态
下次进程上CPU,就可以恢复之前的状态,然后继续往下执行
进程被调出CPU之前,要先把CPU中的所有的寄存器中的数据给保存到内存中(PCB的上下文字中)相当于存档了
下次进程再被调度上CPU的时候,就可以从刚才的内存中,恢复这些数据到内存中,相当于读档了。
存档+读档~~ 存档村的游戏信息就成为"上下文"
总结
进程调度其实就是操作系统在考虑如何给各个进程分配资源。