天天看點

實位址模式與保護模式、虛拟位址映射一、三種位址二、Intel X86 CPU 系列的尋址方式1、8086  實位址模式 2、80386  保護模式三、線性位址到實體位址的轉換

一、三種位址

邏輯位址:在有位址變換功能的計算機中,訪内指令給出的位址 (操作數) 叫邏輯位址,也叫相對位址。要經過尋址方式的計算或變換才得到記憶體儲器中的實際有效位址,即實體位址。

線性位址:線性位址是邏輯位址到實體位址變換之間的中間層。在分段部件中邏輯位址是段中的偏移位址,然後加上基位址就是線性位址。如果不啟用分頁,那麼此線性位址即實體位址。

實體位址:線性位址經分頁轉換後就成了實體位址。

二、Intel X86 CPU 系列的尋址方式

X86系列,是指Intel從16位微處理器8086開始的整個CPU晶片系列,系列中的每種型号都保持與以前的各種型号相容。

在X86系列中,8086和8088是16位處理器,而從80386開始為32位處理器。

當我們說一個CPU是16位/32位時,指的是處理器中“算術邏輯單元(ALU)”寬度。資料總線通常與ALU具有相同的寬度(但有例外),

最自然的位址總線寬度是與資料總線一緻的。

1、8086  實位址模式

8086中采用的是16位CPU,但位址總線是20位(采用和1M位元組的記憶體位址空間),是以有些位址CPU通路不到,為了解決這個問題,在8086CPU中設定了四個“段寄存器”:CS、DS、SS、ES,分别用于指令、資料、堆棧和其他。每一個段寄存器都是16位的,對應于位址總線的高16位。

它有1MB尋址能力,那怎麼用16位的段寄存器表示呢?

    這就引出了分段的概念,8086CPU将1MB存儲空間分成許多邏輯段,每個段最大限長為64KB(但不一定就是64KB)。這樣每個存儲單元就可以用“段基位址+段内偏移位址”表示。這樣就實作了從16位内部位址到20位實際位址的轉換(映射)。段基位址由16位段寄存器值左移4位表達,段内偏移表示相對于某個段起始位置的偏移量。

段寄存器<<4 + 邏輯位址(16位)= 線性位址 = 實體位址

實位址模式與保護模式、虛拟位址映射一、三種位址二、Intel X86 CPU 系列的尋址方式1、8086  實位址模式 2、80386  保護模式三、線性位址到實體位址的轉換

但是這種操作是沒有位址空間保護機制的,對于每一個由段寄存器的内容确定的基位址,一個程序總能通路從此開始的64K位元組的聯系位址空間,而無法加以限制。

實位址模式:是相對于之後的保護模式而言的,通過改變段寄存器的值再加上邏輯位址偏移量就可以對記憶體空間任何地方都可以通路。(對記憶體空間的通路無任何限制)

2、80386  保護模式

現代作業系統在剛加電時首先運作在實模式下,然後再切換到保護模式下運作。

80386 采用32位CPU,那麼他的ALU資料總線是32位的。最自然的位址總線寬度是與資料總線一緻。當位址總線寬度達到32位時,其尋址能力達到了4G。因為之後的版本要相容之前的,是以80386保留了之前的段寄存器,還必須支援實位址模式,與此同時還要能支援保護模式。

80386的段式記憶體管理機制

保護模式通過“段選擇符+段内偏移”尋址最終的線性位址或實體位址的。

實位址模式與保護模式、虛拟位址映射一、三種位址二、Intel X86 CPU 系列的尋址方式1、8086  實位址模式 2、80386  保護模式三、線性位址到實體位址的轉換

段選擇符為16位,它不直接指向段,而是通過指向的段描述符,段描述符再定義段的資訊。

每個段描述表項的大小是8個位元組,每個描述表項含有段的基位址和段的大小和其他資訊。GDTR裡存放GDT的資訊。例如GDT大小8位元組,即64位,其中32位放基位址,通過下标找到是哪一項。

實位址模式與保護模式、虛拟位址映射一、三種位址二、Intel X86 CPU 系列的尋址方式1、8086  實位址模式 2、80386  保護模式三、線性位址到實體位址的轉換
實位址模式與保護模式、虛拟位址映射一、三種位址二、Intel X86 CPU 系列的尋址方式1、8086  實位址模式 2、80386  保護模式三、線性位址到實體位址的轉換

三、線性位址到實體位址的轉換

實位址模式與保護模式、虛拟位址映射一、三種位址二、Intel X86 CPU 系列的尋址方式1、8086  實位址模式 2、80386  保護模式三、線性位址到實體位址的轉換
實位址模式與保護模式、虛拟位址映射一、三種位址二、Intel X86 CPU 系列的尋址方式1、8086  實位址模式 2、80386  保護模式三、線性位址到實體位址的轉換

task_struct中的pgd就是用代碼實作了上述過程

實位址模式與保護模式、虛拟位址映射一、三種位址二、Intel X86 CPU 系列的尋址方式1、8086  實位址模式 2、80386  保護模式三、線性位址到實體位址的轉換
實位址模式與保護模式、虛拟位址映射一、三種位址二、Intel X86 CPU 系列的尋址方式1、8086  實位址模式 2、80386  保護模式三、線性位址到實體位址的轉換
實位址模式與保護模式、虛拟位址映射一、三種位址二、Intel X86 CPU 系列的尋址方式1、8086  實位址模式 2、80386  保護模式三、線性位址到實體位址的轉換

寫的好的部落格:https://blog.csdn.net/LeeHannahSylvia/article/details/76239098

程序位址空間

繼續閱讀