异常 中断上下文 内核抢占

1.异常和中断上下文

一个中断处理程序既可以抢占其他中断处理程序,也可以抢占异常处理程序,相反,异常处理程序从不抢占中断处理程序。在内核态能触发的唯一异常就是缺页异常。但是,中断处理程序从不执行可以导致缺页(因此意味着进程切换)的操作。

补充:此处的异常是指除中断irq以外的异常,它们处于进程上下文,而不是中断上下文。


2.关于内核抢占

内核抢占是Linux 2.6中一个重要的概念。我们说:如果进程正执行内核函数时,即它在内核态运行时,允许发生内核切换(被替换的进程是正执行内核函数的进程),这个内核就是抢占的。遗憾的是,在Linux中(在所有其他的操作系统中也一样),情况要复杂得多:

第一:无论在抢占内核还是非抢占内核中,运行在内核态的进程都可以自动放弃CPU,比如,其原因可能是,进程由于等待资源而不得不转入睡眠状态。ULK-3中把这种进程切换称为计划性进程切换。但是,抢占式内核在响应引起进程切换的异步事件(例如唤醒高优先权进程的中断处理程序)的方式上与非抢占的内核是有差别的,我们将把这种进程切换称做强制性进程切换。

第二:所有的进程切换都由宏switch_to所代表的汇编代码段来完成,这一点在进程管理专题也描述得很清楚。在抢占内核和非抢占内核中,当进程执行完某些具有内核功能的线程,而且调度程序被调用后,就发生进程切换。不过,在非抢占内核中,当前进程是不可能被替换的,除非它打算切换到用户态&#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值