注:核心數據避免術語 unfaulting,因爲它是混亂的。 虛擬 內存頁面錯誤沒有「不合格」。頁面錯誤是 觸發,引起,解僱或 遇到。當然,你可以通過 多種方式(使用函數 vm_deallocate,munmap或sbrk)將內存釋放回內核。核心 數據將此描述爲「將 對象變爲故障」。
是核心數據中的錯誤本質上是內存頁錯誤?對於內存頁面的內容我只有一點點的想法。我相信這是一種「內存中的代碼片段」,它需要執行這樣的過程和類似的東西,而且當應用程序運行時,代碼片段會作爲「頁面」被吸引到內存中,因爲它們不是需要了。大概99%是錯的;)
有人嗎?
I不要介意你對整個虛擬記憶的描述(就像我一樣),但考慮到你提供的詳細程度,你不覺得你應該提及它嗎?您描述它的方式,聽起來像每個應用程序映射到物理內存。一般來說,換出的內容不是綁定到物理地址,而是與您自己的應用程序的另一個(虛擬)頁面綁定。無需您的應用程序的內存使用特性來影響其他人的應用程序。 – tvanfosson 2010-06-13 13:01:47
@tvanfosson我沒有提到它,現在你已經提出了它,我不知道如何總結它。但是,每個應用程序*都映射到物理內存:每個應用程序都可以看到整個(或大部分)地址空間,就好像地址空間僅由該應用程序擁有一樣,而O/S將地址空間映射到RAM 。多個應用程序意味着多個地址空間實例,並且不同的實例彼此競爭RAM。 – ChrisW 2010-06-13 13:11:28
決定要交換的內容(例如,是否選擇由此應用程序或其他應用程序使用的頁面)是O/S特定的實現細節(我不知道iPhone的細節是什麼)。 – ChrisW 2010-06-13 13:14:30