嘿伙计们,如果中断被禁用,是否会禁用所有进程/线程调度?我所知道的是中断包括时钟中断和其他中断。 CPU调度(例如,Round-Robin)基于时钟中断。如果禁用,则也会禁用调度,并且当前线程继续执行,直到它产生CPU为止。如果我错了,请纠正我。
如果是纯粹的基于优先级的调度而不是RR(考虑实时系统),并且优先级较低的线程禁用中断,则优先级较高的线程到达,优先级较低的线程是否会被抢占?
这让我想到操作系统中的保护。如果某些用户故意编写病毒以禁用中断怎么办?可能他不能在用户模式下这样做,如果他写一个以内核模式运行的程序并做那些坏事怎么办?他能这样做吗?
我并不期望所有平台都有一般规则。所以,请让我知道你知道的平台上的情况,谢谢。
答案 0 :(得分:3)
实际上,回答你的问题是依赖于架构的。让我们假设我们正在谈论i386或x86_64,因为这些是目前最流行的处理器架构。
用户模式程序无法清除中断标志,因为它需要CPL(当前特权级别)0。用户模式程序永远不会有CPL 0.例如,在Linux中,用户模式程序使用CPL 2运行,只有内核运行CPL因此,您无法编写会禁用中断的病毒,从而禁用调度。在Windows中,如果我没有记错,程序将以CPL 1运行。
另一方面,在内核中运行代码(在任何操作系统中)都需要管理权限,这使得您无论如何都可以执行任何操作,因此在内核模式下禁用中断没有任何意义。
希望这能回答你的问题。