操作系统内核是使用虚拟内存还是操作系统内核的某些部分可以驻留在硬盘中?
答案 0 :(得分:1)
“使用虚拟内存”是一种模糊的陈述。广泛解释,答案是肯定的。虚拟内存是操作系统的基本组成部分,用于保护一个进程免受另一个进程的影响,并使进程产生幻觉,即他们拥有计算机的整个内存。关于virtual memory的维基百科文章是如何运作的一个很好的参考。 (虽然公平地说,可以在没有虚拟内存的情况下配置Linux,并且还有其他不使用它的自定义或实时系统。)
现在,如果你问一个更详细的问题,即操作系统是否会分页出包含内核数据结构的内存,我只能回答Linux内核没有的问题。内存足够大这些天通过分页内核数据结构获得的额外内存不足以证明增加的复杂性或页面错误的成本。
答案 1 :(得分:0)
NT内核和设备驱动程序将虚拟内存用于可以安全地分页到存储的数据结构和对象。例如,驱动程序可以像用户模式程序那样请求虚拟内存。
但是,内核的数据和代码:1)出于效率原因必须始终保留在内存中2)必须保留在内存中,因为页面错误无法提供服务。典型的例子是进入ISR(中断服务程序)(例如页面错误处理代码本身)。这种类型的代码和数据始终保存在物理内存中,并且在NT内核上称为非分页池。
后者并不意味着直接引用非分页内存地址。它们总是由内核内存管理器转换为物理地址(反之亦然)。
我认为(我倾听更正)在没有虚拟映射的情况下使用的唯一物理地址是系统启动时的第一个1MB(在WinNT,NTLDR / NTDETECT.COM阶段,直到激活保护模式)。
答案 2 :(得分:-7)
哪个操作系统内核?
某些操作系统内核使用虚拟内存,有些则没有。许多现代操作系统甚至不再拥有虚拟内存。 (只有C,C ++或类似的指针不安全语言才需要VM,但今天使用的大多数语言和平台都是指针安全的(例如JavaScript,Python,Ruby,PHP,Perl,Java,CLI减去{{1} }),所以不再需要VM了。)