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

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

关于调度

什么是调度

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

相关文章
|
存储 Linux API
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
在计算机系统的底层架构中,操作系统肩负着资源管理与任务调度的重任。当我们启动各类应用程序时,其背后复杂的运作机制便悄然展开。程序,作为静态的指令集合,如何在系统中实现动态执行?本文带你一探究竟!
【Linux进程概念】—— 操作系统中的“生命体”,计算机里的“多线程”
|
8月前
|
Java 测试技术 API
【JUC】(1)带你重新认识进程与线程!!让你深层次了解线程运行的睡眠与打断!!
JUC是什么?你可以说它就是研究Java方面的并发过程。本篇是JUC专栏的第一章!带你了解并行与并发、线程与程序、线程的启动与休眠、打断和等待!全是干货!快快快!
1180 2
|
8月前
|
JSON 网络协议 安全
【Java】(10)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
414 1
|
8月前
|
JSON 网络协议 安全
【Java基础】(1)进程与线程的关系、Tread类;讲解基本线程安全、网络编程内容;JSON序列化与反序列化
几乎所有的操作系统都支持进程的概念,进程是处于运行过程中的程序,并且具有一定的独立功能,进程是系统进行资源分配和调度的一个独立单位一般而言,进程包含如下三个特征。独立性动态性并发性。
388 1
|
并行计算 Linux
Linux内核中的线程和进程实现详解
了解进程和线程如何工作,可以帮助我们更好地编写程序,充分利用多核CPU,实现并行计算,提高系统的响应速度和计算效能。记住,适当平衡进程和线程的使用,既要拥有独立空间的'兄弟',也需要在'家庭'中分享和并行的成员。对于这个世界,现在,你应该有一个全新的认识。
464 67
|
弹性计算 运维 资源调度
使用阿里云操作系统控制台巧解调度抖动
阿里云操作系统控制台是一站式云服务器管理平台,提供性能监控、故障诊断、日志分析、安全管理和资源调度等功能。用户可实时查看CPU、内存等使用情况,快速定位并解决调度抖动等问题。智能诊断工具自动生成优化建议,简化运维流程,降低技术门槛。尽管部分功能仍在优化中,但整体上显著提升了云服务器管理的效率和稳定性。
387 15
使用阿里云操作系统控制台巧解调度抖动
|
12月前
|
调度 开发工具 Android开发
【HarmonyOS Next】鸿蒙应用进程和线程详解
进程的定义: 进程是系统进行资源分配的基本单位,是操作系统结构的基础。 在鸿蒙系统中,一个应用下会有三类进程:
442 0
|
缓存 运维 前端开发
阿里云操作系统控制台:高效解决性能瓶颈与抖动之进程热点追踪
遇到“进程性能瓶颈导致业务异常”等多项业务痛点时,提供高效解决方案,并展示案例。
|
存储 负载均衡 算法
Linux2.6内核进程调度队列
本篇文章是Linux进程系列中的最后一篇文章,本来是想放在上一篇文章的结尾的,但是想了想还是单独写一篇文章吧,虽然说这部分内容是比较难的,所有一般来说是简单的提及带过的,但是为了让大家对进程有更深的理解与认识,还是看了一些别人的文章,然后学习了学习,然后对此做了总结,尽可能详细的介绍明白。最后推荐一篇文章Linux的进程优先级 NI 和 PR - 简书。
363 0

推荐镜像

更多