NAME
pager - 使用者空間分頁的機制
概要
Pager 提供了讓使用者空間程序的機制,以便為 VMO 提供需求分頁。
說明
Pager 物件可讓使用者建立 VMO (通常是檔案系統),進而建立 VMO,做為外部資料的記憶體內快取。針對由 Pager 物件建立的指定 VMO,核心會向相關聯的通訊埠傳送頁面要求。接著,呼叫器服務會提供適當的頁面給 VMO 以完成要求。
核心不會預先擷取,必須由呼叫器服務實作任何適用的預先擷取功能。
單一呼叫器可能會同時返回多個 VMO。可透過建立 VMO 時使用的 key 參數區分針對不同 VMO 的要求。多個獨立的呼叫器物件也可以同時存在。
建立呼叫器並非獲得授權的作業。不過,如果作業需要在 IPC 上封鎖回到使用者空間程序,在 VMO 上運作的 syscall 預設行為會失敗,因此應用程式通常需要知道在分頁式 VM 上運作的時間。這表示,為用戶端提供呼叫器擁有 VMO 的服務,應明確納入在其 API 中。檢查 VMO 是否會產生分頁要求,可藉由檢查 zx_info_vmo_t
中 zx_object_get_info()
傳回的 ZX_INFO_VMO_PAGER_BACKED 標記來確定呼叫器要求。
TODO(stevensd):Writeback 目前未執行。視情況更新說明文件。
另查看
- vm_object - 虛擬記憶體物件
音效
- pager_create - 建立新的 Pager 物件
- pager_create_vmo - 建立由呼叫器擁有的 vmo
- pager_optional_vmo - 將呼叫器從 vmo 卸離
- pager_supply_pages - 將網頁提供至 Pager 擁有的 vmo
- pager_op_range - 對指定範圍執行 Pager 作業