前面描述的所有作業系統基礎知識都是程序和cpu資源相關的內容,另乙個作業系統中和程序相關的比較重要的話題是記憶體資源。
作業系統主要目的是執行程式,而程式在執行時,程式自身以及程式所訪問的資料、所產生的資料都在記憶體裡(至少所有資料的流向都會經過記憶體)。此外,現代作業系統可以同時執行多個程序,而每個程序都有屬於自己的一部分記憶體。
作業系統必須負責管理這些同時執行的這些程序的記憶體,並且還要保證程序a不會訪問到程序b的記憶體,從而實現程序的隔離。
作業系統使用了乙個稱為虛擬記憶體(virtual memory,vm)的概念來實現程序的記憶體管理,虛擬記憶體也稱為位址空間或虛擬位址空間,和物理記憶體的稱呼相對應。
每個程序都擁有乙個屬於自己的虛擬記憶體。程序在使用自己的虛擬位址空間時,任何虛擬位址都必須翻譯成對應的物理記憶體位址才能使用到物理記憶體。
虛擬記憶體是作業系統對程序營造的另乙個假象:讓程序以為自己占有了所有的物理記憶體。但實際上,它只使用了物理記憶體的一部分,每個程序所實際使用的那部分物理記憶體由作業系統進行分配和**,從而實現記憶體的管理。
虛擬記憶體的主要目標之一是對程序透明,程序不應該感知到記憶體被虛擬的這個事實,相反,還要讓程序以為自己擁有所有的物理記憶體,想怎麼使用就怎麼使用,而不應該收到限制。
虛擬記憶體另乙個目標是保護程序,程序a不允許訪問到程序b的虛擬記憶體時,在程序a崩潰時也不應該讓它影響到程序b,更不能讓使用者程序影響到作業系統本身。所以,每個程序都是完全隔離的,互不影響。
Linux程序虛擬記憶體簡介
使用者態和核心態 程序在執行時一般存在兩種狀態 使用者態 核心態。使用者態是指程序在執行使用者 核心態時指程序在執行核心 所以在linux中每個程序都存在兩個棧分別使用者使用者態和核心態的執行。使用者空間和核心空間 在32位系統中linux程序的虛擬記憶體為4gb,linux核心將這4g位元組的空間...
虛擬記憶體應用
虛擬記憶體的重要性體現在下面幾個方面 1 虛擬記憶體可以對映到硬碟,以達到擴充套件記憶體的作用,這樣系統在物理記憶體已經用滿的情況下,就不會因為沒有記憶體可用,而導致系統崩潰。2 虛擬記憶體是以程序空間為定址空間的,一般情況,程序使用者模式下的定址空間 是2g,為了避免記憶體的碎片,可以把2g程序空...
虛擬記憶體(Virtual Memory)
虛擬記憶體 virtual memory 是windows管理所有可用記憶體的方式。對於32位windows系 統,每個程序所用到的虛擬記憶體位址從0到2 32 1,總容量4gb,其中2gb是與作業系統以 及其他所有程序所共享,另外2gb分派給程序獨佔 這就是常說的32位windows中乙個進 程最...