无论谁接到呼叫,都清楚正在发生什么,并且必须应对。请记住,中断是警报系统有紧急需要处理的事情的方式,它最好尽快处理。禁用中断会降低性能,因为事件处理会被延迟。不久前,英特尔增加了SYSENTER/SYSEXIT指令,以提供更快/更简单的系统调用处理, Linux 几乎立即开始使用它们。 从历史角度看,计算机过去只有一个CPU。在它们上面禁用中断是一种确保互斥的(野蛮)方法:只要中断被禁用,没有任何其他东西可以干扰(除了极少数情况),因为没有其他事情可以发生。因此,强制产生中断是完成系统调用的一种简单方法,并带有确保没有干扰的额外好处。但是,在多CPU机器上(甚至是手机!),在处理呼叫的CPU上禁用中断几乎没有任何效果,别的CPU可以继续践踏你的工作。系统范围内禁用中断的代价很高,而仅仅为了确保互斥而停止整个系统是疯狂的。当前版本的Linux使用复杂的同步技术,尽可能避免使用这种笨拙的方法。因此,防止中断的保护已经不那么重要了。
- vonbrand
2
但据我所知,Linux会在进入中断处理程序时自动执行一些关键操作(禁用中断),而重置工作是通过软件中断调度的,这种调度被称为“后半部机制”,不需要原子代码。 - Gary Yin
“不久之前”-- Pentium II于1997年发货,是第一款支持SYSENTER的英特尔CPU。目前没有任何x86或x64系统缺少这些指令。 - Jon Watte