是否有任何机制可以交换内存中OS的内核部分?

时间:2018-03-11 08:01:23

标签: memory-management operating-system

我最近正在学习操作系统的 I / O缓冲部分,根据我使用的书,

  

当用户进程发出I / O请求时,操作系统会将主内存的系统部分中的缓冲区分配给操作。

我理解这种方法如何能够避免非缓冲情况下的交换问题。但是它是否假设为进程创建的OS缓冲永远不会被换出?

为了扩展我的问题,我想知道是否有任何机制可以交换内存中操作系统的内核部分?

2 个答案:

答案 0 :(得分:3)

操作系统通常会分页内核的一部分。内核必须定义哪些部分可以被分页,哪些部分可能不被分页。例如,通常会为分页池和非分页池提供单独的内存分配器。

请注意,在大多数处理器上,系统页面的页面格式与用户页面的页面格式相同,因此支持内核分页。

确定可以分页内核的哪些部分是系统设计的一部分,并且是预先完成的。您无法页面输出系统中断表。您可以在大多数情况下分页系统服务代码。您无法在大多数情况下分页中断处理代码。

答案 1 :(得分:2)

  

我想知道内存中OS的内核部分是否有任何机制

IIRC一些旧版本的AIX可能已经能够交换(即分页)一些内核代码。也许可能是较旧的操作系统(甚至可能是Multics)。

然而,它今天几乎没用,因为内核内存只占当前(桌面和服务器)计算机上RAM的一小部分。总内核内存只有几十兆字节,而大多数计算机都有几十GB的内存。

BTW,microkernel系统(例如GNU Hurd)可以在分页过程中使用服务器程序。

请参阅Operating Systems: Three Easy Pieces