硬體和體系結構

2021-09-30 06:03:15 字數 2497 閱讀 5003

引導過程和 bios

引導的過程涉及到從外部儲存裝置(比如軟盤、cd、***、硬碟或者儲存鑰匙(memory key))中載入作業系統。執行這一初始載入的程式固化儲存在計算機中,稱為 基本輸入輸出系統(basic input output system,bios)。 bios 儲存在非易失性的(non-volatile)儲存器中,有時也稱作 唯讀儲存器(read only memory,rom)。在早期的 pc 中, rom 晶元通常焊接或者套接在計算機的主機板上(或者 母板)。更新 bios 意味著要更換 rom 晶元。後來,使用了 electrically erasable programmable read only memories(eeproms)。 eeprom 支援使用磁碟在執行中進行更新,而不需要專門的工具。現今您應該會更經常接觸到的一種稱為 快閃儲存器(flash) 儲存器的非易失性儲存器,數位相機和儲存鑰匙也使用了它。快閃儲存器儲存器也支援在執行時更新 bios。

除了控制 pc 的初始引導之外,現今的 bios 程式通常還允許使用者設定或者檢查系統中的一些配置選項。包括檢查已經安裝的部件,比如 ram、硬碟驅動器、光碟機(optical drive)、鍵盤、滑鼠,以及可能的板載顯示部件、聲音部件和網路連線。使用者可以啟用或者禁用某些部件。例如,為了使用安裝的音效卡,板載的聲音部件可能被禁用。使用者還可以選擇考慮使用哪些裝置來引導系統,以及是否使用口令保護系統。

匯流排、埠、irq 和 dma。

pci 和 isa 匯流排

外圍裝置(包括那些可能構建在系統板中的)通過 匯流排 與 cpu 通訊。當前最常見的匯流排型別是 peripheral component interconnect(pci)匯流排,它幾乎已經完全取代了更早的 industry standard architecture(isa)匯流排。1984 年 ibm pc-at 中首次使用它,之後 isa 匯流排有時也稱為 at 匯流排。在從 isa 到 pci 匯流排的過渡過程中,很多系統同時包含了這兩類匯流排的插槽,以使得 isa 或 pci 外圍裝置都能夠使用。

isa 匯流排支援 8-位 和 16-位 裝置卡,而 pci 匯流排支援 32-位 裝置。

還有一些也應該了解的其他匯流排標準。很多系統中包括乙個 accelerated graphics port(agp)插槽,這是乙個基於 pci 2.1 匯流排規範的特殊插槽,但是為圖形卡所需要的高頻寬和快速響應進行了優化。它正在慢慢被更新的 pci express(pci-e)所取代,後者解決了先前 pci 設計中的很多限制。

在本系列的最後一篇教程中將深入了解 linux 檔案系統,不過,在此先介紹 /proc 檔案系統。這不是乙個磁碟上的真實檔案系統,而是乙個「假的檔案系統」,提供關於正在執行的系統的資訊。在這個檔案系統中,檔案 /proc/pci 包含了系統 pci 匯流排上裝置的資訊。曾經有一些關於廢除這個特殊檔案的討論,因為lspci命令可以給出類似的資訊。

io 埠

當 cpu 需要與某個外圍裝置通訊時,它要通過乙個 io 埠(有時只是簡單的 埠)。當 cpu 需要向外圍裝置傳送資料或者控制資訊時,它向某個埠寫入資料。當裝置為 cpu 準備好了資料或者狀態,cpu 從某個埠去讀取資料或狀態。大部分裝置都擁有不止乙個與之相關聯的埠,通常是 2 的若干次冪(指數較小),比如 8、16 或者 32。資料傳輸通常是每次乙個或兩個位元組。裝置不能共享埠,所以,如果有 isa 卡,那麼必須確保每個裝置都有其分配到了自己的埠。以前,這需要通過裝置卡上的開關或者跳線來實現。一些晚期的 isa 卡使用了乙個名為 plug and play (pnp)的系統,本節稍後將討論到。 pci 卡全都有 pnp 配置。

中斷

那麼,cpu 如何知道最後一次輸出何時完成?或者何時有資料在等待讀取?通常,在乙個狀態暫存器中可以獲得此資訊,通過讀取與某裝置想關聯的乙個(或多個)io 埠可以訪問它。在這種情況下會出現兩個問題。首先,cpu 不得不花費時間來檢查狀態。其次,如果裝置持有來自某處的資料,比如連線的數據機,那些資料必須要及時被讀取,否則就可能被下乙個可用的資料位元組所覆蓋。

不浪費多餘 cpu 週期,並確保資料能被及時讀寫,這兩個問題是由 中斷(interrupt) 的概念所解決的。中斷也稱為 中斷請求(interrupt requests) 或 irqs。當裝置中發生 cpu 需要知道的某事件時,裝置就會發出乙個中斷,cpu 則臨時停止正在做的其他工作,來處理那件事情。

dma

先前提及的與外圍裝置通過 io 埠進行的通訊,每次傳遞乙個或者兩個位元組。對於快速的裝置,服務中斷會用掉大量 cpu 處理能力。更快的方法是使用 直接記憶體訪問(direct memory access,dma),使用很少 io 指令告訴裝置到 ram 中哪個位置去讀或寫資料,然後 dma 控制器提供 ram 和外圍裝置之間資料實際傳輸的硬體管理。

誰可以猜出在**可以找到關於正在使用的 dma 通道的資訊,請舉手。如果您說它是在 /proc/dma 中,那麼就說對了。執行cat /proc/dma命令,可以看到如清單 7 所示的輸出。

mysql 體系結構 了解MySQL體系結構

mysql 資料庫體系結構圖 mysql 由以下幾部分組成 1 connectors 不同語言中與 sql 的互動 show variables like connection variable name value character set connection utf8 collation c...

簡述mysql體系結構 MySQL體系結構

一 mysql登入方式 一 tcp ip方式 遠端 本地 mysql uroot poldboy123 h 10.0.0.51 p3306 二 socket方式 mysql uroot poldboy123 s tmp mysql.sock 二 例項介紹 例項 mysqld後台守護程序 主線程 ma...

軟體體系結構 軟體體系結構概論

開學到現在我已經上了三節軟體體系結構的課程,現在我想把自己學到的整理歸納一下。此篇隨筆對應於教材軟體體系結構概論一章。首先談一談我剛接觸這門課程是的感受。那就是 我靠 軟體也會有體系結構?以前只學過資料結構 演算法 基本的程式語言,覺得程式設計無非就是使用者給我需求,我便按照需求來程式設計序就好,從...