Operating system 操作系统内核是否为自己使用虚拟内存?

Operating system 操作系统内核是否为自己使用虚拟内存?,operating-system,virtual-memory,Operating System,Virtual Memory,操作系统内核是否使用虚拟内存,或者操作系统内核的某些部分是否可以驻留在硬盘中 哪个操作系统内核 有些操作系统内核使用虚拟内存,有些则不使用。许多现代操作系统甚至不再有虚拟内存。VM只适用于C、C++或类似的指针不安全语言,但目前使用的大多数语言和平台都是指针安全的,例如JavaScript、Python、Ruby、PHP、Perl、java、CLI减不安全,因此不再需要VM了。广义地说,答案是肯定的。虚拟内存是操作系统的一个基本部分,用于保护一个进程不受另一个进程的影响,并使进程产生一种错觉,以

操作系统内核是否使用虚拟内存,或者操作系统内核的某些部分是否可以驻留在硬盘中

哪个操作系统内核


有些操作系统内核使用虚拟内存,有些则不使用。许多现代操作系统甚至不再有虚拟内存。VM只适用于C、C++或类似的指针不安全语言,但目前使用的大多数语言和平台都是指针安全的,例如JavaScript、Python、Ruby、PHP、Perl、java、CLI减不安全,因此不再需要VM了。广义地说,答案是肯定的。虚拟内存是操作系统的一个基本部分,用于保护一个进程不受另一个进程的影响,并使进程产生一种错觉,以为自己拥有计算机的全部内存。维基百科上的文章是一个很好的参考,说明了这是如何工作的。虽然公平地说,Linux可以在没有虚拟内存的情况下进行配置,但也有其他定制或实时系统不使用虚拟内存


现在,如果您想问一个更详细的问题,即操作系统是否会分页保存内核数据结构的内存,我只能回答Linux内核不会。内存已经足够大了这些天来,通过分页内核数据结构获得的额外内存并不能证明页面错误增加的复杂性或成本是合理的。

NT内核和设备驱动程序使用虚拟内存来存储可以安全地分页到存储的数据结构和对象。例如,驱动程序可以像usermode程序那样请求虚拟内存

但是,内核有以下数据和代码:1必须始终保留在内存中,以提高效率;2必须保留在内存中,因为无法处理页面错误。一个典型的例子是进入ISRs中断服务程序,例如页面错误处理代码本身。这种类型的代码和数据总是保存在物理内存中,称为NT内核上的非分页池

后者并不意味着直接引用非分页内存地址。内核内存管理器总是将它们转换为物理地址,反之亦然


我想我在听更正,唯一没有虚拟映射的物理地址是系统在WinNT中启动时的第一个1MB,NTLDR/NTDETECT.COM阶段,直到激活保护模式。

这不是更多的segfault.COM或superuser.COM吗?特定语言是否具有或提供指针以及操作系统是否具有/使用虚拟内存是两个完全不同的概念。有一些特定于用例的操作系统,例如不使用任何虚拟内存的Cisco IOS。他们使用具有平面内存模型的单片内核。