有了 CPU 和内存,这很简单。
一个进程有一个很大的虚拟地址空间,它部分映射到物理内存中。当当前进程试图访问不在物理内存中的页面时,操作系统会介入,选择要交换的页面(例如使用循环),将其交换到磁盘中,然后从交换中读取所需的页面,并且控制权是回到流程。这很简单,因为如果没有该页面,该过程将无法继续。
GPU 内核是另一回事。
让我们考虑一个用例:
一个高优先级 [cpu] 进程,即X,调用内核(这是一个阻塞调用)。此时,操作系统切换上下文并将 CPU 分配给不同的进程是合理的,即Z。举个例子,让进程Z也用 GPU 做一些繁重的事情。
现在,GPU 驱动程序是做什么的?它会停止属于 [更高优先级] X的内核吗?它是否通知操作系统Z的优先级不足以卸载X的内核?一般来说,当两个进程需要 GPU 资源,但可用的 GPU 内存足以一次只为其中一个提供服务时会发生什么?