02-系统篇-内存分布

news2024/12/27 7:16:07

一.进程中的内存分布

进程是应用程序运行的单位,进程在内存中运行时,各个部分分布的情况如图。

b4df7e1a37964c3f98b7b03ee505a52a.png

 

1.栈内存(statck)
特点:后进先出
系统一般会对栈的大小进行限制,可以用命令进行查看,如下,700是进程号,栈被限制为8M。

# cat /proc/700/limits
Limit                     Soft Limit           Hard Limit           Units       
Max stack size            8388608              unlimited            bytes     


栈存储的内容:
(1)环境变量
(2)命令行参数
(3)局部变量
(4)函数
另外我们需要一个较大的内存作存储时,不能分配栈内存,栈的空间有限

2.堆内存
堆是动态内存,是由用户进行分配和管理
内存相关函数
申请:malloc() / calloc() / realloc()
释放:free()


3.数据段
(1)
.bss:存放未初始化的静态数据
static修饰的变量和全局变量
(2)
.data:已存始化的静态数据
(3)
.rodata:放常量

4.代码段
(1).text
存放用户程序代码

(2).init
环境变量的准备、命令行参数的组织和传递等

二.linux虚拟内存

linux中是多个进程一起运行,每一个进程均要使用内存,如何保证这些进程可以不互相干扰的使用内存,操作系统提出了相关的解决方案,既虚拟内存。
我们在现实中看到了内存,是电脑的内存条,如下图

4b79ae4c3d9d4bc38b8cde670d79f332.png

假如这个内存条是1G。
针对32位系统而言,系统地址总线最大能访问的内存空间是4G,为了不浪费地址总线的能力,每一个C语言进程都拥有一个大小为4G的虚拟内存。
1G的物理内存如何与多个进程对应的多个4G的虚拟内存建立联系?并且让进程正常运行。

一般一个进程运行时,并非此进程中所有的作业都要放入内存,可以将程序的一部分装入内存,而其余部分保留在外存,当所要执行的部分不在内存时,将要执行的部分从外存导入内存,而将长期不执行的部分从内存导出至外存并腾出内存空间。


上述的导入和导出操作的最小空间单位在虚拟内存中叫页,在物理内存中叫页框,页和页框太小一样,均为4KB
这样既可以实现多个进程同时在物理内存上运行,互不干扰并且也实现了系统运行所需内存比物理内存空间还大的进程。
页和页框是有对应关系的,这种对应关系就叫页表。
页表的作用是实现逻辑空间向物理空间的转换。如下图
9f3aa5020edf4585a550bfc67f16c5d3.png

一个页或者页框大小是4KB,地址所在的页号+在此页的偏移量既为逻辑地址。对应的物理地址为对应的地址序号+偏移量,逻辑地址和物理地址的偏移量是一样的,因而页表所包含的映射关系仅仅是逻辑地址所在页面和物理地址所对应序号的关系。这种对应关系的翻译靠MMU完成。

24df6ccecaba461ba3559f199899def3.png

关于linux多级页表的具体实现,本节暂不加以描述。后面专门找一节作深入研究。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/974869.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【python基础知识】4.列表和字典

文章目录 前言列表什么是列表从列表提取单个元素从列表提取多个元素给列表增加/删除元素 数据类型:字典什么是字典从字典中提取元素给字典增加/删除元素 列表和字典的异同列表和字典的不同点列表和字典的相同点 前言 截至目前,我们已经掌握了3种数据类型…

【NLP的python库(02/4) 】:Spacy

一、说明 借助 Spacy,一个复杂的 NLP 库,可以使用用于各种 NLP 任务的不同训练模型。从标记化到词性标记再到实体识别,Spacy 还生成了精心设计的 Python 数据结构和强大的可视化效果。最重要的是,可以加载和微调不同的语言模型以适…

宇凡微Y62R射频433接收芯片(功能强大的合封解决方案)

在现代科技领域,芯片技术的不断进步推动着无数创新应用的诞生。今天,我们将介绍一款功能强大的芯片——Y62R,这款芯片由宇凡微精心开发,融合了433接收功能和主控功能,为各种无线通信和控制应用提供了强大的解决方案。 …

nmp ERR! code ERR SOCKET TIMEOUT nmp ERR!network npmSocket timeout(已解决)

当安装vue-cli时,出现超时错误 npm ERR! code ECONNRESET npm ERR! network This is a problem related to network connectivity npm ERR! code ECONNRESET npm ERR! network aborted npm ERR! network This is a problem related to network connectivity. npm E…

GPT引领前沿与应用突破之GPT-4科研实践技术与AI绘图

查看原文>>>GPT引领前沿与应用突破之GPT4科研实践技术与AI绘图 目录 专题一、AIGC概述 专题二、人工智能算法介绍 专题三、大语言模型Prompt提示词使用技巧 专题四、让GPT成为你的生活助理(动手练习) 专题五、让GPT成为你的工作秘书&…

Java入门基础知识

文章目录 关于JDK什么是JDK什么是JRE 关键字字面量,变量标识符 关于JDK 什么是JDK JDK是Java工具开发包,包含了JVM(程序运行环境),核心类库(直接应用即可),开发工具(Javac,java,jdb,jhat…) 什么是JRE JRE是Java运行环境,包含了JVM,核心类库,运行工具 JDK包含了JRE,JRE包含…

什么是50ETF期权开户条件,怎么开期权交易权限?

50ETF期权是指上证50ETF期权,标的物是上证50ETF,代码是(510500),期权是一种在上证50ETF基础上进行衍生品交易的金融工具,下文科普什么是50ETF期权开户条件,怎么开期权交易权限?本文来…

我使用的Vim插件

2023年9月5日,周二下午 为了方便以后还原自己的Vim插件配置,于是写这篇博客来记录一下 不定期更新 目录 语法检查Syntastic文件树The NERD tree自动补全括号auto-pairs超轻量级自动补全vim-auto-popmenu 我使用的插件管理器是vim-plug 语法检查Syntas…

无涯教程-JavaScript - MONTH函数

描述 MONTH函数返回由序列号表示的日期的月份。月份以整数形式给出,范围从1(一月)到12(十二月)。 语法 MONTH (serial_number)争论 Argument描述Required/OptionalSerial_number 您要查找的月份的日期。 应该使用DATE函数或其他公式或函数的输出输入日期。 如果将日期作为文…

经纬恒润重磅推出第七代前视单目摄像头控制器

随着L2自动驾驶功能的普及,整车架构的升级,以及越来越高的法规要求,ADAS产品的开发迎来了更高的挑战:一方面,需要提高ADAS产品的整车性能,以应对更多的使用场景;另一方面,需要考虑AD…

【Python 实战】---- 批量绘制透明背景方形印章

1. 目标效果 2. 分析实现 可以使用 opencv 或者 PIL 进行绘制实现,但是由于 opencv 不能绘制中文,因此采用 PIL 进行印章制作;先绘制边框和隔离线;再绘制文字;最后给印章添加纹理。3. 绘制边框 3.1 绘制边框分析 通过 draw.rectangle 实现公用的矩形的绘制;获取图像长宽…

maven项目继承依赖中包版本的说明

继承 参考博客MAVEN的继承详解_parent中哪些标签可以被子项目继承_32224047_yw的博客-CSDN博客 https://blog.csdn.net/liupeifeng3514/article/details/80236827 dependencies 和dependencyManagement 在Maven多模块的时候,管理依赖关系是非常重要的&#xff…

冠达管理:上市破发是什么意思?

随着股票商场的开展,一些公司开端考虑走向上市,以取得更多的资金和更高的知名度。然而,上市并不总是一件功德。当一家公司的股票开端买卖时,如果它的股价远低于发行价,就可以说它遭遇了“破发”。这是一种负面事件&…

【CAD二次开发】重新加载acad.pgp快捷菜单文件

为了加快绘图速度,好多人会进行CAD快捷命令的修改,那怎么在不需要重启CAD的情况下自动更新? CAD修改acad.pgp,快捷命令后,自动更新。 方法一 命令行输入reinit,命令。 在弹出的窗口中,选择‘PGP文件’&…

【Linux详解】——共享内存

📖 前言:本期介绍共享内存。 目录 🕒 1. 共享内存的原理🕒 2. 共享内存的概念🕘 2.1 接口认识🕘 2.2 演示生成key的唯一性🕘 2.3 再谈key 🕒 3. 共享内存相关命令🕒 4. 利…

气象站是什么设备?功能是什么?

气象站是一种用于测量和记录气象数据的设备。它通常是由各种传感器及其数据传输设备、固定设备和供电设备组成,可以测量风速、风向、温度、湿度、气压、降水量等气象要素,并将这些数据记录下来,以便进一步分析和研究。 气象站通常设置在广阔…

从MySQL数据库中查出时间与数据库存储的时间不一致

1、TimeZone t TimeZone.getDefault(); 通过该方法查看系统的时区。 2、select global.time_zone,session.time_zone; 查看数据库的时区 3、在application.properties中配置: #SpringBoot默认的是Jackson框架转换,而Jackson默认的时间时区是GMT&…

动作分析:提升效率、改进质量、创新流程的秘密武器

动作分析的主要的用途和目的是排除多余的动作、无效的动作或缓慢的动作,如弯腰、站在凳子上、蹲着、工作场所差、缺少合适的工作设备、处于搜索状态的人和事等,形成标准化作业规范,从而通过最省力的方法达到最大的工作效率。这项研究可以不花…

为什么良好的客户服务对于成功的企业至关重要

图片来源于:SaleSmartly官网 良好的客户服务是任何成功企业的重要组成部分。提供卓越的客户服务有助于建立客户的信任和忠诚度,从而增加销售额和利润。它还对任何企业的声誉产生积极影响,带来更多客户和更好的口碑推荐。因此,企业…

【FusionInsight 迁移】HBase从C50迁移到6.5.1(03)6.5.1上准备Loader

【FusionInsight 迁移】HBase从C50迁移到6.5.1(03)6.5.1上准备Loader HBase从C50迁移到6.5.1(03)6.5.1上准备Loader登录新集群FusionInsight 6.5.1的Manager准备Loader服务准备Loader Role准备Loader User HBase从C50迁移到6.5.1&…