什麼是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每秒計算一次)
(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有幾個核心沒什麼關係。
CPU核數跟多執行緒的關係
一直以來有這樣的疑惑,單核cpu適合多執行緒嗎?是不是幾個核的cpu開幾個執行緒是最合適的?要說多執行緒就離不開程序,程序和執行緒的區別在這裡就不詳細說了,只將關鍵的幾點 a 程序之間是相互獨立的,不共享記憶體和資料,執行緒之間的記憶體和資料是公用的,每個執行緒只有自己的一組cpu指令 暫存器和堆疊...
非同步和多執行緒的關係
非同步通訊的意思是,當a傳送完訊息之後,不等待b的回應,繼續執行之後的程式.在將來的某個時刻,a再來檢查是否收到b的回應。非同步就是彼此獨立,在等待某事件的過程中繼續做自己的事,不需要等待這一事件完成後再工作。多執行緒是程式設計的邏輯層概念,它是程序中併發執行的一段 多執行緒可以實現執行緒間的切換執...
Linux系列 多程序 多執行緒與CPU的關係
對於多cpu,多個程序可以並行在多個cpu中計算,當然也會存在程序切換 對於單cpu,多個程序在這個單cpu中是併發執行,根據時間片讀取上下文 執行程式 儲存上下文。同乙個程序同一時間段只能在乙個cpu中執行,如果程序數小於cpu數,那麼未使用的cpu將會空閒。對於多核cpu,程序中的多執行緒並行執...