当前位置: 首页 > news >正文

【Linux】Linux中的调度和切换

一、引入基本概念

       在任何的分时操作系统中,其调度都是较为公平的调度。在来回顾一下关于优先级为什么会被限制的问题:

Linux为什么调整优先级是要受到限制的呢??

       如果不加限制,将自己进程的优先级调整到非常高,别人的优先级调整的非常低,优先级高的进程优先得到资源,常规进程很难获得CPU资源,会造成进程饥饿问题。

基本概念:

       进程在运行的时候,放在CPU中,直接必须要把代码跑完吗??不是,在现代的操作系统中,都是基于时间片进行轮转操作执行的。

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

二、进程切换

       在CPU中有很多寄存器,比如:eax/ebx/ecx/edx/fg/gs/eip/cr0~cr4,程序状态字,浮点数寄存器等,这些寄存器在PCB中也有相对应的变量。

       进程在运行过程中,要产生大量的临时数据,需要将这些临时数据放在CPU的寄存器上!!CPU内部的所有的临时数据,我们叫做进程的硬件上下文。这些硬件上下文在我们的进程进行切换的时候,需要让我们的进程进行保存到PCB中,保护上下文。当进程被二次调度的时候,进行被放到CPU上开始运行,将曾经保存的硬件上下文进行恢复

       CPU内的寄存器只有一套,但是寄存器上保存的数据可以有多套!!虽然,寄存器数据放在了一个共享的CPU设备里面,但是所有的数据其实都是被进程私有的!!

三、进程调度队列

具体请看:进程的地址空间

相关文章:

  • 解决 pnpm dev 运行报错的坎坷历程
  • Chat_TTSV3 本地版 Chat_TTS—UI本地版 免费分享
  • 快速体验 .NET9 提供的 HybridCache 混合缓存
  • 26.2Linux中SPI的驱动实验(编程)_csdn
  • 【Spring Boot 注解】@Configuration与@AutoConfiguration
  • 多线程1-进程和线程
  • mapbox基础,加载Fog云雾效果
  • Linux下的c/c++开发之操作mysql数据库
  • GCC编译器安装详细说明(举例arm-2013q3)
  • 神经网络之训练的艺术:反向传播与常见问题解决之道
  • 移动应用开发:自定义 View 处理大量数据的性能与交互优化方案
  • 高等数学第五章---定积分(§5.3定积分的计算方法)
  • 深度解析:2D 写实交互数字人 —— 开启智能交互新时代
  • React 中集成 Ant Design 组件库:提升开发效率与用户体验
  • 深度剖析:可视化如何重塑驾驶舱信息交互模式
  • ES6/ES11知识点 续四
  • Spring Web MVC————入门(1)
  • 二、Hadoop狭义和广义的理解
  • 宏电全新升级单北斗5G电力DTU,为每一公里电力线路注入可靠连接
  • springboot微服务连接nacos超时
  • 潘功胜:央行将设立5000亿元服务消费与养老再贷款
  • 巴基斯坦:印度向巴3处地点发射导弹
  • 上海市委常委会扩大会议传达学习习近平总书记考察上海重要讲话和在部分省区市“十五五”时期经济社会发展座谈会上的重要讲话精神
  • 这个五一假期,外贸拓内销好货和识货人在上海“双向奔赴”
  • 17家城商行去年年报盘点:西安银行营收增速领跑,青岛银行净利增速领跑
  • 日本政府强烈反对美关税政策并要求其取消