仮想メモリのマッピング

4571 ワード

追加のメンテナンスデータがないメモリ割当てmmap(割当て)/munmap(解放)割当て空間サイズ:4 k*(length/4 k+1)ページ単位で、各ページは通常4 K
関数の説明:
		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 }