【操作系统】进程调度

news2024/11/17 15:46:57

目录

调度的概念

调度目标

    所有系统

    批处理系统

    交互式系统

    实时系统

调度算法

    非抢占式调度算法

        先来先服务

        最短作业优先

        非抢占式优先级调度

    抢占式调度算法

        最短剩余时间优先

        轮转调度

        抢占式优先级调度

        多级反馈队列

        彩票调度

        公平分享调度


调度的概念

  • 进程是资源分配的基本单位;
  • 线程是CPU调度的基本单位。

一个单核CPU在某一时刻只能允许一个线程执行,但是现在的计算机总是有一大堆进/线程等待执行。这就需要某种规则来决定处理这些进/线程的顺序,这就是调度要研究的问题。

进程状态:

 

运行态:当前正在占有CPU的进/线程;

就绪态:具备运行条件,等待系统分配CPU的进/线程;

阻塞态:不具备运行条件,正在等待某外部事件发生的进/线程。

所谓进程调度,就是指在处于就绪态的一堆进/线程里,按照一定的调度算法,选出一个进/线程并给它分配CPU时间让它运行,从而实现多进程/多线程的并发执行。

进程切换的基本流程:

  1. 首先用户态必须切换到内核态;
  2. 保存当前进程的状态,包括在其PCB中保存CPU各寄存器值,以便日后重新执行;
  3. 调度算法选定一个新进程;
  4. 新进程的内存地址空间重新装入MMU(内存管理单元);
  5. 新进程开始执行。

调度目标

    所有系统

对于所有系统,都应该有以下调度目标:

  • 公平——给每个进程公平的CPU份额;
  • 策略强制执行——保证规定的调度策略被执行;
  • 平衡——保证系统的所有部分都在忙碌。

    批处理系统

批处理系统更适合非抢占式调度算法,应有以下调度目标:

  • 吞吐量——每小时最大作业数;
  • 周转时间——从提交到终止的最短时间;
  • CPU利用率——保持CPU始终忙碌。

    交互式系统

交互式系统更适合抢占式调度算法,应有以下调度目标:

  • 响应时间——快速响应请求;
  • 均衡性——满足用户的期望。

    实时系统

对于实时系统,应有以下调度目标:

  • 满足截止时间——避免丢失数据;
  • 可预测性——如多媒体系统中避免品质降低。

调度算法

进程调度的核心自然是调度规则,即各种调度算法。

计算机都有一个硬件时钟,也叫RTC或CMOS,它独立于操作系统,由主板上一块电池供电的芯片,所以即使计算机断电,RTC也可以维持时间。这个硬件时钟会周期性的发出时钟中断。

根据如何处理时钟中断,可以把调度算法分为两类:

  • 非抢占式调度算法:发生时钟中断时不调度;
  • 抢占式调度算法:通过时钟中断使CPU控制权返回给调度程序,进而调度其它进程。

非抢占式调度算法:正在运行的进程只有在该进程执行完成或发生阻塞(如I/O请求)的情况下才会释放CPU;

抢占式调度算法:分给进程的时间片耗尽之后,无论当前进程有没有执行完成,调度程序均选择其他进程执行。

    非抢占式调度算法

        先来先服务

先来先服务算法(FCFS):按照进程请求CPU的顺序调度它们。

意思就是,所有的就绪状态的进程在一个队列中,申请使用CPU的进程按照先来后到的顺序排在队列尾部,每执行完一个进程,系统就从该队列的头部取出第一个进程来执行。

优点:

  • 易于理解且算法实现简单;

缺点:

  • 对短进程不利。排在长进程后面的短进程需要等待很长时间,短进程的响应时间可能会很长。

        最短作业优先

最短作业优先算法(SJF):每次调度时选择当前已到达的、且运行时间最短的作业。

优点:

  • 对比FCFS,平均等待时间、平均周转时间、平均带权周转时间均有提高;

缺点:

  • 需提前掌握各作业的运行时间;
  • 对长作业不利。因为如果一直有短作业到来,那么长作业永远得不到调度,长作业有可能会饿死,处于一直等待短作业执行完毕的状态。

周转时间:从进程请求CPU到进程执行完毕为止的统计平均时间。

        非抢占式优先级调度

优先级调度:每个进程被赋予一个优先级,允许优先级最高的可运行进程先运行。

对于非抢占式优先级调度,当一个进程到达就绪队列时,比较它的优先级与当前运行进程的优先级。如果新到达进程的优先级高于当前运行进程的优先级,非抢占优先级调度算法只是将新的进程加到就绪队列的头部,而不会进行进程切换。

缺点:

  • 若有源源不断的高优先级进程到来,低优先级进程会导致饥饿。

    抢占式调度算法

        最短剩余时间优先

最短剩余时间优先(SRTN):当一个新的进程到达时,把它所需要的整个运行时间与当前进程的剩余运行时间作比较。如果新的进程需要的时间更少,则挂起当前进程,运行新的进程,否则新的进程等待。

优点:

  • 可以使新的短进程得到良好的服务。

缺点:

  • 需提前掌握各进程的运行时间;
  • 对长进程不利。

最短剩余时间优先(SRTN)是最短作业优先的抢占式版本。

        轮转调度

轮转调度(RR):每个进程被分配一个时间段,称为时间片,即允许该进程在该时间段内运行。如果在时间片结束时该进程还在运行,则剥夺其CPU并分配给另一个进程;如果该进程在时间片结束前阻塞或结束,则立即进行进程切换。

轮转调度算法对每个进程都一视同仁,就好比大家都排好队,一个一个来,每个人都运行一会儿再接着重新排队等待运行。

 优点:

  • 易理解且算法易实现;
  • 可以兼顾长进程和短进程。

缺点:

  • 平均等待时间较长,频繁上下文切换比较费时;
  • 时间片的长度选取困难。

时间片设置的太短会导致过多的进程切换,降低CPU效率;

时间片设置的太长又可能会引起对短的交互请求的响应时间变长。

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

        抢占式优先级调度

优先级调度:每个进程被赋予一个优先级,允许优先级最高的可运行进程先运行。

优先级调度的问题在于高优先级进程可能无休止地运行下去,对此有两种解决方案:

  • 调度程序可能在每个时钟中断降低当前进程的优先级。如果调整后该进程的优先级低于次高优先级的进程,则进行进程切换。
  • 给每个进程赋予一个允许运行的最大时间片,时间片耗尽,次高优先级的进程就获得运行机会。

优先级有静态赋予和动态赋予两种方式。

静态赋予即在创建进程时人为确定进程的优先级,并且规定它在进程的整个运行期间保持不变;

动态赋予即在创建进程时赋予该进程一个初始优先级,然后系统根据进程的执行情况的变化而不断改变其优先级,以便获得更好的调度性能。

对于抢占式优先级调度,当一个进程到达就绪队列时,比较它的优先级与当前运行进程的优先级。如果新到达进程的优先级高于当前运行进程的优先级,那么抢占式优先级调度算法就会进行进程切换,让新到的高优先级进程运行。

        多级反馈队列

多级反馈队列:在系统中设置多个就绪队列,并为每个队列赋予不同的优先级,从第一个开始逐个降低。不同队列中的进程所赋予的执行时间也不同,优先级越高,时间片越小。

  • 首先调度优先级高的队列中的进程。若高优先级中队列中已没有调度的进程,则调度次优先级队列中的进程;
  • 对于同一个队列中的各个进程,按照时间片轮转调度;
  • 当一个进程用完分配的时间片后,它被移到低一级优先级队列。

        彩票调度

彩票调度:为进程提供各种系统资源(如CPU时间)的彩票。一旦要做出调度决策时,就随机抽取一张彩票,拥有该彩票的进程则获得该资源。

为了增加重要进程“中彩票”的机率,可以给它们额外的彩票。

        公平分享调度

公平分享调度:考虑进程的拥有者是谁,保证每个用户公平的分享CPU。

之前的调度算法都不关注进程所有者是谁。这样做的结果是,如果用户1启动9个进程而用户2启动1个进程,使用轮转或相同优先级调度算法,那么用户1将得到90%的CPU时间,而用户2只得到10%的CPU时间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/509326.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows Nvm安装

前言 在windows系统下安装的是nvm-windows,nvm只支持安装在在Linux和Mac系统下。之前在Linux上安装过,最近在Windows上安装,特记录一下。 下载 下载地址:传送门 安装 双击exe文件,选定安装路径,下一步…

在外SSH远程连接macOS服务器【cpolar内网穿透】

文章目录 前言1. macOS打开远程登录2. 局域网内测试ssh远程3. 公网ssh远程连接macOS3.1 macOS安装配置cpolar3.2 获取ssh隧道公网地址3.3 测试公网ssh远程连接macOS 4. 配置公网固定TCP地址4.1 保留一个固定TCP端口地址4.2 配置固定TCP端口地址 5. 使用固定TCP端口地址ssh远程 …

动态库和静态库的使用

一、什么是库? 库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。就是将源代码转化为二进制格式的源代码,相当于进行了加密,别人可以使用库,但是看不到库中的内容。 常见的库类型 共享库 静态库 动态库…

数据管理证书有哪些?DAMA-CDGA/CDGP含金量高

DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职业…

小度即将推出智能手机产品,醉翁之意意在何为?

5月8日,智哪儿从相关渠道获悉,小度即将于5月下旬发布首款智能手机产品。小度科技通过公开渠道确认了上述信息并透露将于下周披露更详细的产品信息。根据市场调查机构Counterpoint Research公布的最新报告,2023年第一季度全球智能手机市场出货…

巩飞:构建自治智能的数据库云管平台,加速国产数据库应用进程

导语 4月8日下午,为期两天的第十二届数据技术嘉年华(DTC 2023)在北京新云南皇冠假日酒店圆满落下帷幕。大会以“开源融合数字化——引领数据技术发展,释放数据要素价值”为主题,汇聚产学研各界精英到场交流。云和恩墨数…

什么是医学影像PACS系统?PACS系统功能有哪些?作用有哪些?对接哪些设备?业务流程是什么?

一、什么是医学影像PACS系统 PACS:为Picture Archive and CommunicationSystem的缩写,是图象归档和通讯系统。PACS系统应用在医院影像科室的系统,主要的任务就是把日常产生的各种医学影像(包括核磁,CT,超声…

入门PyTorch的学习路线指南

PyTorch是目前最受欢迎的深度学习框架之一,它具有易于使用、灵活性强、支持动态图等优点,因此备受研究者和工程师的青睐。如果你想学习PyTorch,下面是一个入门PyTorch的学习路线。 学习基础知识: 学习Python编程语言:…

从入门到精通:教你如何使用Page Object模式提高WebUI自动化测试质量

目录 前言 什么是Page Object模式? 如何编写Page Object模式测试脚本? 步骤1:创建页面对象类 步骤2:编写测试用例 步骤3:运行测试用例 总结 前言 在进行Web应用程序开发的时候,我们经常需要进行自动…

前端工程化 搭建私有组件库 组件从开发到发布私有npm仓库的全过程

前言 基于Vue3.0 TS的组件从开发组件库到发布私有npm仓库的全过程 环境 这里列出本文所使用的环境版本 vue 3.0 vue/cli 4.5.9 nodeJs 14.15.1 npm 6.14.8 vue --version vue/cli 4.5.9 npm -v 6.14.8 node -v v14.15.1 步骤 创建项目 使用 vue-cli 创建一个 vue3 项目&a…

震坤行工业超市建设数字化采购供应链的实践

震坤行工业超市建设数字化采购供应链的实践 行业洞察: 【行业洞察】是震坤行工业超市新媒体推出的专注于行业思考主题栏目。 在这里,您可以收获:行业专家对于新理念、新模式、新技术的深度洞见,关于企业采购实操的干货分享。本…

OpenCL编程指南-1.1OpenCL简介

什么是OpenCL OpenCL是面向由CPU、GPU和其他处理器组合构成的计算机进行编程的行业标准框架。这些所谓的 “异构系统” 已经成为一类重要的平台,OpenCL是直接满足这些异构系统需求的第一个行业标准。OpenCL于2008年12月首次发布,早期产品则在2009年秋天…

数据可视化工具 - ECharts折线图的编写

1 官网找到类似实例&#xff0c; 适当分析&#xff0c;并且引入到HTML页面中 <!DOCTYPE html> <html> <head><meta charset"utf-8"/><title>ECharts</title><!-- 引入刚刚下载的 ECharts 文件 --><script src"ech…

HTML与JavaScript联动

目录 一、数组&#xff08;增删查改&#xff09; 1.创建数组 2. 增加数组元素 3.删除数组中的元素 4.查看数组元素 5.修改数组元素 二、创建方法 1.函数 2.作用域 3.作用域链 三、对象 1.使用 字面量 创建对象 [常用] 2.使用 new Object 创建对象 四、JavaScript…

thinkphp报错 in_array() expects parameter 2 to be array, object given

我的问题是 foreach ($books as $k > $v) { if (in_array($v[id], $book_id)) { //这个地方报错的 $books[$k][check] checked; }else { $books[$k][check] ; } } 这个问题是因为 你的变…

5.9-5.10学习总结

项目分析&#xff1a; 1.用户共有的&#xff1a; 登录&#xff0c;注册&#xff0c;忘记密码&#xff0c;个人资料&#xff0c;修改密码 个人资料&#xff1a;包括生日&#xff08;日期栏选择&#xff09;&#xff0c;手机号&#xff0c;邮箱&#xff0c;学号&#xff0c;姓…

网络路径下倾斜模型生产流程-空三计算,像控刺点

网络路径下倾斜模型生产流程-空三计算&#xff0c;像控刺点 1.新建工程 ①新建工程文件夹 确定本机的网络路径&#xff0c;如演示机为192.168.100.10 在网络路径下新建工程文件夹&#xff0c;如//192.168.100.10/e/YNPE27 在工程文件夹下&#xff0c;新建工程存储文件夹CC和照片…

docker安装与配置docker镜像加速器

文章目录 前言一、准备工作二、docker安装三、配置镜像加速器1.配置中科大镜像加速器2.配置阿里云镜像加速器 前言 我真的受不了虚拟机了&#xff0c;我电脑上有9个虚拟机&#xff0c;占了132G&#xff01;&#xff01;&#xff01;我还不敢随便删&#xff0c;怕到时候要用。。…

聚观早报 | 菜鸟回应明年赴港 IPO;谷歌即将发布最新 AI 大模型

今日要闻&#xff1a;菜鸟回应明年赴港 IPO&#xff1b;谷歌即将发布最新 AI 大模型&#xff1b;中国移动推出周杰伦数字人&#xff1b;“老头乐”销量冠军雷丁汽车申请破产&#xff1b;网信部门工作组进驻斗鱼平台 菜鸟回应明年赴港 IPO 近日&#xff0c;有消息称&#xff0c…

跟着我学 AI丨ChatGPT 详解

随着人工智能的发展&#xff0c;聊天机器人成为了一个备受关注的领域。而ChatGPT作为其中的佼佼者&#xff0c;其功能和技术水平也越来越受到人们的关注。那么&#xff0c;什么是ChatGPT&#xff1f;它又有哪些优点和限制呢&#xff1f; ChatGPT是一款基于自然语言处理技术开发…