計算機硬件及操作系統基礎學習筆記

計算機體系結構:運算器+控制器=CPU中央處理單元 

運算器:就是一個加法器,只能做二進制計算,算數和邏輯運算,如加減乘除,移位

控制器:控制協調運算器和存儲器交流,接受控制指令,指示運算器如何運算,指示在存儲器裏存        儲數據存取位置

存儲器:編址存儲設備,8位一字節,存放數據和指令,不能保存數據,指令,剛加電時裏面是空的

I/O設備(輸入和輸出):硬盤,網卡,性能最差,輸入 輸出設備,用來人與計算機打交道,硬        盤也屬於一種輸入輸出設備

關係:控制器協調着把存儲器的哪個存儲單元裏面的數據讀取到運算器上


主板上的各類總線提供五大部件連接線通路

總線BUS:數據,控制信號傳輸

1.地址總線:尋址

2.控制總線

3.數據總線

4.線路複用:加數,被加數(數據),指令都可以在此線路傳輸



Cpu每個針腳代表一種功能(運算方式)

CPU指令集規定了10各種拼湊方式代表什麼意義,硬件應該如何執行

CPU時鐘頻率:Ghz爲單位 4Ghz代表最大1秒鐘變化40多億次,傳輸40多億個數據,通過晶體管震盪實現開關閉合打開製造出01


緩存:高速存儲器,可以從內存中複製部分常用數據,直接交給CPU,也用來協調硬盤與內存CPU速率差異,連接CPU和內存(內存速度跟不上CPU,需要緩存)一級,二級,三級,數字越小和CPU速度相差越小,預取機制,遵循空間局部性和時間局部性,緩存造價高昂

read ahead:預取,預先加載到緩存中


寄存器:CPU中用來暫時存儲傳入的數據的,讓CPU有記憶功能


中斷:CPU通過中斷控制器來判斷和區分輸入輸出設備是哪一個,外圍設備只有靠不停中斷來與CPU交互

敲鍵盤時,鍵盤會發出中斷信號給cpu,告訴cpu鍵盤發生狀況了,來瞧一下

可編程中斷控制器:上面每一根線表示通過向量連接多個設備

Tip:中斷多了也會影響cpu性能


4G內存需要32個二進制數字編碼,因爲232次方是4G,所以32位的計算機總線最多尋址4G內存,因爲只有32根總線,每根線只表示01  64位就是4G4G



ROM:只讀存儲器,適用於計算機的指令,這些指令可以映射到內存中,因爲RAM沒有斷電保存的功能。這些指令可以告訴計算機檢測輸入輸出設備等,用於POST加電自檢


前端總線(FSB):

北橋:高速總線控制器,需要大量數據,高頻率交換(鏈接CPU和內存)

現在一般把高速的輸入輸出設備(如固態硬盤直接接到北橋上,速度更快。CPU較近,告訴總線控制器----快速實現數據交換


南橋:低速總線控制器---連接各種外圍設備,硬盤,鍵盤,鼠標,通過總線連接到北橋

如何讓系統更快:固態硬盤直接連接在北橋上

 

虛擬機:硬件+軟件一起模擬實現硬件功能

CPU虛擬化:將CPU被切割成時間片

內存虛擬:線性地址空間---=每個進程自身認爲自己有3G內存空間(還有1G給內核),事實上並不是

虛擬機內存:將本來已經虛擬的內存再進行虛擬,物理地址空間虛擬爲線性地址空間



爲了方便地和計算機打交道,有了操作系統,可以封裝底層計算能力,抽象爲統一接口,讓程序員無需基於二進制編程,這樣程序員就可以面向操作系統寫程序了,簡單了很多。特權指令只能由內核代爲執行,普通指令則程序自己可以調用執行


kernel內核功能:

  1. 進程管理

  2. 內存管理

  3. 文件系統

  4. 網絡功能

  5. 硬件驅動

  6. 安全機制


內核調用

system call(內核接收其他程序的請求)

malloc(), free() 申請內存和釋放內存的兩個系統調用


庫調用:封裝系統調用 

liberal call 

 

解釋器,編譯器,虛擬機

 

API(庫):一種高級語言與計算機交互的環境  庫被調用纔可以執行。硬件與編程語言之間的兼容層,讓多種語言能在多種硬件平臺上運行


庫:一堆程序,沒有執行入口,可以被其他程序調用執行,不能被獨立執行

將底層系統調用組合起來,做成一個更高級的接口,方便程序和硬件打交道,一些公共的程序,所有程序都會用到它


二進制編程--->微碼編程(彙編語言)--->系統調用編程(基於操作系統)---->庫調用編程(c,c++庫)---->高級語言編程(基於各種編譯器或解釋器)


POS: Portable Operating System  POSIX

一種規則-----可移植操作系統規範,在不同平臺寫的程序可以相互兼容(API相同)

 

編譯  彙編 鏈接 執行

 

彙編:彙編語言轉換爲計算機認識的二進制代碼

編譯:其他語言轉換爲彙編語言的過程


Windows共享庫:.dll文件動態鏈接庫

Linux庫:.so文件  共享對象,一份庫誰都可以用,極大節約資源,極大地節約了內存


NUMA:非一致性內存訪問,每一顆CPU都有自己專有的內存空間,不過需要進程和CPU綁定。

 

程序運行:向內核申請佔據CPU執行指令

 

寫的程序一旦編譯後就只能在特定平臺上運行了,但是java不是這樣的

應用程序是否能運行還依賴於支持哪種架構的CPU

API:編譯前

ABI:編譯後

 

CPU架構類型:

    x86

     x64

    arm

    m68000,m68k

    power

    powerpc

    ultrasparc

    alpha

    安騰


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