栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Linux x86上,内核空间是否映射到用户空间?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Linux x86上,内核空间是否映射到用户空间?

实际上,在32位Windows上,如果没有

/3G
引导选项,内核将映射到线性地址空间的前2GB,剩下2GB的空间供用户处理。

Linux做类似的事情,但是它在最高1GB的线性空间中映射内核,因此为用户进程留出了3GB的空间。

我不知道您是否可以仅使用/
proc文件系统来查看整个内存布局。在为学生设计的实验室中,我创建了一个微型设备驱动程序,该驱动程序使用户可以查看物理内存地址,并获取几个控制寄存器的内容,例如CR3(目录页面基址)。

通过使用这两种操作,一个人可以浏览当前进程的目录页面(一个正在执行此操作),并查看存在的页面,哪些页面由用户和内核拥有,或者仅由内核拥有,使用该信息,它们必须显示一个映射,显示内存使用情况,包括内核空间。

看看这个PDF。这是我们在课程中所做的所有实验的编译版本。
http://www.atc.us.es/asignaturas/tpbn/PracticasTPBN2011.pdf

在PDF的第36页(文档的第30页)中,您将看到内存映射的外观。这是来自练习3的练习3.2的结果。

文字是西班牙文,但是如果您无法理解某些内容,可以确定可以使用翻译器或类似的工具。本实验假定学生已阅读有关分页系统如何工作以及如何解释目录和页面条目的布局的信息。

地图是这样的。16x64块。块中的每个单元代表4MB的当前进程虚拟地址空间。地图应该是三维的,因为页面表用1024个条目(页面)描述了4MB区域,并且可能不会显示所有页面,但是为了保持地图清晰,练习要求用户折叠这些区域,显示了描述当前页面的第一个页面条目的内容,希望该页面表中的所有后续页面都共享相同的属性(实际上可能正确也可能不正确)。

该映射与内核2.6.X一起使用。其中

PAE
不使用和
PSE
使用(
PAE
并且
PSE
是控制寄存器中的两个位字段
CR4
)。
PAE
启用2MB页面并
PSE
启用4MB页面。4KB页面始终可用。

. : PDE not present, or page table empty.X : 4MB page, supervisor.R : 4MB page, user, read only.* : 4MB page, user, read/write.x : Page table with at least one entry describing a supervisor page.r : Page table with at least one entry describing an user page, read only.+ : Page table with at least one entry describing an user page, read/write.................................r..............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................+..............................+.xXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXxXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX..x...........................xx

您可以看到有3GB的巨大内存空间,在这种情况下,该空间几乎是空的(该过程只是一个小的C应用程序,并且使用了不到4MB的内存,所有这些都包含在一个页表中,该页的第一个当前页是只读页)
,假定是程序代码的一部分,或者可能是静态字符串)。

在3GB边界附近有两个读/写小区域,它们可能属于用户程序加载的共享库。

后4行(256个目录条目)几乎全部属于内核。实际存在和使用了224个条目。这些映射了前896MB的物理内存,它是内核所在的空间。在RAM超过896MB的系统中,内核使用最后32个条目访问超出896MB标记的物理内存。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/403335.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号