批处理系统中采用的调度算法

重要指标(吞吐量,周转时间,CPU利用率,公平平衡)

  • 非抢占式的先来先服务算法(FCFS):按照进程就绪的先后顺序使用CPU 
    • 特点:公平,实现简单,但是长进程后面的短进程需要等待很长时间,不利于用户体验。
  • 非抢占式的最短作业优先(SJF):具有最短完成时间的进程优先执行

  • 最短剩余时间优先(SRTN):SJF抢占式版本,即当一个新就绪的进程比当前运行进程具有更短完成时间时,系统抢占当前进程,选择新就绪的进程执行。

    • 短作业优先调度算法特点:改善短作业的周转时间,但如果源源不断有短任务到来,可能使长的任务长时间得不到运行,产生饥饿现象。
  • 最高响应比优先算法(HRRN):是一个综合算法,调度时,首先计算每个进程的响应比R,之后总是选择R最高的进程执行。

    • 响应比R=(等待时间+处理时间)/处理时间

交互系统中采用的调度算法:

重要指标(响应时间,公平平衡)

  • 时间片轮转调度算法: 每个进程被分配一个时间片,允许该进程在该时间段运行,如果在时间片结束时该进程还在运行,则剥夺CPU并分配给另一个进程,如果该进程在时间片结束前阻塞或结束,则CPU立即进行切换。

    • 当时间片选择太长,其降级为先来先服务算法,引起对短的交互请求响应时间长
    • 当时间片选择太短,会导致频繁的进程切换,浪费CPU时间。
    • 通常选择为20ms~50ms.
    • 对进程表中不同进程的大小差异较大的有利,而对进程都是相同大小的不利。
  • 虚拟轮转法:主要基于时间片轮转法进行改进,解决在CPU调度中对于I/O密集型进程的不友好。其设置了一个辅助队列,对于I/O型进程执行完一个时间片之后,则进入辅助队列,CPU调度时总是先检查辅助队列是否为空,如果不为空总是优先调度辅助队列里的进程,直到为空,才调度就绪队列的进程。

这里写图片描述

  • 最高优先级调度算法:选择优先级最高的进程优先执行。

    • 优先级可以静态不变,也可以动态调整
    • 优先数决定优先级
    • 就绪队列可以按照优先级组织
    • 实现简单,但不公平,可能导致优先级低的进程产生饥饿现象。
    • 可能产生优先级反转问题(基于优先级的抢占式算法),即一个低优先级进程持有一个高优先级进程所需要的资源,使得高优先级进程等待低优先级进程运行。
  • 多级反馈队列调度算法:

    • 设置多个就绪队列,并为各个队列赋予不同的优先级。第一个队列的优先级最高,依次递减优先级。
    • 对于各个队列进程执行时间片的大小也不同,优先级越高的队列,分配到的时间片越少
    • 当第一级队列为空时,再第二级队列进行调度,依次类推,各级队列按照时间片轮转方式进行调度。
    • 当一个新进程创建后,首先把它放入第一队列的末尾。按照FCFS原则排队等待调度。当轮到该进程执行时,如它在该时间片完成,便可准备撤离系统,如果它在一个时间片结束时尚未完成,则调度程序便将该进程转入第二队列的末尾,再同样地按照FCFS原则等待调度执行。依次类推。

这里写图片描述

各种调度算法比较:

这里写图片描述

转载于:https://www.cnblogs.com/lightmare/p/10398871.html

1. 课程设计的目的 操作系统课程的一个非常重要的环节是培养计算机专业学生的系统程序设计能力。通过操作系统课程设计,可以培养程序设计的方法和技巧,提高编制清晰、合理、可读性好的系统程序的能力,加深对操作系统课程的理解。使我们更好地掌握操作系统的基本概念、基本原理、及基本功能,具有分析实际操作系统、设计、构造和开发现代操作系统的基本能力。 本次课程设计要求用高级语言编写和调试一个单道批处理系统的作业调度的模拟程序,了解作业调度操作系统的作用,以加深对作业调度算法的理解 2. 课程设计的开发语言 C语言 3. 功能描述 在批处理系统,作业进入系统后,是先驻留在外存上的,因此需要有作业调度的过程,以便将它们分批装入内存。作业调度用于决定把外存上处于后备队列的哪些作业调入内存,并为他们创建进程、分配必要的资源,然后,再将新创建的进程排在就绪队列上,准备执行。 应将哪些作业从外存调入内存,取决于所采用调度算法。最简单的是先来先服务调度算法,这是指讲最早进度外存的作业最先调入内存;较常用的一种是短作业优先电镀算法,这是将外存上最短的作业最先调入内存;此外,还有基于响应比高者优先的调度算法,根据作业的响应时间和要求运行时间可计算出响应比。 4. 方案论证 4.1概要设计 根据功能描述,单道批处理程序作业调度的模拟程序要求实现如下功能:建立作业、选择作业、运行作业、计算作业周转时间和带权周转时间,以及这组作业的平均周转时间和带权平均周转时间、显示运行结果,退出程序。各模块的功能介绍如下: (1)建立作业:输入作业数,建立一组作业,并对所建立的这组作业进行初始化,用以模拟作业调度。初始化的内容包括作业名,作业要求运行的时间。 (2)选择作业:程序通过先来先服务调度算法、短作业优先调度算法和高响应比优先调度算法对建立的一组作业进行选择,决定把哪个作业从外存调入内存。 (3)运行作业:根据初始化设置的作业要求运行时间来模拟作业的运行。 (4)计算:计算作业周转时间和带权周转时间,以及这组作业的平均周转时间和带权平均周转时间。 (5)显示结果:将计算所得的结果输出。 (6)退出程序:当实验结束,不再需要模拟作业调度的时候,用来退出程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值