1、分段的原因
分段提供了隔絕各個**、資料和堆疊區域的機制,因此多個程式或任務可以執行在同乙個處理器上而不會相互干擾。
上圖所示,分段機制吧處理器可定址的線性位址空間劃分成一些較小的稱為段的受保護位址空間區域,段可以存放程式的資料、**和堆疊,等。如果有多個程式或者任務在執行,那麼每個程式可分配各自的一套段,來進行隔離。
乙個系統中所有使用的段都包含在處理器線性位址空間中,為了定位指定段的乙個位元組,程式必須提供乙個邏輯位址,邏輯位址由基位址和偏移位址組成,基位址的獲取是通過資料結構--段描述符,段選擇符有14bits即能夠指向2^14個段描述符,每個段描述符的段長最大2^32(即是偏移位址的有效位),·段選擇符提供段描述符表中乙個資料結構(段描述符)的偏移量,每個段都有乙個段描述符,包含段的大小,許可權,基位址等。
段描述符表
段描述符表就是儲存段描述符的陣列,有兩種描述符表:gdt ldt
當任務切換時,ldt會更換成新任務的ldt,但是gdt不變,gdt所對映的虛擬位址是系統中所有任務所共用的
段描述符
分段機制小結
1 分段的原因 分段提供了隔絕各個 資料和堆疊區域的機制,因此多個程式或任務可以執行在同乙個處理器上而不會相互干擾。每個段定義了記憶體中的某個區域以及訪問的優先順序等資訊,如果不在段描述符中定義乙個該記憶體空間,該記憶體就不能被定址到。每個程式都有若干個記憶體段,程式的邏輯位址就是用於定址這些段個段...
CAS分段機制與自動分段遷移機制
所謂cas分段機制,其維護這乙個base變數和乙個cell陣列,當多個執行緒操作乙個變數的時候,先會在這個base變數上進行cas操作,當它發現執行緒增多的時候,就會使用cell陣列。比如當base更新為3的時候發現執行緒增多 也就是casbase操作失敗 那麼它會自動使用cell陣列,每乙個執行緒...
linux分段分頁機制
mmu使用分段單元硬體把邏輯位址轉換為虛擬位址,再使用分頁單元硬體把虛擬位址轉換為實體地址。因為這兩部分表示乙個獨一無二的邏輯位址,虛擬位址作為這個段位址另一種形式,當然也需要這兩個部分作為轉換的 原材料。這裡涉及乙個叫做段的暫存器,它的作用是放段選擇符 識別符號 共有六種 cs 儲存指向 的段的選...