計算機硬件

計算機硬件linux

 計算機的基本結構程序員

 

 

 

底層硬件、操做系統、用戶程序(軟件)web

  • 操做系統Operating System(OS)是管理和控制計算機硬件和軟件資源的計算機程序,是直接運行在裸機上最基本的系統軟件,任何其餘軟件都必須在操做系統的支持下才能運行。
  • 軟件必須運行在操做系統之上
  1. 若是沒有操做系統,那麼程序員就必須掌握如何操做硬件的全部具體細節,嚴重影響了開發效率。
  2. 操做系統運行於硬件之上,用來控制硬件。
  3. 在開發的時候,只須要調用操做系統爲應用程序提供的方便的抽象接口便可。

一套完整的計算機系統算法

  • 應用軟件
  1. 控制操做系統(最終仍是控制了底層的硬件)
  2. 必須遵循操做系統提供的標準
  3. 最終都是交由底層硬件來執行
  • 操做系統(windows、linux)
  1. 控制全部硬件
  2. 操做系統自己也是一種軟件
  3. 若是沒有操做系統,在編寫應用軟件的時候就須要同時把那些可以控制對應硬件的程序,這樣致使很是麻煩和低效
  • 底層硬件(CPU、內存、硬盤)

計算機硬件 編程

  • CPU、內存以及IO設備都有一條總線鏈接起來並經過與其餘設備通訊
  1. CPU是人的大腦,負責運算
  2. 內存是人的記憶
  3. 硬盤是人的筆記本,負責永久存儲
  4. 輸入設備是耳朵和眼睛,負責接受外部信息來傳遞給CPU
  5. 輸出設備是表情,負責輸出通過處理後的結果
  6. 以上設備都是經過總線鏈接,總線至關於人的神經

CPUwindows

  • 每個CPU都有一套可執行的專門指令集,任何軟件的執行最終都要轉化成CPU能識別的指令去執行,其中包含操做其餘硬件的命令
  • 應用被CPU執行的過程
  1. 從存儲介質中取出指令 ——> 解碼 ——> 執行(周而復始,直到整個程序被執行完成)
  • 寄存器(最快的一種存儲設備)
  1. 用來保存關鍵變量和臨時數據
  2. 存取速度和CPU幾乎相同(與CPU相同材質製造,CPU訪問它無時延),訪問內存並獲取指令或數據所須要花費的時間遠長與CPU執行命令花費的時間
  3. 程序狀態字寄存器PSW
    • 包含CPU的優先級、模式(內核態、用戶態)、條碼位(由比較指令設置)以及其餘控制位
    • 在系統調用中,程序狀態字寄存器很是重要。
  • CPU指令集中的命令能夠成兩個部分
  1. 算術運算和邏輯運算指令
  2. 操做其餘計算機硬件的指令

對於操做系統而言,其指令被CPU轉換成操做其餘硬件的指令;但對於用戶的應用軟件而言,其指令被CPU轉換成算術運算和邏輯運算這類計算指令緩存

 

  • 內核態與用戶態(CPU運行的兩種狀態)
  1. 內核態:操做系統被CPU執行的狀態
  2. 用戶態:應用程序被CPU執行的狀態
  3. 二者區別?
    • 處於內核態的CPU執行的是操做系統,能夠控制硬件,此狀態下能夠獲取CPU的全部指令集(包括控制其餘硬件的指令集)
    • 處於用戶態的CPU執行的是玉壺軟件,不能夠操做硬件,並且只能獲取CPU指令集的一個子集,該子集中不包括操做硬件的指令集
  • 內核態與用戶態的互換
  1. 應用程序想要控制底層硬件,就須要將CPU所處的用戶態轉換成內核態,當應用程序操做完硬件以後,再切換回內核態來繼續運行應用程序
  2. 用戶態下工做的軟件不能操做硬件,可是有些軟件好比暴風影音,必定會由操做硬件的需求,好比從磁盤上讀取一個電影文件,那就必須經歷從用戶態切換到內核態的過程。所以,用戶程序必須使用系統調用(system call ),系統調用會先入內核並調用操做系統,CPU的狀態從用戶態切換到內核態,並啓用操做系統而會的服務。
  • 多線程與多核芯片
  1. 一個CPU中的處理邏輯增多,稱爲多線程。對於用戶來講每個擁有兩線程的CPU就至關於兩個CPU。(進程是資源單位,而線程纔是CPU的執行單位)
  2. 一個物理CPU中能夠模擬出多個虛擬的CPU來工做
  3. 一個計算機上能夠同時有多個物理級別的CPU

存儲器網絡

  • 高速緩存L2 
  1. 內存中有高速緩存行按照064字節爲行0,64127爲行1。。。最經常使用的高速緩存行放置在cpu內部或者很是接近cpu的高速緩存中
  2. 緩存在計算機科學的許多領域中起着重要的做用,並不只僅只是RAM(隨機存取存儲器)的緩存行。只要存在大量的資源能夠劃分爲小的部分,那麼這些資源中的某些部分確定會比其餘部分更頻發地獲得使用,此時用緩存能夠帶來性能上的提高

一個典型的例子就是操做系統一直在使用緩存,好比,多數操做系統在內存中保留頻繁使用的文件(的一部分),以免從磁盤中重複地調用這些文件,相似的/root/a/b/c/d/e/f/a.txt的長路徑名轉換成該文件所在的磁盤地址的結果真後放入緩存,能夠避免重複尋找地址,還有一個web頁面的url地址轉換爲網絡地址(IP)地址後,這個轉換結果也能夠緩存起來供未來使用。多線程

          圖5.3  計算機的存儲器類型分類性能

 

  •  內存 
  1. 主存(隨機訪問存儲RAM,存儲器系統主力)
  2. 易失性存儲,斷電後,保存的數據就消失了
  3. 全部不能再高速緩存中找到的,都會到主存中找
  • ROM(read only memory,非易失性隨機訪問存儲)
  1. 在電源切斷以後,非易失性存儲的內容並不會丟失
  2. ROM只讀存儲器在工廠中就被編程完畢,而後不再能修改
  3. 在有些計算機中,用於啓動計算機的引導加載模塊就存放在ROM中,另一些I/O卡也採用ROM處理底層設備的控制
  • EEPROM(electrically erasable PROM ,電可擦除可編程ROM)和閃存(flash memory)
  1. 非易失性
  2. 能夠擦除和重寫(重寫花費時間比寫入RAM時間久)
  3. 在便攜式電子設備中中,閃存一般做爲存儲媒介(固態硬盤)
  4. 閃存在速度上介於RAM和磁盤之間,但與磁盤不一樣的是,閃存擦除的次數2過多,就被磨損了
  • CMOS存儲器 
  1. 易失性存儲
  2. CMOS能夠用來保存配置的參數,好比計算機啓動時其中就保存了啓動磁盤的配置信息

磁盤

  • 磁頭:經過磁性原理讀取磁性介質上數據的部件(利用特殊材料的電阻值隨着磁場變化的原理來讀寫盤片上的數據)
  • 磁道:磁盤旋轉時,磁頭在磁盤表面畫出的一個圓形軌跡
  • 扇區:磁盤上的每個磁道被分爲若干個弧段,這些弧段就是磁盤的山區。磁盤的讀寫以扇區爲基本單位(512字節)
  • 柱面:上下一串盤片中,相同半徑的刺刀所組成的一個圓柱形環壁。
  • 數據都存放於一段段的扇區,從磁盤讀取一段數據須要經歷尋道時間和延遲時間
  • 平均尋道時間:機械手臂從一個柱面隨機移動到相鄰柱面的時間就是尋道時間,找到了磁道就意味着磁頭找到了數據所在的磁道,可是此時還沒法確認數據具體在磁道上的扇區
  • 磁盤調度算法
    1. FCFS  先來先服務
    2. SSTF  最短尋道時間優先
    3. SCAN  不只考慮到欲訪問的磁道與當前磁道間的距離,更優先考慮的是磁頭當前的移動方向。
    4. CSCAN 磁頭單向移動,循環掃描
    5. NSepSCAN和FSCAN調度算法
  • 平均延遲時間:機械手臂到達正確的磁道以後還必須等待旋轉到數據所在的扇區下,這段時間就是延遲時間

計算機的啓動

  • 硬盤中,電腦啓動時,最終操做系統的代碼要給CPU去運行。也就是說,硬盤中操做系統的代碼首先會加載到內存,CPU讀取內存中操做系統的指令以後再執行。可是必須有一種機制明確的告訴計算機哪個硬盤是啓動盤,而這個機制就是BIOS程序(基本輸出輸出程序)。
  • BIOS就至關於一個系統操做系統,它有底層的I/O軟件,包括讀鍵盤,寫屏幕,進行磁盤I/O。BIOS回到它對應的存儲設備CMOS存儲器中去讀取上次認爲配置的啓動盤位置,所以BIOS能夠肯定啓動盤是那一塊硬盤。
  1. 計算機加電
  2. BIOS開始運行,檢測硬件:CPU、內存、硬盤
  3. BIOS讀取CMOS存儲器中的參數,選擇啓動設備(BIOS告訴啓動硬盤在哪兒)
  4. 從啓動設備上讀取第一個扇區的內容(MBR主引導記錄512字節,前446爲引導信息,後64爲分區信息,最後兩個爲標誌位)
  5. 根據MBR讀入grub(一種bootloader)以後找到內核,將內核代碼讀入內存,以後CPU加載代碼並運行,進而啓動操做系統
  6. 操做系統詢問BIOS,獲取配置信息。對於每種設備,系統會檢查其設備驅動程序是否存在,若是沒有,系統則會要求用戶安裝設備驅動程序。一旦有了所有的設備驅動程序,操做系統就將它們調入內核,而後初始有關的表格(如進程表),建立須要的進程,並在每個終端上啓動登錄程序或GUI

用戶應用軟件的啓動

  1.雙擊快捷方式

  2.告訴操做系統一個文件路徑

  3.操做系統從硬盤讀取文件到內存中

  4.cpu從內存中讀取數據執行

相關文章
相關標籤/搜索