Solaris Resource Manager 1.3 系統管理指南

記憶體限制技術性說明

每當一個處理嘗試增加其記憶體大小時,就會受到其所附加的 lnode 記憶體限制(總計及每個-處理)。處理共有五種增加其記憶體大小的方法:

  1. 呼叫一個配置常式,如 malloc(3C),可以產生 sbrk(2) 系統呼叫的引動。如果超出一個記憶體限制,呼叫會回傳一個錯誤,其中 error 設定為 ENOMEM。

  2. 擴展堆疊以造成一個堆疊錯誤,通常可以讓處理獲得額外的一個記憶體頁面。如果超出一個記憶體限制,處理會收到一個 SIGSEGV 信號。

  3. 使用 mmap(2)。

  4. 使用fork(2)。子位址空間在仍由雙親處理擁有時被複製。在複製的過程中,新的位址空間不會超出 memory.plimit ,因為雙親必須已經在此限制之內;然而配置必須受到 memory.limit 的限制。

  5. 使用exec(2)。在一個 exec 期間,會因為放棄舊的位址空間而使一開始的記憶體使用量減少。然而如果新程式的位址空間比較大,因而導致超出限制,那麼 exec 可能會失敗。