讀書筆記《Linux內核完全剖析:基於0.12內核》——第二章 微型計算機組成結構

第二章 微型計算機組成結構

任何一個系統都是由4個基本部分組成:輸入-處理中心-輸出,整個系統由能源提供。
計算機系統可分爲軟件和硬件部分。
在這裏插入圖片描述

2.2 I/O端口尋址和訪問控制方式

2.2.1 I/O端口和尋址

表 2-1 I/O端口地址分配

端口地址範圍 分配說明 端口地址範圍 分配說明
0x000~0x01F 8237A DMA 控制器1 0x1F0~0x1F7 IDE硬盤控制器0
0x020~0x03F 8259A 可編程中斷控制器 1 0x278~0x27F 並行打印端口 2
0x040~0x05F 8253/8254A 定時計數器 0x2F8~0x2FF 串行控制器2
0x060~0x06F 8402鍵盤控制器 0378~037F 並行打印機端口1
0x070~0x07F 訪問CMOS RAM/實時時鐘RTC(Real Time Clock)端口 0x3B0~0x3BF 單色MDA顯示控制器
0x080~0x09F DMA頁面寄存器訪問端口 0x3C0~0x3CF 彩色CGA顯示控制器
0x0A0~0x0BF 8259A可編程控制器2 0x3D0~0x3DF 彩色EGA/VGA顯示控制器
0x0C0~0x0DF 8237A DMA控制器2 0x3F0~0x3F7 軟盤控制器
0x0F0~0x0FF 協處理器訪問端口 0x3F0~0x3F7 串行控制器1
0x170~0x177 IDE硬盤控制器1
[root@my root]# cat /proc/ioports
0000-0cf7 : PCI Bus 0000:00
0000-001f : dma1
0020-0021 : pic1
0040-0043 : timer0
0050-0053 : timer1
0060-0060 : keyboard
0064-0064 : keyboard
0070-0077 : rtc0
0080-008f : dma page reg
00a0-00a1 : pic2
00c0-00df : dma2
00f0-00ff : fpu
03c0-03df : vga+
0400-041f : iTCO_wdt
0400-041f : iTCO_wdt
0680-069f : pnp 00:00
0930-0930 : PNP0C09:00
0930-0930 : EC data
0934-0934 : PNP0C09:00
0934-0934 : EC cmd
0cf8-0cff : PCI conf1
0d00-ffff : PCI Bus 0000:00
164e-164f : pnp 00:00
1800-18fe : pnp 00:00
1800-1803 : ACPI PM1a_EVT_BLK
1804-1805 : ACPI PM1a_CNT_BLK
1808-180b : ACPI PM_TMR
1830-1833 : iTCO_wdt
1830-1833 : iTCO_wdt
1850-1850 : ACPI PM2_CNT_BLK
1854-1857 : pnp 00:02
1880-189f : ACPI GPE0_BLK
e000-efff : PCI Bus 0000:02
e000-e0ff : 0000:02:00.0
f000-f03f : 0000:00:02.0
f040-f05f : 0000:00:1f.4
f040-f05f : i801_smbus
f060-f07f : 0000:00:17.0
f060-f07f : ahci
f080-f083 : 0000:00:17.0
f080-f083 : ahci
f090-f097 : 0000:00:17.0
f090-f097 : ahci
ff00-fffe : pnp 00:07
ffff-ffff : pnp 00:00

2.2.2 接口訪問控制

PCD的I/O接口數據傳輸控制方式一般可以採用程序循環查詢方式、中斷處理方式和DMA傳輸方式。
程序循環查詢方式CPU通過在程序中循環查詢指定設備控制器中的狀態判斷是否可以與設備進行數據交換。
中斷處理方式需要中斷控制器的支持。
**直接存儲器訪問(Direct Memory Access, DMA)**方式用於I/O設備與系統內存之間進行批量數據傳送,整個操作過程需要使用專門的DMA控制器來進行而無需CPU插手。

2.3 主存儲器、BIOSCMOS存儲器

2.3.1 主存儲器

在這裏插入圖片描述

2.3.2 基本輸入/輸出程序BIOS

存放在ROM中的系統BIOS程序主要用於計算機開機時執行系統各部分的 自檢,建立起操作系統需要使用的各種配置表,如中斷向量表、硬盤參數表。Linux運行時不使用BIOS中的功能。
當計算機系統上電開機或者按了機箱上的復位按鈕時,CPU會自動把代碼段寄存器CS設置爲0xf000,其短地址則被設置爲0xffff0000,段長度設置爲64KBIP被設置爲0xfff0,此時CPU代碼指針指向0xfffffff0處,即4GB空間的最後64KB的最後16B處。
在這裏插入圖片描述

2.3.3 CMOS存儲器

PC/AT中,除需要使用內存和ROM BIOS以外,還使用只有很少存儲容量的(只有64B128B)CMOS(Complementary Metal Oxide Semiconductor,互補金屬氧化物半導體)存儲器來存放計算機的實時時鐘信息和系統硬件配置信息。

2.4 控制器和控制卡

中斷控制器

如圖2-6,在計算機開始初始化期間, ROM BIOS會分別對兩片8259A芯片進行初始化,並分別吧15級中斷優先級分配給時鐘定時器、鍵盤、串行口、打印口、軟盤控制、協處理器和硬盤等設備或控制器使用。同時在內存開始出0x000~0xfff區域捏建立一箇中斷向量表。
在這裏插入圖片描述
表2-2 開機時ROMBIOS設置的硬件請求處理中斷號

中斷請求號 BIOS設置的終端號 用途 中斷請求號 BIOS設置的終端號 用途
IRQ0 0x08 (8) 8253發出的100Hz時鐘中斷 IRQ8 0x70 (112) 實時鐘中斷
IRQ1 0x09 (9) 鍵盤中斷 IRQ9 0x71 (113) 改向至INT 0x0A
IRQ2 0x0A (10) 接連從芯片 IRQ10 0x72 (114) 保留
IRQ3 0x0B (11) 串行口2 IRQ11 0x73 (115) 保留(網絡接口)
IRQ4 0x0C (12) 串行口1 IRQ12 0x74 (116) PS/2鼠標口中斷
IRQ5 0x0D (13) 並行口2 IRQ13 0x75 (117) 數學協處理器中斷
IRQ6 0x0E (14) 軟盤驅動器 IRQ14 0x76 (118) 硬盤中斷
IRQ7 0x0F (15) 並行口1 IRQ15 0x77 (119) 保留

2.4.2 DMA控制器

DMA控制器的主要功能是通過外部設備直接與內存傳輸數據來增強系統性能。

2.4.3 定時/計數器

intel 8253/8254是一個可編程定時/計數器(Programmable Interval Timer, PIT)芯片,用於處理計算機中的精確時間延遲。該芯片有3個獨立的16位計數器通道。

2.4.4 鍵盤控制器

我們使用的鍵盤是IBM公司與1984年研製的PC/AT的兼容鍵盤,通常稱爲AT-PS/2兼容鍵盤並只有101~104個按鍵。
目前有3套掃描碼集(Scan Code Set):
#1 第一套:原始XT鍵盤掃描碼集。
#2 第二套:現代鍵盤默認使用的掃描碼集,通常稱爲AT鍵盤掃描碼集。
#3 第三套:PS/2鍵盤掃描碼集。
鍵盤控制器通常採用Intel 8042單片微處理器芯片或其兼容電路。
表2-3 鍵盤控制器變成端口接收到的第一套掃描碼集接通和斷開掃描碼示例

按鍵 接通掃描碼 斷開掃描碼 說明
A 0x1E 0x9E 非擴展的普通鍵
9 0x0A 0x8A 非擴展的普通鍵
功能鍵F9 0x43 0xC3 非擴展的普通鍵
方向鍵向右鍵 0xe0 , 0x4D 0xe0 , 0xCD 擴展鍵
Ctrl 0xe0 , 0x1D 0xe0 , 0x9D 擴展鍵
shift+``G 0x2A, 0x22 0xAA , 0xA2 先按並且後釋放shift
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章