1、我们常说的进程是什么?
进程(Process)是计算机中的程序关于某数据集合上的运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。
进程是程序的基本执的实体
2、进程状态
就绪状态
进程已获得除处理器外的所需资源,等待分配处理器资源;只要分配了处理器进程就可执行
运行状态
进程占用处理器资源;处于此状态的进程的数目小于等于处理器的数目
阻塞状态
由于进程等待某种条件(如I/O操作或进程同步),在条件满足之前无法继续执行。该事件发生前即使把处理器资源分配给该进程,也无法运行
3、进程状态间的转变
以微信支付为例子
运行态->阻塞态
假如说我们微信支付的时候,是要请求微信的接口的,请求微信的接口之后,我们要等待微信那边的返回,这时候我们就是从运行态->阻塞态
阻塞态->就绪态
微信返回结果返回之后,我们就从阻塞态->就绪态,等待进程调度
就绪态->运行态
进程调度后,我们就从就绪态->运行态,继续处理微信回调后的逻辑
运行态->就绪态
假如说我们一个任务实际是需要10s才能运行完毕,然而进程分配的处理时间实际只有5s,那么在5s之后,这个没运行完的任务就会重新进入就绪态,等待下次的进程再次调度
4、调度器算法
FIFS先来先服务调度算法
特点:算法简单,但是效率低;有利于长作业,不利于短作业;有利于CPU繁忙型作业而不利于IO繁忙型作业
短作业优先调度算法
短作业(进程)优先调度算法是指对短作业祸端进程优先调度的算法。短作业优先调度算法是从后备队列中选择一个或若干个估计运算时间最短的作业,将他们呢掉入内存运行。
SJF调度算法的缺点:
该算法对长作业不理。
该算法完全未考虑作业的紧迫程度
由于作业的长短只根据用户所提供的估计执行时间而定的,而用户有可能会有意或无意的缩短其作业的估计运行时间,致使该算法不一定能真正做到算作业优先调度。
注意: SJF调度算法的平均等待时间、平均周转时间最少。
多级反馈队列调度算法
多级反馈队列调度算法主要是时间片轮转调度算法和优先级调度算法的综合和发展。通过动态调整进程优先级和时间片大小,多级反馈队列调度算法可以兼顾多方面的系统目标。
这图就很好的说明了从运行态->就绪态,按之前的例子,5s之后,任务没被执行完就被重新放到队列的末尾,等待进程调度,直到执行完为止一直重复这个流程