看到有人问我,让我讲下进程的调度,接下来我们就好好的来讲一下。
我们都知道,操作系统中都安装着好多好多的程序,我们为什么称一些可执行的文件为程序而不是进程呢?这就是程序和进程的区别了:程序是指令、数据等的文件集合,此时他们是存在于硬盘上的,当你双击启动它们的时候,就加载到内存中,并按指令开始执行起来,这才被称之为进程,所以说,进程是程序的运行实例。
那会有人说,进程是不是计算机的基本运行单位?可以说是,也可以说不是,为什么这样说呢?那要根据操作系统而言,如果是面向进程设计的系统(早期的操作系统)那进程就是计算机的基本运行单位,而在现如今的面向线程设计的操作系统,线程才是,进程是做为线程的载体而存在。
进程一共存在有五个状态:创建、运行、等待、就绪以及结束。
当同时有多个进程运行时,而仅有一个CPU在工作,那这就需要调度了,其实进程调度就是分配进程工作所需的资源以及执行的时间。
内核如何调度进程呢?这就需要调度算法了,调度算法从大的方面来说分为两类,一类是抢占式,一类是协作式。抢占式是内核决定进程如何调度以及分配;而协作式是当前的进程会主动放弃执行指令,下一个进程从而进入执行指令。
每一个操作系统中的调度算法也都不一样,这里也就不细细的分析算法了,上网搜进程调度算法,会有一大堆,你感兴趣的话可以好好的看下。其实在你做内核的时候,你可以设计一个简单高效的算法实现即可。
如果此篇文章对您有所帮助,请多多支持哦!您的支持是我一直写下去的动力!