Os学习笔记之处理机调度

     首先搞清楚两个概念:作业(用户提交的任务)和进程(作业在处理过程中分成的活动单位)。作业调度是指选择哪一个作业分配资源建立作业对应的进程。

进程调度则确定进程何时取得处理机。

     1.作业调度

          1.1 作业状态

                 提交,后备,执行和完成状态。

          1.2 作业调度功能

                确定数据结构(分配JCB作业控制块)、确定调度算法(由作业调度程序完成)、分配资源(由进程调度程序完成)、善后处理

               注:作业调度程序只保证被选中的作业具有使用处理机的资格,而具体的分配由进程调度程序完成

          1.3 调度性能的衡量

                 平均周转时间:周转时间的平均值

                 平均带权周转时间:带权周转时间的平均值。周转时间和实际执行时间的平均值

          1.4 作业调度算法

                 1) 先来先调度

                 2)短作业优先调度

                 3)响应比高者优先  (响应比=1+作业等待时间/执行时间)

                 4)优先调度算法 按照优先数

      2.进程调度

                  进程调度可细分为调度和分派两个功能,调度负责将进程插入现有队列并且按一定原则保持队列结构。分派程序是将进程从就绪队列中移除并且

             建立他的执行的机器状态。

          2.1 进程调度的功能

                1)记录和保持系统中所有进程的有关情况和状态特征(通过登记PCB控制块的信息)

                    进程进入就绪队列的排序原则体现了调度算法

                2)决定分配策略

                     由队列排序原则体现

                3)实施处理机的分配和回收

          2.2 调度方式

                抢占式和非剥夺

          2.3  CPU受限制的进程和I/O受限制的进程

                 CPU受限制的进程多为计算量较大的进程,I/O消耗性的进程则为和用户互交性比较高的进程

          2.4 进程优先数调度算法

                Linux实现了基于动态优先级的方法,一开始,每个进程被设置默认的优先级(Nice值)。如果运行过程中在I/O等待上花费的时间多,说明是

                I/O消耗型的进程,则优先级会被动态提高。

                时间片是一个轮转调度中一个进程所获得的占用处理机 的时间片段,在一个进程的 时间片变为0时,其处理机的占用权会被抢占。

                ※下面简单介绍下Linux中优先数和时间片的计算:

                   调度程序中最基本的数据结构是运行队列。可执行队列是给定处理器上的可执行进程的链表,每个处理器一个。每个运行队列有两个优先级数

                   组。

                   一个过期的一个活跃的,在活跃的优先级数组中的进程的时间片全部用尽之后,就被接入过期的优先级数组中,当活跃的优先级数组中已经为空

                   的时候,就直接把活跃的优先级数组和过期的优先级数组交换。这样Linux的调度核心就是O(1)级的

                      在动态计算进程的 优先级的时候,Linux通过一个关于静态优先级和进程交互性的函数关系计算而来。交互性强的 程序会获得较多的优先级

                   奖励,而交互性弱的程序优先级则会比初始优先级低。

                   在Linux中,通过sleep_avg来记录进程的休眠和执行的时间,如果一个进程休眠时间长,sleep_avg↑,执行则↓。所以如果一个进程占用处

                   理 器时间大幅上升,则sleep_avg的值下降,要获得更大的优先级。

          2.5 循环轮转调度

posted @ 2010-05-07 19:02  明之道  阅读(463)  评论(1编辑  收藏  举报