操作系统之内存映射

Linux内核操作系统: 内存映射(图文详解)! 内存映射在Linux操作系统中非常重要,因为其涉及到高效的跨进程通信 & 文件操作内存映射关联 进程中的1个虚拟内存区域 & 1个磁盘上的对象,使得二者存在映射关系上述的映射过程 = 初始化该虚拟内存区域虚拟内存区域被初始化后,就会在交换空间中换你来还去被映射的对象称为:共享对象(普通文件 / 匿名文件)本文全面讲解了Linux操作系统中的内存映射对Linux感兴趣的话,推荐以下文章路由选择协议——RIP协议轻松学会linux下查看内存频率,内核函数,cpu频率。 阅读详情

内存管理

内存管理的发展历程

DOS时代-同一时间只能有一个进程在运行(也有一些特殊算法可以支持多进程)

windows9x-多个进程装入内存,会产生两个问题1:内存不够用2:相互打扰   如下图所示

为了解决这两个问题,诞生了现在的内存管理系统:虚拟地址  分页装入  软硬件结合寻址

1.分页(内存不够用),内存中分成固定大小的页框(4K),把程序(硬盘上)分成4K大小的块,用到哪一块,加载哪一块,加载的过程中,如果内存已经满了,会把不常用的一块放到swap分区,把最新的一块加载进来。这个就是著名的LRU算法。

2.虚拟内存(解决相互打扰问题)

    1.DOS Win31... 内存相互干掉

    2.为了保证进程互不影响---让进程工作在虚拟空间,程序中用到的空间地址不再是直接的物理地址,而是虚拟的地址,这样,A进行永远不可能访问到B进程的空间。

    3.虚拟空间多大呢?寻址空间---64位系统2^64,比物理空间大很多。单位是byte

    4.站在虚拟的角度,进程是独享整个系统+CPU

    5.内存映射:偏移量+段的基地址=线性地址(虚拟空间)

    6.线性地址通过OS + MMU(硬件 Memory Management Unit)---物理地址

3.缺页中断:

    1.需要用到的页面内存中没有,产生缺页中断,由内核处理并加载 

ZGC

采用的算法是Colored Pointer

GC 信息记录在指针上,不是记录在头部,好处:immediate memory use

42位指针  寻址空间4T  JDK13 -> 16T  目前为止最大16T  2^44

CPU如何区分一个立即数和一条指令

总线内部分为:数据总线  地址总线  控制总线

地址总线目前:48位   而且还有四位给了颜色指针,因此最大寻址只能是2^44  16T

 

 

操作系统内存映射的配置与调优技巧 我们的目的是要让大家清楚地了解操作系统内存映射是怎么回事,以及如何对它进行配置和调优。范围涵盖了内存映射的基本概念、配置方法、调优技巧,还会通过实际案例让大家明白如何在项目中运用这些知识。首先会介绍内存映射相关的术语,接着用故事引出核心概念,解释概念并说明它们之间的关系,然后讲核心算法原理和操作步骤,有数学模型和公式的讲解,再通过项目实战让大家实践,之后介绍应用场景、工具资源和未来趋势,最后进行总结和提出思考题。内存映射。 阅读详情

相关推荐

操作系统内存映射技术:从原理到实践的全方位解析

内存映射是现代操作系统的核心技术之一,它像一根"魔法绳索"连接着程序的虚拟内存与物理内存、磁盘文件。内存映射的底层原理(虚拟地址→物理地址转换)文件映射到内存的具体实现(mmap系统调用)实际应用场景(大文件处理/进程通信)未来技术趋势(非易失内存支持)用图书馆借书比喻引入核心概念拆解虚拟内存、页表、内存映射的底层逻辑用Linux mmap实战演示文件映射过程分析典型应用场景与未来趋势虚拟内存:程序的"专属借书卡",独立且安全。

操作系统内核探秘的博客 860

操作系统笔记之内存映射

— 2024-02-04。

小勇博客 3465

操作系统实验:内存管理地址映射与共享

哈工大的操作系统实验四,今年老师要求制作PPT,于是良心制作,详细记录了系统调用的相关操作及实验结论,希望对有心人有用,大家共同进步

操作系统:图文详解 内存映射

操作系统:图文详解 内存映射   前言 内存映射 在 Linux操作系统中非常重要,因为其涉及到高效的跨进程通信 & 文件操作 今天,我将详细讲解操作系统中核心概念:内存映射 目录 示意图 1. 定义 关联 进程中的1个虚拟内存区域 & 1个磁盘上的对象,使得二者存在映射关系 上述的映射过程 = 初始化该虚拟内存区域 虚拟内存区域被初始化后,就会在交换空间中...

zhangbijun1230的专栏 7209

Pytorch中CrossEntropyLoss()详解

交叉熵主要是用来判定实际的输出与期望的输出的接近程度。举个例子:在做分类训练的时候,如果一个样本属于第 K 类,那么这个类别所对应的输出节点的输出值应该为1,而其他节点的输出都为0,即 [0,0,1,0,….0,0] ,这个数组也就是样本的 Label,是神经网络最期望的输出结果。我们用交叉熵损失函数来衡量网络的实际输出与正确标签的差异,利用这种差异经过反向传播去更新网络参数。交叉熵:它主要刻画的是实际输出(概率)与期望输出(概率)的距离,也就是交叉熵的值越小,两个概率分布就越接近。

flyingluohaipeng的博客 3861

西门子S7-1200模拟量的使用

模块类型核心参数输入信号处理输出信号配置转换原理数值范围TIA Portal配置编程要点 转换公式: 输出模拟量: 五、校准与线性化 硬件校准非线性补偿抗干扰措施数字滤波温度控制压力监控流量调节信号异常精度不足实践操作参考文档项目案例借鉴博客

weixin_51020122的博客 4771

操作系统知识强化内存映射文件(25王道)

首先来看看什么是内存映射文件。简单来说,这是操作系统向上层的程序员提供的一个系统调用功能。通过这个功能,程序员可以很方便的去访问文件数据,另外这个功能也可以很方便的让多个进程共享同一个文件的数据。先来解释第一点,为什么说内存映射文件可以让程序员更方便的去使用文件数据呢?那作为对比,我们先来看一下传统的文件访问方式。来看一个例子,这是一个文件,名字叫葵花宝典.txt,这个文件要存放到磁盘里边。那磁盘的存储空间是以块为单位的,这样的一块大小是1 KB,那相应的这个文件就会被拆分成几个大小相等的块。

qq_56249308的博客 1351

DaVinci Configurator实战:从DBC导入到通信栈配置全解析

本文详细解析了如何使用Vector DaVinci Configurator工具,从导入行业标准DBC文件开始,高效完成AutoSAR通信栈(包括COM、PduR、CanIf等模块)的自动化与精细化配置。文章通过实战步骤,重点阐述了DBC导入、与EB MCAL协同、核心模块参数调整及诊断标定服务集成等关键环节,旨在帮助汽车电子工程师快速掌握这一核心工具,提升开发效率与准确性。

weixin_29159127的博客 592

六:操作系统虚拟内容之内存文件映射

在计算机系统中,文件是长期存储数据的主要方式。我们通常通过操作系统提供的文件I/O接口来与文件交互,比如read()和write()系统调用。这些传统的文件I/O操作涉及数据在用户空间和内核空间缓冲区之间的复制,然后由操作系统负责将数据刷入或从磁盘读取。虽然这种方式直观且易于使用,但对于某些应用场景,例如需要频繁随机访问文件内容、处理非常大的文件或需要在多个进程间高效共享文件数据时,其性能可能不如人意。提供了一种替代性的文件I/O机制,它将文件内容直接“映射”到进程的虚拟地址空间中。

柳絮飘扬 1010

【阿里云大模型高级工程师ACP习题集】2.1 用大模型构建新人答疑机器人

【摘要】这是我精心整理出对应的习题集,里面足足有 30 道题目,从基础概念到深度拓展,全方位覆盖章节重点、难点。不管你是想检验自己的学习成果,还是想针对薄弱环节进行强化训练,它都能完美适配!

davidkorhenn的博客 2609

ROS 2 Jazzy与Gazebo Harmonic仿真实战:从零搭建机器人仿真环境与高级应用

本文详细介绍了如何使用ROS 2 Jazzy和Gazebo Harmonic从零搭建机器人仿真环境,涵盖环境配置、传感器集成、多机器人协同和GPU加速优化等高级应用。通过实战案例和性能调优技巧,帮助开发者高效构建可靠的机器人仿真系统,提升开发效率。

h9j8k7l6m5n的博客 1217

操作系统 | 进程的内存映像

2.堆的最高地址只能到0x40000000,也就是说堆和下面三块加起来的大小的和是固定的,只能有1GB。3.const定义的存在只读代码区,但是define宏定义的不在。不同于存放在硬盘上的可执行程序文件,当一个程序调入内存运行时,就构成了进程的内存映像。用户栈在程序运行期间也可以动态地扩展和收缩,每次调用一个函数,栈就会增长;当调用像malloc和free这样的C标准库函数时,堆可以在运行时动态地扩展和收缩。代码段和数据段在程序调入内存时就指定了大小,而堆和栈不一样。1.未使用区的大小是固定的。

m0_74795952的博客 800

企业级防火墙实战:用深信服AF8.0打造安全办公网络(含流控/僵尸防护配置)

本文详细介绍了如何利用深信服AF8.0防火墙构建企业级安全办公网络,涵盖设备初始化、多接入方式配置、三维一体安全防护体系(包括应用控制、僵尸防护和智能流控)以及典型问题排查。通过实战案例和配置模板,帮助IT管理员高效部署和优化网络安全管理,提升企业网络安全防护能力。

weixin_28716443的博客 281

操作系统内存映射

在程序首次使用malloc申请内存时,此时malloc手中没有堆内存可以分配,也就是说没有任何映射过的内存可以供分配使用,malloc会找系统申请映射33页虚拟内存,这33页映射后交由malloc管理分配,之后再找malloc申请内存时,malloc会从这33页中直接分配给调用者,如果33页分配完,继续重复以上操作,这个过程malloc底层调用了操作系统的API接口函数完成映射的操作。如果分配的内存大于128Kb,底层调用mmap\munmap。如果分配的内存小于128Kb,底层调用sbrk\brk。

zzt_is_me的博客 668

Arduino读取串口接收到的数据并发送数据

Arduino读取串口接收到的数据并发送数据 源程序: void setup() { Serial.begin(115200); } void loop() { String comdata ; while (Serial.available() > 0) { comdata += char(Serial.read()); delay(2); } if (comdata.length() > 0) { Serial.print("串口接收到的数据:"); Serial.println(comd

perseverance51博客 1万+

2025资源从哪里来!

研究网络通信中的安全问题,如VLAN划分、路由协议(静态、动态如OSPF、BGP)、NAT转换、AAA认证、访问控制列表(ACL)等。‌Wi-Fi安全设置‌、‌密码破解原理‌(仅用于合法测试或教育目的)、‌常见Web安全问题‌如SQL注入、XSS跨站脚本攻击等的防范措施。在这个网站你可以找到你对应的专业-对应的路线-对应的资源-对应的百度网盘里面全是免费的资源------------------惊喜不?‌防火墙配置与策略‌、‌入侵检测与防御系统(IDS/IPS)‌、‌端口扫描与漏洞扫描技术‌等。

qq_56248592的博客 1902

操作系统:图文详解神秘的”内存映射“

前言 内存映射 在 Linux操作系统中非常重要,因为其涉及到高效的跨进程通信 & 文件操作 今天,我将详细讲解操作系统中核心概念:内存映射 目录 1. 定义 关联 进程中的1个虚拟内存区域 & 1个磁盘上的对象,使得二者存在映射关系 上述的映射过程 = 初始化该虚拟内存区域 虚拟内存区域被初始化后,就会在交换空间中换你来还去 被映射的对象称为:共享对象(普通文件 /...

Carson带你学Android 3万+

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

操作系统:图文详解 内存映射(转)

操作系统:图文详解 内存映射 转载于:https://www.cnblogs.com/LittleTiger/p/10902213.html

weixin_30341735的博客 68

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

操作系统之非常重要的内存映射

前言 内存映射 在 Linux操作系统中非常重要,因为其涉及到高效的跨进程通信 & 文件操作 今天,我将详细讲解操作系统中核心概念:内存映射 目录 示意图 1. 定义 关联 进程中的1个虚拟内存区域 & 1个磁盘上的对象,使得二者存在映射关系 上述的映射过程 = 初始化该虚拟内存区域 虚拟内存区域被初始化后,就会在交换空间中换你来还去 被映射的对象称为:共享对...

林一末的博客 620

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

操作系统之内存映射文件

内存映射文件允许应用程序把文件映射到一个进程的地址空间中,通过内存指针对磁盘上的文件进行访问。其原理与虚拟内存相似,都是保留一个地址空间的区域,并将物理存储器提交给此区域。不过,内存映射文件的物理存储器来自一个已经存在于磁盘上的文件,而非系统的页文件。

DKPT的博客 683

操作系统——内存映射文件

内存映射文件 1.定义: 内存映射文件,是由一个文件到一块内存的映射。Win32提供了允许应用程序把文件映射到一个进程的函数 (CreateFileMapping)。内存映射文件与虚拟内存有些类似,通过内存映射文件可以保留一个地址空间的区域,同时将物理存储器提交给此区域,内存文件映射的物理存储器来自一个已经存在于磁盘上的文件,而且在对该文件进行操作之前必须首先对文件进行映射。使用内存映射文件处理存储于磁盘上的文件时,将不必再对文件执行I/O操作,使得内存映射文件在处理大数据量的文件时能起到相当重要的作用

weixin_44847698的博客 2520

net use 映射linux 67_操作系统:图文详解神秘的”内存映射“

前言内存映射 在 Linux操作系统中非常重要,因为其涉及到高效的跨进程通信 & 文件操作今天,我将详细讲解操作系统中核心概念:内存映射目录1. 定义关联 进程中的1个虚拟内存区域 & 1个磁盘上的对象,使得二者存在映射关系上述的映射过程 = 初始化该虚拟内存区域虚拟内存区域被初始化后,就会在交换空间中换你来还去被映射的对象称为:共享对象(普通文件 / 匿名文件)2. 作用若存在上...

weixin_39715187的博客 379

vios删除磁盘映射关系_操作系统基础44内存映射文件

假设采用标准系统调用 open()、read() 和 write() 来顺序读取磁盘文件,每个文件访问都需要系统调用和磁盘访问。又或者采用虚拟内存技术,以将文件I/O作为常规内存访问,这种方法称为内存映射文件,允许一部分虚拟内存与文件进行逻辑关联,这会导致显著的性能提高。基本机制 实现文件的内存映射是将每个磁盘块映射到一个或多个内存页面。最初,文件访问按普通请求调页来进行,从而产生缺页错...

weixin_29476595的博客 549

【操作系统】内存映射

存储映射I/O (Memory-mapped I/O) 使一个磁盘文件与存储空间中的一个缓冲区相映射。从缓冲区中取数据,就相当于读文件中的相应字节;将数据写入缓冲区,则会将数据写入文件。这样,就可在不使用read和write函数的情况下,使用地址(指针)完成I/O操作。使用存储映射这种方法,首先应通知内核,将一个指定文件映射到存储区域中。这个映射工作可以通过mmap函数来实现。【】第一个参数写成NULL第二个参数要映射的大小>0第三个参数:PROT_READ 、PROT_WRITE。

Guojiahui的博客 426
上一篇: leetcode刷题前置知识总结
下一篇: 内存与IO,磁盘IO,网络IO
给自己加加油
博客等级 码龄8年 302粉丝 110原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值