内存分页期间可以运行其他进程吗?

drp*_*per 7 memory multithreading multiprocessing virtual-memory

首先,采用单处理器系统,其中多个进程以伪并行方式运行.当进程触发页面错误时,这会强制CPU停止执行所有程序,直到从磁盘加载页面为止?

如果是这样,这在多核或多处理器系统上是否会发生变化,或者在处理页面错误时其他进程是否可以继续读取和写入内存?

谢谢!

usr*_*usr 6

首先,调度不适用于进程,但适用于线程.页面错误仅挂起发生故障的线程(在Linux和Windows上).线程被预先安排,CPU可以自由地做其他工作.

在OS接口硬件的级别上,无论如何都没有同步IO.它不存在(至少在现代硬件上).操作系统不会处于紧密的自旋循环中,等待硬件发出IO完成信号.相反,线程被取消调度,直到IO完成(或相应的等待句柄变为信号).

  • 您的操作系统模型适用于使用DMA的现代硬盘.但是历史上IDE使用PIO编程的I/O,在IO完成之前需要永久性的操作系统注意.而在硬件层面,无论如何都没有**异步**IO.DMA或PIC-e总线控制器执行所有同步IO,它将异步报告给CPU.还有一个好处,因为这是一个简单的专用控制器,而不是整个CPU. (3认同)