內存映像其實就是在內存中創建一個和外存文件完全相同的映像。用戶可以將整個文件映射到內存中也可以部分映射到內存。系統會將對內存映像的改動如實的反映到外存文件中。從而實現了通過內存映像對外存文件的操作。
內存映像的特點:
1、 可以加快對IO的操作速度。
2、 用戶可以通過指針對文件進行操作,間接~~~
3、 實現了文件數據的共享,將外存文件映射到共享內存中,很方便的實現了數據共享,並能完成把數據保存到外存的工作。
注:內存映像只能對內部可以定位的文件進行操作,如普通文件。不能對管道,套接字文件進行操作。
創建內存映射:
start為指針通常設為NULL,表示映射內存有系統決定。因為指定內存會經常出錯。
length為內存映像占用的內存空間大小。以字節為單位。
port表示內存映像的安全性。
PROT_EXEC表示被映像內存可能有機器碼,可執行。
PORT_NONE表示被映像內存不能被訪問。
PORT_READ表示被映像內存可讀
PORT_WRITE表示被映像內存可寫
flag內存映像標志:
MAP_FIXED表示如果無法從start地址建立內存映像,則出錯返回。
MAP_PRIVATE表示對內存映像進行的改動不反映到外存文件中。
MAP_SHARED表示對內存映像進行的改動反映到外存文件中。
fd文件描述符
offset表示所映像的內容距文件頭的距離。
撤銷內存映射: