仮想メモリのマッピング
4571 ワード
追加のメンテナンスデータがないメモリ割当てmmap(割当て)/munmap(解放)割当て空間サイズ:4 k*(length/4 k+1)ページ単位で、各ページは通常4 K
関数の説明:
マッピング方法:メモリマッピング:匿名マッピング.≪ファイル・マッピング|File Mappings|emdw≫:あるファイルにマッピングするには、ファイル・マッピングの最後の2つのパラメータのみが有効です.
メモリマッピング:MAP_ANONYMOUS//匿名マッピング、マッピング領域はファイルに関連付けられていません.ファイルマッピング:MAP_SHARED MAP_PRIVATE(二択一)
例:
関数の説明:
void *mmap(
void *start,// 0 )
size_t length,// pagesize
int prot,// PROT_NONE PROT_READ PROT_WRITE PROT_EXEC
int flags,//
int fd,//
offset_t off);// ( pagesize )
マッピング方法:メモリマッピング:匿名マッピング.≪ファイル・マッピング|File Mappings|emdw≫:あるファイルにマッピングするには、ファイル・マッピングの最後の2つのパラメータのみが有効です.
メモリマッピング:MAP_ANONYMOUS//匿名マッピング、マッピング領域はファイルに関連付けられていません.ファイルマッピング:MAP_SHARED MAP_PRIVATE(二択一)
例:
#include
#include
#include
#include
main()
{
int *p=mmap(
NULL,
getpagesize(),
PROT_READ|PROT_WRITE,
MAP_ANONYMOUS|MAP_SHARED,
0,0);
*p=20;
*(p+1)=30;
*(p+2)=40;
printf("%d
",p[2]);
unmap(p,4096);// , 1 4K
}