进程调度机制

    进程切换的代价是比较高的:首先必须从用户态切换到内核态,然后保存当前进程的状态以便以后重新装载,接着通过调度程序(scheduler)选定一个新进程,之后将新进程的内存映像重新装入,最后新进程开始运行。可见,选择一个好的进程调度算法(scheduling algorithm)非常重要。通常我们将进程划分两类:I/O密集型(IO-bound)和计算密集型(computer-bound),更多的进程倾向为I/O-bound,这是因为CPU的技术进步速度远快于磁盘。

何时调度:
(1)
在创建一个新进程之后,需要决定是运行父进程还是运行子进程。
(2)
在一个进程退出时必须做出调度决策,从就绪进程队列中选择一个进程运行。
(3)
当一个进程被阻塞在I/O或信号量或其他原因时,必须选择另外一个进程运行。
(4)
在一个I/O中断发生时,必须做出调度决策。如果中断来自I/O设备,当该设备完成工作后,被阻塞等待该I/O的进程就可以成为就绪进程,等待调度。

根据如何处理时钟中断,可以把调度算法分为两类:
(1)
抢占式:进程运行某个固定时段的最大值,在该时刻结束时被挂起,并由调度程序挑选另一个进程运行(根据优先级)。
(2)
非抢占式:进程运行直至被阻塞(阻塞在I/O上或等待另一个进程),或者直到该进程自动释放CPU

在不同类型的系统中,调度策略也不相同,下面介绍三种环境下的调度机制:

1 批处理系统中的调度

批处理系统主要应用商业领域或科研单位等大型机构,批处理系统的三个主要指标为:吞吐量(单位时间完成的作业数量);周转时间(平均完成每个作业所需的时间);CPU利用率。如下面所示,假如有4个作业需要处理,每个作业需要的CPU单位时间标记在括号里,这两种调度方法的吞吐量是一样的,都需要20CPU单位时间。但周转时间不一样,第一个的周转时间为(8+12+16+20)/4=14;第二个的周转时间为(4+8+12+20)/4=11

----A(8)-----B(4)-----C(4)-----D(4)----- 

----D(4)-----B(4)-----C(4)-----A(8)-----


(1)
先来先服务(非抢占式):使用一个队列记录所有就绪进程,从队列头部选择一个要运行的进程;要添加一个新的作业或阻塞一个进程,只要把该作业或进程追加到队尾即可。先来先服务对于I/O-bond进程来说,CPU利用率很低。
(2)
最短作业优先(非抢占式):如果各个作业的CPU时间是可预期的,将进程按照它们各自所需要的CPU时间排序,优先执行占用CPU时间短的作业,以达到最短的作业周转时间。
(3)
最短剩余时间优先(抢占式):最短作业优先的抢占式版本,调度程序总是选择剩余时间最短的那个进程运行。当然,有关的运行时间必须提前掌握。

2 交互式系统中的调度

交互式系统在个人计算机、服务器等系统中比较常见,它对响应时间和均衡性要求比较高。
(1)
轮转调度:每个进程被分配一个时间段,称为时间片(quantum),即允许该进程在该时间段中运行。如果在时间片结束时刻该进程还在运行,则将剥夺CPU并分配给另一个进程。如果该进程在时间片结束前阻塞或结束,则CPU立即切换。注意:时间片设置太短会导致过多的进程切换,降低CPU效率;而设得太长又可能引起对短的交互请求的响应时间变长。
(2)
优先级调度:轮转调度隐含一个假设,即所有进程同等重要。而优先级调度给每个进程赋予一个优先级,并允许优先级高的进程先运行。为了防止高优先级进程无休止地运行下去,调度程序可以在每个时钟中断降低当前进程的优先级。例如I/O-bound进程可以被赋予较高的优先级,以改善对用户的交互性。
(3)
多级队列:
(4)
最短进程优先:从当前进程中选择需要CPU时间最短的进程运行,以获得最短的响应时间。不过,这里需要某种算法来推测各个进程的运行时间。
(5)
保证调度:假设每个进程需要的CPU时间是可预期的,系统跟踪各个进程自创建以来已使用的CPU时间,然后计算出各个进程真正获得的CPU时间和应获得的CPU时间之比,调度程序优先让这个比率值比较低的进程运行。
(6)
彩票调度:系统向将进程发放彩票,调度程序随机抽出一张彩票,拥有该彩票的进程获得资源。各个进程拥有的彩票份额与它们获得的CPU时间大致成正比。

(7) 公平分享调度:考虑进程的拥有者,做到让不同用户的进程获得大致相等的CPU时间。

3 实时系统中的调度
实时系统是一种时间起着主导作用的系统,它对截止时间的要求比较高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值