内存映射学习笔记

news2024/12/21 19:14:46

文章目录

    • 内存映射原理
    • 函数定义
      • `mmap`函数
      • `munmap`函数
    • 注意事项
    • 应用
      • 进程间通信
      • 文件复制
    • 匿名映射

内存映射原理

将磁盘中的文件,映射到内存,通过内存修改文件。

在这里插入图片描述

函数定义

mmap函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

操作映射区必须要有 读权限

munmap函数

在这里插入图片描述
首地址
长度一致。

注意事项

在这里插入图片描述可以对指针进行++ 操作,但是不建议使用,申请创建了内存之后,释放的时候需要用首地址进行释放,++之前要把原始地址保存下来
在这里插入图片描述
open时的权限 >= prot设置的权限
在这里插入图片描述
创建映射区时的偏移量设置,必须是4K整数倍。
在这里插入图片描述
一个是长度错误会失败,一个是权限错误会失败。
在这里插入图片描述
可以使用新创建的文件,但文件大小不能为0。
在这里插入图片描述
内存没有释放,不影响。
只是文件描述符fd无法使用,但是使用ptr指针和偏移量
哪位大佬知道如何精确定位内存中文档写指针的位置,可以评论一下,目的是想解决关闭文档之后的写指针定位与写入。
在这里插入图片描述

应用

进程有没有关系都可以使用。

进程间通信

在这里插入图片描述

创建文件使用open函数,创建成功返回值为文件描述符。
注意:
内存映射区通信是非阻塞的。
映射函数mmap对应的port权限要小于open权限。

文件复制

在这里插入图片描述

匿名映射

不需要文件实体的映射

创建:
int len = 4096;//匿名大小
void *ptr = mmap(NULL, len, PROT_READ|PROT_WRITE, MAP_SHARED | MAP_ANONYMOUS, -1);
匿名的没有文件描述符。

释放:
int ret = munmap(ptr, len);

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

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

相关文章

第一章:STC:一种用于弱监督语义分割的简单到复杂框架

0.摘要 近年来,由于深度卷积神经网络(DCNNs)的发展,语义目标分割取得了显著的改进。训练这样一个DCNN通常依赖于大量具有像素级分割掩码的图像,并且在财务和人力方面标记这些图像非常昂贵。在本文中,我们提…

javascript 7种继承-- 原型式继承分析(4)

文章目录 概要继承的进化史技术名词解释原型式继承原型式继承1原型式继承2对比图 原型链继承 vs 原型式继承案列分析源代码解析效果图小结优点缺点 概要 这阵子在整理JS的7种继承方式,发现很多文章跟视频,讲解后都不能让自己理解清晰,索性自…

【前端学java】JAVA中的packge与import

packge与import示例 Java中,使用package关键字来声明一个类所属的包: package myapp;public class MyClass {// 类的实现... }上述代码中,MyClass类被声明为属于myapp的包。在其他的代码中使用该类时,需要使用完整的包名来引用它…

学习DT材质基础

Lambert材质和常用颜色属性 Maya材质的发光属性 Maya材质的光线跟踪属性 看不见阴影是因为背景用错材质了 MAYA矢量渲染 各向异性材料(看高光) 渐变材质 开启光线跟踪 表面着色器材质

微服务——Docker

docker与虚拟机的区别 首先要知道三个层次 硬件层:计算机硬件 内核层:与硬件交互,提供操作硬件的指令 应用层: 系统应用封装内核指令为函数,便于程序员调用。用户程序基于系统函数库实现功能。 docker在打包的时候直接把应用层的函数库也进行打包&a…

【GeoDa实用技巧100例】015:Geoda构建箱线图

文章目录 一、箱线图介绍二、Geoda制作箱形图三、箱形图与箱形地图的链接一、箱线图介绍 箱形图,也称箱线图(Box and Whisker Diagram)、箱图、盒须图、盒式图和盒形图等,是一种用作显示一组数据分散情况资料的统计图。因形状如箱子而得名。箱形图是由美国著名统计学家图基在…

vue3-组件中的变化

1. 路由 1. 安装指令:npm i vue-routernext 2. 创建路由:createRouter2. 异步组件(defineAsyncComponent) defineAsyncComponent 是用于定义异步组件的函数。defineAsyncComponent 接受一个工厂函数作为参数,这个工厂…

opencv-22 图像几何变换01-缩放-cv2.resize()(图像增强,图像变形,图像拼接)

什么是几何变换? 几何变换是计算机图形学中的一种图像处理技术,用于对图像进行空间上的变换,而不改变图像的内容。这些变换可以通过对图像中的像素位置进行调整来实现。 常见的几何变换包括: 平移(Translation&#x…

力扣热门100题之无重复字符的连续子串【中等】

题目描述 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s “abcabcbb” 输出: 3 解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。 示例 2: 输入: s “bbbbb” 输出: 1 解释: 因为无重复字符的最长子…

Java8实战-总结6

Java8实战-总结6 通过行为参数化传递代码对付啰嗦匿名类第五次尝试:使用匿名类第六次尝试:使用Lambda表达式第七次尝试:将List类型抽象化 真实的例子用Comparator来排序 通过行为参数化传递代码 对付啰嗦 人们不愿意用那些很麻烦的功能或概…

个微API,微信机器人开发

简要描述: 退出群聊 请求URL: http://域名地址/quitChatRoom 请求方式: POST 请求头Headers: Content-Type:application/jsonAuthorization:login接口返回 参数: 参数名必选类型说明wI…

Redis实战案例24-关注推送

1. Feed流实现方案 拉模式主要缺点,延迟问题,极端情况某个用户关注了成千上万的up主,每位up主又发布了十几条博客,此时拉模式的延迟就会很高; 推模式缺点也很明显,内存消耗太大,假设up主是千万级…

【idea工具】idea工具,build的时候提示:程序包 com.xxx.xx不存在的错误

idea工具,build的时候提示:程序包 com.xxx.xx不存在的错误,如下图,折腾了好一会, 做了如下操作还是不行,idea工具编译的时候,还是提示 程序包不存在。 a. idea中,重新导入项目,也还…

基于DNN深度学习网络的OFDM+QPSK信号检测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ............................................................................. Transmitt…

区块链实验室(11) - PBFT耗时与流量特征

以前面仿真程序为例,分析PBFT的耗时与流量特征。实验如下,100个节点构成1个无标度网络,节点最小度为5,最大度为38. 从每个节点发起1次交易共识。统计每次交易的耗时以及流量。本文所述的流量见前述仿真程序的说明:区块链实验室(3)…

页面设计—FlexContainer弹性容器组件详解

一、组件介绍 Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。任何一个容器都可以指定为 Flex 布局,可以与栅格布局结合使用。 二、样式介绍 三、如何使用 (1)找到FlexCo…

实用!SD人物表情提示词合辑;秒变大神的Python速查表;开源LLM微调训练指南;LLM开发必修课 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🤖 太实用了!Stable Diffusion 的24个表情提示词 Pensive 沉思 Smiling 微笑 Disgusted 厌恶 Laughing 大笑 Shocked 震惊 Fr…

【数据分析专栏之Python篇】全网最细Anaconda安装与配置

文章目录 [toc] 前言一、 Anaconda是什么1.1 简介1.2 特点1.3 Anaconda、conda、pip、virtualenv的区别 二、为什么使用Anaconda三、安装步骤3.1 下载安装3.2 配置conda源 四、结语五、附录六、参考 前言 大家好!本篇给大家介绍 Anaconda 安装及配置。 一、 Anaco…

【分享】揭秘BlueWillow::AI绘画工具的平替新选择

哈喽,木易巷上线啦! 今天我要给大家介绍一个全新的AI绘画工具——BlueWillow。如果你正在寻找一款能够替代Midjourney的工具,那么BlueWillow绝对值得一试! 官网链接和邀请链接都在最后哦! 首先,BlueWillo…

< 今日小技巧:Axios封装,接口请求增加防抖功能 >

文章目录 👉 前言👉 一、核心代码 : 防抖函数👉 二、Axios封装中的配置👉 三、实现原理👉 结论👉 补充优化: 解决多个接口请求,拦截掉了需要的请求> 防抖函数> 引用…