注意:本文引用事例,请不要践行!
首先来了解以下,何为进程调度?
进程调度,也就是通过“并行”和“并发”的方式,让计算机可以“同时”执行多个进程;
那么,何为进程、何为并行执行、何为并发执行,怎么理解打引号的 同时 ?
进程,也叫“任务”,实际上就是一个跑起来的程序,例如:QQ.exe文件叫做“可执行程序”,存储在硬盘上,而当你双击这个文件,操作系统就会把这个文件的核心数据加载到内存中去,同时在系统中生成进程,在任务管理器中就可以看到下图:
并行执行,就是说每个CPU核心上,都可以独立的运行一个进程,而多个CUP就是独立运行多个进程;
并发执行,一个CPU核心,先运行进程1,再运行进程2,再运行...这些进程只要再微观上切换的足够快,宏观上看起来就好像是多个进程同时运行一样,所以在理解同时两字为什么打引号,想必也就很清楚了;
进程调度的基本过程是怎样的?了解以下几个属性,也就会很清楚了~
1.进程状态
分为两种阻塞状态进程和就绪状态进程;
打个不太好但是很生动形象的比方(请各位不要践行!),假如一个男生同时谈了三个女朋友,那么他就需要安排好一个时间表,前提是每个女朋友需要随叫随到(就绪状态进程),但是有的时候某个女朋友,也会有特殊状况,不能随叫随到(堵塞状态),因此这个男生就需要规划好时间表...言归正传,阻塞状态进程,就无法被调度到CPU上执行,就绪住状态的进程,才能上CPU执行;
2.进程优先级
继续接着上一个例子~这个男生会根据自己的喜爱程度,给自己喜欢的多安排一些时间(优先),给不喜欢的就少排一点时间~
也就是说系统调度的时候,就会根据优先级,来给进程安排时间,同时,相对的,创建进程的时候,可以通过一些系统调用来干涉优先级;
3.进程上下文
进程在CPU上执行了一段时间,突然需要切换到别的进程上,这时候就需要对当前进程运行的结果进行保存(存档),然后再切换到别的进程上,这样,下次再轮到他的时候,就能恢复到当时间断的进程上了(读档);
还是刚刚的例子,这个男生和女友A在一起商量好,几天后要去夏威夷旅游,没一会,女友B发消息说,我马上要过生日了,你帮我挑一件礼物吧~ 过了几天,女友B发消息问道说,你准备的怎么样了,这个男生回答道:“护照早就办好了,明天就带你出发~”;这一说漏,八成会带来灾难性的后果~所以,这个男生之后就长记性了,对于这群女友,要干的每一件事情都拿个小本本记录下来(存档),需要的时候,在拿起来看看(读档);
4.进程记账信息
每个进程在CPU上执行了多久,都会被统计信息,执行进程的时候,虽然有优先级,但是还是不希望让有的进程完全捞不着CPU;
通过这个男孩纸定制的时间表,就检查以下,是不是给哪个女朋友安排的时间太少了,如果太少了,就给这个女孩纸多安排一点时间,虽然啊,并不是很喜欢这个女孩纸,但是也不能完全不给她时间,如果不安排时间,过了一段时间之后,这个女孩纸可能就心灰意冷了,就不愿意tian了,就得适当给点甜头~;