Linux环境下的内存管理(2/7)

news/2024/7/20 15:06:41 标签: linux, 内存管理, 虚拟地址空间分布

要想深入理解内存中的堆栈管理机制,孤立地分析并不是一个好方法,因为堆栈内存不是仅靠程序本身来维护的,而是由操作系统、编译器、CPU、物理内存相互配合实现的。

在 Linux 环境下运行的程序,在编译时链接的起始地址都是相同的,而且是一个虚拟地址。Linux 操作系统需要 CPU 内存管理单元的支持才能运行,Linux 内核通过页表和 MMU 硬件来管理内存,完成虚拟地址到物理地址的转换、内存读写权限管理等功能。可执行文件在运行时,加载器将可执行文件中的不同 section 加载到内存中读写权限不同的区域,如代码段、数据段、.bss 段、.rodata 段等。

计算机上运行的程序主要分为两种:操作系统和应用程序。每一个应用程序进程都有 4GB 大小的虚拟地址空间。为了系统的安全稳定,0~4GB 的虚拟地址空间一般为分为两部分:用户空间和内核空间。0~3GB 地址空间给应用程序使用,而操作系统一般运行在 3~4GB 内核空间。通过内存权限管理,应用程序没有权限访问内核空间,只能通过中断或系统调用来访问内核空间,这一定程度上保障了操作系统核心代码的稳定运行。

在 Linux 环境下,虽然所有的程序编译时使用相同的链接地址,但在程序运行时,相同的虚拟地址会通过 MMU 转换,映射到不同的物理内存区域,各个可执行文件被加载到内存不同的物理页上。每个进程都有各自的页表,用来记录各自进程中虚拟地址到物理地址的映射关系。

通过这种地址管理,每个进程都可以独享一份独立的、私有的 3GB 用户空间。编译器在编译程序时,不用考虑每个程序在实际物理内存中的地址分配问题。通过内存读写权限管理,可以保护每个进程的空间不被其他进程破坏,从而保障系统的安全运行。Linux 的内存管理系统会自动帮我们完成虚拟空间的内存到物理内存的映射。

堆内存一般在 BSS 段的后面,随着用户使用 malloc 申请的内存越来越多,对空间不断往高地址增长,栈空间则紧挨着内核空间,ARM 使用的是满递减堆栈,栈指针会从用户空间的高地址往低地址不断增长。在堆栈之间的一片茫茫空间中,还有一块区域叫做 MMAP 区域,动态共享库就是使用这片地址空间的。

在这里插入图片描述


http://www.niftyadmin.cn/n/4978294.html

相关文章

5、阿里巴巴实践分析理解数据架构演进

5、阿里巴巴实践分析理解数据架构演进 在阿里巴巴的商品页面有很多元素,有图片、价格、能够选择颜色、视频、评论、成交信息、以及一些说明等,这些数据是多种多样的。 如此多样的数据很显然一个MySQL是无法解决的。因为一个数据库中要么放视频&#xf…

14. Docker中实现CI和CD

目录 1、前言 2、什么是CI/CD 3、部署Jenkins 3.1、下载Jenkins 3.2、启动Jenkins 3.3、访问Jenkins页面 4、Jenkins部署一个应用 5、Jenkins实现Docker应用的持续集成和部署 5.1、创建Dockerfile 5.2、集成Jenkins和Docker 6、小结 1、前言 持续集成(CI/CD)是一种…

【云原生之Docker实战】使用Docker部署moredoc文库系统

【云原生之Docker实战】使用Docker部署moredoc文库系统 一、moredoc介绍二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本四、下载moredoc镜像五、部署moredoc文库系统5.1 创建目录5.2 …

高中信息技术教资考试模拟卷(22下)

2022 年下半年全国教师资格考试模考卷一 (高中信息技术) 一、单项选择题(本大题共 15 小题,每小题 3 分,共 45 分) 1.2006 年 10 月 25 日,深圳警方成功解救出一名被网络骗子孙某…

工地安全帽识别闸机联动开关 yolov7

工地安全帽识别闸机联动开关系统通过yolov7系列网络模型深度学习算法,工地安全帽识别闸机联动开关算法对施工人员的人脸、安全帽和反光衣进行识别,判断是否符合安全要求。只有当人脸识别成功且安全帽、反光衣齐全时,闸机才会打开允许施工人员…

成功解决:Invalid encoding name “UTF8“

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 前言 出现这个问题可能由于不同的原因、本文是由于**Mapper.xml文件中…

时序预测 | MATLAB实现PSO-KELM粒子群算法优化核极限学习机时间序列预测(含KELM、ELM等对比)

时序预测 | MATLAB实现PSO-KELM粒子群算法优化核极限学习机时间序列预测(含KELM、ELM等对比) 目录 时序预测 | MATLAB实现PSO-KELM粒子群算法优化核极限学习机时间序列预测(含KELM、ELM等对比)预测效果基本介绍模型介绍程序设计参…

【网络设备】交换机的概念、工作原理、功能以及以太网帧格式

个人主页:insist--个人主页​​​​​​ 本文专栏:网络基础——带你走进网络世界 本专栏会持续更新网络基础知识,希望大家多多支持,让我们一起探索这个神奇而广阔的网络世界。 目录 一、认识交换机 二、交换机的主要功能 1、数…