Linux 虚拟地址来源疑问

zzz7794672 zzz7794672 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
Hi 请问有人知道Linux内核本身和进程中的虚拟内存是由谁指定的吗?我们都知道虚拟地址到物理地址要经过MMU,问题是虚拟地址是怎么来的呢?链接器吗?还是加载分配?
1 如果是链接器指定的,那么Linux内核的虚拟内存是否就对应是lds文件的地址?
2 如果进程的虚拟内存是在加载时由内核分配的,那么Linux内核本身的代码段和数据段的虚拟内存又是谁来指定的?
...全文

相关推荐

Linux虚拟地址空间布局

在多任务操作系统中,每个进程都运行在属于自己的内存沙盘中。这个沙盘是虚拟地址空间(Virtual Address Space),在32位模式下它是一个4GB的内存地址块。在Linux系统中, 内核进程和用户进程所占的虚拟内存比例是1:3,而Windows系统为2:2(通过设置Large-Address-Aware Executables标志也可为1:3)。这并不意味着内核使用那么多物理内存,仅表示它可支配这部分地址空间,根据需要将其映射到物理内存。   虚拟地址通过页表(Page Table)映射到物理内存,页表由操作系统维护并被处理器引用。内核空间在页表中拥有较高特权级,因此用户态程序试图

weixin_38686860

linux 虚拟地址与物理地址的关系

进程所能直接操作的地址都为虚拟地址。当进程需要内存时,从内核获得的仅仅是虚拟的内存区域,而不是实际的物理地址,进程并没有获得物理内存,获得的仅仅是对一个新的线性地址区间的使用权。实际的物理内存只有当进程真的去访问新获取的虚拟地址时,才会由“请求页机制”产生“缺页”异常,从而进入分配实际页面的例程。

情旅天下

linux 内存管理(虚拟地址到物理地址)

Linux操作系统采用虚拟内存管理技术,使得每个进程都有各自互不干涉的进程地址空间。该空间是块大小为4G的线性虚拟空间,用户所看到和接触到的都是该虚拟地址,无法看到实际的物理内存地址。利用这种虚拟地址不但能起到保护操作系统的效果(用户不能直接访问物理内存),而且更重要的是,用户程序可使用比实际物理内存更大的地址空间(具体的原因请看硬件基础部分)

小陆zi

linux的VMALLOC虚拟地址空间管理

在内核地址空间中为kmap和vmalloc各保留了一段地址空间。linux内核使用vm_struct结构体表示映射的地址空间,并且被组织在链表vmlist中,同时为了快速搜索VMA中一块连续的虚拟地址空间采用了红黑树进行管理,另外根据红黑树的层次结构将红黑树的各节点信息保存在vmap_area_list双向链表中。

chenbeixin

Linux虚拟地址转物理地址[源码]

本文详细介绍了Linux系统中/proc/pid/pagemap文件的作用及其在虚拟地址到物理地址转换中的应用。文章首先解释了/proc/pid/pagemap的基本概念,包括其文件结构和访问权限要求。随后,深入探讨了虚拟地址与物理地址的区别及其转换机制,包括页表的作用和MMU的工作原理。文章还提供了具体的命令行和编程示例(如C++代码),展示了如何通过/proc/pid/pagemap文件实现地址转换,并解析了页表项的数据结构。最后,总结了/proc/pid/pagemap的功能,包括动态映射更新和辅助信息查看,为Linux内存管理提供了实用的技术参考。

晚风吻别
评论 1
收藏 已收藏
分享
返回顶部
zzz7794672
Linux_Kernel 4,469 成员 17,458 内容