一、前言
在《操作系統(tǒng)篇-淺談實(shí)模式與保護(hù)模式》中提到了兩種模式,我們說(shuō)在操作系統(tǒng)中,其實(shí)大部分時(shí)間是待在保護(hù)模式中的。因此若想理解操作系統(tǒng)程序中的啟動(dòng)相關(guān)的部分,必須要理解保護(hù)模式下的編程,而分段機(jī)制是保護(hù)模式編程下的基礎(chǔ)。而且,由于實(shí)模式與保護(hù)模式的不同,對(duì)保護(hù)模式下的分段機(jī)制更需要注意。
二、線性地址
在保護(hù)模式下編程,訪問內(nèi)存時(shí),需要在程序中給出段地址和偏移量,因?yàn)榉侄问潜Wo(hù)模式的基本特征之一。傳統(tǒng)上,段地址和偏移地址稱為邏輯地址,偏移地址叫做有效地址,在指令中給出有效地址的方式叫做尋址方式。
段的管理是由處理器的段部件負(fù)責(zé)進(jìn)行的,段部件將段地址和偏移地址相加,得到訪問內(nèi)存的地址。一般來(lái)說(shuō),段部件產(chǎn)生的地址就是物理地址。
在分段模型下,內(nèi)存的分配是不定長(zhǎng)的,時(shí)間長(zhǎng)了,內(nèi)存空間就會(huì)碎片化,就有可能出現(xiàn)一種情況:內(nèi)存空間是有的,但都是小塊,無(wú)法分配給某個(gè)任務(wù)。為了解決這個(gè)問題,在支持分頁(yè)功能后,分頁(yè)功能將物理內(nèi)存空間劃分成邏輯上的頁(yè)。頁(yè)的大小是固定的,一般為 4KB,通過(guò)使用頁(yè),可以簡(jiǎn)化內(nèi)存管理。
如下圖所示,當(dāng)頁(yè)功能開啟時(shí),段部件產(chǎn)生的地址就不再是物理地址了,而是線性地址,線性地址還要經(jīng)頁(yè)部件轉(zhuǎn)換后,才是物理地址。
線性地址的概念用來(lái)描述任務(wù)的地址空間。如上圖所示, 32位保護(hù)模式中,每個(gè)任務(wù)都擁有4GB 的虛擬內(nèi)存空間,就像一段平直的線段,因此叫線性地址空間。相應(yīng)地,由段部件產(chǎn)生的地址,就對(duì)應(yīng)著線性地址空間上的每一個(gè)點(diǎn),這就是線性地址。
三、段
延伸閱讀
學(xué)習(xí)是年輕人改變自己的最好方式