我最近正在学习操作系统的 I / O缓冲部分,根据我使用的书,
当用户进程发出I / O请求时,操作系统会将主内存的系统部分中的缓冲区分配给操作。
我理解这种方法如何能够避免非缓冲情况下的交换问题。但是它是否假设为进程创建的OS缓冲永远不会被换出?
为了扩展我的问题,我想知道是否有任何机制可以交换内存中操作系统的内核部分?
答案 0 :(得分:3)
操作系统通常会分页内核的一部分。内核必须定义哪些部分可以被分页,哪些部分可能不被分页。例如,通常会为分页池和非分页池提供单独的内存分配器。
请注意,在大多数处理器上,系统页面的页面格式与用户页面的页面格式相同,因此支持内核分页。
确定可以分页内核的哪些部分是系统设计的一部分,并且是预先完成的。您无法页面输出系统中断表。您可以在大多数情况下分页系统服务代码。您无法在大多数情况下分页中断处理代码。
答案 1 :(得分:2)
IIRC一些旧版本的AIX可能已经能够交换(即分页)一些内核代码。也许可能是较旧的操作系统(甚至可能是Multics)。我想知道内存中OS的内核部分是否有任何机制
然而,它今天几乎没用,因为内核内存只占当前(桌面和服务器)计算机上RAM的一小部分。总内核内存只有几十兆字节,而大多数计算机都有几十GB的内存。
BTW,microkernel系统(例如GNU Hurd)可以在分页过程中使用服务器程序。