内存映射

最近在做文件系统时粗看了下linux和windows对缓存不同的处理,做下笔记

Linux:

linux中提出了虚拟的文件系统vfs和page table以及cache manage的概念

 

1.vfs负责与应用程序打交道,当应用程序需要数据交换时,其负责从page table中获取cache buf,并建立cache的映射,底层的文件系统(VFS、NTFS、EXT2\3...)只需要同cache打交道即可,从外围设备中读写数据映射到cache。

 

2.cache manage主要是针对cache buf中cache管理,linux使用了基数树(一种搜索树)来实现cache的快速定位,以及双链表来实现内存的释放。

 

3.page table主要是管理已叶为单位的内存,使用了body和slub算法,budy算法主要是管理叶,而slub把叶又拆分了很多不同大小的内存提供给应用程序,称为零售商。


Windows:

微软使用内存映射文件来映射文件(磁盘上的物理文件),内存映射文件的三种使用场景

1.载入并运行exe和dll

2.映射磁盘上的数据文件

3.同一台pc机的不同进程共享数据

只针对2说明:

a.当要读写文件时,创建文件内核,目的高速文件映射物理存储器文件所在位置、文件大小等。

b.创建文件映射器,预定一块内存供文件映射。dwMsximumSizeHigh、dwMsximumSizeLow,在64位操作系统里内存映射文件的最大长度是64位,在32位操作系统里,dwMsximumSizeHigh为0,即最大映射长度为32位。当文件过大时采用分段映射的方法来处理。

c.数据映射到内存中,告之映射字节和映射长度,映射部分称为view.

d.撤销映射关系,关闭映射对象和文件对象。

 

PS.唉!!windows的看的很咩意思~有时间详细写下radix tree以及active、inactive list和slub,以及最终在嵌入式fs中我的使用。

附:拿fat32举例,我很好奇,windows上来就把fat表做映射了吗?要是能有大牛能给我这个菜菜在详细交流指点下就更好了。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值