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

【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设备里面,但是所有的数据其实都是被进程私有的!!

三、进程调度队列

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

http://www.xdnf.cn/news/4203.html

相关文章:

  • 开源智能体MetaGPT记忆模块解读
  • 【大数据】服务器上部署Apache Paimon
  • 基于k8s的Jenkins CI/CD平台部署实践(三):集成ArgoCD实现持续部署
  • 高铁座位指示灯系统技术深度解析:从物联网到智慧出行的实践路径
  • idea使用lombok错误,找不到符号,明明编译没问题,运行报错
  • The 2023 ICPC Asia Taoyuan Regional Programming Contest
  • 13.Spring boot中使用Actuator 监控
  • 深入了解linux系统—— 进程地址空间
  • CVE-2025-24813:Apache Tomcat RCE 漏洞分析
  • 拟南芥T2T基因组-文献精读127
  • Github上如何准确地搜索开源项目
  • 高等数学第四章---不定积分(4.4有理函数的不定积分2)
  • Elasticsearch:我们如何在全球范围内实现支付基础设施的现代化?
  • 甲骨文云服务器技术全景解析:从基础架构到行业赋能​
  • 从0开始学习大模型--Day2--大模型的工作流程以及初始Agent
  • NLP 和大模型技术路线
  • 51单片机同一个timer 作为定时器和波特率发生器么?
  • AutoDL+SSH在vscode中远程使用GPU训练深度学习模型
  • 临床智能体AI与环境感知AI的融合:基于python的医疗自然语言处理深度分析
  • 荣耀A8互动娱乐组件部署实录(第2部分:界面逻辑与资源加载机制)
  • 当智能科技遇上医疗行业会帮助疫苗如何方便管理呢?
  • LeetCode 热题 100 279. 完全平方数
  • Qt开发经验 --- 避坑指南(4)
  • Linux/AndroidOS中进程间的通信线程间的同步 - POSIX IPC
  • SVG数据可视化设计(AI)完全工作流解读|计育韬
  • VSCode|IDEA|PyCharm无缝接入DeepSeek R1实现AI编程
  • hybird接口配置
  • 【基础】Python包管理工具uv使用教程
  • 从零实现基于Transformer的英译汉任务
  • 翻转二叉树(简单)