【操作系统学习笔记】进程与线程(三)关于调度

简介: 本文为个人学习操作系统的笔记。
本文首发于稀土掘金。该平台的作者 逐光而行 也是本人。

关于调度

什么是调度

如果只有一个CPU可用,必须选择下一个要运行的进程。在操作系统中,完成该部分工作的是调度程序,使用的算法叫调度算法

关于调度的一些背景

  • 对于网络服务器而言,多个进程经常竞争CPU。
  • “资源充足”的论据在移动设备上也不成立。
  • 进程分为计算密集型和I/O密集型两种;前者花较长时间在CPU集中使用上,后者I/O等待的频率高。

随着CPU速度增快,更多进程倾向I/O密集型(因为CPU的速度及其演进速度都比磁盘快,计算本身耗时短了)

调度时机

  • 一个进程退出时,必须决定谁来接班(若找不到,会允许系统提供的空闲进程)
  • 进程阻塞时,必须选另一个救急
  • I/O发生中断时,决定恢复被中断的进程,还是选择别的进程

调度算法目标

  • 公平--->系统策略强制执行
  • 保持系统整体的高效、持续运转(尽可能使所有部分都保持忙碌)

调度算法分类

批处理

批处理作业的三大指标

  • 吞吐量(throughout)
  • 周转时间(turnaround time)
  • CPU利用率

算法

先来先服务(队列)

最短作业优先

最短剩余时间优先

交互式

重要指标

最小响应时间,均衡性

算法(前两种算法和中断的有点像)

轮转调度

维护一张可运行进程的列表,当前进程被运行后,就移到列表末尾。

优先级调度

多级队列

最短进程优先

不过要解决一个问题:如何找出最短的进程

  • 一种方案:根据进程过去的行为进行推测。

保证调度

  • 向用户作出明确的性能保证,然后实现它。
  • 若有n个用户登录,则每个用户将获得CPU处理能力的1/n。
  • 为实现所做的保证,系统必须跟踪各个进程自创建以来使用了多少CPU时间。

彩票调度

  • 应用例子:视频流,可将不同帧速率制成彩票,进程会自动按照大致正确的比例划分CPU的使用。

公平分享调度

(取决于如何定义“公平”,比如可定义为每个用户都能用到)

实时

基本要求

一定程度上必须满足deadline

分类:硬实时和软实时

这个嵌入式系统笔记那里讲得很详细,此处不再赘述,可分别以军工系统和DVD作为理解例子。

将调度机制与调度策略分离

使调度机制位于内核,调度策略由用户进程决定。

  • 适当放权,可以为主进程控制并掌握许多子进程动向等情况提供最优解,是上述提到的算法做不到的。

经典IPC问题

  • 哲学家就餐问题(互斥访问有限资源的竞争问题)
  • 读-写者问题(数据库访问)

参考书籍

《现代操作系统》 Andrew S.Tanenbaum,Herbert Bos著,陈向群,马洪兵等译

相关文章
|
2天前
|
存储 算法 调度
深入理解操作系统:进程管理与性能优化
【5月更文挑战第14天】 本文旨在深入探讨操作系统中的进程管理机制及其对系统性能的影响。通过分析进程调度算法、死锁问题和内存管理等关键技术,本文提出了一系列性能优化策略。文章首先介绍了进程的基本概念和状态转换,然后详细讨论了不同进程调度算法的优缺点,并针对特定场景提出了合理的选择建议。接着,文中分析了死锁的产生原因和预防措施,以及内存管理中页式和段式存储管理的比较。最后,通过实验验证了提出优化策略的有效性,并对操作系统的性能调优提供了实用的指导意义。
|
23小时前
|
缓存 算法 Java
操作系统(8)---进程的同步与互斥以及信号量机制(万字总结~)(4)
操作系统(8)---进程的同步与互斥以及信号量机制(万字总结~)
13 0
|
1天前
操作系统(8)---进程的同步与互斥以及信号量机制(万字总结~)(3)
操作系统(8)---进程的同步与互斥以及信号量机制(万字总结~)
13 0
|
1天前
|
C++ 调度
操作系统(8)---进程的同步与互斥以及信号量机制(万字总结~)(2)
操作系统(8)---进程的同步与互斥以及信号量机制(万字总结~)
12 0
|
1天前
|
算法 安全 调度
操作系统(8)---进程的同步与互斥以及信号量机制(万字总结~)(1)
操作系统(8)---进程的同步与互斥以及信号量机制(万字总结~)
13 0
操作系统(8)---进程的同步与互斥以及信号量机制(万字总结~)(1)
|
1天前
|
Unix 调度
操作系统(6)----线程相关
操作系统(6)----线程相关
8 0
|
1天前
|
存储 消息中间件 Linux
操作系统(5)-----操作系统进程相关
操作系统(5)-----操作系统进程相关
10 0
|
1天前
|
缓存 负载均衡 监控
深入理解操作系统:进程管理与调度策略
【5月更文挑战第16天】 在现代计算系统中,操作系统扮演着至关重要的角色,负责协调和管理硬件资源以及运行在其上的应用程序。本文将深入探讨操作系统中的核心组件之一——进程管理,特别是进程调度的策略和机制。通过分析不同的进程调度算法,我们将了解操作系统如何高效地分配CPU时间,确保系统的响应性、公平性和效率。此外,文章还将讨论实时系统对调度的特殊要求,以及多核处理器环境下的调度挑战。本文旨在为读者提供一个关于操作系统进程管理的综合视角,帮助理解其设计原理及实践应用。
|
2天前
|
Java 数据库连接 程序员
【后台开发】TinyWebser学习笔记(2)线程池、数据库连接池
【后台开发】TinyWebser学习笔记(2)线程池、数据库连接池
19 4
|
2天前
|
监控 算法 Linux
深入理解操作系统:进程管理与调度策略
【5月更文挑战第14天】 在现代计算环境中,操作系统扮演着至关重要的角色。它不仅管理着计算机硬件资源,还负责提供程序运行的环境。其中,进程管理是操作系统的核心功能之一,它涉及进程的创建、执行、监控和终止等多个方面。本文将探讨操作系统中进程管理的基本概念,并深入分析不同的进程调度策略,以展示它们如何影响系统性能和用户体验。