計算機基礎之計算機硬體系統

聽風。發表於2017-07-11

 

一.計算機硬體系統概述

所謂計算機硬體系統,就是指構成計算機看得見的,摸得著的實際物理裝置。

常見的計算機硬體組成主要由下圖各部件組成:

現代計算機的結構更復雜,包括多重匯流排。

簡單打個比方,方便大家理解計算機各部件的主要功能:

cpu是人的大腦,負責運算;

記憶體是人的記憶,負責臨時儲存;

硬碟是人的筆記本,負責永久儲存;

輸入裝置是耳朵或眼睛,負責接收外部的資訊傳給cpu;

輸出裝置是你的表情,負責經過處理後輸出的結果;

以上所有的裝置都通過匯流排連線,匯流排相當於人的神經。

 

二.程式語言的作用及與作業系統和硬體的關係

程式語言就是程式設計師與計算機溝通的介質,通過程式語言可以使得計算機能夠根據程式設計師的指令一步一步去工作,完成某種特定的任務。

程式設計師用程式語言寫程式,最終開發出的結果就是一個軟體,軟體不能直接操作硬體,必須執行在作業系統之上,作業系統是用來管理計算機硬體裝置的。作業系統是電腦的軟體基礎。它和電腦的硬體組成了系統。使電腦能夠為人類工作。

 

三.應用程式、作業系統、硬體之間的關係

   應用程式的功能執行需要通過操作硬體之間的相互配合才能得以實現,但是應用程式不能直接操作硬體,只能通過呼叫作業系統,讓應用程式的功能通過作業系統來操作相應的硬體才能得以實現其功能。

 

四.CPU、記憶體、磁碟之間的關係

     1.CPU即中央處理器, CPU從記憶體或快取中取出指令,放入指令暫存器,並對指令譯碼分解成一系列的微操作,然後發出各種控制命令,執行微操作系列,從而完成一條指令的執行。

    2.但是,CPU並不能直接呼叫儲存在硬碟上的系統、程式和資料,必須首先將硬碟的有關內容儲存在記憶體中,這樣才能被CPU讀取執行。因而,記憶體(即實體記憶體,是相對於硬碟這個“外存”而言)作為硬碟和CPU的“中轉站”,對電腦執行速度有較大影響。

    3.當執行資料超出實體記憶體容納限度的時候,部分資料就會自行“溢位”,這時系統就會將硬碟上的部分空間模擬成記憶體——虛擬記憶體,並將暫時不執行的程式或不使用的資料存放到這部分空間之中,等待需要的時候方便及時呼叫。

    4.由於記憶體是帶電儲存的(一旦斷電資料就會消失),而且容量有限,所以要長時間儲存程式或資料就需要使用硬碟(外儲存器)。硬碟也會影響系統速度,因為系統從硬碟中讀取資料並通過匯流排存入記憶體的速度也會影響系統執行的快慢。

 

五. CPU與暫存器,核心態與使用者態及如何切換

  因CPU訪問記憶體以得到指令或資料的時間比cpu執行指令花費的時間要長得多,所以,所有CPU內部都有一些用來儲存關鍵變數和臨時資料的暫存器

  暫存器是用與cpu相同材質製造,與cpu一樣快,因而cpu訪問它無時延。用來避免記憶體速率比CPU慢幾個數量級的瓶頸問題。

暫存器的分類:

     a.通用暫存器:用來儲存變數和臨時結果

     b.程式計數器:儲存了將要取出的下一條指令的記憶體地址。在指令取出後,程式計算器就被更新以便執行後期的指令。

     c.堆疊指標: 指向記憶體中當前棧的頂端。該棧包含已經進入但是還沒有退出的每個過程中的一個框架。在一個過程的堆疊框架中儲存了有關的輸入引數、區域性變數以及那些沒有儲存在暫存器中的臨時變數。   

     d.程式狀態字暫存器(Program Status Word,PSW): 這個暫存器包含了條碼位(由比較指令設定)、CPU優先順序、模式(使用者態或核心態),以及各種其他控制位。使用者通常讀入整個PSW,但是隻對其中少量的欄位寫入。在系統呼叫和I/O中,PSW非常重要。

 

核心態與使用者態

  除了在嵌入式系統中的非常簡答的CPU之外,多數CPU都有兩種模式,即核心態與使用者態。通常,PSW中有一個二進位制位控制這兩種模式。

  核心態:執行作業系統核心,可以操作硬體,可以獲取所有CPU的指令集。(作業系統在核心態下執行,從而可以訪問整個硬體)

  使用者態:執行應用程式,不可以操作硬體,可以獲取所有CPU的指令集的一個子集,該子集不包括操作硬體的的指令集。(應用程式在使用者態下執行)

核心態與使用者態切換  

   所有使用者程式都是執行在使用者態的,但是有時候程式確實需要做一些核心態的事情,例如從硬碟讀取資料, 或者從鍵盤獲取輸入等。 而唯一可以做這些事情的就是作業系統, 所以此時使用者程式就需要使用系統呼叫,作業系統請求以程式的名義來執行這些操作,此時就會從使用者態切換到核心態。

 

六.儲存器系列,L1快取,L2快取,記憶體(RAM),EEPROM和快閃記憶體,CMOSBIOS電池

  儲存器包括:暫存器,快取記憶體、記憶體、磁碟、磁帶。

L1快取即暫存器:

用與cpu相同材質製造,與cpu一樣快,因而cpu訪問它無時延,典型容量是:在32位cpu中為32*32,在64位cpu中為64*64,在兩種情況下容量均<1KB。

 

L2快取即快取記憶體:

主要由硬體控制快取記憶體的存取,記憶體中有快取記憶體行按照0~64位元組為行0,64~127為行1。。。最常用的快取記憶體行放置在cpu內部或者非常接近cpu的快取記憶體中。L1與L2的差別在於對cpu對L1的訪問無時間延遲,而對L2的訪問則有1-2個時鐘週期(即1-2ns)的延遲。

 

記憶體:

常稱為隨機訪問儲存RAM,所有的程式都是在記憶體中執行的,計算機在執行中,作業系統也會在記憶體中執行。所有不能再快取記憶體中找到的,都會到主存中找,主存是易失性儲存,斷電後資料全部消失,除了主存RAM之外,許多計算機已經在使用少量的非易失性隨機訪問儲存如ROM(Read Only Memory,ROM),在電源切斷之後,非易失性儲存的內容並不會丟失,ROM只讀儲存器在工廠中就被程式設計完畢,然後再也不能修改。ROM速度快且便宜,在有些計算機中,用於啟動計算機的引導載入模組就存放在ROM中,另外一些I/O卡也採用ROM處理底層裝置的控制。

記憶體的速度會慢於L1和L2快取,CPU訪問的先後順序是先訪問L1快取嗎,然後訪問L2快取,再訪問記憶體,最後訪問硬碟。

 

EEPROM快閃記憶體都是一種儲存器,可以擦除和重寫,但是重寫的速度介於記憶體和磁碟之間。被應用於行動式電子裝置的儲存媒介,磁碟,固態硬碟等,都是應用快閃記憶體。

 

CMOS也是一類儲存介質,它是易失性的,斷電既消失,但是因為它的耗電亮很小,所以採用它來儲存一些系統的引數配置,一塊電池能使用若干年。

七.磁碟結構,平均尋道時間,平均延遲時間,虛擬記憶體與MMU

 

磁碟低速的原因是因為它一種機械裝置,在磁碟中有一個或多個金屬碟片,它們以5400,7200或10800rpm(RPM =revolutions per minute 每分鐘多少轉 )的速度旋轉。

資訊寫在磁碟上的一些列的同心圓上,是一連串的2進位制位(稱為bit位),為了統計方法,8個bit稱為一個位元組bytes,1024bytes=1k,1024k=1M,1024M=1G,所以我們平時所說的磁碟容量最終指的就是磁碟能寫多少個2進位制位。

每個磁頭可以讀取一段換新區域,稱為磁軌

把一個戈丁手臂位置上所以的磁軌合起來,組成一個柱面

每個磁軌劃成若干扇區,扇區典型的值是512位元組

資料都存放於一段一段的扇區,即磁軌這個圓圈的一小段圓圈,從磁碟讀取一段資料需要經歷尋道時間和延遲時間

 

平均尋道時間

機械手臂從一個柱面隨機移動到相鄰的柱面的時間稱為尋道時間,找到了磁軌就以為著招到了資料所在的那個圈圈,但是還不知道資料具體這個圓圈的具體位置。

 

平均延遲時間

機械臂到達正確的磁軌之後還必須等待旋轉到資料所在的扇區下,這段時間稱為延遲時間。

 

虛擬記憶體:

許多計算機支援虛擬記憶體機制,該機制使計算機可以執行大於實體記憶體的程式,方法是將正在使用的程式放入記憶體取執行,而暫時不需要執行的程式放到磁碟的某塊地方,這塊地方成為虛擬記憶體,在linux中成為swap,這種機制的核心在於快速地對映記憶體地址,由cpu中的一個部件負責,成為儲存器管理單元(Memory Management Unit, MMU)

 

PS:從一個程式切換到另外一個程式,成為上下文切換(context switch),快取和MMU的出現提升了系統的效能,尤其是上下文切換

八.磁帶

在價錢相同的情況下比硬碟擁有更高的儲存容量,雖然速度低於磁碟,但是因其大容量,在地震水災火災時可移動性強等特性,常被用來做備份。(常見於大型資料庫系統中)

九. 裝置驅動與控制器

1. 控制器是插在主機板上的一塊晶片或一組晶片(硬碟,網路卡,音效卡等都需要插到一個口上,這個口連的便是控制器),控制器負責控制連線的裝置,它從作業系統接收命令,比如讀硬碟資料,然後就對硬碟裝置發起讀請求來讀出內容。控制器的任務就是為作業系統遮蔽這些複雜而具體的工作,提供給作業系統一個簡單而清晰的介面。

2. 裝置驅動:要想呼叫裝置,必須根據該介面編寫複雜而具體的程式,於是有了控制器提供裝置驅動介面給作業系統。必須把裝置驅動程式安裝到作業系統中。裝置驅動是作業系統和輸入輸出裝置間的粘合劑。驅動負責將作業系統的請求傳輸,轉化為特定物理裝置控制器能夠理解的命令。

 

十. 匯流排與南橋和北橋

1.匯流排將計算機內部各部件連線,並且實現了計算機各功能部件之間的資訊傳輸。

2.南橋即ISA橋連線慢速裝置,硬碟,顯示器等裝置。

3.北橋即PCI橋:連線高速裝置,CPU,記憶體等裝置。

 

十一. 作業系統的啟動流程

在計算機的主機板上有一個基本的輸入輸出程式(Basic  Input Output system)

BIOS就相當於一個小的作業系統,它有底層的I/O軟體,包括讀鍵盤,寫螢幕,進行磁碟I/O,該程式存放於一非易失性快閃記憶體RAM中。

1.計算機加電

2.BIOS開始執行,檢測硬體:cpu、記憶體、硬碟等

3.BIOS讀取CMOS儲存器中的引數,選擇啟動裝置

4.從啟動裝置上讀取第一個扇區的內容(MBR主開機記錄512位元組,前446為引導資訊,後64為分割槽資訊,最後兩個為標誌位

5.根據分割槽資訊讀入bootloader(grub),選擇核心(kernel),找到核心後將核心程式碼讀到記憶體裡,然後CPU載入執行,啟動作業系統

6.然後作業系統詢問BIOS,以獲得配置資訊。對於每種裝置,系統會檢查其裝置驅動程式是否存在,如果沒有,系統則會要求使用者安裝裝置驅動程式。一旦有了全部的裝置驅動程式,作業系統就將它們調入核心。然後初始有關的表格(如程式表),建立需要的程式,並在每個終端上啟動登入程式或GUI

 

十二.應用程式的啟動流程

前提:應用程式是執行與作業系統之上

舉例:啟動暴風影音

雙擊快捷方式-->告訴作業系統一個檔案路徑-->作業系統從硬碟讀取檔案內容到記憶體中-->CPU從記憶體讀取資料執行

 

 

相關文章