Linux內核0.12——微機組成結構

馮諾依曼體系結構計算機:CPU、ALU、存儲器、輸入輸出設備

總線:

傳統PC總線:CPU通過數據總線、地址總線和控制總線與外部設備進行通信,所有的外部設備都將連都這三條總線上,也就是說只有CPU和外部設備兩個層次,效率肯定不行

現代PC總線:在intel的設計中,CPU、AGP和存儲器接口連在了I/O北橋上,其他的傳輸速度較慢的設備則連接到I/O南橋上,包括CPU在內的所有硬件都加入了緩衝,緩衝區通常是容量小的、存取速度接近於上一層的,這樣整個計算機性能就相對平衡了

I/O端口與訪問控制:

端口:即I/O端口地址,CPU通過I/O端口地址來與端口通信

I/O控制器:包含了訪問數據的數據端口、輸出命令的命令端口和訪問控制器執行狀態的狀態端口

端口編址:

1)統一編址:即存儲器印象編址,將I/O控制器中的端口地址歸入存儲器尋址地址空間範圍內,使用訪問內存的命令即可訪問

2)獨立編址:將I/O控制器的尋址空間單獨作爲一個獨立的地址空間(I/O地址空間),每個端口對應一個I/O地址,並使用獨立的I/O指令來訪問

在Linux下可以在 /proc/ioports 文件裏看見各類端口的I/O地址範圍

接口的訪問控制方式:

1)程序循環查詢方式:CPU通過在程序中循環查詢指定設備控制器中的狀態來判斷是否可以與設備進行數據交換(一看就感覺好耗費時間的。。。)

2)中斷處理控制方式:只有當I/O設備通過中斷向CPU提出處理請求時,CPU纔會暫時執行中斷請求(大多數設備I/O的控制方式)

3)DMA傳輸方式:用於I/O設備與系統內存之間進行批量數據傳送,整個過程需要專門的DMA控制器來進行而無需CPU插手(效率高啊!)

主存儲器(以16MB物理內存的Linux0.1x系統爲例):0~640KB用作內核代碼和數據的存放區;640KB~1MB用作顯示緩衝區、VGA ROM BIOS、其他卡ROM BIOS、其他BIOS映射區和ROM BIOS 映射區;Linux內核中不使用BIOS功能,也不使用BIOS設置的中斷向量表

BIOS:

1、存放於ROM中

2、主要用於計算機開機時執行系統各部分自檢,建立起操作系統需要使用的各種配置表,並且把處理器和系統其餘部分初始化到一個已知的狀態

3、爲DOS的等操作系統提供硬件設備接口服務

BIOS工作(以4GB主存爲例):開機時,CPU自動將CS置爲0xF000,段基地址置爲0xFFFF0000,段長度設置爲64KB,IP置爲0xFFF0,也即是4GB最後16B處;存放BIOS的ROM芯片就在此處,此處有一個jmp指令,跳轉到BIOS代碼中64KB中的某一條指令開始執行;

中斷控制器:

中斷控制器的中斷入口被寫入主存中的中斷向量表中,開機時,硬件的中斷請求會通過中斷向量表開始進行開機的一系列準備工作,Linux系統並不直接使用默認的中斷向量號

DMA控制器:

通過外部設備直接與內存傳輸數據來增強系統的性能,與內存的數據傳輸可以不受CPU控制

定時/計數器:

芯片類型多爲intel 8253/8254可編程定時/計數器芯片;共有3個獨立的16位計數器通道;3個定時/計數器通道分別用於時鐘計時中斷信號、動態內存DRAM刷新定時電路和主機揚聲器音調合成;在Linux0.12中只對通道0進行了重新設置,這樣每隔10ms發出一個信號產生中斷請求,這個間隔定時是Linux0.12的脈搏

鍵盤控制器:

當一個鍵被按下時,鍵盤發送的掃描碼成爲接通掃描碼;當按鍵鬆開時發送到掃描碼成爲斷開掃描碼;鍵盤控制器對接收到的鍵盤掃描碼進行解碼,並把解碼後的數據發送到操作系統的鍵盤數據隊列中;鍵盤掃描碼共爲11位的串行格式數據,2~9位是8位鍵盤掃描碼,鍵盤控制器在收到11位數據後,通過中斷控制器IRQ1引腳向CPU發送中斷請求;

串行控制卡:

幀:通信過程中傳輸的一個有效數據長度單位的格式;有起始同步信息、傳輸實際數據和校驗等信息組成

異步和同步通信:異步在傳輸中(以字符爲單位)可以停頓任意長時間;同步在傳輸中則是以不間斷的N多幀爲傳輸單位;如果將異步中的字符與同步中的幀對等的話,這兩者是一樣的

一個字符幀(異步):由一位起始位、八位數據位、一位奇偶校驗位(可有可無)和幾位停止位組成

顯示控制:

1)單色顯示適配器(MDA):僅支持黑白;顯示規格80列*25行;一屏(一幀)需要4KB;有8KB顯示內存;內存尋址範圍:0xb0000開始的8BK空間

2)彩色圖形適配器(CGA):支持7種彩色;有16KB顯示內存(0xb8000~0xbc000);字符屬性字節由1位閃爍標誌位、3爲背景色、1爲高亮度標誌位和3位前景色組成

軟盤和硬盤控制器:

軟盤驅動控制器:主要用於接收CPU發出的命令,根據命令向驅動器輸出各種硬件控制信號,它需要完成串行到並行的數據轉換、編碼和校驗,並且時刻監視驅動器的運行狀態;

硬盤控制器:軟盤控制器採用DMA信號,需要DMA控制器實施數據傳輸,而硬盤控制器採用高速數據塊傳輸,所以更快,而且容量更大

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章