【计算机操作系统】-进程切换什么时候会发生呢?

本文详细介绍了操作系统中进程状态切换的几种常见场景,包括时间片中断、I/O中断、虚拟地址异常及系统调用等,解释了这些情况下进程如何从运行态转变为就绪态、等待态或终止态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

进程切换一定发生在中断/异常/系统调用处理过程中,常见的有以下情况:

  • 时间片中断、IO中断后 更改优先级进程;(导致被中断进程进入就绪态);
  • 阻塞式系统调用虚拟地址异常;(导致被中断进程进入等待态
  • 终止用系统调用不能继续执行的异常;(导致被中断进程进入终止态

举例说明:

  • 时钟中断:操作系统确定当前正在运行的进程的执行时间是否已经超过了最大允许时间段,如果超过了,进程必须切换到就绪态,调度另一个进程;
  • I/O中断: 操作系统确定是否发生了I/O活动。如果I/O活动是一个或多个进程正在等待的事件,操作系统就把所有相应的阻塞态转换到就绪态,操作系统必须决定继续执行当前处于运行态的进程,还是让具有高优先级的就绪态进程抢占这个进程。
  • 虚拟地址异常(内存失效):处理器访问一个虚拟内存地址,且此地址单元不在内存中,操作系统必须从外存中把包含这个引用的 内存块(页或段)调入内存中。在发出调入内存块的I/O请求之后,操作系统可以会执行一个进程切换,以恢复另一个进程的执行,发生内存失效的进程被置为阻塞态,当想要的块调入内存中时,该进程被置为就绪态;
  • 对于陷阱:操作系统确定错误或异常条件是否是致命的。如果是,当前正在运行的进程被转换到退出态,并发生进程切换;如果不是,操作系统 的动作取决于错误的种类 和操作系统的设计,其行为可以是试图恢复或通知用户,操作系统可能会进行一次进程切换或者继续执行当前正在运行的进程。
  • 最后操作系统可能被来自正在执行的程序的系统调用激活。例如,一个用户进程正在运行,并且正在执行一条请求I/O操作的指令,如打开文件,这个调用导致转移到作为操作系统代码一部分的一个例程上进行。通常,使用系统调用会导致把用户 线程置为阻塞态;
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mind_programmonkey

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值