调度:
-
高级调度(作业调度):面向作业而言,由于操作系统的内存有限,因此无法所有的任务都加载进内存当中,因此只能够将部分作业或者说是任务加载进内存当中,然后创建进程。
(注意:上述的作业,其实指的就是任务,一段可执行的文件,这些作业还未被创建成进程)
-
中级调度(内存调度):由于系统的内存有限,因此有可能会将一些处于内存当中的进程由内存当中放入外存当中,当CPU需要执行的时候再从外存当中将该进程的信息从外存当中加载进内存当中。被放入外存当中的进程会处于挂起的状态,由挂起队列连接这些被挂起的进程。一般情况下,拥有就绪挂起队列、阻塞挂起队列。
-
低级调度(进程调度):由于CPU资源有限,从内存当中的就绪队列当中选取一个进程被CPU进行执行。
进程调度:
临界资源:就是同一时间点上只能够被一个进程访问的资源。各个进程需要互斥的访问临界资源。
临界区:就是指访问临界资源的代码块。
进程切换:将原来的进程的上下文储存进PCB当中,将新进程的上下文加载进CPU当中
狭义的进程调度就是指从就绪队列当中选取出一个进程出来
广义的进程调度则包含了从就绪队列当中选出一个进程以及线程切换两个步骤。
调度器:
一段实现进程调度的代码块。
调度器作用的时间点:
-
创建了新的进程,该进程优先级非常高
-
时间中断
-
正在运行的进程运行结束、发生IO阻塞中断
前面两点在非抢占式操作系统中是不会发生的,因为非抢占式操作系统当中只能是当前进程主动放弃CPU的使用权。
在没有进程需要执行的时候,CPU一般会执行一个低级进程:闲逛进程。