第2章 内存管理:2.5 内存映射

本文详细介绍了内存映射(memerymapping)技术,解释了如何将可执行映像链接到进程的虚拟地址空间,并讨论了mm_struct和vm_area_struct数据结构在这一过程中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2.5 内存映射:

当一个映像被执行时,该可执行映像的内容必须被放到进程的虚拟地址空间。对于可执
行映像链接到的共享库也是如此。可执行文件并非真正地被读到物理内存,而只是链接到进
程的虚拟内存。然后,随着运行的应用对程序部分的引用,该映像被从可执行映像读到内存。
这种将一个映像链到一个进程的虚拟地址空间的技术也被称为内存映射(memery mapping)。

每个进程的虚拟内存都通过一个m m _ s t r u c t数据结构表示。它包含当前正执行的映像(如
b a s h )的信息以及一些指向v m _ a r e a _ s t r u c t数据结构的指针。每个v m _ a r e a _ s t r u c t数据结构描述
虚拟内存区的开始和结束、进程对该内存的访问权以及对该内存的一组操作 .

当当一个可执行映像被映射到进程虚拟地址空间时,一组v m _ a r e a _ s t r n c t数据结构将被产生。
每个v m _ a r e a _ s t r u c t数据结构表示可执行映像的一部分;是可执行代码,或是初始化的数据(变
量),以及未初始化数据等。L i n u x支持一些标准虚拟内存操作并且当v m _ a r e a _ s t r u c t数据结构
被创建时,相应的虚拟内存操作集将和它们关联起来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值