嘿,伙计们,如果中断被禁用,所有的进程/线程调度都将被禁用,这是真的吗?我所知道的是中断包括时钟中断和其他中断。CPU调度(例如,轮询)基于时钟中断。如果禁用,那么调度也会被禁用,当前线程会继续执行,直到占用CPU为止。如果我说错了,请纠正我。
如果它是纯粹基于优先级的调度,而不是RR (考虑到实时系统),并且一个低优先级线程禁用了中断,那么一个高优先级线程到达,低优先级线程会被抢占吗?
这让我开始思考操作系统的保护问题。如果某些用户故意编写病毒来禁用中断怎么办?也许他不能在用户模式下做到这一点,如果他写了一个运行在内核模式下的程序,并且做了那么糟糕的事情怎么办?他能做到吗?
我并不期望所有平台都有通用的规则。所以请让我知道平台上的情况,谢谢。
发布于 2011-04-22 07:07:04
实际上,您的问题的答案取决于架构。让我们假设我们谈论的是i386或x86_64,因为它们是当今最流行的处理器架构。
用户模式程序无法清除中断标志,因为它需要CPL (当前特权级别) 0。用户模式程序永远不会有CPL 0。例如,在Linux中,用户模式程序使用CPL 2运行,而只有内核使用CPL 0运行。因此,您不能编写禁用中断从而禁用调度的病毒。在Windows中,如果我没记错的话,程序是用CPL1运行的。
另一方面,在内核中运行代码(在任何操作系统中)都需要管理权限,这允许您做任何想做的事情,所以在内核模式下禁用中断没有任何意义。
希望这能回答你的问题。
https://stackoverflow.com/questions/5741760
复制相似问题