操作系统-3

简介: -

调度算法

高级调度-作业调度--功能是用某种调度算法决定就绪队列中那几个作业调入内存

中级调度-内存调度--功能是将外存中的程序块调入内存,并加入就绪队列

低级调度-进程调度--功能是用算法决定哪个进程获得处理机


阅读本文应了解的知识:


  • 周转时间 = 完成时间 - 到达时间
  • 带权周转时间 = 周转时间/运行时间
  • 等待时间 = 周转时间 – 运行时间
  • 响应比=(等待时间+要求服务时间)/ 要求服务时间


FCFS-先来先服务


  • 算法思想: 公平
  • 规则:按照作业/进程到达顺序进行服务
  • 作业调度:考虑哪个作业先到到后备队列
  • 进程调度:考虑哪个进程先到达就绪队列
  • 是否抢占式:非抢占式
  • 优点:简单容易实现,公平
  • 缺点:不利于短作业,对长作业有利
  • 是否导致饥饿:不会
  • 周转时间 = 完成时间 - 到达时间
  • 带权周转时间 = 周转时间/运行时间
  • 等待时间 = 周转时间 – 运行时间

J1->J2->J3->J4


作业

到达时间

所需服务时间

开始执行时间

完成时间

周转时间

带权周转时间

J1

0

20

0

20

20

1

J2

5

15

20

35

30

2

J3

10

5

35

40

30

6

J4

15

10

40

50

35

3.5


SJF-短作业优先(SPF短进程优先)


  • 算法思想: 追求平均等待时间,平均周转时间,平均带权周转时间最短
  • 规则:服务时间最短的优先得到服务
  • 作业调度:SJF短作业优先
  • 进程调度:SPF短进程优先
  • 是否抢占式:SJF和SPF是非抢占式的算法。但是也有抢占式的版本——最短剩余时间优先算法
  • 优点:“最短的”平均等待时间、平均周转时间(前提是所有进程同时可运行或者说所有进程几乎都同时到达)因为最短剩余时间优先算法得到的平均等待
    时间、平均周转时间还要更少
  • 缺点:不利于长作业,对短作业有利,由此可能产生饥饿现象
  • 是否导致饥饿:会,当短作业不断到来会导致长作业长时间得不到服务
  • 周转时间 = 完成时间 - 到达时间
  • 带权周转时间 = 周转时间/运行时间
  • 等待时间 = 周转时间 – 运行时间

J1->J3->J4->J2


作业

到达时间

所需服务时间

开始执行时间

完成时间

周转时间

带权周转时间

J1

0

20

0

20

20

1

J2

5

15

35

50

45

3

J3

10

5

20

25

15

3

J4

15

10

25

35

20

2

证明:如果系统作业几乎同时到达,则使系统平均作业周转时间最短的算法是短作业优先。

 设有n个作业j1,j2,j3,...,jn,其运行时间分别为t1,t2,t3,...,tn。不妨假设t1<=t2<=t3<=...<=tn,则短作业优先的作业调度算法的平均周转时间为:

 T=(t1+(t1+t2)+(t1+t2+t3)+....(t1+t2+t3+...+tn))/n

  =(n*t1+(n-1)*t2+...+tn)/n

 考虑其他不同调度算法,设在此调度算法下的作业调度次序为ji1,ji2,...jin,其中(i1,i2,...,in)是(1,2,3,...,n)的一个排列,则类似上面可以得出:

 T1=((n*ti1+(n-1)*ti2+...+tin)/n)

 根据不等式结论:如果有a1<=a2<=...<=an 且b1<=b2<=...<=bn,则

 a1bn+a2bn-1+...+anb1<=a1bi1+a2bi2+...+anbn<=a1b1+a2b2+...+anbn

 其中(i1,i2,...,in)是(1,2,3,...,n)的一个排列,不难得出T<=T1。

HRRN-高相应比优先


  • 算法思想: 要综合考虑作业/进程的等待时间和要求服务时间
  • 规则:每次调度都计算各个作业/进程的响应比,选最高的进行服务
  • 是否抢占式:非抢占式
  • 优缺点:
    等待时间相同时,要求服务时间短的优先(SJF 的优点)
    要求服务时间相同时,等待时间长的优先(FCFS 的优点)
    对于长作业来说,随着等待时间越来越久,其响应比也会越来越大,从而避免了长作业饥饿的问题
  • 是否导致饥饿:不会
  • 周转时间 = 完成时间 - 到达时间
  • 带权周转时间 = 周转时间/运行时间
  • 等待时间 = 周转时间 – 运行时间
  • 响应比=(等待时间+要求服务时间)/ 要求服务时间=(开始时间-到达时间+服务)/服务
  • 开始时间指本次调度的作业的开始时间,即上一个完成的进程的完成时间

响应比计算:

0时刻:只有J1到达就绪队列,J1上处理机

7时刻(J1完成):就绪队列中有 J2 (响应比=(20-5+15)/15=2)、 J3((20-10+5)/5=3)、 J4((20-15+10)/10=1.5),

8时刻(J3完成): J2((25-5+15)/15=2.3)、 J4((25-15+10)/10=2)

12时刻(J2完成):就绪队列中只剩下 J4


作业

到达时间

所需服务时间

开始执行时间

完成时间

周转时间

带权周转时间

J1

0

20

0

20

20

1

J2

5

15

25

40

35

2.3

J3

10

5

20

25

15

3

J4

15

10

40

50

35

3.5

时间片轮转--适合多用户分时系统。

平均分配给每个进程相同的时间片,当时间片到或进程阻塞和主动结束,会将CPU交给下一个进程

时间片设为 20ms~50ms 通常是一个比较合理的折中值。

最高优先级调度

算法分为抢占式和非抢占式

  • 非抢占式的调度算法,只有当前运行的进程主动放弃CPU时(正常/异常完成,或主动阻塞),才需要进行调度
  • 而抢占式调度每有一个新的就绪队列,便进行优先权比较,

优先级分为分静态优先级和动态优先级

  • 静态优先级,创建时确认,无法修改
  • 动态优先级,会随着时间的增加而提升优先级,

多级反馈队列调度--整合包

多级--分为多个队列

反馈--会进行对比

过程

新来的进入第一队列末尾,按先来先服务等待调度,如果第一时间片结束但没运行完,则进入第二队列

特点

  • 多队列,1-n
  • 优先级递减
  • 时间片递增
目录
相关文章
|
JSON Go 数据格式
【Golang】解决使用interface{}解析json数字会变成科学计数法的问题
【2月更文挑战第9天】解决使用interface{}解析json数字会变成科学计数法的问题
472 0
计算机网络常考计算题整理
计算机网络常考计算题整理
|
7月前
|
人工智能 自然语言处理 并行计算
MeteoRA:多任务AI框架革新!动态切换+MoE架构,推理效率提升200%
MeteoRA 是南京大学推出的多任务嵌入框架,基于 LoRA 和 MoE 架构,支持动态任务切换与高效推理。
299 3
|
5月前
|
存储 人工智能 数据处理
Apache Doris 2025 Roadmap:构建 GenAI 时代实时高效统一的数据底座
秉承“以场景驱动创新” 的核心理念,持续深耕三大核心场景的关键能力,并对大模型 GenAI 场景的融合应用进行重点投入,为智能时代构建实时、高效、统一的数据底座。
306 10
Apache Doris 2025 Roadmap:构建 GenAI 时代实时高效统一的数据底座
|
12月前
|
Java
JAVA并发编程系列(13)Future、FutureTask异步小王子
本文详细解析了Future及其相关类FutureTask的工作原理与应用场景。首先介绍了Future的基本概念和接口方法,强调其异步计算特性。接着通过FutureTask实现了一个模拟外卖订单处理的示例,展示了如何并发查询外卖信息并汇总结果。最后深入分析了FutureTask的源码,包括其内部状态转换机制及关键方法的实现原理。通过本文,读者可以全面理解Future在并发编程中的作用及其实现细节。
|
11月前
|
iOS开发 开发者 MacOS
在线创建ios打包证书无需mac
这个文件并不一定需要使用mac OS去创建,在苹果开发者中心,生成了cer格式的证书后,导出p12证书这个过程,其实也并不一定需要mac电脑来完成。
149 0
|
API 异构计算 Docker
5种搭建LLM服务的方法和代码示例
本文介绍了5种搭建开源大型语言模型服务的方法,包括使用Anaconda+CPU、Anaconda+GPU、Docker+GPU、Modal和AnyScale。CPU方法适合本地低门槛测试,但速度较慢;GPU方法显著提升速度,Docker简化环境配置,适合大规模部署;Modal提供按需付费的GPU服务,适合试验和部署;而AnyScale则以低门槛和低成本访问开源模型。每种方法都有其优缺点,选择取决于具体需求和资源。
539 0
|
XML JSON JavaScript
JSON简介
JSON简介
335 0
类与对象:Java面向对象编程的基石
类与对象:Java面向对象编程的基石
|
存储 关系型数据库 数据库
目前数据库分类
目前数据库分类。
86 3