#include <stdio.h>
#include <sys/mman.h> int main(void) {
/*
* 创建虚拟内存的映射
* void *mmap (void *__addr, size_t __len, int __prot,int __flags, int __fd, __off_t __offset)
* __addr 需要映射的起始位置,如果传NULL则操作系统自动计算
* __len 需要映射的字节数,自动按页圆整(不足一页按一页映射,不足两页超过一页按两页映射,页的大小跟据操作系统的不同而不同)
* __prot 映射区域的权限
* PROT_READ 可读
* PROT_WRITE 可写
* PROT_EXEC 可执行
* PROT_NONE 不可访问
* __flags 映射标志
* MAP_ANONYMOUS 匿名映射,将虚拟内存映射到物理内存而非文件,忽略fd和offset参数(传0)
* MAP_PRIVATE 表示该内存映射的内容仅在本进程可见,且不会被其他进程所访问。
* MAP_SHARED 对映射区的写操作直接反映到时文件中
* MAP_DENYWRITE 拒绝其它对文件的写操作
* MAP_FIXED 若在start上无法创建映射,则失败(无此标志系统会自动调整)
*__fd 文件描述符
*__offset 文件偏移量,自动按页(4k)对齐
* 返回值:成功返回映射区的起始地址,失败返回MAP_FAILED(-1)
* */
// 映射4096个字节的可读可写的内存
void *p1 = mmap(NULL, 4096, PROT_READ | PROT_WRITE, MAP_ANONYMOUS); /*
* 解除虚拟内存的映射
* int munmap (void *__addr, size_t __len)
* __addr 要解除映射内存的起始地址
* __len 要解除映射的大小(按页圆整)
*返回值:成功返回0,失败返回1
* munmap 必需按页操作
* */
munmap(p1, 4096);
return 0;
}

虚拟内存跟物理内存之间的映射mmap\munmap的更多相关文章

  1. Linux 虚拟内存和物理内存的理解(转)

    在学习内核之前,因为虚拟内存的关系看过这篇文章,但是有的地方不是很懂. 现在对内核学习一段时间后,感觉这篇博客不错. 虚拟内存: 第一层理解 1.每个进程都有自己独立的4G内存空间,各个进程的内存空间 ...

  2. 【转】Linux 虚拟内存和物理内存的理解

    http://www.cnblogs.com/dyllove98/archive/2013/06/12/3132940.html 首先,让我们看下虚拟内存: 第一层理解 1.         每个进程 ...

  3. Linux 虚拟内存和物理内存的理解

    关于Linux 虚拟内存和物理内存的理解. 首先,让我们看下虚拟内存: 第一层理解 1. 每个进程都有自己独立的4G内存空间,各个进程的内存空间具有类似的结构 2. 一个新进程建立的时候,将会建立起自 ...

  4. Linux 虚拟内存和物理内存的理解【转】

    转自:http://www.cnblogs.com/dyllove98/archive/2013/06/12/3132940.html 首先,让我们看下虚拟内存: 第一层理解 1.         每 ...

  5. C语言 mmap()函数(建立内存映射) 与 munmap()函数(解除内存映射)

    mmap将一个文件或者其它对象映射进内存.文件被映射到多个页上,如果文件的大小不是所有页的大小之和, 最后一个页不被使用的空间将会清零.mmap在用户空间映射调用系统中作用很大. 条件 mmap()必 ...

  6. linux 进程间通信——内存共享映射mmap和munmap

    IPC三种通信机制是指:信号量.共享内存.消息队列,   信号量:通过操作系统中的PV操作来实现: 共享内存:申请一块内存,进程A往共享内存中写,其他的进程就可以通过读出共享内存中的内容来获取进程A所 ...

  7. [转载]linux内存映射mmap原理分析【转】

    转自:http://www.cnblogs.com/wanpengcoder/articles/5306688.html 转自:http://blog.csdn.net/yusiguyuan/arti ...

  8. 文件映射mmap

    磁盘与内存的映射就是文件映射,说这个问题之前我们先说下swap,因为   这个问题让我很容易想起swap,linux swap 是交换分区的意思,在内存不   够的情况下,操作系统先把内存与磁盘的sw ...

  9. Linux内存映射--mmap函数

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

  10. 深入理解内存映射mmap

    内存映射mmap是Linux内核的一个重要机制,它和虚拟内存管理以及文件IO都有直接的关系,这篇细说一下mmap的一些要点. 修改(2015-11-12):Linux的虚拟内存管理是基于mmap来实现 ...

随机推荐

  1. T-SQL——数字辅助表

    目录 0.永久性的连续数字表 1.使用系统表:master..spt_values 2.使用递归CTE 3.使用0-9乘以量级交叉连接 4.使用2的次幂和CTE生成和交叉链接 创建表值函数 5.数字辅 ...

  2. Java 优化:读取配置文件 "万能方式" 跨平台,动态获取文件的绝对路径

    Java 优化:读取配置文件 "万能方式" 跨平台,动态获取文件的绝对路径 每博一文案 往事不会像烟雾似的飘散,将永远像铅一般沉重地浇铸在心灵的深处. 不过,日常生活的纷繁不会让人 ...

  3. 【译】.NET 7 中的性能改进(四)

    原文 | Stephen Toub 翻译 | 郑子铭 边界检查消除 (Bounds Check Elimination) 让.NET吸引人的地方之一是它的安全性.运行时保护对数组.字符串和跨度的访问, ...

  4. 【KAWAKO】MobaXterm-使用MobaSSHTunnel进行端口映射

    目录 在Tools中打开MobaSSHTunnel(port forwarding) 点击New SSH tunnel 配置信息 点击运行 访问端口 在Tools中打开MobaSSHTunnel(po ...

  5. AcWing 141 周期

    题目:https://www.acwing.com/problem/content/143/ 一个字符串的前缀是从第一个字符开始的连续若干个字符,例如"abaab"共有5个前缀,分 ...

  6. webgl 系列 —— 初识 WebGL

    初识 WebGL 什么是 WebGL webgl 在支持 canvas 的浏览器中进行 2d 或 3d 渲染. webgl 程序除了有 Html.javascript,还需要加入着色器语言(GLSL ...

  7. Prometheus安装部署(主体)

    Prometheus安装部署 一,下载安装包并解压 下载地址:https://github.com/prometheus/prometheus/releases 因为服务器上下载速度太慢,所以可以提前 ...

  8. js实现图片选中马上显示图片名,选择后可以预览,即选即显

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. linux常用操作指令记录

    https://maker.pro/linux/tutorial/basic-linux-commands-for-beginners ## 打开终端 ## **Ctrl+Alt+T** ## ls ...

  10. AWK nr nf

    https://blog.csdn.net/sh13661847134/article/details/118018456 awk中NF,NR的含义awk中NF和NR的意义,其实你已经知道NF和NR的 ...