【Linux】进程切换

本文详细介绍了操作系统中的进程切换过程,涉及到上下文切换、中断处理和寄存器保存与恢复。通过类比多个学生分时使用同一课桌,阐述了如何在CPU上保存和恢复进程状态,强调了堆栈在进程上下文存储中的作用,并提到了在IA-32体系和ARM体系中内核栈与中断栈的关系。此外,还解释了PSW和PC在进程状态维护中的关键角色。
摘要由CSDN通过智能技术生成

操作系统为了控制进程的执行,必须有能力挂起正在CPU上运行的进程,并恢复以前挂起的某个进程的执行,这种行为被称为进程切换,任务切换或上下文切换

或者说,进行进程切换就是从正在运行的进程中收回处理器,然后再使待运行进程来占用处理器。 这里所说的从某个进程收回处理器,实质上就是把进程存放在处理器的寄存器中的中间数据找个地方存起来,从而把处理器的寄存器腾出来让其他进程使用。那么被中止运行进程的中间数据存在何处好呢?当然这个地方应该是进程的私有堆栈。

让进程来占用处理器,实质上是把某个进程存放在私有堆栈中寄存器的数据(前一次本进程被中止时的中间数据)再恢复到处理器的寄存器中去,并把待运行进程的断点送入处理器的程序指针PC,于是待运行进程就开始被处理器运行了,也就是这个进程已经占有处理器的使用权了。

这就像多个同学要分时使用同一张课桌一样,说是要收回正在使用课桌同学的课桌使用权,实质上就是让他把属于他的东西拿走;而赋予某个同学课桌使用权,只不过就是让他把他的东西放到课桌上罢了。

在切换时,一个进程存储在处理器各寄存器中的中间数据叫做进程的上下文,所以进程的 切换实质上就是被中止运行进程与待运行进程上下文的切换。在进程未占用处理器时,进程 的上下文是存储在进程的私有堆栈中的。

显然,进程的切换可以用中断技术来实现,即当调度器获得了待运行进程的控制块(PCB)之后,应立即用软中断指令来中止当前进程的运行,并保存当前进程的PC值和PSW值。其后,使 用压栈指令把处理器其他寄存器的值压入进程私有堆栈。接下来,就从待运行进程的进程控 制块中取出私有堆栈指针的值并存入处理器的寄存器SP,至此SP就指向了待运行进程的私 有堆栈,于是下面就自待运行进程的私有堆栈中弹出上下文进人处理器。最后,利用中断返回指令来实现自待运行进程的私有堆栈中弹出PSW值和自待运行进程的私有堆栈中弹出PC值的功能。

这是一个完整的软中断处理过程,只不过在保护现场和恢复现场工作中,保护的是被中止运行进程的现场,恢复的是待运行进程的现场,这一切都依赖于堆栈指针的切换。

PSW为程序状态字,其中的各位对应了CPU内部的各种情况,各种不同的指令运行后该字节中的各位会有相应变化(也有的指令执行后该字节内容不变的),用户程序可根据这些变化推论出前面程序的运行结果,进而可做进一步处理。
PC为程序指针,CPU按照PC中的内容作为程序存储器存储单元的地址,取出指令来执行的,即PC中的内容就是CPU将要执行的指令的地址

IA-32体系(英特尔),内核栈≠中断栈,arm体系里,内核栈=中断栈;为什么这么说呢?因为进程上下文切换的下降进程的现场信息是保存在内核栈里的,而上下文切换本质也是由中断驱动的,所以可以说内核栈就是中断栈,但要记住英特尔体系里并不是。而其中,现场就是PSW,断点就是PC

Linux进程切换是指操作系统内部的一种调度机制,它允许计算机在同一时刻执行多个独立的任务,每个任务表现为一个进程。当一个进程运行时,CPU会分配给它一段时间的处理时间片。当时间片用完或者遇到了I/O操作(如读写磁盘)等不可预见的操作需要阻塞时,处理器会按照某种策略(通常是抢占式调度)将控制权交给其他进程。 在Linux下,进程切换通常由内核的调度器完成,主要包括以下几个关键点: 1. **进程就绪队列**:所有能够运行的进程都放在一个或多个就绪队列中,当有进程的时间片用尽时,会被移到就绪队列。 2. **调度算法**:Linux提供了多种调度算法,如Round Robin(轮转调度)、Priority Scheduling(优先级调度)等。调度器会选择下一个应被执行的进程,依据算法规则进行选择。 3. **中断和信号处理**:进程可能会因为外部事件(如用户输入、定时器中断)而被打断,这时会进入中断处理或信号处理阶段,然后恢复到之前的位置继续执行。 4. **上下文切换**:当从一个进程切换到另一个进程时,系统会保存前者的寄存器信息、内存映射等上下文,以便于恢复切换后的进程状态。 通过这种方式,Linux允许多个进程并发执行,提高系统的效率和响应速度。当用户需要查看或管理进程时,可以使用`ps`, `top`, 或者`jobs`等命令。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值