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

Linux进程调度和进程切换

并行(Parallel)

含义:并行是指多个任务在同一时刻同时执行。

硬件要求:需要多个处理器(如多核CPU)或者多台计算设备来实现,这些执行单元能够真正地同时处理不同的任务。例如,一个具有4个核心的CPU可以同时执行4个不同的任务,每个核心负责一个任务的执行。

执行特点:任务之间真正地同时进行,不存在资源共享带来的相互等待,能够极大地提高计算速度,适用于计算密集型任务。

并发(Concurrent)

含义:并发是指多个任务在宏观上看起来是同时执行的,但在微观上,这些任务是交替执行的。

实现方式:在单处理器(单核CPU)系统中,通过操作系统的调度机制,快速地在多个任务之间切换,使得每个任务都能得到一定的执行时间片,从而给人一种同时执行的感觉。例如,在一个单核CPU的计算机上同时打开浏览器、音乐播放器和文档编辑器,操作系统通过调度使这三个程序交替运行。

应用场景:可以有效地利用系统资源,提高系统的资源利用率和响应速度,适用于I/O密集型任务,因为在I/O操作(如磁盘读写、网络传输)期间,CPU可以切换去执行其他任务。

每一个进程都要有自己的时间片,时间变到了进程就要切换。Linux是基于时间片进行调度轮转的一个进程的时间片到了。不一定跑完可以在任何地方都可以重新被调度和切换。

Linux中的进程调度

目标与原则

目标是在多个进程间合理分配CPU资源,提高系统的整体效率、响应速度和公平性。

遵循一定的原则,如保证系统的实时性需求(对于实时进程)、提高系统吞吐量、满足用户交互体验等。

调度算法

主要采用完全公平调度算法(CFS)。CFS基于虚拟运行时间(vruntime)概念,每个进程都有自己的vruntime,它与进程的实际运行时间、权重(反映优先级)相关。通过比较vruntime来决定进程的调度顺序,vruntime小的进程优先获得CPU。CFS使用红黑树来管理就绪进程,按照vruntime值进行排序,调度时选择红黑树最左端(vruntime最小)的进程运行。

同时也存在其他调度策略用于特殊进程,如实时进程采用的实时调度策略,以确保对时间敏感的任务能及时执行。

调度时机

进程状态改变时,如从运行态变为阻塞态(例如等待I/O操作),此时需要重新调度其他就绪进程运行。

时间片用完,CFS虽然没有传统意义上的固定时间片,但当一个进程运行一段时间后,其vruntime增长,可能不再是最小,就会触发调度让其他进程运行。

有更高优先级的进程进入就绪队列时,会抢占当前正在运行的低优先级进程的CPU资源而被调度运行。

Linux中的进程切换

 

进程调度的本质就是取指令更新PC指令分析指令执行。

保存当前进程上下文

包括保存程序计数器(PC),它指向当前正在执行的指令地址,保存通用寄存器(如EAX、EBX等)的值,这些寄存器存储着进程运行中的临时数据,还有栈指针(SP)等其他相关寄存器的值。这些信息被保存到当前进程的内核栈中,以便后续恢复进程执行时使用。

切换地址空间相关操作

切换页表,因为不同进程有各自独立的虚拟地址空间到物理地址空间的映射。Linux使用页表来管理这种映射关系,进程切换时要将当前页表切换为下一个要运行进程的页表。

恢复新进程上下文

从新进程的内核栈中恢复之前保存的程序计数器、寄存器的值等信息,使新进程可以从上次中断的地方继续执行,从而完成进程的切换操作。进程切换是有开销的,包括保存和恢复上下文、切换页表等操作所花费的时间,如果进程切换过于频繁会影响系统的性能。

http://www.lryc.cn/news/454263.html

相关文章:

  • 机器学习基本上就是特征工程——《特征工程训练营》
  • Android Framework AMS(01)AMS启动及相关初始化1-4
  • 基于基于微信小程序的社区订餐系统
  • [单master节点k8s部署]29.Istio流量管理(五)
  • Something for 24OI
  • 【React】事件机制
  • 华为OD的职级与薪资
  • 【HTML5】html5开篇基础(4)
  • HTTP【网络】
  • MQ延迟消息:原理、实现与应用
  • 计算机网络—大端序和小端序
  • 《OpenCV 计算机视觉》—— Harris角点检测、SIFT特征检测
  • rtmp协议转websocketflv的去队列积压
  • Elasticsearch实战应用:构建高效搜索引擎
  • Hive数仓操作(四)
  • 《C++跨平台开发:突破界限,释放无限可能》
  • 速盾:免备案服务器?
  • Electron获取nodejs和chrome版本信息
  • 【React】setState 批量更新
  • 微信小程序开发日记第二天
  • 如果您忘记了 Apple ID 和密码,按照指南可重新进入您的设备
  • Top4免费音频剪辑软件大比拼,2024年你选哪一款?
  • 基于SSM的电影院售票系统设计与实现
  • uniapp 必须掌握的细节
  • JavaWeb——Vue组件库Element(3/6):常见组件:Dialog对话框、Form表单(介绍、使用、实际效果)
  • 一个月学会Java 第2天 认识类与对象
  • 【WRF数据准备】MODIS静态地理数据下载及制备
  • MySQL数据库——索引
  • 【SpringCloud】服务注册/服务发现-Eureka
  • 让你的Github Profile高大时尚!