页交换文件与内存映射文件

页交换文件与内存映射文件

内存的几种状态和类型

image

私有类型:

使用VitualAlloc申请分配/调拨内存后,申请的内存只能被当前进程使用。其他进程无法访问。这就是所谓的私有内存

image

映射类型 -> 页交换文件(虚拟内存)

页交换文件补充了我们的物理内存的不足。在内存中长时间不活跃的数据,系统会将内存写入页交换文件。用以节省内存,所以页交换文件也是计算机内存的一部分

image

在开启了相应功能后,页交换文件就静静的躺在 c盘根目录,名字为pagefile.sys

image

映射类型 mapping:

页交互文件除了可以应急存储不活跃数据以外,还可以开辟空间作为内存映射空间
可以用来作为进程间共享的内存,实现进程间通讯。(以内存形式可以被映射到多个进程)

image

映象类型 image:
操作系统在加载可执行文件(exe)和模块(dll)的时候,为了快速启动和节省内存,操作系统使用了映象。将文件映射到进程虚拟内存空间中。与映射(mapping)内存的从页交换文件中映射到内存中不同,映象直接把源文件从磁盘中映射到进程虚拟内存空间中(相当于临时页交换文件)。

因为会映射到多个进程,为了防止被随意改的安全。在挂载磁盘文件到进程虚拟内存空间之前,会在系统的页交换文件中申请相同大小的空间,但是不拷贝数据,并且加上PAGE_WRITECOPY写拷贝属性,此时再去挂载到进程虚拟内存空间。

当进程在进程内部改写dll的数据的时候,也就是写那块被标记为写拷贝属性内存的时候。此时会把要改的数据拷贝到页交互文件中,与此同时。内存的映射指针也从文件指向了页交换文件。也就是此时其实改的是页交换文件而不是源文件了。这样一来不同进程就可以公用exe文件并且可以随意修改而不会相互影响了

image

映射类型 - 创建共享内存

//创建文件映射对象

HANDLE CreateFileMapping(
 HANDLE hFile,                       // 文件句柄,如果是真实文件则需要填写,共享内存需要填写宏 INVALID_HANDLE_VALUE
 LPSECURITY_ATTRIBUTES lpAttributes, // 安全描述
 DWORD flProtect,                    // 页面保护属性
 DWORD dwMaximumSizeHigh,            // 文件映射对象的最大大小的高位DWORD (null)
 DWORD dwMaximumSizeLow,             // 文件映射对象的最大大小的低位DWORD (大小)
 LPCTSTR lpName                      // 名字指针
);

//映射到虚拟地址空间 将文件映射的视图映射到调用进程的地址空间中。
LPVOID MapViewOfFile(
 HANDLE hFileMappingObject,   // 一个文件映射对象的句柄。CreateFileMapping和 OpenFileMapping函数返回该句柄。
 DWORD dwDesiredAccess,       // 文件映射对象的访问类型,它决定页面的保护
 DWORD dwFileOffsetHigh,      // 文件偏移量的高位DWORD。
 DWORD dwFileOffsetLow,       // 始位置的文件偏移量的低位DWORD
 SIZE_T dwNumberOfBytesToMap  // 映射到视图的文件映射的字节数
);

//MapViewOfFile 设置的权限指的是 进程使用进程的内存虚拟空间中所生效的权限
//CreateFileMapping 设置的权限是 页交换文件中映射的内存的访问权限
//在同一个 handel中 MapViewOfFile 的权限必须小于或等于INVALID_HANDLE_VALUE所声明的权限

内存访问

image
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容

  • 1 内存寻址 1.1 物理地址、虚拟地址以及线性地址 物理地址: 物理内存的内存单元地址 虚拟地址: 程序员看到的...
    疯狂小王子阅读 2,795评论 3 21
  • 操作系统对内存的管理 没有内存抽象的年代 在早些的操作系统中,并没有引入内存抽象的概念。程序直接访问和操作的都是物...
    Mr槑阅读 16,675评论 3 24
  • 操作系统概论 操作系统的概念 操作系统是指控制和管理计算机的软硬件资源,并合理的组织调度计算机的工作和资源的分配,...
    野狗子嗷嗷嗷阅读 11,907评论 3 34
  • 今天独自电话面试了一个候选人,时长40分钟左右,问题较多。 1. 没有询问完全部工作经验,只仔细问了目前工作的职责...
    Nicole_Coco阅读 834评论 2 1
  • Dear B.B How time flies! With your comany, I gradually fi...
    炀辰阅读 98评论 0 0