操作系统进程调度算法详解:FCFS与SJF_第1页
操作系统进程调度算法详解:FCFS与SJF_第2页
操作系统进程调度算法详解:FCFS与SJF_第3页
操作系统进程调度算法详解:FCFS与SJF_第4页
操作系统进程调度算法详解:FCFS与SJF_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

20XX/XX/XX操作系统进程调度算法详解:FCFS与SJF汇报人:XXXCONTENTS目录01

进程调度概述02

先来先服务(FCFS)算法03

最短作业优先(SJF)算法04

FCFS与SJF算法性能对比CONTENTS目录05

案例分析与计算06

算法适用场景与优化07

总结与展望01进程调度概述进程调度的核心作用CPU资源的分配与管理进程调度是操作系统的核心任务之一,其主要功能是决定在什么时候由哪个进程来占用CPU资源,以实现对CPU这一稀缺资源的合理分配与高效管理。系统性能的关键影响因素进程调度直接影响系统的吞吐量、响应时间、CPU利用率等关键性能指标,合理的调度策略能够显著提升系统整体运行效率和用户体验。多进程并发执行的协调者在多道程序环境下,多个进程同时竞争CPU资源,进程调度通过协调进程的执行顺序,确保各进程能够有序、公平地获得CPU执行权,实现并发执行。调度目标的平衡与优化进程调度需在公平性、高效性、响应时间、吞吐量等多个目标之间进行平衡与优化,不同的调度算法适用于不同的应用场景和需求。调度算法的评价指标

周转时间周转时间是指进程从提交到完成的总时间,计算公式为:周转时间=完成时间-到达时间。该指标反映了进程在系统中的总停留时间,是衡量调度算法效率的基本指标之一。

平均周转时间平均周转时间是所有进程周转时间的平均值,计算公式为:平均周转时间=(所有进程周转时间之和)/进程数。它综合反映了调度算法对所有进程整体的处理效率,数值越小越好。

带权周转时间带权周转时间是周转时间与进程服务时间的比值,计算公式为:带权周转时间=周转时间/服务时间。该指标考虑了进程本身执行时间的长短,能更客观地评价不同服务时间进程的调度效果。

平均带权周转时间平均带权周转时间是所有进程带权周转时间的平均值,计算公式为:平均带权周转时间=(所有进程带权周转时间之和)/进程数。它比平均周转时间更能体现调度算法对短作业的优待程度,理想情况下应接近1。

等待时间等待时间是指进程在就绪队列中等待CPU的总时间,计算公式为:等待时间=周转时间-服务时间。等待时间直接影响用户的响应体验,调度算法应尽量减少进程的等待时间。

平均等待时间平均等待时间是所有进程等待时间的平均值,计算公式为:平均等待时间=(所有进程等待时间之和)/进程数。它是衡量调度算法公平性和效率的重要指标,平均等待时间越小,算法性能越优。常见调度算法分类按调度方式分类非抢占式调度:进程一旦获得CPU,将持续执行直至完成或阻塞,如FCFS、非抢占式SJF。抢占式调度:允许高优先级或更短进程中断当前运行进程,如抢占式SJF(SRTF)、时间片轮转。按调度依据分类基于到达时间:如FCFS,按进程到达就绪队列的先后顺序调度。基于服务时间:如SJF,优先选择预计服务时间最短的进程执行。基于优先级:为进程分配优先级,高优先级进程优先获得CPU。按适用场景分类批处理系统:FCFS、SJF适用于对响应时间要求不高,注重吞吐量的场景。交互式系统:时间片轮转、优先级调度更关注用户响应速度。实时系统:需专用实时调度算法,确保关键任务按时完成。02先来先服务(FCFS)算法FCFS算法基本原理核心思想FCFS(First-Come,First-Served)算法是最简单的调度算法,其核心思想是按照进程到达就绪队列的先后顺序进行调度,即先到达的进程优先获得CPU执行权,如同排队购票,先到先服务。工作流程系统维护一个就绪队列,新进程到达时加入队尾。当CPU空闲时,调度程序从队首取出进程执行,该进程将一直运行直到完成或阻塞,之后再调度队列中的下一个进程。主要特点FCFS算法属于非抢占式调度,一旦进程开始执行,便会持续占用CPU直到结束,不会被其他进程中断。其实现简单,仅需维护一个FIFO(先进先出)队列即可。FCFS执行流程与特点

FCFS核心执行流程FCFS算法严格按照进程到达就绪队列的先后顺序进行调度。当CPU空闲时,从就绪队列队首选取最早到达的进程执行,该进程将持续占用CPU直至完成或阻塞,后续进程依次等待。

关键特点:非抢占式与实现简单FCFS属于非抢占式调度,一旦进程开始执行便不会被中断。其实现仅需维护一个FIFO队列,无需复杂计算,系统开销极低,是最直观的调度策略。

显著缺陷:护航效应当长进程先到达时,会阻塞后续短进程,导致短进程等待时间显著增加,系统平均周转时间延长,此现象称为“护航效应”。例如,长进程(120秒)后跟随短进程(3秒、2秒),短进程需等待120秒和123秒才能执行。

适用场景适用于长作业较多、对响应时间要求不高的批处理系统,因其公平性较好,所有进程均能按顺序获得执行机会,无饥饿问题。FCFS算法的优缺点分析FCFS算法的核心优点

实现简单直观,仅需维护FIFO队列,系统开销小;保证调度公平性,所有进程按到达顺序执行,不会出现饥饿现象。FCFS算法的主要缺点

平均等待时间较长,尤其当长短进程混用时;存在"护航效应",长进程会阻塞后续短进程,导致系统响应性能恶化,交互式场景体验差。FCFS算法的适用场景

适用于长作业较多、对响应时间要求不高的批处理系统,或负载较轻、进程到达间隔均匀的场景。FCFS典型案例:护航效应01护航效应定义FCFS调度中,当一个长作业率先占据CPU时,后续大量短作业被迫长时间等待,导致系统平均周转时间显著增大,响应性能恶化的现象,称为“护航效应”(ConvoyEffect)。02案例场景描述服务器采用FCFS调度,任务队列包含:视频转码任务(120秒)、数据库查询任务(3秒)、API请求任务(2秒)。短任务需等待长任务完成后才能执行,用户反馈响应时间极差。03具体进程执行示例进程到达情况:P1(到达时间0,运行时间24)、P2(到达时间1,运行时间3)、P3(到达时间2,运行时间3)。按FCFS执行顺序为P1→P2→P3,P2等待23秒,P3等待25秒。04性能指标恶化数据上述示例中,平均周转时间为26,平均等待时间达16。长进程P1的存在显著增加了后续短进程的等待时间,体现了FCFS在短作业处理上的劣势。03最短作业优先(SJF)算法SJF算法基本原理

核心思想最短作业优先调度算法(SJF)的核心思想是:当CPU空闲时,从就绪队列中选择预计运行时间最短的进程优先执行,以达到最小化平均等待时间的目标。

算法分类SJF算法主要分为两种类型:非抢占式SJF和抢占式SJF(又称最短剩余时间优先,SRTF)。非抢占式SJF一旦进程开始执行,便会运行至完成或阻塞;抢占式SJF则允许新到达的、执行时间更短的进程抢占当前运行进程的CPU。

理论最优性由C.L.Liu等人在1973年严格证明,对于单处理器、非抢占、已知服务时间的静态作业集,SJF算法能使平均周转时间和平均带权周转时间达到全局最优。

实现前提SJF算法的有效实施依赖于对进程执行时间的准确预估。在实际系统中,通常采用指数平均法等基于历史数据的预测方法,如公式τₙ₊₁=α·tₙ+(1−α)·τₙ(其中tₙ为第n次实际运行时间,τₙ为预测值,α为权重因子)。SJF非抢占式与抢占式(SRTF)

01非抢占式SJF特点一旦进程获得CPU,将持续执行直至完成或阻塞,期间不被新到达的短进程打断。实现简单,但可能导致短进程等待长进程完成。

02抢占式SJF(SRTF)特点当新进程到达时,若其剩余执行时间短于当前运行进程的剩余时间,则立即抢占CPU。能进一步降低平均等待时间,但增加上下文切换开销。

03关键区别:调度触发时机非抢占式仅在当前进程结束/阻塞时调度;SRTF在新进程到达且剩余时间更短时触发抢占,动态响应更短作业。

04SRTF的最优性延伸作为SJF的抢占式变体,SRTF在理论上比非抢占式SJF具有更优的平均等待时间,尤其在短作业密集到达场景下优势显著。SJF算法的优缺点分析

理论最优性:最小化平均等待时间SJF算法在理论上可使平均等待时间达到全局最小,这是由C.L.Liu等人在1973年严格证明的结论,适用于单处理器、非抢占、已知服务时间的静态作业集。

提升系统吞吐量与响应速度优先调度短作业,能快速完成更多进程,有效提高系统吞吐量,同时降低短作业的等待时间,提升系统响应速度。

长作业饥饿风险若持续有新的短作业到达,长作业可能因一直得不到调度而无限期延迟执行,即出现“饥饿”现象,破坏调度公平性。

进程服务时间预估难题实际系统中无法准确预知进程的服务时间,需依赖历史数据预测(如指数平均法),但会引入额外开销与误差累积风险。SJF中的作业执行时间预测预测的必要性SJF算法需预知进程的服务时间,但实际中用户无法准确提供,操作系统也难以实时精确估算,因此需要通过预测方法获取。常用预测方法:指数平均法通过历史运行数据预测下次CPU执行长度,公式为:τₙ₊₁=α·tₙ+(1−α)·τₙ,其中tₙ为第n次实际运行时间,τₙ为预测值,α(0≤α≤1)为权重因子,控制最近和过去历史在预测中的权重。α值的影响α=0时,τₙ₊₁=τₙ,仅依赖过去历史;α=1时,τₙ₊₁=tₙ,仅依赖最近一次执行;α=1/2时,最近历史与过去历史权重相同,为常见取值。预测的挑战与误差预测依赖历史数据,若进程行为变化或初始值设置不当,易引入误差累积风险,可能导致调度失准,甚至性能劣于FCFS算法。SJF典型案例:长作业饥饿问题

01案例场景设定假设有一长作业P1(预计执行时间60ms,到达时间0ms),系统持续有短作业到达:P2(5ms,到达10ms)、P3(3ms,到达15ms)、P4(2ms,到达20ms)……,短作业不断抢占CPU。

02饥饿现象表现长作业P1将始终被新到达的短作业插队,导致其等待时间无限延长,无法获得CPU执行机会,出现“饥饿”状态。

03问题本质分析SJF算法仅以作业长度为调度依据,未考虑长作业的等待时间累积,当短作业持续到达时,长作业会被无限期延迟,破坏调度公平性。

04解决方案思路可引入“老化机制”,即随着长作业等待时间增加,动态提升其优先级(如每等待10ms,将其预计执行时间缩短1ms),最终使其优先级超过新到达的短作业。04FCFS与SJF算法性能对比平均周转时间对比

FCFS算法平均周转时间在典型测试用例(5个进程:A(0,8),B(1,4),C(2,9),D(3,5),E(4,2))中,FCFS算法的平均周转时间为13.2ms。

SJF算法平均周转时间针对上述相同测试用例,SJF算法的平均周转时间降至9.6ms,相比FCFS降幅达27.3%。

平均周转时间差异原因SJF通过优先调度短作业,减少了短作业的等待时间,使得系统整体平均周转时间显著降低,这符合其理论最优性特征。平均等待时间对比

FCFS算法平均等待时间FCFS算法由于按到达顺序调度,长进程会阻塞短进程,导致平均等待时间较长。例如,进程P1(0,24)、P2(1,3)、P3(2,3)的平均等待时间为16ms,体现了明显的"护航效应"。

SJF算法平均等待时间SJF算法优先调度短进程,能显著降低平均等待时间。以相同进程为例,采用非抢占式SJF调度,平均等待时间可降至约5.33ms,相比FCFS降幅达66.7%,验证了其理论最优性。

抢占式SJF(SRTF)进一步优化抢占式SJF(SRTF)在新短进程到达时抢占CPU,可进一步缩短平均等待时间。例如,进程P1(0,8)、P2(1,4)、P3(2,9)、P4(3,5)采用SRTF调度,平均等待时间为6.5ms,优于非抢占式SJF的7.75ms。平均带权周转时间对比FCFS算法的平均带权周转时间FCFS算法由于长作业可能阻塞短作业,导致短作业的带权周转时间显著增加。例如,在包含长作业和多个短作业的场景中,其平均带权周转时间通常较高,如参考案例中可达3.25。SJF算法的平均带权周转时间SJF算法通过优先调度短作业,能有效降低平均带权周转时间。在相同的测试案例中,SJF的平均带权周转时间可降至2.03,相比FCFS降幅明显,体现出对短作业的友好性。带权周转时间的意义带权周转时间(周转时间/服务时间)归一化衡量了进程的相对延迟,对短作业更为敏感。SJF算法在此指标上的优势,表明其能更好地提升短作业的响应效率和用户体验。公平性与效率的权衡

FCFS:公平优先的代表FCFS算法严格按照进程到达顺序调度,所有进程均有机会执行,不会出现饥饿现象,体现了较好的公平性。然而,其平均等待时间较长,尤其在长进程之后的短进程会因“护航效应”导致效率降低。

SJF:效率优先的选择SJF算法通过优先调度短进程,能显著降低平均等待时间和平均周转时间,理论上可达到最优效率。但长进程可能因持续有短进程到达而长期等待,存在“饥饿”风险,公平性不足。

实际系统中的平衡策略为兼顾公平与效率,实际系统常采用改进策略。例如,对SJF引入“老化”机制,随等待时间增加提升长进程优先级;或结合优先级调度,在保证关键任务响应的同时,避免低优先级进程饥饿。05案例分析与计算FCFS算法案例计算案例背景与参数假设有3个进程:P1(到达时间0,运行时间24)、P2(到达时间1,运行时间3)、P3(到达时间2,运行时间3)。按FCFS调度规则计算其性能指标。执行顺序与时间线执行顺序为P1→P2→P3。时间线:0-24(P1运行),24-27(P2运行),27-30(P3运行)。周转时间计算P1周转时间=24-0=24;P2=27-1=26;P3=30-2=28。平均周转时间=(24+26+28)/3=26。等待时间计算P1等待时间=24-24=0;P2=26-3=23;P3=28-3=25。平均等待时间=(0+23+25)/3=16。结果分析长进程P1导致短进程P2、P3等待时间长达23和25单位,体现FCFS的"护航效应",平均等待时间显著增加。SJF非抢占式案例计算

案例背景与参数假设有4个进程:P1(到达时间0,服务时间8)、P2(到达时间1,服务时间4)、P3(到达时间2,服务时间9)、P4(到达时间3,服务时间5)。

调度执行顺序按SJF非抢占规则,执行顺序为:P2(4ms)→P4(5ms)→P1(8ms)→P3(9ms)。

周转时间计算P1:完成时间17-到达时间0=17ms;P2:4-1=3ms;P3:26-2=24ms;P4:9-3=6ms。平均周转时间=(17+3+24+6)/4=12.5ms。

等待时间计算P1:17-8=9ms;P2:3-4=-1ms(取0);P3:24-9=15ms;P4:6-5=1ms。平均等待时间=(9+0+15+1)/4=6.25ms。SJF抢占式(SRTF)案例计算

案例背景与参数假设有4个进程:P1(到达时间0,执行时间8)、P2(到达时间1,执行时间4)、P3(到达时间2,执行时间9)、P4(到达时间3,执行时间5)。

执行流程与抢占点分析时间0:P1开始执行;时间1:P2到达(剩余7vs4),P1被抢占,P2执行;时间3:P4到达(剩余2vs5),P2继续;时间5:P2完成,就绪队列P4(5)、P1(7)、P3(9),P4执行;时间10:P4完成,就绪队列P1(7)、P3(9),P1执行;时间17:P1完成,P3执行至26完成。

性能指标计算各进程等待时间:P1(10-0-8=2)、P2(1-1=0)、P3(17-2-9=6)、P4(5-3-5=-3→0)。平均等待时间=(2+0+6+0)/4=2ms;平均周转时间=(17-0+5-1+26-2+10-3)/4=(17+4+24+7)/4=13ms。甘特图绘制方法

甘特图基本构成要素甘特图由时间轴(横轴)和进程标识(纵轴)组成,通过横向条形块直观展示进程的开始时间、执行时长和完成顺序,是调度算法执行过程的可视化工具。

FCFS甘特图绘制步骤1.按进程到达时间排序就绪队列;2.从第一个进程开始,依次绘制其执行时间段(开始时间=前一进程完成时间,长度=服务时间);3.标注各进程的完成时间节点。

SJF甘特图绘制步骤1.在当前时间点筛选已到达的就绪进程;2.选择服务时间最短的进程优先绘制;3.更新当前时间为该进程完成时间,重复步骤1-2直至所有进程完成。

抢占式SJF(SRTF)绘制要点新进程到达时需比较剩余服务时间:若新进程服务时间更短,立即中断当前进程,绘制新进程条形块,原进程剩余时间需在后续重新调度时继续绘制。06算法适用场景与优化FCFS适用场景分析批处理系统中的应用FCFS算法适用于长作业较多的批处理系统,此类系统对响应时间要求不高,更注重系统的吞吐量,算法的简单性和公平性在此场景下能较好满足需求。对公平性要求高的环境在需要保证所有进程都能按到达顺序公平获得CPU资源,避免出现进程饥饿问题的场景,FCFS算法因严格遵循先到先服务原则而适用。负载较轻的系统环境当系统负载较轻,进程数量较少且进程执行时间差异不大时,FCFS算法的“护航效应”不明显,能以较低的实现成本保证系统稳定运行。对实现复杂度敏感的场景在对调度算法实现复杂度有严格限制,追求简单易操作的场景,FCFS算法仅需维护FIFO队列,无需额外计算或排序,可显著降低系统开销。SJF适用场景分析

批处理系统中的应用适用于作业运行时间已知且相对稳定的批处理环境,如大型科学计算、数据处理任务,可有效提高系统吞吐量。

短作业占比高的场景在短作业数量多、长作业较少的系统中,SJF能显著降低平均等待时间,例如小型事务处理、办公自动化系统。

非实时交互式系统适用于对响应时间要求不严格的非实时系统,如后台任务调度,可通过优先处理短任务提升整体效率。

需避免的场景不适用于实时系统、长作业为主的环境及需要严格公平性保障的场景,可能导致长作业饥饿或响应时间不可控。SJF

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论