秒懂Linux之进程调度与切换

news2024/11/13 11:30:07

fe594ea5bf754ddbb223a54d8fb1e7bc.gif

目录

一.进程的切换 

二.进程的调度

基本走向

调度算法


一.进程的切换 

进程在运行的时候并非是放在cpu上让其全部跑完,而是基于时间片(比如每1ms就切换一个进程)进行轮转进行的~

  • 竞争性: 系统进程数目众多,而CPU资源只有少量,甚至1个,所以进程之间是具有竞争属性的。为了高效完成任务,更合理竞争相关资源,便具有了优先级。
  • 独立性: 多进程运行,需要独享各种资源,多进程运行期间互不干扰。
  • 并行: 多个进程在多个CPU下分别,同时进行运行,这称之为并行。
  • 并发: 多个进程在一个CPU下采用进程切换的方式,在一段时间之内,让多个进程都得以推进,称之为并发。

二.进程的调度

基本走向

 在cpu调度进程的时候会先让PCB各自接入运行队列接口链接在一起~

当有进程被cpu调度时在运行的时候会产生大量的临时数据~放在寄存器中!而处于cup内的临时数据外面称为进程的硬件上下文。

上下文不是指寄存器本身,而是指寄存器内部的数据~

寄存器只有一套,但内部的数据可以有很多套,各个进程被保存的数据互不干扰~

当我们的进程因时间片而离开时也会把这些临时数据存储在PCB开辟的空间中,等到该进程下一次被调度时可以恢复曾经保存的硬件上下文,然后继续执行首次调用未完成的操作~

而当有新进程被调用时,面对寄存器中上一个进程的临时数据也不用担心,它会自动把它的临时数据覆盖到寄存器中,然后让寄存器去记录,执行接下来的操作~

调度算法

往常进程调度一般是用FIOF先进先出的调度方式~

而在Linux中进程的调度算法需要考虑三种因素:优先级,饥饿性,效率~

我们基于内核中进程队列的数据结构来为大家讲述

首先先来讲述活跃队列,活跃队列就是当前处于运行队列中的进程~然后它们被安排在指针数组queue中,而在queue【140】里0-99的空间我们是不用的,因为通常那是代表实时操作(一直运行进程直到结束,没有时间片),所以我们取的是后面40个空间来划分出40个优先级(因为linux的优先级一共有40个等级,从低到高依次往上排)。

我们的进程就通过PCB查看自己的优先级然后对号入座到这40个空间中~

而我们还有一个队列,称为过期队列~唯一与活跃队列不同的是过期队列是在活跃队列进程还没全部调度完时突然有新进程加入进来,而新加入的进程不能马上到活跃队列中,而是来到过期队列按照优先级排列好~

我们可以理解为这三个数据存储在结构体q中,而数组array[0]存放的则是结构体q,我们有两个指针,一个是active指针,它会指向活跃队列所在的空间。一个是expried指针,它会指向过期队列所在的空间~

而处于运行队列中的进程(即活跃队列)终究会因为时间片而转人过期队列,当活跃队列没有进程时,这时候的active指针就会与expried指针交换指向的内容,那么原本过期队列的进程也开始进入cpu的运行队列进行调度了~

bitmap[5]:一共140个优先级,一共140个进程队列,为了提高查找非空队列的效率,就可以用5*32个比特位表示队列是否为空,这样,便可以大大提高查找效率!

 

最终我们达成O(1)算法调度~

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

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

相关文章

解决端口号被占用问题

第一种: 最简单有效的方法,重启一下电脑,占用此端口的程序就会释放端口。 第二种: 使用命令找到占用端口的程序,把它关闭。 1、打开运行窗口输入:CMD ,进入命令窗口。 2、输入:n…

【Mind+】 掌控板入门教程09 魔法之光

光是地球生命的来源,是人类生活的依据,更是人类认识外部世界的工具。在科技发达的今天,我们可以通过传感器来检测光,利用光帮助我们更好的生活。 今天就让我们一起通过几个小项目来感受光的魔法吧。 项目示例 掌控板…

基于vue框架的《程序设计》在线学习平台的设计与实现adl42(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能:学生,教师,课程信息,课程类型,班级,课程文件,学生选课,移除选课,课程作业,作业提交,作业批改 开题报告内容 基于Vue框架的《程序设计》在线学习平台的设计与实现——开题报告 一、选题背景与意义 1. 选题背景 随着互联网技术的不断发…

数据库事务的四大特性ACID

数据库事务的四大特性ACID 数据库事务(Transaction)是数据库管理系统(DBMS)执行过程中的一个逻辑单位,由一个或多个SQL语句组成,这些语句作为一个整体一起向系统提交,要么全部执行,…

MP4 H.264 MPEG-4 MPEG-2

MP4 视频编解码技术 H.264 MPEG-4 MPEG-2 MP4 (MPEG-4 Part 14): Format: A digital multimedia container format.Use: Often used to store video, audio, subtitles, and still images.Compression: Can use different codecs, such as H.264, for video compression. H.264…

linux中的库的概念、动态库与静态库

1.为什么引用库 准备头文件、源文件和主程序文件 g 将源程序进行联合编译生成可执行出程序 ./exec执行可执行程序 在上述案例中,主程序要是有的源程序代码,在add.cpp中,如果项目结束后,到了交付阶段,由于主程序的生…

WPF篇(13)-ScrollViewer控件+ScrollBar滚动条+Slider滑动条

ScrollViewer控件 如果某个控件的尺寸太大,当前界面无法全部显示,则可以将这个控件包含在ScrollViewer中,因为ScrollViewer控件封装了一个水平滚动条ScrollBar和一个垂直滚动条ScrollBar,所以,ScrollViewer就是一个包…

基于llama.cpp实现Llama3模型的guff格式转换、4bit量化以及GPU推理加速(海光DCU)

重要说明:本文从网上资料整理而来,仅记录博主学习相关知识点的过程,侵删。 序言 本文使用llama.cpp框架,对 Llama3-8B-Instruct 模型进行gguf格式转换,8bit量化,并在CPU和GPU上对8bit模型进行推理。 测试…

5.5.transformer

Transformer ​ Transformer是由编码器和解码器组成的,基于自注意力的模块叠加而成的,源(输入)序列和目标(输出)序列的嵌入(embedding)表示将加上位置编码在分别输入到编码器和解码器中: ​ ​ 从宏观角度来看,Transformer的编码…

Elastic 8.15:更好的语义搜索、新的 OTel 分布、SIEM 数据导入

作者:来自 Elastic Brian Bergholm 今天,我们很高兴地宣布 Elastic 8.15 正式发布。 有什么新功能? 8.15 版本包含大量新功能,包括更多工具来优化相关性、增强模型的灵活性和改进向量搜索,以及在 AI 驱动的安全分析方…

学习大数据DAY35 利用 echarts 的开源图表和 python 异常处理优化网站

目录 根据分数统计电影数量来生成图表 上机练习 14 添加异常 添加电影类型判断是整数及正整数异常 部署项目到 Nginx 上机练习 15 根据分数统计电影数量来生成图表 Echarts 官网: https://echarts.apache.org/examples/zh/index.html 下载柱状图和饼图 可以…

访问网站显示不安全如何处理

当访问网站时浏览器提示“不安全”,这通常是由于多种原因造成的。下面是一些常见的原因及其解决办法: 未启用HTTPS协议 如果网站仅使用HTTP协议,数据传输没有加密,会被浏览器标记为“不安全”。解决办法是启用HTTPS协议&#xff…

C++(4):基类-派生类

基类—>派生类 先构造基类再构造派生类 匿名对象形式向基类传参,基类先构造先传参 复制构造函数,采用类型兼容性规则即用派生类代替基类 使用protect派生类可访问其它地方不能访问 private只能自己访问 p访问的是自己类里的showTime 类型兼容性规则&…

HCIP | 实验二

概述 要求: 1.如图连接,合理规划IP地址,所有路由器各自创建一个loopback接口 2.R1再创建三个接口IP地址为201.1.1.1/24、201.1.2.1/24、201.1.3.1/24 R5再创建三个接口IP地址为202.1.1.1/24、202.1.2.1/24、202.1.3.1/24 R7再创建三个接口…

Mac平台M1PRO芯片MiniCPM-V-2.6网页部署跑通

Mac平台M1PRO芯片MiniCPM-V-2.6网页部署跑通 契机 ⚙ 2.6的小钢炮可以输入视频了,我必须拉到本地跑跑。主要解决2.6版本默认绑定flash_atten问题,pip install flash_attn也无法安装,因为强制依赖cuda。主要解决的就是这个问题,还…

批发行业进销存-入库单表格识别 源码CyberWinApp-SAAS 本地化及未来之窗行业应用跨平台架构

一、进销存入库进货单单识别意义 对个人、商品、公示内容等纸质信息登记表进行识别,用于登记信息的结构化整理和统计,大幅度降低人力录入成本,提升信息管理的便捷性 1. 提高效率:自动转换节省了手动录入的时间和精力,…

实景视频可视化的结构化脚本,脚本分为三类:文字脚本,分镜头脚本和动态脚本

在视频创作的世界中,脚本是创作的基础和核心。无论是简短的广告视频,还是复杂的电影制作,脚本都扮演着不可或缺的角色。随着视频内容需求的多样化,结构化脚本逐渐成为确保创作效率和质量的重要工具。结构化脚本不仅帮助创作者清晰…

PythonStudio 控件使用常用方式(十八)TCategoryButtons

PythonStudio是一个极强的开发Python的IDE工具,它使用的是Delphi的控件,常用的内容是与Delphi一致的。但是相关文档并一定完整。现在我试试能否逐步把它的控件常用用法写一点点,也作为PythonStudio的参考。 从1.2.1版开始,Python…

Elastic Search 8.15:通过语义文本和重新排序实现可访问的语义搜索

作者:来自 Elastic Nick Chow, Sunayana Vatassery 在 8.15 中,我们的客户可以更轻松地获得出色的搜索结果。我们的最新版本带来了语义重新排名(semantic reranking)、额外的向量搜索工具和更多第三方模型提供商,并将我…

告别焦虑:使用 acme 实现 ssl 免费证书到期自动更新

文章目录 前言什么是 ACME 协议?ACME 使用指南安装下载使用 gitee 下载设置别名(非必要)注册账号更改证书生成方式生成证书重新生成证书并认证安装 SSL 证书 使用 SSL 证书验证 配置证书自动续期证书续期命令自动续期查看添加的定时任务 cron…