1. 程式人生 > >CPU的真實模式和保護模式(一)

CPU的真實模式和保護模式(一)

真實模式和保護模式都是CPU的工作模式,而CPU的工作模式是指CPU的定址方式、暫存器大小等用來反應CPU在該環境下如何工作的概念。

1.真實模式工作原理

真實模式出現於早期8088CPU時期。當時由於CPU的效能有限,一共只有20位地址線(所以地址空間只有1MB),以及8個16位的通用暫存器,以及4個16位的段暫存器。所以為了能夠通過這些16位的暫存器去構成20位的主存地址,必須採取一種特殊的方式。當某個指令想要訪問某個記憶體地址時,它通常需要用下面的這種格式來表示:

  (段基址:段偏移量)

  其中第一個欄位是段基址,它的值是由段暫存器提供的(一般來說,段暫存器有6種,分別為cs,ds,ss,es,fs,gs,這幾種段暫存器都有自己的特殊意義,這裡不做介紹)。

  第二欄位是段內偏移量,代表你要訪問的這個記憶體地址距離這個段基址的偏移。它的值就是由通用暫存器來提供的,所以也是16位。那麼兩個16位的值如何組合成一個20位的地址呢?CPU採用的方式是把段暫存器所提供的段基址先向左移4位。這樣就變成了一個20位的值,然後再與段偏移量相加。

即:

  實體地址 = 段基址<<4 + 段內偏移

  所以假設段暫存器中的值是0xff00,段偏移量為0x0110。則這個地址對應的真實實體地址是 0xff00<<4 + 0x0110 = 0xff110。

由上面的介紹可見,真實模式的"實"更多地體現在其地址是真實的實體地址。

2.保護模式工作原理

隨著CPU的發展,CPU的地址線的個數也從原來的20根變為現在的32根,所以可以訪問的記憶體空間也從1MB變為現在4GB,暫存器的位數也變為32位。所以真實模式下的記憶體地址計算方式就已經不再適合了。所以就引入了現在的保護模式,實現更大空間的,更靈活的記憶體訪問。

在保護模式下,CPU的32條地址線全部有效,可定址高達4G位元組的實體地址空間; 擴充的儲存器分段管理機制和可選的儲存器分頁管理機制,不僅為儲存器共享和保護提供了硬體支援,而且為實現虛擬儲存器提供了硬體支援; 支援多工,能夠快速地進行任務切換(switch)和保護任務環境(context); 4個特權級和完善的特權檢查機制,既能實現資源共享又能保證程式碼和資料的安全和保密及任務的隔離; 支援虛擬8086方式,便於執行8086程式。

相關推薦

CPU真實模式保護模式()

真實模式和保護模式都是CPU的工作模式,而CPU的工作模式是指CPU的定址方式、暫存器大小等用來反應CPU在該環境下如何工作的概念。 1.真實模式工作原理 真實模式出現於早期8088CPU時期。當時由於CPU的效能有限,一共只有20位地址線(所以地址空間只有1MB),以及

真實模式保護模式

       從80386開始,CPU有三種工作模式:真實模式、保護模式和虛擬8086模式。80286開始的CPU引入保護模式,實際上,真實模式概念是在保護模式推出之後為了區別保護模式之前的8086CPU工作模式才有的,在8086時代CPU工作模式只有一種,自然沒有真實模式之

模式保護模式區別及尋址方式

解釋 src 需求 範圍 上線 二進制表示 工作 菜鳥 相對 轉載自:http://blog.csdn.net/rosetta 64KB-4GB-64TB? 我記得大學的匯編課程、組成原理課裏老師講過實模式和保護模式的區別,在很多書本上也有談及,無奈本人理解和感悟能

任務特權級保護)——《x86組合語言:從真實模式保護模式》讀書筆記27

本文及後面的幾篇文章是原書第14章的讀書筆記。 1.LDT(區域性描述符表) 在之前的學習中,不管是核心程式還是使用者程式,我們都是把段描述符放在GDT中。但是,為了有效實施任務間的隔離,處理器建議每個任務都應該有自己的描述符表,稱為區域性描述符表LDT

CPU真實模式保護模式(簡介)

16位微處理器 8086暫存器組成 8086/8088包括:4個16位的資料暫存器,2個16位的指標暫存器,2個16位變址暫存器,分成四組。 通用暫存器中,這些暫存器除完成規定的專門用途外,均可用於傳送和暫存資料,可以儲存算術邏輯運算的操作和運算結果。 段暫存器

程式的載入執行(三)——《x86組合語言:從真實模式保護模式》讀書筆記23

程式的載入和執行(三)——讀書筆記23 接著上次的內容說。 關於過程load_relocate_program的講解還沒有完,還差建立棧段描述符和重定位符號表。 1.分配棧空間與建立棧段描述符 462 ;建立程式堆疊段描述符 463

《x86匯編語言:從實模式保護模式》檢測點習題答案

style 出現 x86匯編 內存操作 3.1 fff 地址 blog strong 檢測點1.1:按順序分別為:13 15 78 255 128 56091 檢測點1.2:按順序分別為:1000 1010 1100 1111 11001 1000000

大話設計模式——裝飾模式代理模式

區別 接口 需要 構圖 技術分享 開閉 tro 可能 code 1、是什麽? 裝飾模式:動態地給一個對象添加額外的職責。 代理模式:其他對象通過對象A去訪問對象B。 2、為什麽用? 裝飾模式:1、遵循開閉原則,盡量不去修改原有的類。2、裝飾對象一般都是添加額外的

06.真實模式進入保護模式

簡介 上一節我們實現了從核心載入器中載入其它扇區程式碼並執行,但始終工作在真實模式狀態下。記憶體定址方式和8086相同,由16位段暫存器的內容乘以16(10H)當做段基地址,加上16位偏移地址形成20位的實體地址,最大定址空間1MB,最大分段64KB。 保護模式與真

走進設計模式的世界7:我們很像但不是個人好嗎?-介面卡模式外觀模式

介面卡模式: 將一個類的介面,轉接成客戶期望的另一個介面。介面卡讓原本介面不相容的類可以合作無間。 外觀模式: 提供了一個統一的介面,用來訪問子系統中的一群介面。外觀定義了一個高層介面,讓子系統更容易使用。 設計原則:最少知識原則:只和你的密友談話。 解釋:當需要使用一個現有

設計模式(php示例 單例模式工廠模式

所謂的設計模式,就是具有多年開發經驗的人,在實際工作中為了解決某一種需求,而形成的一套程式碼方案。 1.單例模式: 單例模式:所謂的單例模式就是單一的例項。通過一個類永遠只能獲取一個物件。 基本的實現思路:單例模式要求類能夠有返回物件一個引用(永遠是同一個)和一個獲得該例項的方法(必

設計模式)策略模式狀態模式

今天要和大家一起分享下在《Head First 設計模式》學習到的內容,很實用的兩個模式:策略模式,狀態模式。 為什麼要說這兩個模式呢。在模式圖中,是一樣的,他倆就像孿生兄弟,但是目的卻不同。 狀態模式: 書中說明了列舉了下面情況。 糖果公司要求實現糖果機功能。狀態圖如下。

【設計模式】()-簡單工廠模式策略模式

前言 最近開始和春哥,張鐸 ,銀平討論設計模式,成立了一個小菜變大鳥的小組,每天討論一個模式,並且把這個模式搞懂,每學一個新的模式,再回顧一下之前學的模式。這兩天學了簡單工廠模式和策略模式,發現兩個模式有很多相同之處,下面用商場促銷的例子來對兩個模式總結一下。 簡單工廠模式 1.

4.由真實模式保護模式

學習於網易雲課堂:Linux作業系統, 構建自己的核心,講師:Coding迪斯尼 目標:實現32位定址 之前的暫存器直接存著要訪問的地址,一個暫存器16位,2^16*2^4=2^20=2M,加上偏移2^16=64kb,也就是說,真實模式的定址範圍是2M+(-)64kb

真實模式保護模式(七)

        今天我們來看看從真實模式是如何進入到保護模式的以及為何要進入保護模式。在這之前,我們先來看看什麼叫真實模式,什麼是保護模式。        

走進設計模式的世界6:我們很像但不是個人好嗎?-介面卡模式外觀模式

介面卡模式: 將一個類的介面,轉接成客戶期望的另一個介面。介面卡讓原本介面不相容的類可以合作無間。 外觀模式: 提供了一個統一的介面,用來訪問子系統中的一群介面。外觀定義了一個高層介面,讓子系統更

真實模式保護模式的定址方式

文章目錄 一、真實模式定址 二、保護模式定址 三、參考資料 一、真實模式定址 CPU 在真實模式下,地址匯流排只有 20 位,定址空間為 1 M。 20 位的目標實體地址取決於兩個條件,一是 16 位的段基址,二是

真實模式保護模式、長模式

本文介紹兩個實現真實模式與保護模式切換的例項,通過他們說明如何實現真實模式與保護模式的切換,也說明保護模式下的80386及其程式設計。 <一>演示真實模式和保護模式切換的例項(例項一)      例項一的邏輯功能是,以十六進位制數的形式顯示從記憶體地址110000H開始的256個位元組的值。本例項

TSS詳解 ——《x86組合語言:從真實模式保護模式》讀書筆記33

TSS(Task State Segment,任務狀態段)詳解 1. TSS描述符 和LDT一樣,必須為每個TSS在GDT中建立對應的描述符。TSS描述符的格式如下圖: B位是“忙”位(Busy)。在任務剛剛建立的時候,它應該為0,表明任務不忙。當

《x86組合語言-從真實模式保護模式》筆記

通過硬碟控制器埠讀扇區資料 使用LBA邏輯塊編址中的LBA28,步驟如下 1. 設定讀取的扇區數量,這個數值要寫入0x1f2埠,這是一個8位埠 mov dx, 0x1f2 mov al, 0x01 ;表面寫入一個扇區 out dx, al