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

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.kler.cn/news/334723.html

相关文章:

  • leetcode面试题17.04:消失的数字(C语言版)
  • 【系统架构设计师】专题:系统分析和设计
  • 乌班图基础设施安装之Mysql8.0+Redis6.X安装
  • 【STM32开发之寄存器版】(三)-详解NVIC中断
  • 论文阅读:InternVL v1.5| How Far Are We to GPT-4V? 通过开源模型缩小与商业多模式模型的差距
  • SpringBoot在线教育平台:设计与实现的深度解析
  • Unity 快速定位到目标文件夹
  • [运维]3.containerd无法使用fluentd的问题
  • 简历投递经验01
  • 分布式锁--redission 最佳实践!
  • 17岁孩子开发AI应用,4个月入百万,人人都是AI产品经理的时代快来了
  • 助力信息学奥赛-VisuAlgo:提升编程与算法学习的可视化工具
  • ThinkPHP和PHP的区别
  • 来自德国的义齿雕刻机电主轴SycoTec 4033
  • 阿里巴巴开源的FastJson 1反序列化漏洞复现攻击保姆级教程
  • Word办公自动化的一些方法
  • 【分页】Spring Boot 列表分页 + javaScript前台展示
  • 物联网智能设备:未来生活的变革者
  • 【五分钟学会】YOLO11 自定义数据集从训练到部署
  • 【web安全】——XXE漏洞