1。操作系統(tǒng)最大的功能就是管理功能,管理進(jìn)程調(diào)度、管理內(nèi)存、管理文件系統(tǒng)、管理I/O,...。其中最核心的功能是進(jìn)程管理,但管理的基礎(chǔ)是內(nèi)存管理,只有把內(nèi)存管理好了,才能使進(jìn)程在這個(gè)廣闊的舞臺上自由表演。
2。系統(tǒng)工作模式有三種:實(shí)模式、保護(hù)模式、虛擬8086模式,其中保護(hù)模式又分為:分段保護(hù)模式、分段分頁保護(hù)模式,不同模式下的物理內(nèi)存管理方式不同。
3。分段保護(hù)模式(segmentation):
為了管理好內(nèi)存,把內(nèi)存分而治之,劃分成小塊,這樣易于才易于管理。如何劃分呢?分段保護(hù)模式是把物理內(nèi)存分段,分成一段一段的區(qū)域,每段大小固定/不固定,每段都有不同的用途,這就需要對每個(gè)段進(jìn)行描述,以記錄該段有哪些屬性或特點(diǎn),這樣在使用該段時(shí)才能操作正確。對每個(gè)段的描述信息放在“段描述符”中,所有的“段描述符”統(tǒng)一放在一起組成系統(tǒng)的“段描述符表”。“段描述符表”分為“全局描述符表GDT”,“中斷描述符表IDT”,“局部描述符表LDT”。當(dāng)操作系統(tǒng)要訪問內(nèi)存中的某一個(gè)段時(shí),先在描述符表中找到該段的描述符,這樣就知道了該如何使用該內(nèi)存段了。簡言之,分段是對物理內(nèi)存分段劃分,GDT,LDT,IDT是操作系統(tǒng)使用物理內(nèi)存的參照依據(jù)。
4。段頁保護(hù)模式(paging):
這是在分段保護(hù)模式的基礎(chǔ)上,再加上分頁功能。把以前的對物理內(nèi)存的分段改為對虛擬地址空間的分段,把4G的虛擬地址空間分段,段信息仍保存在GDT,LDT,IDT中。然后把物理內(nèi)存分頁,用二級頁表結(jié)構(gòu)來描述和記錄物理內(nèi)存分頁后的各個(gè)頁的信息。當(dāng)使用物理內(nèi)存時(shí)就參照二級頁表。
5。使用分頁機(jī)制的目的:
(1)當(dāng)系統(tǒng)內(nèi)存被分成許多凌亂的塊時(shí),分頁機(jī)制可以建立一個(gè)大而連續(xù)的內(nèi)存空間映象,程序員不用操心和管理這些分散的內(nèi)存塊。
(2)頁地址變換建立在段變換基礎(chǔ)上,任何分頁機(jī)制的保護(hù)措施并不會取代段變換的保護(hù)措施,而只是進(jìn)行更進(jìn)一步的檢查操作。
(3)分頁機(jī)制增強(qiáng)分段的性能。
6。虛擬內(nèi)存
實(shí)現(xiàn)虛擬內(nèi)存的手段是使用“需求加載Load on demand”和“頁換入換出”。所謂的“需求加載”是指:運(yùn)行一個(gè)磁盤上的文件時(shí),操作系統(tǒng)為新進(jìn)程創(chuàng)建4G線形地址空間,并為其環(huán)境參數(shù)和命令行參數(shù)分配和映射一定數(shù)量的物理頁,此外并沒有給執(zhí)行程序分配其他任何物理內(nèi)存頁面,也沒有從磁盤文件中加載代碼和數(shù)據(jù)。但是,一旦程序從設(shè)定的入口點(diǎn)(mian函數(shù))開始運(yùn)行,就會立刻引起CPU產(chǎn)生一個(gè)缺頁中斷,此時(shí)內(nèi)核中的缺頁處理程序才會根據(jù)引起缺頁異常的具體線形地址把磁盤文件中相關(guān)的代碼和數(shù)據(jù)從文件系統(tǒng)中加載到物理內(nèi)存頁面中,并定位到進(jìn)程邏輯地址中指定的頁面位置。這種僅在需要時(shí)才加載執(zhí)行文件中頁面的方法稱為需求加載技術(shù)或需求分頁(demand paging)技術(shù)。
“頁換入和換出”是指:當(dāng)CPU要尋址的指令或數(shù)據(jù)不在緩存和物理內(nèi)存中時(shí),通過需求加載技術(shù)把頁面加到物理內(nèi)存,但此時(shí)如果物理內(nèi)存已被全部占用,則必須把物理內(nèi)存中最近不使用的頁面換出到磁盤中,以騰出空間給新頁面,這種現(xiàn)在就稱為頁換入和換出。
7。何時(shí)產(chǎn)生GDT,LDT,IDT、二級頁目錄結(jié)構(gòu),以及它們位于物理內(nèi)存的什么位置?
在引導(dǎo)啟動程序head.s中初始化GDT,IDT和二級頁表,它們放在物理內(nèi)存從地址0x0開始的地方。head.s代碼執(zhí)行完后的物理內(nèi)存布局如下圖: