3.3 同步
高IRQL的同步
在内核执行的各个阶段,内核必须保证在临界区中同一时刻只有一个处理器在执行,内核必须保证所有线程按照互斥的方法访问这些数据(内核临界区)。
由于中断的发生,该中断的处理例程需要修改一个全局的数据结构,与此同时,内核恰好在更新该数据结构,违背了互斥的原则(同一时间只有一个处理器访问数据结构)。
windows采用了一个比较复杂的方法:首先内核先将处理器的IRQL(中断请求级别)提高到能访问该数据结构的最高的级别,这样就屏蔽了在中断处理例程中使用该资源的中断。但是这种策略对于单处理器来说是可以的,但是不能阻止多处理器发生中断。