x86構架及操作系統概述
x86內存構架
-
地址空間和地址
-
- 物理地址空間:內存和其他硬件資源組合到一起,分佈在CPU的物理地址空間內,CPU使用物理地址索引這些資源
-
- 線性地址空間:一個平臺只有一個物理地址空間,但每個程序都認爲自己獨享整個平臺的硬件資源,每個進程都有自己的私有線性地址空間
-
- 邏輯地址:
-
- 物理地址:是CPU提交導總線用於訪問平臺內存或硬件設備的最終地址
-
- 線性地址: 又叫虛擬地址,當分頁機制開啓時,線性地址必須轉換爲物理地址才能訪問平臺內存或硬件設備
-
分頁機制
-
- 分頁機制是更加粒度化的內存管理機制,典型頁大小是4KB頁。其核心思想是通過頁表將線性地址轉換爲物理地址。
-
- 相關的寄存器:CR0的PG置1開啓分頁機制、CR3存儲頁表基地址
-
頁表
-
- 頁目錄項: 包含頁表的物理地址。CPU使用線性地址的22~31爲索引頁目錄。每個頁目錄大小爲4B
-
- 頁表項: 包含該線性地址對應的PFN(physical frame number)CPU使用線性地址的12~ 22位索引,每項大小爲4B,PFN+線性地址0~11位得到物理地址。
X86構建的基本運行環境
-
三種基本模式
-
- 實模式:CPU上電首先進入的就是此模式,無權限分級。
-
- 保護模式: 操作系統運行時常用的模式,有特權分級。
-
- 虛擬8086模式
-
基本寄存器
-
- 通用寄存器:有8個32位通用寄存器
-
- 內存管理寄存器: 包括端寄存器和描述符表寄存器
-
- EFLAGS寄存器:32位的用來保存程序運行中的一些標誌信息(如異常、開啓終端與否)
-
- EIP寄存器: 32位的,用來保存想當前指令的地址,也叫PC指針
-
- 浮點運算寄存器
-
- 控制寄存器: CR0~CR4,決定了CPU運行的模式和特徵
-
中斷與異常
PIC:programmable interrupt controller 可編程中斷控制器
IRR: interrupt request register 中斷請求寄存器
ISR:in service register 服務中寄存器
IMR:interrupt mask register 中斷屏蔽寄存器
- PIC向中斷提交中斷流程:
- IR管腳上有觸發電平,若對應中斷沒有被屏蔽則IRR中對應位被置1
- PIC拉高INT管腳通知CPU中斷髮生
- CPU通過INTA管腳銀達PIC
- PIC收到INTA應答後,將IRR中最高優先級中斷位清0,並設置對應的ISR位
- CPU通過INTA管腳第二次發出脈衝,PIC收到後計算最高優先級的中斷vector,並提交到數據線上
- PIC等待CPU寫EOI,收到EOI後,ISR中優先級最高的位被清0
- 多處理器平臺出現後APIC應運而生,其結構如下圖(摘自百度百科)
概念
- 異常: 異常最大的不同在於它是在程序的執行過程中同步發送的
- 進程: 是一個容器,其中包含了當執行一個程序的特定實例時所用到的各種資源
- 上下文:是程序運行時所需要的寄存器的最小集合
- 上下文切換
- 用戶態切換、內核態的切換
- 進程切換
- 中斷上下文切換
I/O構架
- Port I/O:通過I/O端口訪問設備寄存器,X86有65536個8位的I/O端口(64K)可以使用IN/OUT命令訪問端口
- MMIO: Memory Map IO,通過訪問內存的方式來訪問設備寄存器或設備RAM