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