保護模式:段機制

两线平行發表於2024-03-12

 一、段機制

  記憶體是計算機系統的關鍵資源,程式必須被載入到記憶體中才可以被CPU所執行。程式執行過程中,也要使用記憶體來記錄資料和動態的資訊。在一個多工的系統中,每個任務都需要使用記憶體資源,因此係統需要有一套機制來隔離不同任務所使用的記憶體,要使這種隔離即安全又高效,那麼硬體一級的支援是必須的。IA-32 CPU提供了多種記憶體管理機制,這些機制為作業系統實現記憶體管理功能提供了硬體基礎。

  CPU的段基址提供了一種手段可以將系統的記憶體空間劃分為一個個較小的受保護區域,其中每個區域稱為一個段(Segment)。每個段都有自己的其實地址(基地址)、邊界(Limit)和訪問許可權等屬性。實現段機制的一個重要資料結構就是段描述符(Segment descriptor)。

二、段描述符

  在保護模式下每個記憶體都有一個段描述符,這是其他程式碼訪問該段的基本條件。每個段描述符是一個8位元組長的資料結構,用來描述一個段的位置、大小、訪問許可權和狀態資訊。

保護模式:段機制

S(System:系統)位:S=0代表該描述符是一個系統段,S=1代表該描述符是程式碼段、資料段或堆疊段

P(Present:存在)位:P=1表示該段已經在記憶體中,P=0表示該段不在記憶體中。

DPL(Descriptor Privilege Level)描述符特權級)位:這兩位定義了該段的特權級別(0~3)

D/B(Default/Big)位:對於程式碼段,該位表示這個程式碼段的預設位數,D=0表示16位程式碼段,D=1表示32位程式碼段。對於堆疊資料段,該為稱為B標誌,B=1表示使用32位的堆疊指標(儲存ESP中),B=0表示使用16位堆疊指標(儲存在SP中)

Type(段型別)位:A:表示該段是否被訪問過(Accessed),A=1表示被訪問過。E(Expand)向上向下擴充,W(Write)位,W=0表示該段只可以讀,W=1表示可以讀寫。C位:一致位,

AVL位:供系統軟體(作業系統)使用

三、描述符表

相關文章