您的位置:首页 > 其它

调度

2016-04-22 13:29 211 查看
1. 调度的基本概念

在多道程序系统中,进程的数量常常多于处理机的个数,进程争用处理机的情况就在所难免。

处理机调度是对处理机进行分配,就是从就绪队列中,按照一定的算法(公平、高效)选择一个进程并将处理机分配给它运行,以实现进程并发的执行。

处理机调度是多道程序操作系统的基础,是操作系统设计的核心问题。

2. 调度的层次

一个作业从提交开始到完成,一般要经历三级调度:

1)作业调度。又称高级调度,其主要任务是按一定的原则将外存上处于后备状态的作业中挑选一个(或多个)作业,给它(们)分配内存、输入/输出

设备等必要的资源,并建立相应的进程,使得他们获得竞争处理机的权利。

简而言之,就是内存与辅存(外存)之间的调度。对于每个作业只调入一次,调出一次。

多道批处理系统中大多配有作业调度,而其他系统中通常不需要配置作业调度。作业调度的执行频率较低,通常为几分钟一次。

2)内存调度。又称中级调度。引入中级调度是为了提高内存利用率和系统吞吐量。

所以应该将那些暂时不能运行的进程,调至外存等待,把此时的进程状态称为挂起状态。(挂起+阻塞)-> 外存阻塞

当处于挂起状态(外存)的进程具备运行的条件(外存就绪)并且内存又稍有空闲时,由内存调度来决定,将外存上那些已具备运行条件的挂起进程,

重新调入内存修改其状态为就绪状态(内存就绪)。在就绪队列上等待。

3)进程调度。又称为低级调度,其主要任务是按照某种方法和策略从就绪队列中选取一个进程,将处理机分配给它。

进程调度是操作系统中最基本的一种调度,在一般操作系统中都必须配置进程调度。进程调度的频率很高,一般几十毫秒一次。

3. 三级调度的联系

---- 作业调度从外存的后备队列中选择一批作业进入内存,为它们建立进程,这些进程被送入就绪队列。

---- 进程调度从就绪队列中选出一个进程,并把其状态改为运行状态,CPU开始处理它。

---- 中级调度是为了提高内存的利用率,系统将那些暂时不能运行的进程挂起(移至外存),当内存空间宽松时,通过中级调度选择具备运行条件

的进程,将其唤醒。

1)作业调度为进程活动做准备,进程调度使进程正常活动起来,中级调度将暂时不能运行的进程挂起,中级调度处于作业调度和进程调度之间。

2)作业调度次数少,中级调度次数略多,进程调度频率最高。

3)进程调度是最基本的,不可或缺的。

4. 进程调度的时机、切换与过程

进程调度切换程序操作系统内核程序

当请求调度的事件发生后,才可能会运行进程调度程序,当调度了新的就绪进程后,才会去进行进程间的切换。理论上这三件事情应该顺序执行,

但在实际设计中,在操作系统内核程序运行时,如果某时发生了引起进程调度的因素,并不一定能够马上进行调度与切换。

现代操作系统中,不能进行进程的调度与切换的情况有以下几种情况。

-- 1) 在处理中断的过程

        中断处理过程复杂,在实现上很难做到进程切换,而且中断处理是系统工作的一部分,逻辑上不属于某一进程,不应被剥夺处理机资源。

-- 2) 进程在操作系统内核程序临界区

        进入临界区后,需要独占式地访问共享数据,理论上必须加锁,以防止其他并行程序进入。

        在解锁前不应切换到其他进程运行,以加快该共享数据的释放。

-- 3) 其他需要完全屏蔽中断的原子操作过程中

        如加锁、解锁、中断现场保护、恢复等原子操作。在原子过程中,连中断都要屏蔽,更不应该进行进程调度与切换

        如果在上述过程中发生了引起调度的条件,并不能马上进行调度和切换,

        应置系统的请求调度标志,直到上述过程结束后才进行相应的调度与切换。

=========================================================================================================

----- 应该进行进程调度与切换的情况有

---1) 当发生引起调度条件,且当前进程无法继续运行(阻塞)下去时,可以马上进行调度与切换。

        如果操作系统只在这种情况下进行进程调度,就是非剥夺调度

---2) 当中断处理结束或自陷处理结束后,返回被中断进程的用户态程序执行现场前,若置上请求调度标志,即可马上进行进程调度与切换。

        如果操作系统支持这种情况下的运行调度程序,就实现了剥夺方式的调度

-----  进程切换往往在调度完成后立刻发生,它要求保存原进程当前切换点的现场信息,恢复被调度进程的现场信息。

-----  现场切换时,操作系统内核将原(以前)进程的现场信息推入到当前进程的内核堆栈来保存它们,并更新堆栈指针。

-----  内核完成从新进程的内核栈中装入新进程的现场信息、更新当前运行进程空间指针、重设PC寄存器等相关工作之后,开始运行新的进程。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: