首先,采用具有多个伪并行运行的进程的单处理器系统。当进程触发页面错误时,这是否会强制 CPU 停止执行所有程序,直到从磁盘加载页面?
如果是这样,这在多核或多处理器系统上是否会发生变化,或者其他进程是否可以在处理页面错误时继续读取和写入内存?
谢谢!
首先,采用具有多个伪并行运行的进程的单处理器系统。当进程触发页面错误时,这是否会强制 CPU 停止执行所有程序,直到从磁盘加载页面?
如果是这样,这在多核或多处理器系统上是否会发生变化,或者其他进程是否可以在处理页面错误时继续读取和写入内存?
谢谢!
首先,调度不适用于进程,但适用于线程。页面错误只会挂起导致错误的线程(在 Linux 和 Windows 上)。线程被取消调度,CPU 可以自由地做其他工作。
在操作系统接口硬件级别,无论如何都没有同步 IO。它不存在(至少在现代硬件中)。操作系统不会处于紧密的自旋循环中,等待硬件发出 IO 完成信号。相反,线程会被取消调度,直到 IO 完成(或相应的等待句柄发出信号)。
是的,这根本不是问题。没有人会设计出无法运行多个进程的多进程操作系统,也不会因为 B 正在等待磁盘 I/O 而任意阻止进程 A。