#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. 【ARM架构】armv8 系统安全概述

    ARMv8-A 系统中的安全 一个安全或可信的操作系统保护着系统中敏感的信息,例如,可以保护用户存储的密码,信用卡等认证信息免受攻击. 安全由以下原则定义: 保密性:保护设备上的敏感信息,防止未经授权 ...

  2. pycharm取消代码长度的竖线

  3. Abp返回时间格式化

    private void ConfigureDateTime() { Configure<MvcNewtonsoftJsonOptions>(options => { options ...

  4. java struts2框架漏洞合集

    目录 struts2 s2-016 payload 数据包 返回结果 struts2 s2-016 参考:https://github.com/vulhub/vulhub/blob/master/st ...

  5. navigator跳转

    navigator跳转  open-tab="switchTab"/open-type="navigate" <navigator url="/ ...

  6. 下拉刷新 get请求 post请求 onLoad

       "enablePullDownRefresh": true 下拉刷新之后背景颜色  "backgroundColor": "#efefef&qu ...

  7. Vulnhub:ReconForce-01.1靶机

    kali:192.168.111.111 靶机:192.168.111.200 信息收集 端口扫描 nmap -A -v -sV -T5 -p- --script=http-enum 192.168. ...

  8. Mysql数据库基础第六章:变量、存储过程与函数

    Mysql数据库基础系列 软件下载地址 提取码:7v7u 数据下载地址 提取码:e6p9 mysql数据库基础第一章:(一)数据库基本概念 mysql数据库基础第一章:(二)mysql环境搭建 mys ...

  9. S-HR类加载器的区别

    S-HR的addon和sp下的jar包是由不同的类加载器来加载的: 1.如果/root/kingdee/eas/server/lib/sp的包的路径引用的是/root/kingdee/eas/serv ...

  10. N63050 第十六周运维作业

    第十六周 就业和全程班小伙伴本周学习内容: 第三十一天: 高性能服务器nginx 1LVS的跨网段实现 2LVS的防火墙标记和持久连接及高可用实现 3web服务和IO介绍 4IO复用模型 5nginx ...