操作系統(tǒng)知識(shí)點(diǎn)(2)
4.4 內(nèi)存管理
內(nèi)存是現(xiàn)代操作系統(tǒng)的核心。內(nèi)存用于容納操作系統(tǒng)和各種用戶進(jìn)程,是可以被CPU和I/O設(shè)備所共同訪問的數(shù)據(jù)倉庫。計(jì)算機(jī)的所有程序運(yùn)行時(shí)都要調(diào)入內(nèi)存。
內(nèi)存管理的主要工作是:為每個(gè)用戶進(jìn)程合理地分配內(nèi)存,以保證各個(gè)進(jìn)程之間在存儲(chǔ)區(qū)不發(fā)生沖突;當(dāng)內(nèi)存不足時(shí),如何把內(nèi)存和外存結(jié)合起來,給用戶提供一個(gè)比實(shí)際內(nèi)存大得多的虛擬內(nèi)存,使得程序能順利執(zhí)行。內(nèi)存管理包括內(nèi)存分配、地址映射、內(nèi)存保護(hù)和擴(kuò)充。
4.4.1 用戶程序執(zhí)行與地址映射
用戶編寫程序在執(zhí)行前,需要多個(gè)處理步驟,這些步驟可將源程序轉(zhuǎn)變?yōu)槎M(jìn)制機(jī)器代碼,然后在內(nèi)存中等待執(zhí)行。當(dāng)然有時(shí)并非每個(gè)步驟都是必需的。
通常,將指令和數(shù)據(jù)的地址映射成內(nèi)存地址可以發(fā)生在以下三個(gè)執(zhí)行階段。(了解)
1.編譯階段:如果在編譯時(shí)就知道進(jìn)程將在內(nèi)存中的什么位置駐留,那么編譯器就可以直接以生成絕對(duì)地址代碼。
2.加載階段: 不知道進(jìn)程將駐留在什么位置,那么編譯器就必須生成程序的邏輯地址,在加載階段再轉(zhuǎn)變成內(nèi)存的絕對(duì)地址。
3.執(zhí)行階段:如果進(jìn)程在執(zhí)行時(shí)可以從一個(gè)內(nèi)存段移動(dòng)到另一個(gè)內(nèi)存段,那么進(jìn)程的絕對(duì)地址映射工作只能延遲到執(zhí)行時(shí)進(jìn)行。
4.4.2 物理地址空間與邏輯地址空間
物理地址:是計(jì)算機(jī)內(nèi)存單元的真實(shí)地址。
物理地址空間:由物理地址所構(gòu)成的地址范圍。
邏輯地址:用戶程序地址,從0開始編址。
邏輯地址空間:由邏輯地址所構(gòu)成的地址范圍。
地址映射:用戶程序在運(yùn)行時(shí)要裝入內(nèi)存,這就需要將邏輯地址變換成物理地址,這個(gè)過程稱為地址映射,也稱重定位。
用戶編寫的源程序是不考慮地址的,源程序經(jīng)CPU編譯后產(chǎn)生邏輯地址。從CPU產(chǎn)生的邏輯地址轉(zhuǎn)換為內(nèi)存中的物理地址的映射是由計(jì)算機(jī)中被稱為內(nèi)存管理單元的硬件設(shè)備來實(shí)現(xiàn)的,將邏輯地址與內(nèi)存管理單元中存放的內(nèi)存基址相加就得到了物理地址。
4.4.3 進(jìn)程使用內(nèi)存的交換技術(shù)
為了更加有效地使用內(nèi)存,進(jìn)程在不運(yùn)行時(shí),可以暫時(shí)從內(nèi)存移至外存上,直到需要再運(yùn)行時(shí)再重新調(diào)回到內(nèi)存中。也就是說內(nèi)存管理程序可將剛剛運(yùn)行過的進(jìn)程從內(nèi)存中換出以釋放出占用的內(nèi)存空間,然后將另一個(gè)要運(yùn)行的進(jìn)程占據(jù)前者釋放的內(nèi)存空間。
計(jì)算機(jī)工作時(shí),為了將多個(gè)進(jìn)程放入到內(nèi)存就必須考慮在內(nèi)存中如何放置這些進(jìn)程。
4.4.4 內(nèi)存分配方案-連續(xù)
對(duì)于連續(xù)內(nèi)存分配方案,開始時(shí)所有內(nèi)存是一個(gè)大的孔,隨著內(nèi)存分配的進(jìn)行就會(huì)形成位置上不連續(xù)的大小不一的孔。在連續(xù)內(nèi)存分配方案中,當(dāng)新進(jìn)程需要內(nèi)存時(shí),為其尋找合適的孔,實(shí)現(xiàn)內(nèi)存分配 。該方案為每個(gè)進(jìn)程所分配的內(nèi)存物理地址空間在位置上是連續(xù)的。
4.4.5 內(nèi)存分配方案-分頁式
分頁管理基本思想:
o 內(nèi)存物理地址空間劃分為若干個(gè)大小相等的塊(頁框)
o 進(jìn)程的邏輯地址空間也劃分為同樣大小的塊(頁面)
o 內(nèi)存分配時(shí)每個(gè)頁面對(duì)應(yīng)地分配一個(gè)頁框,而一個(gè)進(jìn)程所分得頁框在位置上不必是連續(xù)的。
頁表:操作系統(tǒng)為每個(gè)用戶程序建立一張頁表,該表記錄用戶程序的每個(gè)邏輯頁面存放在哪一個(gè)內(nèi)存物理頁框。
4.5 虛擬內(nèi)存方案
虛擬內(nèi)存是一個(gè)容量很大的存儲(chǔ)器的邏輯模型,它不是任何實(shí)際的物理存儲(chǔ)器,它一般是借助硬盤來擴(kuò)大主存的容量。
虛擬內(nèi)存:對(duì)于一個(gè)進(jìn)程來講,如果僅將當(dāng)前要運(yùn)行的幾個(gè)頁面裝入內(nèi)存便可以開始運(yùn)行,而其余頁面可暫時(shí)留在磁盤上,待需要時(shí)再調(diào)入內(nèi)存,并且調(diào)入時(shí)也不占用新的內(nèi)存空間,而是對(duì)原來運(yùn)行過的頁面進(jìn)行置換。這樣,就可以在計(jì)算機(jī)有限的內(nèi)存中同時(shí)駐留多個(gè)進(jìn)程并運(yùn)行。而對(duì)用戶來講感覺到系統(tǒng)提供了足夠大的物理內(nèi)存,而實(shí)際上并非真實(shí)的,這就是虛擬內(nèi)存。
4.5.2 頁面請(qǐng)求與頁面置換算法
頁面請(qǐng)求:在虛擬內(nèi)存技術(shù)中,進(jìn)程運(yùn)行時(shí)并沒有將所有頁面裝入到內(nèi)存,在運(yùn)行過程中進(jìn)程會(huì)不斷地請(qǐng)求頁面,如果訪問的頁面已在內(nèi)存,就繼續(xù)執(zhí)行下去;但如果要訪問的頁面尚未調(diào)入到內(nèi)存,便請(qǐng)求操作系統(tǒng)將所缺頁面調(diào)入內(nèi)存,以便進(jìn)程能繼續(xù)運(yùn)行下去。
頁面置換:如果請(qǐng)求頁面調(diào)入內(nèi)存時(shí),分配給該進(jìn)程的頁框已用完,就無法立即裝入所請(qǐng)求頁面。此時(shí),必須將進(jìn)程中的某個(gè)頁面從內(nèi)存的頁框調(diào)出到磁盤上,再從磁盤所請(qǐng)求的頁面調(diào)入到內(nèi)存的該頁框中。這個(gè)過程叫做頁面置換。
4.6 文件管理
文件管理是操作系統(tǒng)最常見的組成部分。文件管理主要提供目錄及其文件的管理。
4.6.1 文件的概念
文件:保存在外部存儲(chǔ)設(shè)備上的相關(guān)信息的集合。
文件命名:文件主名+擴(kuò)展名
文件存取屬性:
• 只讀:只允許授權(quán)用戶進(jìn)行讀操作。
• 讀寫:只允許授權(quán)用戶進(jìn)行讀和寫的操作。
• 文檔:允許任何用戶進(jìn)行讀寫操作。
• 隱藏:不允許用戶直接看到文件名。
文件系統(tǒng):是對(duì)文件進(jìn)行操作和管理的軟件,是用戶與外存之間的接口。這個(gè)系統(tǒng)將所有文件組織成目錄結(jié)構(gòu)保存在外存,一個(gè)文件對(duì)應(yīng)其中的一個(gè)目錄條。目錄條記錄有文件名、文件位置等信息。
操作系統(tǒng)對(duì)文件的基本操作包括:
創(chuàng)建文件、文件寫、文件讀、文件重定位、文件刪除、文件截短。
對(duì)文件的其它操作包括:文件復(fù)制、重命名、更改屬性等。
看了“操作系統(tǒng)知識(shí)點(diǎn)”的還看了:
1.操作系統(tǒng)主要知識(shí)點(diǎn)
2.操作系統(tǒng)知識(shí)大全
3.操作系統(tǒng)基本知識(shí)
4.操作系統(tǒng)Windows 命令大全
5.操作系統(tǒng)基礎(chǔ)知識(shí)
