Can you summarize the following document?
        
  主要用處是增加I/O效能,特別是用於大檔案。對於小檔案,記憶體對映檔案會導致碎片空間浪費,因為記憶體對映總是要對齊頁邊界,這起碼是4 KiB。因而一個5 KiB檔案將會對映佔用8 KiB記憶體,浪費了3 KiB記憶體。訪問記憶體對映檔案比直接檔案讀寫要快幾個數量級。  記憶體對映檔案可以只載入一部分內容到使用者的邏輯記憶體空間。這對非常大的檔案特別有用。  使用記憶體對映檔案可以避免顛簸:把相當大的檔案直接載入到記憶體時,由於可用記憶體不足,使得一邊讀取檔案記憶體,同時把部分已經載入的檔案從記憶體寫入硬碟虛存檔案中。  記憶體對映檔案由作業系統的記憶體管理程式負責,因此繞過了硬碟虛存的分頁檔案(page file)。

  有兩類記憶體對映檔案:

  Persisted檔案與硬碟檔案相關聯,當關閉記憶體對映時,資料被寫入對應的硬碟檔案中。適合於很大的檔案。

  Non-persisted檔案並不關聯於硬碟檔案。當關閉記憶體對映檔案,所有資料被拋棄。適用於建立程序間通訊的共享記憶體。

  記憶體對映檔案需要在程序的佔用一塊很大的連續邏輯地址空間。對於Intel的IA-32的4 GiB邏輯地址空間,可用的連續地址空間遠遠小於2---3 GiB。  相關聯的檔案的I/O錯誤(如可拔出驅動器或光碟機被彈出,磁碟滿時寫操作等)的記憶體對映檔案會嚮應用程式報告SIGSEGV/SIGBUS訊號(POSIX環境)或EXECUTE_IN_PAGE_ERROR結構化異常(Windows環境)。通常的記憶體操作是無需考慮這些異常的。  有記憶體管理單元(MMU)才支援記憶體對映檔案。

  最常見用途是絕大多數作業系統(包括Microsoft Windows與Unix-like系統)用於載入程序。  另一個用途是多個程序的共享記憶體。  第三個用途是對大檔案的讀寫。

  一些可移植的庫實現:  Java語言的.  D語言的標準庫(std.mmfile module).  Ruby語言的gem(庫) Mmap.  Python語言的mmap標準庫模組.  Perl的Sys::Mmap或File::Map.  Microsoft.NET的P/Invoke,或者Managed access(參見 Memory-Mapped Files). 或第三方庫API.  PHP的庫函式file_get_contents()( revision log).  R語言的一個庫bigmemory使用了Boost庫的實現.  J語言至少自從2005年開始支援記憶體對映檔案。它包括了對盒裝的陣列資料和單一資料型別檔案的支援。支援可以從codice_1載入。J的Jdb和JD資料庫引擎使用記憶體對映檔案用於列儲存。

  POSIX函式mmap(),建立一個記憶體對映檔案,需要提供檔案描述符、開始位置的檔案指標、對映長度等引數。 or OpenVMS

  Windows API提供了一組函式以實現記憶體對映檔案。
記憶體對映檔案(Memory-mapped file),或稱“檔案對映”、“對映檔案”,是一段虛記憶體逐位元組對應於一個檔案或類檔案的資源,使得應用程式處理對映部分如同訪問主記憶體。