python之路 ---計算機硬件基礎

  計算機(computer)俗稱電腦,是現代一種用於高速計算的電子計算機器,能夠進行數值計算,又能夠進行邏輯計算,還具備存儲記憶功能。是可以按照程序運行,自動、高速處理海量數據的現代化智能電子設備。一個完整的計算機由硬件和操做系統組成。若是沒有操做系統的計算機,能夠稱之爲裸機。html

2.計算機的組成:緩存

  硬件部分:計算機硬件主要由cpu輸入設備輸出設備存儲器系統總線組成。cpu就像人類的大腦同樣,負責計算,處理事件,系統總線則是人的血管和神經同樣,控制的輸入,輸出和存儲設備(控制總線),將養分物質傳輸到身體各處(數據傳輸總線)。輸入,輸出設備則負責計算機與外界作交互,進行數據的輸入和輸出,圖形的顯示等做用。而存儲設備則負責存儲內容。安全

  軟件部分:計算機的軟件部分主要分爲操做系統和應用軟件。操做系統的出現,將計算機複雜的硬件結構進行了包裝,給人們提供了一個簡單,方便,優美的操做感覺和視圖界面。而應用軟件的出現則是爲了知足人們各類特定的需求,如暴風影音,遊戲等。多線程

3.硬件部分架構

   1.CPU:cpu的組成以下圖所示,工做過程能夠分爲取指---解碼--執行,這三個部分,分別再指令寄存器,指令譯碼器和ALU這三個地方完成。由於從內存讀取數據的時間比cpu執行命令的時間要慢的多,因此計算機在內部有部分寄存器(和cpu同材質),寄存器主要分爲如下幾種類型:併發

  • 通用寄存器:用來保存變量和臨時結果框架

  •    程序計數器:用來保存下一個要執行的指令的內存地址。spa

   程序狀態字寄存器(PSW):用來標記區分訪問狀態(用戶態內核態),cpu優先級等內容。操作系統

  •    堆棧指針寄存器:該棧包含已經進入可是尚未退出的每一個過程當中的一個框架。在一個過程的堆棧框架中保存了有關的輸入參數、局部變量以及那些沒有保存在寄存器中的臨時變量。堆棧的特色是先進後出線程

    

  

 補充說明:

  內核態:爲了保護硬件系統底層的安全和穩定性,只容許內核態進行操做硬件。通常操做系統處於內核態,而應用軟件處於用戶態

  用戶態:只能操做cpu指令集的一個子集,沒法操做底層硬件內容,若是須要操做底層硬件,須要將用戶態轉換爲內核態。

  多線程:線程是cpu執行的基本單位,線程之間內存的共享的。多線程cpu能夠保持兩個不一樣狀態的線程(休眠狀態和運行狀態),cpu來回切換這些線程,速度十分快,以至於讓人們認爲是併發處理的。cpu同一個時間只能處理一個線程。

  進程:進程是最小的資源單位,進程間內存是不共享的。一個進程最少要有一個線程。

  多核:增長了數個完整的cpu,這樣就能夠同時處理多個線程。每一個cpu有個跟cpu材質同樣的緩存區,稱爲一級緩存(L1),有個二級緩存(L2)連接着這幾個cpu(inter架構)。

  

  2.存儲器

       以下圖,緩存的級別由上到下一次遞增,寄存器爲一級緩存,高速緩存爲二級緩存,以此類推,緩存速度越快,容量就越小,造價就越昂貴。若是運行一個程序,所須要的內容已經在高速緩存中,即稱爲高速緩存命中,若是高速緩存未命中,則須要去內存讀取數據,速度會慢不少。

    •  內存RAM易失性存儲,斷電後數據所有消失。

    •  rom(Read Only Memory)爲非易失性存儲。

    •  flash(閃存):非易失性存儲,固態硬盤,u盤都是有閃存進行存儲。

    •  cmos:易失性存儲,保存當前時間和日誌,還有系統的一些參數。

   

    •  磁盤:磁盤由多個碟片,磁柱,磁頭組成。每一個磁盤又以扇區爲單位進行劃分。一個扇區爲512B。最小的塊單元由8個扇區組成,即4KB。

        磁盤讀取數據會有必定延時,主要非爲:

        1.平均尋道延時:即找到所需數據所在的扇扇道

        2.平均延時時間:在扇道上找到正確的扇區所須要的時間

        因此一塊磁盤轉速約快,他的延時時間就越短,讀取速度就越快。

        咱們還會劃分一小部分磁盤做爲內存來使用,防止運行軟件過多,所需內存超過實際內存大小,而形成內存溢出,服務崩潰。虛擬內存雖然運行速度較慢,可是能夠防止內存溢出的狀況發生,保證服務的穩定。

    • 磁帶:讀取速度最慢,可是容易打,移動性高,雖然都用來作備份。

     

   I/O設備(input/output)

    I/O 通常分爲設備控制器(須要安裝驅動軟件)和設備自己。

    設備控制器的做用是提供一個標準的接口來接入設備,驅動軟件則是提供給系統操控設備的方法。各個設備控制器由I/O總線連接着。

    I/O總線分爲北橋和南橋,北橋鏈接cpu,內存,二級緩存,南橋鏈接硬盤,鍵盤,打印機等運行速度較慢的設備。

 4.操做系統

  

   操做系統的做用主要由兩個:

  1.給用戶提供一個簡單,明瞭的硬件接口(工做在用戶態),程序開發人員不須要再去了解如何去控制硬件,而是調用相應的硬件接口就可使用。

  2.讓線程的進程變得有序(工做在內核態)。如打印機同時打印a,b,c,若是是無序競爭,那麼打印出來的內容會是a一行,b一行,這樣混亂的內容。操做系統會使用鎖 這個方法讓競爭變得有序,若是a文件正常使用打印機,則會將打印線程鎖住,只給a只有,那麼b和c只有等a打印完以後纔會使用打印機。

  操做系統與應用軟件的區別: 

     1.主要區別是:應用軟件開發週期短,可修改,操做系統由內核保護着,不能被修改。

    2.操做系統是一個大型(源碼數量大)、複雜(提供複雜功能)、長壽(不會輕易被棄用)的軟件

  

  多路複用(多道技術):

  1.時間上的複用:當一個資源在時間上覆用時,不一樣的程序或用戶輪流使用它。例如:cpu的 上下文切換:一個內核可處理多個進程, 在只有一顆 CPU 的狀況下, 內核必須調度和平衡這些進程和線程。 每一個線程在處理器上都擁有一個時間分配單元, 當一個線程超過本身的時間單元或被更高優先級的程序搶佔時, 此線程及被傳回隊列而此時更高優先級的程序將在處理器上執行。

  2.空間上的複用(須要硬件上的支持,將內存在硬件層面上進行分區):多個程序同時進入不一樣的內存區域。且由操做系統控制,這比一個程序獨佔內存一個一個排隊進入內存效率要高的多。 硬件層面的分割保證了安全性:應用程序不會操做到操做系統的內存區域    穩定性:釋放應用程序內存時,不會同時釋放掉操做系統的內存(即便是操做系統的部份內存),這樣能夠避免引發操做系統的崩潰。

 

參考博客連接:

    https://www.cnblogs.com/linhaifeng/p/6523843.html

    https://www.cnblogs.com/linhaifeng/p/6295875.html

相關文章
相關標籤/搜索