内核高内存 [英] Kernel high memory

查看:28
本文介绍了内核高内存的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在操作系统设计中,内核通常映射到较高的虚拟内存地址,从而获得对较高内存部分的控制。下面的空间是给在用户空间运行的应用程序的,Linux 3/1 virtual address split中很好地描述了这一点。

我想知道的是,为什么做出这个设计决定,或者为什么内核不使用内存的较低部分?这对我来说不是很清楚,或者可能是我监督了什么。

编辑:此问题涉及虚拟地址,而不是物理地址。

推荐答案

此类设计的一些优点/原因:

  • 应用程序不需要关心内核的大小和位置,可能会假装它们是内存中的唯一内核,从大约0开始,向上扩展,代码和数据重新定位最少或根本没有。因此,应用程序更易于设计和实现,并且它们可能不太可能出现与内存管理相关的错误。
  • 应用程序可以使用较小/较短的地址/指针,因此可以节省一些内存。
  • 在x86CPU中,16位和32位地址空间从虚拟地址0开始,到大约1MB(对于实数和虚拟8086模式)、16MB(i80286+上的16位保护模式)和4 GB(32位模式,非实数模式)结束。将内核放在较低的地址将减少应用程序可用的地址范围(例如,32位模式下的16位应用程序或64位模式下的32位应用程序)和/或使其内存管理复杂化。在x86上,将内核移到虚拟地址空间的顶部通常是有意义的。

可能还有其他原因,通常是特定于平台的。在某些平台上,这两个选项可能几乎没有区别。在另一些情况下,优选的内核位置可以在较低的虚拟地址。细节很重要。

这篇关于内核高内存的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆