- 什么是CPU
(1) Central Progressing Unit 中央處理器,是一塊超大規模的集成電路,是一台計算機的運算核心和控制核心。
(2) CPU包括 運算器,高速緩沖存儲器,總線。
(3) 它的工作,主要是解釋計算機中的指令,和處理計算機軟件中的數據。它在計算機中起着最重要的作用,構成了系統的控制中心,對各個應用程序進行統一協調和控制。
- 線程
(1) 進程,一個進程就是一個具有獨立功能的應用程序,關於某個數據集合上的一次運行活動。進程是系統進行資源分配和調度的一個獨立單位。
(2) 線程,線程是進程的實體,屬於進程,是CPU調度和分派的基本單位。
資源分配給進程,所有線程共享該進程的資源
(3) 操作系統的設計,可以歸納為3點。
- 以多進程形式,允許多個任務同時運行。
- 以多線程形式,允許一個任務拆分成多個線程運行。
- CPU提供協調機制,允許線程之間共享資源,防止線程之間產生沖突。
- CPU和線程的關系
(1) 第一階段,單CPU時代,單CPU在同一時間點,只能執行單一線程。比如,的某一刻00:00:00 這一秒,只計算1+1=2(假設cpu每秒計算一次)
(2) 第二階段,單CPU多任務階段,計算機在同一時間點,並行執行多個線程。但這並非真正意義上的同時執行,而是多個任務共享一個CPU,操作系統協調CPU在某個時間點,執行某個線程,因為CPU在線程之間切換比較快,給人的感覺,就好像多個任務在同時運行。比如,電腦開了兩個程序qq和qq音樂,假設這兩個程序都只有一個線程。人能夠感覺到CPU切換的頻率是一秒一次,假設當前cpu計算速度是1秒1次,那么我們就能明顯感到卡頓,當聊天,點擊發送按鈕時候,qq音樂就會停止運行。當前cpu計算速度是1秒100次,也就是它能在一秒之內在這兩個進程見切換100次,那么我們就感不到卡頓,覺得QQ和QQ音樂是同時在運行。
(3) 第三階段,多CPU多任務階段,真正實現的,在同一時間點運行多個線程。具體到哪個線程在哪個CPU執行,這就跟操作系統和CPU本身的設計有關了。
- 舉例說明
(1)假設一種極端情況,一台單核計算機,只運行2個程序A和B。
假設A和B的優先級相同,A有3個線程,B有1個線程,那么CPU分配給A和B的執行時間應該是3:1。
(2)假設同一種情況發生在一台多核計算機,核1處理A和B各一個線程,核2處理A剩下的線程。
(3)剛才說的是線程只消耗CPU,在實際應用中這種情況是不存在的,程序總會跟資源打交道,比如讀個文件,查詢數據庫,訪問網絡,這個時候多線程才能體現出優勢。在一個進程中,讓A先用一下CPU去查詢數據庫,在A查詢數據庫的時候CPU空閑,B就用一CPU去讀文件,讓C去訪問網絡。相對於查詢數據庫,讀取文件這些操作來說,CPU的計算時間幾乎可以忽略不計。所以,多線程,實際上是計算機多種資源的並行運用,跟CPU有幾個核心沒什么關系。