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

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

关于调度

什么是调度

如果只有一个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著,陈向群,马洪兵等译

相关文章
|
13天前
|
安全 Java 数据处理
Python网络编程基础(Socket编程)多线程/多进程服务器编程
【4月更文挑战第11天】在网络编程中,随着客户端数量的增加,服务器的处理能力成为了一个重要的考量因素。为了处理多个客户端的并发请求,我们通常需要采用多线程或多进程的方式。在本章中,我们将探讨多线程/多进程服务器编程的概念,并通过一个多线程服务器的示例来演示其实现。
|
29天前
|
消息中间件 安全 Linux
线程同步与IPC:单进程多线程环境下的选择与权衡
线程同步与IPC:单进程多线程环境下的选择与权衡
58 0
|
30天前
|
消息中间件 存储 算法
【软件设计师备考 专题 】操作系统的内核(中断控制)、进程、线程概念
【软件设计师备考 专题 】操作系统的内核(中断控制)、进程、线程概念
81 0
|
25天前
|
资源调度 监控 算法
深入理解操作系统:进程管理与调度策略
本文旨在探讨操作系统中进程管理的核心概念及其实现机制,特别是进程调度策略对系统性能的影响。通过分析不同类型操作系统的进程调度算法,我们能够了解这些策略如何平衡响应时间、吞吐量和公平性等关键指标。文章首先介绍进程的基本概念和状态转换,随后深入讨论各种调度策略,如先来先服务(FCFS)、短作业优先(SJF)、轮转(RR)以及多级反馈队列(MLQ)。最后,文章将评估现代操作系统在面对多核处理器和虚拟化技术时,进程调度策略的创新趋势。
|
7天前
|
调度 Python
Python多线程、多进程与协程面试题解析
【4月更文挑战第14天】Python并发编程涉及多线程、多进程和协程。面试中,对这些概念的理解和应用是评估候选人的重要标准。本文介绍了它们的基础知识、常见问题和应对策略。多线程在同一进程中并发执行,多进程通过进程间通信实现并发,协程则使用`asyncio`进行轻量级线程控制。面试常遇到的问题包括并发并行混淆、GIL影响多线程性能、进程间通信不当和协程异步IO理解不清。要掌握并发模型,需明确其适用场景,理解GIL、进程间通信和协程调度机制。
27 0
|
7天前
|
算法 Linux 调度
深入理解Linux内核的进程调度机制
【4月更文挑战第17天】在多任务操作系统中,进程调度是核心功能之一,它决定了处理机资源的分配。本文旨在剖析Linux操作系统内核的进程调度机制,详细讨论其调度策略、调度算法及实现原理,并探讨了其对系统性能的影响。通过分析CFS(完全公平调度器)和实时调度策略,揭示了Linux如何在保证响应速度与公平性之间取得平衡。文章还将评估最新的调度技术趋势,如容器化和云计算环境下的调度优化。
|
12天前
|
算法 Linux 调度
深度解析:Linux内核的进程调度机制
【4月更文挑战第12天】 在多任务操作系统如Linux中,进程调度机制是系统的核心组成部分之一,它决定了处理器资源如何分配给多个竞争的进程。本文深入探讨了Linux内核中的进程调度策略和相关算法,包括其设计哲学、实现原理及对系统性能的影响。通过分析进程调度器的工作原理,我们能够理解操作系统如何平衡效率、公平性和响应性,进而优化系统表现和用户体验。
20 3
|
16天前
|
算法 Linux 调度
深入理解操作系统的进程调度策略
【4月更文挑战第8天】本文深入剖析了操作系统中的关键组成部分——进程调度策略。首先,我们定义了进程调度并解释了其在资源分配和系统性能中的作用。接着,探讨了几种经典的调度算法,包括先来先服务(FCFS)、短作业优先(SJF)以及多级反馈队列(MLQ)。通过比较这些算法的优缺点,本文揭示了它们在现实世界操作系统中的应用与局限性。最后,文章指出了未来进程调度策略可能的发展方向,特别是针对多核处理器和云计算环境的适应性。
|
17天前
|
算法 调度 UED
深入理解操作系统中的进程调度策略
【4月更文挑战第7天】 在多任务操作系统中,进程调度策略是决定系统性能和响应速度的关键因素之一。本文将探讨现代操作系统中常用的进程调度算法,包括先来先服务、短作业优先、轮转调度以及多级反馈队列等。通过比较各自的优势与局限性,我们旨在为读者提供一个全面的视角,以理解如何根据不同场景选择合适的调度策略,从而优化系统资源分配和提升用户体验。
|
22天前
|
安全 Linux API
Android进程与线程
Android进程与线程
18 0