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