我正在学习并发以及操作系统如何处理中断,例如在程序进行大型矩阵乘法等重要计算时将光标移动到屏幕上。
我的问题是,假设您在那些单核上的旧计算机上,由于所有光标移动而不需要不断上下文切换来处理您的中断,因此需要更多时间对于重要的计算?但我认为这不是那么大的延迟,因为操作系统可能会将我的计算优先于我的中断吗?也许在运动之间跳过几帧。
如果我们转向多核系统,这种情况通常不太可能发生,因为光标移动可能会被另一个核心处理?所以我的计算不会那么延迟吗?
当我在这时,我是否正确地认为单核计算机可能会像数百个进程一样经历并且它们在所有进程中都会进行上下文切换?从字面上看,您的计算机一次只执行一条指令一段时间(一个时间片),然后需要使用不同的指令集切换到另一个进程。如果是这样,令人惊讶的是核心如何做到这么多......跳转,获取上下文,执行几个步骤,将上下文保存到堆栈中,再次跳转。冲洗并重复。显然没有并行性。因此,没有两个指令同时运行。它只会给人一种错觉。
答案 0 :(得分:1)
你的最后一段是正确的,操作系统的调度程序的工作是通过让每个进程执行一些指令然后继续执行下一个指令来产生并行感。这不仅会影响单核CPU,通常您的计算机将运行比CPU更多的进程。 (在Windows上使用任务管理器或在Linux上使用顶层查看当前正在运行的进程数。)
就您的鼠标问题而言:该中断很可能只是更改变量中的当前鼠标坐标而不会导致重绘。因此,它将非常快,不应在编程执行中造成任何可测量的延迟。如果你可以按光速移动鼠标,也许会这样;)