## 2.1 存儲器組織和段
物理存儲器在80386系統下被組織成一個8位的字節序列。每個字節含有一個唯一的地址,從0到最大值2\*\*32 -1(4G)。
然而,80386的程序與物理地址空間是相互獨立的。這意味著寫程序時可以不用關心有多少物理存儲器,指令和數據在物理存儲器中是如何存放的。
對應用程序可見的存儲器組織模型是由系統軟件設計者來決定的。80386的體系結構給予了設計者為每個任務選擇一種模式的自由。存儲器組織模型可以是下面幾種:
+ “平坦”地址空間是由最多4G字節組成的單個數組。
+ 段地址空間可以由16,383個線性地址空間組成,每個4G。
兩種模式均可以提供存儲器保護。不同的任務可以使用不同的存儲器組織模型。設計者使用存儲器組織模型的準則和系統程序員使用什么方式來實現在第II部分-系統編程中討論。
### 2.1.1 “平坦”模式
在“平坦”模式下,應用程序可以使用232(4G)字節的數組。盡管存儲器可以是4G字節,但通常它們要小的多;處理器通過第5章介紹的地址變換將4G空間映射到物理存儲器。應用程序不需要知道這些細節。
指向平坦地址空間的指針是一個32位序列數,從0到232 -1。單獨編譯模塊的重定位由系統軟件來做(例如,鏈接器,定位器,綁定器,加載器)。
### 2.1.2 段模式
在段模式下,應用程序可以使用更大的地址空間(稱為邏輯地址空間)多達246(64T)字節的數組。盡管存儲器可以是4G字節,但通常它們要小的多;處理器通過第5章介紹的地址變換將64T的地址空間映射到物理存儲器(最多4G)。應用程序不需要知道這些細節。
應用程序可以把邏輯地址空間看作是16,383個一維子空間的集合,每個都有指定的長度。每個線性子空間被稱作段。段是連續地址空間的一個單位。段大小可以從一個字節到最多232 字節(4G)。
這個地址空間的一個完整指針由兩部分組成(見圖2-1):
1.16位段選擇符,標識一個段。
2.32位偏移,段內偏移地址。
在程序執行期間,處理器用段選擇符和段的起始物理地址聯系起來。單獨編譯的模塊通過改變段基地址在運行時重定位。段大小是可變的;因此,段可以和它里面的模塊大小相同。
- 第一章 80386介紹
- 1.1 該手冊的組織結構
- 1.2 其他文獻
- 第二章 編程基本模型
- 2.1 存儲器組織和段
- 2.2 數據類型
- 2.3 寄存器
- 2.4 指令格式
- 2.5 操作數選擇
- 2.6 中斷和異常
- 第4章 系統寄存器
- 4.1 系統寄存器 (System Registers)
- 4.2 系統指令 (System Instructions)
- 第五章 內存管理
- 5.1 分段地址轉換(Segment Translation)
- 5.2 分頁地址轉換(Page Translation)
- 5.3 混合分段和分頁地址轉換(Combining Segment and Page Translation)
- 第六章 內存管理
- 6.1 為什么要保護(Why Protection?)
- 6.2 80386保護機制概述(Overview of 80386 Protection Mechnaisms)
- 6.3 段級保護(Segment-Level Protection)
- 6.4 頁級保護(Page-Level Protection)
- 6.5 混合分頁和分段保護(Combining Page and Segment Protection)
- 第7章 多任務(Multitasking)
- 8.1 I/O 尋址(I/O Addressing)
- 7.1 任務狀態段(Task State Segment)
- 7.3 任務寄存器(Task Register)
- 7.4 任務門描述符(Task Gate Descriptor)
- 7.5 任務切換(Task Switching)
- 7.6 任務鏈(Task Linking)
- 7.7 任務尋址空間(Task Address Space)
- 第8章 輸入 輸出
- 8.2 I/O 指令(I/O Instructions)
- 8.3 保護和I/O(Protection and I/O)
- 第9章 異常和中斷(Exceptions and Interrupts)
- 9.1 識別中斷(Identifying Interrupts)
- 9.2 允許和禁止中斷(Enabling and Disabling Interrupts)
- 9.3 同時發生的中斷和異常的優先級(Priority Among Simultaneous Interrupts and Exceptions)
- 9.4 中斷描述符表(Interrupt Descriptor Table)
- 9.5 IDT 描述符(IDT Descriptors)
- 9.6 中斷任務和中斷子程序(Interrupt Tasks and Interrupt Procedures)
- 9.7 出錯碼(Error Code)
- 9.8 異常條件(Exception Conditions)
- 9.9 異常總結(Exception Summary)
- 9.10 出錯碼總結(Error Code Summary)
- 第10章 初始化(Initialization)
- 10.1 復位后處理器狀態(Processor State After Reset)
- 10.2 實模式初始化(Software Initialization for Real-Address Mode)
- 10.3 切換到保護模式(Switching to Protected Mode)
- 10.4 保護模式初始化(Software Initialization for Protected Mode)
- 10.5 初始化示例
- 10.6 TLB測試
- 第十四章 80386實地址模式
- 14.1 物理地址構成
- 14.2 寄存器和指令
- 14.3 中斷和異常處理
- 14.4 進入和離開實地址模式
- 14.6 實地址模式異常
- 14.7 與8086的不同
- 14.8 與80286實地址模式的不同