当前位置: 首页 > 面试题库 >

Linux 3/1虚拟地址拆分

金承嗣
2023-03-14
问题内容

在了解需要highmem来解决超过1GB RAM的问题时,我缺少一些东西。有人可以指出我哪里出问题了吗?谢谢!

我知道的:

  • 保留1 GB的进程虚拟内存(高内存区域)用于内核操作。用户空间可以使用剩余的3 GB。这是3/1分割。

  • VM的虚拟内存功能将(连续)虚拟内存页面映射到物理页面(RAM)。

我不知道的是:

  • 哪些操作使用内核虚拟内存?我想内核空间中的kmalloc(…)之类的东西会使用内核虚拟内存。

  • 我认为在此方案下可以使用4GB的RAM。我不明白为什么内核1 GB虚拟空间是解决物理空间时的限制因素。这是我的理解破裂的地方。请指教。

我一直在阅读这篇文章(http://kerneltrap.org/node/2450),这很棒。但这并不能完全按照我的喜好解决我的问题。


问题答案:

内核虚拟空间是可用物理内存的限制因素的原因是,内核需要访问所有物理内存,而访问物理内存的方式是通过内核虚拟地址。内核不使用允许直接访问物理内存位置的特殊指令-
它必须为它要与之交谈的任何物理范围设置页表条目。

在“旧样式”方案中,内核进行了设置,以便每个进程的页表将虚拟地址从映射0xC00000000xFFFFFFFF直接映射到物理地址从映射0x000000000x3FFFFFFF(这些页已标记为只能在环0-内核模式下访问)。这些是“内核虚拟地址”。在这种方案下,内核可以直接读取和写入任何物理内存位置,而无需费心MMU来更改映射。

在HIGHMEM方案下,从内核虚拟地址到物理地址的映射不是固定的-
物理内存的某些部分在内核需要访问该内存的情况下映射到内核虚拟地址空间中或从内核虚拟地址空间中映射出来。这允许使用更多的物理内存,但是以必须不断更改虚拟到物理的映射为代价,这是相当昂贵的操作。



 类似资料:
  • 从虚拟内存到物理内存 虚拟地址和物理地址 到目前为止,我们简易的操作系统还只是一个内核在执行,还没有多任务的概念。在现代的操作系统中,为了让其他的程序能方便的运行在操作系统上,需要完成的一个很重要的抽象是「每个程序有自己的地址空间,且地址空间范围是一样的」,这将会减少了上层程序的大量麻烦,否则程序本身要维护自己需要的物理内存,这也会导致极大程度的不安全。 这个执行上看到的地址空间,就是虚拟内存。而

  • 问题内容: 我正在一个小型嵌入式系统上工作。当我的linux启动到用户空间时,我知道物理内存中的设备在哪里。我想将它们映射到用户空间虚拟地址。目前,我正在通过内核模块进行操作。我使用vmalloc / kmalloc(取决于大小),然后在返回的虚拟地址上使用ioremap_page_range映射我的物理地址。我不认为这是正确的方法。首先,我分配内存,然后要求内核将虚拟地址空间重新映射到一些不同的

  • 系统需求 就像它的名字"基于IP"所暗示的那样,这样的服务器中每个基于IP的虚拟主机必须拥有不同的IP地址。可以通过配备多个真实的物理网络接口来达到这一要求,也可以使用几乎所有流行的操作系统都支持的虚拟界面来达到这一要求(详情请参见您的系统文档,这种功能一般被称作"IP别名",一般用"ifconfig"命令来进行设置)。 如何配置Apache 有两种配置方法来使apache支持多主机:为每个虚拟主

  • 本文向大家介绍请你说一说Linux虚拟地址空间相关面试题,主要包含被问及请你说一说Linux虚拟地址空间时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 为了防止不同进程同一时刻在物理内存中运行而对物理内存的争夺和践踏,采用了虚拟内存。 虚拟内存技术使得不同进程在运行过程中,它所看到的是自己独自占有了当前系统的4G内存。所有进程共享同一物理内存,每个进程只把自己目前需要的虚拟内存空间映射并存

  • 本文向大家介绍虚拟机里Centos7的IP地址查看方法,包括了虚拟机里Centos7的IP地址查看方法的使用技巧和注意事项,需要的朋友参考一下 这里之所以是查看下IP ,是我们后面要建一个Centos远程工具Xshell 连接Centos的时候,需要IP地址,所以我们这里先 学会查看虚拟机里的Centos7的IP地址 首先我们登录操作系统 用户名root 密码 123456 然后我们输入ip查询命

  • 最新SDK下载链接:https://bbs.sangfor.com.cn/forum.php?mod=forumdisplay&fid=49 注:进入网页后选择SDK下载。