计算机操作系统-进程的调度算法

先声明下:

      引入进程:为了描述和实现多个程序的并发执行,以改善资源利用率,即提高系统的吞吐量

     引入线程:减少程序并发执行时系统所付出的额外开销,使操作系统具有更好的并发性


进程的调度是进程并发控制的关键环节之一。

为了使计算机系统内的多个进程协调,高效的执行,并且最大限度的提高系统的资源利用率(比如处理器,I/O,内存,寄存器等)。我们必须在系统的若干进程中选择出哪些进程先执行,哪些后执行,并且被选到的进程应该执行多长时间,何时进行进程切换,何时让新进程获得处理机等操作。


为了解决以上问题,我们需要一个好的调度算法,来满足计算机系统的要求。


该算法需要满足以下条件:

1、防止进程长期不能获得调度

2、尽量提高处理机的利用率

3、提高系统的吞吐量

4、尽量减少进程的响应时间

注释:

系统的吞吐量:单位时间内系统执行的作业数,常用来评价系统的性能


按照调度的层次,分为长程调度,中程调度,短程调度以及I/O调度。

长程调度:它为被调度作业或用户程序创建进程,分配必要的系统资源,并将新创建的进程差劲就绪队列,等待短程调度和中程调度。

短程调度:决定就绪队列中哪个进程将获得处理机

中程调度:它是对换功能的一部分,当内存不足时,换出一个进程到外存;内存充足,换入一个进程进来


下面介绍几种经典的调度算法

1、时间片轮转调度法

系统给每个就绪的进程分配一个时间片,当某就绪进程获得主机时,允许它执行一个时间片的时间。若进程未执行完,强行剥夺其处理器使用权,将该进程插入到就绪队列的队尾。

适用:分时系统及事物处理系统

合理的时间片:能让80%左右的进程在一个时间片内完成

对于短的,计算性的进程有利,但不适合i/o型的进程

改进方法:将i/o阻塞事件的进程单独组织一个就绪队列


2、先来先服务(FCFS)

先来的进程先执行,并且不会被剥夺处理器的使用权,一直等进程执行完,再执行下一个


3、基于优先级的调度算法

为每个进程定义一个优先级,优先级越高,则先处理。

优先级的确定由:进程完成功能的重要性,急迫性,均衡系统资源的使用等等

可以设置为:静态优先级和动态优先级

动态优先级的两种调度算法:

1、剩余时间最短者优先

2、响应比高者优先


4、短进程优先

该算法 从就绪队列中选出下一个“CPU执行期最短”的进程,为之分配处理机
该算法虽可获得较好的调度性能,但难以准确地知道下一个CPU执行期,而只能根据每一个进程的执行历史来预测。











猜你喜欢

转载自blog.csdn.net/sinat_31608641/article/details/73751354