文件映射和匿名映射都是操作系统中对于内存映射的两种类型,主要应用于进程间的通信或者大量数据的处理。

  • 文件映射,也就是内存映射文件,是把一个文件或者文件的一部分映射到进程的地址空间,它允许对文件进行随机访问。当进程对这块内存区域进行读写还操作时,系统会自动把更改写回磁盘文件。这样做的好处是可以像访问普通内存一样对文件进行操作,无需调用read , write这样的系统调用,提高了文件操作的效率。
  • 匿名映射则不涉及到具体的文件,仅将物理内存区域映射到进程的地址空间,通常用于进程之间的共享内存。通过这种映射的方式,多个进程可以共享一块内存区域,任何一个进程对该内存区域的修改都将对其他进程可见,这样在进程间进行通信就变得非常的方便。

总的来说,文件映射和匿名映射主要的区别在于是否对应一个真实的磁盘文件,以及使用的场景有所不同。

私有映射和共享映射

  • 私有映射是指每个进程都有自己独立的地址空间,它不能与其他进程共享。私有映射下的数据,如果被修改,那么就会产生一个新的物理页,原来的物理页将不再被这个进程使用。这种映射方式有利于保护进程数据的安全,一般用于堆、栈等非共享数据。
  • 共享映射则允许多个进程映射同一片物理内存,使得多个进程能够共享同一份数据。共享映射下的数据,如果被一个进程修改,其他进程也可以看到修改后的结果。这种映射方式主要用于实现共享内存、文件映射等功能。
映射类型 私有映射 共享映射
匿名映射 私有匿名映射-通常用于内存分配 共享匿名映射-通常用于进程间共享内存
文件映射 私有文件映射-通常用于加载动态库 共享文件映射-通常用于内存映射IO,进程间通讯

mmap映射类型的更多相关文章

  1. mmap映射文件至内存( 实现 共享内存 与 文件的另类访问 )

    Linux提供了内存映射函数mmap, 它把文件内容映射到一段内存上(准确说是虚拟内存上), 通过对这段内存的读取和修改, 实现对文件的读取和修改, 先来看一下mmap的函数声明: 头文件: < ...

  2. hibernate的映射类型

    hibernate的映射类型 hibernate MySQL映射类型 1.Hibernate的映射类型 hibernate mysql映射类型 Hibernate 映射类型 Java 类型 标准 SQ ...

  3. 攻城狮在路上(壹) Hibernate(九)--- Hibernate的映射类型

    Hibernate采用映射类型作为Java类型和SQL类型的桥梁,对应type属性.分为两种:内置映射类型和客户化映射类型.一.内置映射类型: 1.Java基本类型的Hibernate映射类型: Ja ...

  4. Hibernate映射类型对照表

    Hibernate映射类型对照表 java类型  Hibernate映射类型  SQL类型 java.math.BigDecimal big_decimal numeric byte[] binary ...

  5. Python标准库映射类型与可散列数据类型的关系

    这里有两个概念似懂非懂,在这里明确一下: 映射类型: Python>3.2中,collections.abc模块有Mapping和MutableMapping两个抽象基类(Python2.6~3 ...

  6. Hibernate学习6—Hibernate 映射类型

    第一节:基本类型映射 com.cy.model.Book.java: package com.cy.model; import java.sql.Blob; import java.util.Date ...

  7. Hibernate——(4)Hibernate映射类型

    一.常用的Hibernat映射类型有如下几种: string integer double date    日期,只表示年月日 datetime 日期,只表示年月日 timestamp  时间戳,存放 ...

  8. Mybatis笔记 – Po映射类型

    一.输入映射类型 parameterType定义输入到sql中的映射类型,可以是  简单类型  .po类对象(可自动生成 或 手动定义). pojo包装对象(用于综合查询,UserCustom用户自定 ...

  9. Python基础:04映射类型

    字典是Python语言中唯一的映射类型.一个字典对象是可变的,它是一个容器类型,能存储任意个数的Python对象.字典中的数据是无序排列的. 映射类型也可被称做哈希表,哈希表的算法是获取键,对键执行一 ...

  10. EF:自定义Oracle的映射类型

    oracle在DB First模式下,int类型的字段会自动映射为decmial类型的属性. 我们可以通过自定义类型映射进行“纠整”. 在app.config 自定义映射规则: <oracle. ...

随机推荐

  1. 2023/4/13 SCRUM个人博客

    1.我昨天的任务 ------------ 2.遇到了什么困难 ------------ 3.我今天的任务 初步了解项目的整体框架,并对接下来的人脸识别库以及组件有基本了解和安装

  2. fragment基础

    XML中调用fragment 属性包括: android:id="@+id/fragg" //ID android:name="com.example.subway.fr ...

  3. 简单聊聊WebDAV

    1.什么是WebDAV? WebDAV是一种基于HTTP协议的扩展,旨在提供在Web服务器上进行文件管理的标准化解决方案.它允许用户通过网络对远程主机上的文件进行读写.编辑和删除操作.与传统的HTTP ...

  4. 题解 WD与数列

    P5161 WD与数列 可以想到原条件是一个差分形式,所以我们对原数组差分.然后发现答案其实就是 \(\sum_{i<j} \min(lcp(i+1,j+1)+1,j-i)\). 这个东西先跑 ...

  5. HCIA first

    每台电脑都有网线 网线连的是什么? 网线插在接入交换机 流量给入汇聚交换机 汇聚给核心交换机 核心交换机 堆叠是指将一台以上的交换机组合起来共同工作,以便在有限的空间内提供尽可能多的端口.多台交换机经 ...

  6. Jmeter函数助手7-timeShift

    timeShift函数用于获取移动时间变化后的指定格式时间. Format string for DateTimeFormatter (optional) (default unix timestam ...

  7. 【XML】Extensible Markup Language 可扩展标记语言

    Extensible Markup Language 可扩展标记语言[XML] 视频资料参考自:https://www.bilibili.com/video/BV1B441117Lu?p=186 其他 ...

  8. NVIDIA的ROS项目 —— Isaac ROS

    文档地址: https://nvidia-isaac-ros.github.io/index.html Github地址: https://github.com/NVIDIA-ISAAC-ROS

  9. Jax框架 —— 如何在没有GPU和TPU的设备上debug代码 —— 在CPU上使用GPU仿真设置 —— Jax框架在多卡设备上的自动并行特性的仿真体验

    Jax计算框架是Google用来取代Tensorflow的新一代计算框架,这个框架使用类似pytorch的技术,但是在pytorch技术之上加入了更加强大的技术,但是这也导致该框架使用起来要比pyto ...

  10. php 开发日常收获

    最近项目需求: 仿制某网站的菜单功能 效果如下: 效果大概就是这样啦.分析下吧:主要是分级查询我的思路:首先从数据库中查询所有的顶级目录: 目前就是这几个顶级目录在数据库中特点就是 父级id是0(一般 ...