`
charlotte
  • 浏览: 124289 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

内存映射

 
阅读更多

最近在做文件系统时粗看了下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表做映射了吗?要是能有大牛能给我这个菜菜在详细交流指点下就更好了。。

分享到:
评论
1 楼 chenpeilei2003 2013-12-10  
期待下文

相关推荐

    内存映射修改大文件_内存映射_MemoryFile_超大文件读写_

    内存映射(Memory Mapping)是一种高效处理大文件的技术,它允许程序通过操作系统将磁盘上的文件映射到进程的虚拟地址空间中,从而实现对文件的读写操作如同操作内存一样简便快速。这种方式大大提升了超大文件的读写...

    file_内存映射_C++_

    内存映射是计算机科学中的一种技术,特别是在C++编程中,它允许程序高效地访问大文件,仿佛这些文件是程序的内存部分。标题中的“file_内存映射_C++_”指的是利用C++来实现内存映射文件的技术,用于创建一个小型...

    大文件读写内存映射.rar

    在IT领域,尤其是在进行大规模数据处理时,内存映射(Memory Mapping)技术是一种高效且实用的方法,尤其在处理大文件时。本主题聚焦于Qt框架下如何利用内存映射进行大文件的读写操作。Qt是一个跨平台的C++库,提供...

    内存映射读写文件的方法

    内存映射文件(Memory-Mapped File)是一种在操作系统层面上高效读写大文件的技术,它允许应用程序将文件的内容直接映射到进程的虚拟地址空间中,使得数据的读写如同操作内存一样快速。这种方式在处理大数据量时尤其...

    VC++中使用内存映射文件处理大文件.doc

    ### VC++中使用内存映射文件处理大文件 在计算机编程领域,特别是在处理大量数据时,内存映射技术成为了一种高效的数据访问手段。本文将详细介绍如何在VC++(Visual C++)环境下利用内存映射文件(memory-mapped ...

    C++中使用内存映射文件处理大文件

    内存映射文件是一种高效处理大文件的技术,尤其适用于需要处理大量数据的应用场景。在Windows操作系统中,内存映射文件利用虚拟内存机制,将磁盘上的文件直接映射到进程的地址空间,允许程序以访问内存的方式操作...

    Delph/XE如何应用共享内存映射文件(源代码)

    在Delphi XE中,内存映射文件是一种高效的数据共享机制,它允许多个进程之间共享数据,而无需通过网络或磁盘I/O进行通信。这种技术尤其适用于需要快速交互的进程间通信(IPC)。以下是对标题和描述中涉及的知识点的...

    C# - 使用内存映射文件的高效文件 I/O

    在这个例子中:我们为内存映射文件定义文件路径 ( filePath) 和大小 ( )。fileSize在本例中,我们正在处理一个 100 MB 的文件。我们使用创建或打开内存映射文件MemoryMappedFile.CreateFromFile。如果该文件不存在,...

    内存映射 C++实例

    "内存映射 C++ 实例" 内存映射是指将硬盘上的文件映射到内存中,以便更快速地访问和操作文件。这种技术可以解决大文件读写时的内存资源不足问题。下面是关于内存映射的知识点: 1. 内存映射的定义:内存映射是操作...

    DELPHI 内存映射共享内存

    在IT行业中,内存映射(Memory Mapping)是一种高级的进程间通信(IPC,Inter-Process Communication)技术,常用于多个进程或线程间的数据共享。DELPHI,作为一款强大的面向对象的编程语言,提供了丰富的API和库...

    易语言写共享内存源码,易语言读共享内存源码,易语言文件内存映射

    在IT领域,尤其是在系统编程和进程间通信(IPC)中,文件内存映射是一种高效的技术。易语言,作为中国本土的编程语言,提供了方便的接口来实现这一功能。本篇文章将详细探讨易语言如何实现文件内存映射,以及相关的...

    内存映射读、写

    内存映射(Memory Mapping)是一种在计算机编程中用于高效访问文件或数据的技术,尤其是在MFC(Microsoft Foundation Classes)框架下。MFC是微软提供的一种C++库,它为Windows应用程序开发提供了面向对象的接口。...

    通过内存映射实现进程间的数据交换

    内存映射是操作系统提供的一种高效的数据共享机制,它允许多个进程共享同一块内存空间,从而实现进程间的数据交换。在Windows系统中,这个功能主要由CreateFileMapping和MapViewOfFile等API函数来完成。本文将详细...

    内存映射文件实现大数据量快速存储

    内存映射文件(Memory-Mapped File)是一种在操作系统层面实现高效大数据处理的技术,它允许将文件的内容直接映射到进程的虚拟内存空间中,使得应用程序可以像操作普通内存一样读写文件,从而实现快速的数据存取。...

    易语言内存映射大文件

    易语言内存映射大文件源码,内存映射大文件,创建映射,打开文件_,取颗粒数,映射内存,读基址,释放内存,关闭文件_,写入字节集,移动读写位置_,读位置指针,删除字节集,十六到十,映射_创建,API_取文件长度,API_打开文件,API...

    linux 内存映射机制

    Linux内存映射机制是一种操作系统内核管理内存的方式,它涉及到虚拟地址到物理内存地址的转换过程。在X86架构的Linux系统上,内存映射机制确保每个进程能够通过虚拟内存寻址到高达4GB的地址空间,而物理内存的实际...

    C#内存映射教程(代码)

    ### C#内存映射教程详解 #### 一、引言 在C#中,内存映射是一种高效的数据共享机制,允许一个或多个进程通过映射同一个文件或物理内存区域到进程地址空间,从而实现进程间的数据共享。这种技术广泛应用于需要进行...

    VC++采用内存映射方式高效率读写大数据

    标题 "VC++采用内存映射方式高效率读写大数据" 提到的核心技术是内存映射文件(Memory-Mapped File),这是一种在Windows操作系统中用于高效处理大量数据的技术。它允许程序将磁盘上的文件直接映射到进程的虚拟地址...

    vc 内存映射文件.doc

    ### vc 内存映射文件知识点详解 #### 一、内存映射文件概念与应用场景 内存映射文件(Memory-Mapped File)是一种特殊的技术手段,主要用于实现文件与内存之间的高效交互。这种技术允许应用程序像访问内存一样直接...

Global site tag (gtag.js) - Google Analytics