點我查看祕籍連載操作系統
前面描述的全部操做系統基礎知識都是進程和CPU資源相關的內容,另外一個操做系統中和進程相關的比較重要的話題是內存資源。翻譯
操做系統主要目的是執行程序,而程序在執行時,程序自身以及程序所訪問的數據、所產生的數據都在內存裏(至少全部數據的流向都會通過內存)。此外,現代操做系統能夠同時運行多個進程,而每一個進程都有屬於本身的一部份內存。進程
操做系統必須負責管理這些同時運行的這些進程的內存,而且還要保證進程A不會訪問到進程B的內存,從而實現進程的隔離。內存
操做系統使用了一個稱爲虛擬內存(Virtual Memory,VM)的概念來實現進程的內存管理,虛擬內存也稱爲地址空間或虛擬地址空間,和物理內存的稱呼相對應。資源
每一個進程都擁有一個屬於本身的虛擬內存。進程在使用本身的虛擬地址空間時,任何虛擬地址都必須翻譯成對應的物理內存地址才能使用到物理內存。get
虛擬內存是操做系統對進程營造的另外一個假象:讓進程覺得本身佔有了全部的物理內存。但實際上,它只使用了物理內存的一部分,每一個進程所實際使用的那部分物理內存由操做系統進行分配和回收,從而實現內存的管理。內存管理
虛擬內存的主要目標之一是對進程透明,進程不該該感知到內存被虛擬的這個事實,相反,還要讓進程覺得本身擁有全部的物理內存,想怎麼使用就怎麼使用,而不該該收到限制。基礎
虛擬內存另外一個目標是保護進程,進程A不容許訪問到進程B的虛擬內存時,在進程A崩潰時也不該該讓它影響到進程B,更不能讓用戶進程影響到操做系統自己。因此,每一個進程都是徹底隔離的,互不影響。程序