×

windows内存映射的三种形式

windows内存映射的三种形式(windows内存映射文件)

admin admin 发表于2023-03-31 12:34:07 浏览69 评论0

抢沙发发表评论

本文目录一览:

cache内存的地址映射主要有几种方式

cache内存的地址映射主要有以下三种方式:

一、直接映像:

指主存的一个字块只能映像到Cache的一个准确确定的字块中。

特点:主存的字块只可以和固定的Cache字块对应,方式直接,利用率低。

二、全相联映像:

全相联映射是指主存中任意一个块都可以映射到Cache中任意一个块的方式,也就是说,当主存中的某一块需调入Cache时,可根据当时Cache的块占用或分配情况,选择一个块给主存块存储,所选的Cache块可以是Cache中的任意一个块。-windows内存映射的三种形式

特点:贮存中的字块可以和Cache的任何字块对应,利用率高,方式灵活,标记位较长,使用成本太高。

三、组相联映像:

是对全相联和直接映像的一种折中的处理方案。既不在主存和Cache之间实现字块的完全随意对应,也不在主存和Cache之间实现字块的多对一的硬性对应,而是实现一种有限度的随意对应。

特点:折中方案。组间全相联,组内直接映像。集中了两个方式的优点。成本也不太高。最常见的Cache映像方式。

windows api 内存文件映射如何将修改的数据写回文件?

如果没有特殊需求,你不需要作其它事情,MapViewOfFile之后, 就按照内存数组或指针的方式访问文件, 修改也是数组或指针方式的; 之后,只需UnmapViewOfFile,所有的变化都自动写回硬盘-windows内存映射的三种形式

如果你等不及,也可以直接调用FlushViewOfFile。 其实UnmapViewOfFile的时候,所以已dirty的页面都会被用FlushViewOfFile的方式,写回硬盘文件。

比如:

char *x = (char *) MapViewOfFile(...);

if( x == NULL ) {

.... /* 错误处理*/

}

x[0] = '*';

x[1] = '*';

...

FlushViewOfFile(....);

/* 或者干脆*/

UnmapViewOfFile (...);

...

CloseHandle(hMaoFile);

CloseHandle(hFile);

...

cache内存的地址映射主要有几种方式?

cache内存的地址映射主要有以下三种方式:\x0d\x0a一、直接映像:\x0d\x0a指主存的一个字块只能映像到Cache的一个准确确定的字块中。\x0d\x0a特点:主存的字块只可以和固定的Cache字块对应,方式直接,利用率低。\x0d\x0a\x0d\x0a二、全相联映像:\x0d\x0a\x0d\x0a全相联映射是指主存中任意一个块都可以映射到Cache中任意一个块的方式,也就是说,当主存中的某一块需调入Cache时,可根据当时Cache的块占用或分配情况,选择一个块给主存块存储,所选的Cache块可以是Cache中的任意一个块。\x0d\x0a特点:贮存中的字块可以和Cache的任何字块对应,利用率高,方式灵活,标记位较长,使用成本太高。\x0d\x0a三、组相联映像:\x0d\x0a\x0d\x0a是对全相联和直接映像的一种折中的处理方案。既不在主存和Cache之间实现字块的完全随意对应,也不在主存和Cache之间实现字块的多对一的硬性对应,而是实现一种有限度的随意对应。\x0d\x0a特点:折中方案。组间全相联,组内直接映像。集中了两个方式的优点。成本也不太高。最常见的Cache映像方式。-windows内存映射的三种形式