操作系统进程调度算法总结
系统进程调度算法总结
- 进程类型划分
- 调度算法分类
- 调度算法适用的目标场景
- 1. 批处理系统
- 先到先服务 (first-come first-served)
- 最短作业优先
- 最短剩余时间优先
- 2. 交互式系统
- 时间片轮转调度 (round robin)
- 优先级调度
- 多级反馈队列
- 最短进程优先
- 彩票调度算法
- 保证调度算法
- 公平分享调度
- 3. 实时系统
进程类型划分
根据进程占用CPU 时间,可以将其划分为计算密集型和 I/O 密集型。
- 计算密集型 (compute-bound): 具有较长的CPU运算时间,具有较少的 I/O 操作。
- I/O 密集型 (I/O-bound): 在 I/O 请求之间需要较少的CPU运算时间。
调度算法分类
根据如何处理时钟中断,可以把调度算法分为非抢占式调度算法和抢占式调度算法。
- 非抢占式调度算法 (non-preemptive scheduling algorithm): 这种算法挑选一个进程运行,并一直运行到阻塞或自愿退出。
- 抢占式调度算法 (preemptive scheduling algorithm):每个进程可运行的最大时间是固定的,如果运行完所有时间,进程将会被挂起,调度器进而挑选另外一个进程运行。
调度算法适用的目标场景
1. 批处理系统
在批处理系统中,没有用户在终端不耐烦地等结果。因此,非抢占式调度算法和具有较长时间间隔的抢占式算法都是适用的。这种方法减少了进程切换,因而增强了系统性能。
批处理一般注重:
- 吞吐量:最大化每小时作业数
- 周转时间:最小化从提交到完成的时间间隔
- CPU 利用率:保持 CPU 始终忙碌
先到先服务 (first-come first-served)
最简单的调度算法,按照请求 CPU 的顺序,排成一列顺序的使用 CPU。属于非抢占式算法。
最短作业优先
优先处理具有最短运行时间的进程。属于非抢占式算法。最短作业优先算法具有最短的平均等待时间,但是只有在所有作业同时启动才成立。
最短剩余时间优先
是最短作业优先的抢占式版本。使用这种算法,调度器总是挑选剩余时间最短的进程优先运行。
2. 交互式系统
交互式环境中,为了不让一个进程霸占 CPU 使得其他进程得不到服务,抢占式必须的。这些调度算法也可以用在批处理系统中。
交互式系统注重:
- 响应时间:快速响应要求
- 均衡性:满足所有用户的需求
时间片轮转调度 (round robin)
最古老、最简单、最公平且使用最广的算法。每个进程被分配一个时间片,即进程运行运行的时间。如果在时间片结束时进程仍在运行,则 CPU 将被抢占并分配给另一个进程。如果进程在时间片结束前阻塞或结束,则 CPU 当即进行切换。
时间片设置的太短会导致过多的进程切换,降低 CPU 的效率;如果设置的太长,有可能引起对短的交互请求的响应变差。
优先级调度
每个进程被赋予一个优先级,率先运行优先级最高的就绪进程。优先级可以是静态或动态的。
为了防止高优先级进程无休止地运行下去,调度器可能在每个时钟节拍时降低当前进程的优先级。如果这个动作导致其有优先级低于次高优先级,则将进行进程切换。
多级反馈队列
将优先级调度和时间片轮转调度相结合。系统中有许多独立的队列,每个队列具有不同的优先级。系统总是优先执行高优先级队列的进程。在同一个队列中,采用时间片轮转调度来切换进程。
最短进程优先
由于最短作业优先在批处理系统中常常伴随产生最短平均响应时间,所以也可以用于交互进程。
彩票调度算法
为进程发放针对系统资源(如 CPU 的访问时间)的彩票,根据进程的重要性发放不同的彩票数量,更重要的进程发放更多的彩票。当调度器需做出决策时,随机选择一张彩票,持有该彩票的进程将获得系统资源。彩票数量越多的进程,获得资源的概率越大。
彩票调度算法利用了随机性,优点:
- 可以避免奇怪的边角情况
- 很轻量
- 响应速度很快
保证调度算法
在一个有 n 个进程运行的单用户系统中,若所有的进程都平等,则每个进程将获得 1/n 的 CPU 时间。
公平分享调度
以上算法的基本单位都是进程,但是没有考虑拥有者。该算法优先考虑拥有者,保证每个拥有者拥有相等的 CPU 时间。
3. 实时系统
实时系统是那些时间因素非常关键的系统。和交互式系统不同,实时系统只运行那些用来推进现有应用的程序。
实时系统通常分为硬实时(hard real time)系统和软实时(soft real time)系统。前者意味着存在必须满足的时间限制;后者意味着偶尔超过时间限制是可以容忍的。
实时系统要求:
- 满足截止时间:避免丢失数据
- 可预测性:在多媒体系统中避免失真
参考:
《操作系统设计与实现》
操作系统进程调度算法总结相关推荐
- Java操作系统进程调度算法——时间片轮转(RR)算法
Java操作系统进程调度算法--时间片轮转(RR)算法 文章目录 Java操作系统进程调度算法--时间片轮转(RR)算法 前言 一.算法思想 二.数据结构 1.定义PCB进程控制块 2.实现思路 三. ...
- Java操作系统进程调度算法——优先级调度(HPF)算法
Java操作系统进程调度算法--优先级调度(HPF)算法 文章目录 Java操作系统进程调度算法--优先级调度(HPF)算法 前言 一.算法思想 二.数据结构 1.定义(PCB)进程控制块 2.实现思 ...
- 操作系统进程调度算法,进程调度实验
操作系统进程调度算法 1 题目描述 1.1 实验目的 用高级语言编写和调试一个进程调度程序,以加深对进程的概念及进程调度算法的理解. 1.2 实验内容 编写并调试一个模拟的进程调度程序,采用简单时间片 ...
- Java操作系统进程调度算法——先来先服务(FCFS)算法
Java操作系统进程调度算法--先来先服务(FCFS)算法 Java操作系统进程调度算法--先来先服务(FCFS)算法 文章目录 Java操作系统进程调度算法--先来先服务(FCFS)算法 前言 一. ...
- 操作系统学习(一):浅析操作系统进程调度算法
目录 0.前置知识 0.1 调度性能指标 0.2 上下文切换 1.进程调度算法简单介绍 1.1 先进先出(FIFO) 1.2 最短任务优先(SJF) 1.3 最短完成时间优先(STCF) 1.4 轮转 ...
- 操作系统进程调度算法(先来先服务,短作业优先算法(SJF))linux下(附源码)
先来先服务算法(FCFS) FCFS是最简单的调度算法,既可以用作作业调度,也可以用作进程调度 这种算法优先考虑系统中等待时间最长的作业(进程),而不管作业所需执行时间长短, 做法是从后备队列中选择几 ...
- OS / 几个常用的操作系统进程调度算法
在操作系统中存在多种调度算法,其中有的调度算法适用于作业调度,有的调度算法适用于进程调度,有的调度算法两者都适用.下面介绍几种常用的调度算法. 一.先来先服务(FCFS)调度算法 FCFS 调度算法是 ...
- 操作系统进程调度算法——吸烟者问题
问题描述: 假设一个系统有三个吸烟者进程和一个供应者进程,每个吸烟者都需要得到三个资源才能完成吸烟操作并且他们每人都持有这三种资源中的一种,供应者一次只能提供三种资源中两种的组合,并且要等到接收到吸烟 ...
- 操作系统进程调度算法(FCFS、SJF、高响应比)
进程调度算法(FCFS.SJF.高响应比) 一.算法描述 1.先来先服务(FCFS)调度算法 (1)FCFS是最简单的调度算法,该算法可用于作业调度,也可用于进程调度. (2)算法规则:系统按照作业到 ...
- 几个常用的操作系统进程调度算法
一.先来先服务和短作业(进程)优先调度算法 1.先来先服务调度算法 先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度.当在作业调度中采用该算法时,每次调度 ...
最新文章
- Centos7 cdh5.14 安装
- java统计_java统计当前在线数
- ASP.NET服务器控件数据绑定总结
- [蓝桥杯] 连号区间数
- DAS、SAN和NAS三种服务器存储方式
- 输入语句 readline 1006 c#
- Android应用开发提高篇(4)-----Socket编程(多线程、双向通信)
- python配置文件转dict
- SSL introduce itself from baidu
- 第12章 元编程与注解、反射
- cpda项目数据分析师与cda数据分析师的区别?不建议考CPDA
- 修改linux服务器密码
- 软路由虚拟服务器,VMware虚拟机安装软路由(OpenWrt)详细教程
- [NOIP2010 普及组] 数字统计
- PTA第02章练习题(Python)
- 请这样爱你的移动硬盘
- 解决myeclipse导入maven工程时问题:No marketplace entries found to handle maven-compiler-plugin:2.3.2
- UPnP实现中的常见脆弱性与风险分析
- [面试日记] 1,时隔五年再次开始面试
- is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for