linux内核—进程上下文/中断上下文/用户态、内核态抢占

上下文切换是操作系统核心的活动,涉及保存和恢复进程的CPU状态,包括寄存器和程序计数器。在Linux中,这一过程尤其高效。上下文切换发生在内核态,可能由于用户态抢占或内核抢占发生。内核抢占自Linux 2.6版本引入,允许在执行内核函数时进行切换,提高了系统响应性。这一特性与用户态抢占形成对比,后者只发生在用户态。
摘要由CSDN通过智能技术生成

1. 定义

进程通过系统调用或异常陷入内核
在这里插入图片描述

2.进程上下文

https://blog.csdn.net/mw_nice/article/details/89350164
上下文切换(有时也称做进程切换或任务切换)是指CPU从一个进程或线程切换到另一个进程或线程

稍微详细描述一下,上下文切换可以认为是内核(操作系统的核心)在 CPU 上对于进程(包括线程)进行以下的活动:

挂起一个进程,将这个进程在 CPU 中的状态(上下文)存储于内存中的某处,

在内存中检索下一个进程的上下文并将其在 CPU 的寄存器中恢复

跳转到程序计数器所指向的位置(即跳转到进程被中断时的代码行),以恢复该进程

因此上下文是指某一时间点CPU寄存器和程序计数器的内容, 广义上还包括内存中进程的虚拟地址映射信息.

上下文切换只能发生在内核态中, 上下文切换通常是计算密集型的。也就是说,它需要相当可观的处理器时间,在每秒几十上百次的切换中,每次切换都需要纳秒量级的时间。所以,上下文切换对系统来说意味着消耗大量的 CPU 时间,事实上,可能是操作系统中时间消耗最大的操作。
Linux相比与其他操作系统(包括其他类 Unix 系统)有很多的优点,其中有一项就是,其上下文切换和模式切换的时间消耗非常少.

3.用户态 内核态

Linux除了内核态外还有用户态。用户程序的上下文属于用户态,系统调用和中断处理例程上下文属于内核态. 如果一个进程在用户态时被其他进程抢占了COU则成发生了用户态抢占, 而如果此时进程进入了内核态, 则内核此时代替进程执行, 如果此时发了抢占, 我们就说发生了内核抢占.

内核抢占是Linux 2.6以后引入的一个重要的概念

我们说:如果进程正执行内核函数时,即它在内核态运行时,允许发生内核切换(被替换的进程是正执行内核函数的进程),这个内核就是抢占的。

抢占内核的主要特点是:一个在内核态运行的进程,当且仅当在执行内核函数期间被另外一个进程取代。

这与用户态的抢占有本质区别.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值