计算机操作系统-进程的调度算法
先声明下:
引入进程:为了描述和实现多个程序的并发执行,以改善资源利用率,即提高系统的吞吐量
引入线程:减少程序并发执行时系统所付出的额外开销,使操作系统具有更好的并发性
进程的调度是进程并发控制的关键环节之一。
为了使计算机系统内的多个进程协调,高效的执行,并且最大限度的提高系统的资源利用率(比如处理器,I/O,内存,寄存器等)。我们必须在系统的若干进程中选择出哪些进程先执行,哪些后执行,并且被选到的进程应该执行多长时间,何时进行进程切换,何时让新进程获得处理机等操作。
为了解决以上问题,我们需要一个好的调度算法,来满足计算机系统的要求。
该算法需要满足以下条件:
1、防止进程长期不能获得调度
2、尽量提高处理机的利用率
3、提高系统的吞吐量
4、尽量减少进程的响应时间
注释:
系统的吞吐量:单位时间内系统执行的作业数,常用来评价系统的性能
按照调度的层次,分为长程调度,中程调度,短程调度以及I/O调度。
长程调度:它为被调度作业或用户程序创建进程,分配必要的系统资源,并将新创建的进程差劲就绪队列,等待短程调度和中程调度。
短程调度:决定就绪队列中哪个进程将获得处理机
中程调度:它是对换功能的一部分,当内存不足时,换出一个进程到外存;内存充足,换入一个进程进来
下面介绍几种经典的调度算法
1、时间片轮转调度法
系统给每个就绪的进程分配一个时间片,当某就绪进程获得主机时,允许它执行一个时间片的时间。若进程未执行完,强行剥夺其处理器使用权,将该进程插入到就绪队列的队尾。
适用:分时系统及事物处理系统
合理的时间片:能让80%左右的进程在一个时间片内完成
对于短的,计算性的进程有利,但不适合i/o型的进程
改进方法:将i/o阻塞事件的进程单独组织一个就绪队列
2、先来先服务(FCFS)
先来的进程先执行,并且不会被剥夺处理器的使用权,一直等进程执行完,再执行下一个
3、基于优先级的调度算法
为每个进程定义一个优先级,优先级越高,则先处理。
优先级的确定由:进程完成功能的重要性,急迫性,均衡系统资源的使用等等
可以设置为:静态优先级和动态优先级
动态优先级的两种调度算法:
1、剩余时间最短者优先
2、响应比高者优先
4、短进程优先
该算法 从就绪队列中选出下一个“CPU执行期最短”的进程,为之分配处理机。
该算法虽可获得较好的调度性能,但难以准确地知道下一个CPU执行期,而只能根据每一个进程的执行历史来预测。
还没有评论,来说两句吧...