内核同步技术详解
1. 内核服务请求概述
在操作系统中,CPU 有内核模式(Kernel Mode)和用户模式(User Mode)之分。当 CPU 处于内核模式时,执行的代码就如同服务员提供的服务;而当 CPU 处于用户模式时,可认为服务员处于空闲状态。
老板的请求类似于中断(Interrupts),客户的请求则对应于用户模式进程发起的系统调用(System Calls)或异常(Exceptions)。用户模式进程若想请求内核服务,需发出适当的指令(如在 80×86 架构中,使用 int $0x80 或 sysenter 指令),这些指令会引发异常,迫使 CPU 从用户模式切换到内核模式。在后续讨论中,系统调用和常规异常通常都被称为“异常”。
2. 内核抢占
内核抢占(Kernel Preemption)的定义并不容易给出。初步来说,如果在被替换进程执行内核函数(即处于内核模式)时可能发生进程切换,那么该内核就是可抢占的。但在 Linux 等实际操作系统中,情况更为复杂:
- 计划进程切换与强制进程切换 :在可抢占和不可抢占内核中,处于内核模式的进程都可能自愿放弃 CPU,比如等待某些资源时进入睡眠状态,这种进程切换称为计划进程切换(Planned Process Switch)。而可抢占内核与不可抢占内核的区别在于,处于内核模式的进程对可能引发进程切换的异步事件(如唤醒高优先级进程的中断处理程序)的反应不同,这种进程切换称为强制进程切换(Forced Process Switch)。
- 进程切换的执行
超级会员免费看
订阅专栏 解锁全文
1268

被折叠的 条评论
为什么被折叠?



