程序的定義:正在進行的乙個過程或者乙個任務,比如開啟乙個qq是乙個程序,負責執行的任務的是cpu;
執行緒的定義:通俗的理解:
乙個執行緒 ==> 一條流水線的過程,流水線的工作需要電源就相當於cpu;
乙個程序 ==> 乙個車間的工作過程;
一條流水線必須屬於乙個車間,乙個車間至少有一條流水線;
車間負責把資源整合到一起,是乙個資源單位;
官方定義:是作業系統能夠進行運算排程的最小單位。它被包含在程序之中,是程序中的實際運作單位。一條執行緒指的是程序中乙個單一順序的控制流,乙個程序中可以併發多個執行緒,每條執行緒並行執行不同的任務。
同乙個程序內的多個執行緒共享該程序內的位址資源;
建立執行緒的開銷要遠小於建立程序的開銷:因為
建立乙個程序就是建立乙個車間,涉及到申請空間,且該空間內至少有一條流水線;建立執行緒就只是在乙個車間內造一條流水線,無需申請空間,因此開銷小。
檢視超程序數:cat /proc/cpuinfo | grep "siblings" |sort | uniq,如果」siblings「和」cpu cores"檢視的值一致說明沒有開啟超執行緒;如果」siblings「是」cpu cores"的兩倍,說明開啟超執行緒;
開啟超執行緒:在bios裡面去開啟,找到hyper-threading項,改為enable。
超執行緒技術利用硬體命令,把兩個邏輯核心模擬成兩個物理晶元,減少cpu的閒置時間,提供cpu的執行效率。
linux檢視cpu的資訊:cat /proc/cpuinfo
計算公式:
總核數物理cpu個數 x 每顆物理cpu的核數
總邏輯cpu數
物理cpu個數 x 每顆物理cpu的核數 x 超執行緒數
物理cpu個數:cat /proc/cpuinfo | grep "physical id" | sort |uniq |wc -l
每個cpu中core的個數(即核數):cat /proc/cpuinfo | grep "cpu cores" | sort |uniq
邏輯cpu的個數:cat /proc/cpuinfo | grep "processor" |wc -l
架構:a.從處理器方面:cat /proc/cpuinfo | grep "porcessor" | wc -l
b.從作業系統層面:top,再按1,監控每個邏輯cpu的狀況
程序與執行緒 1 程序狀態 PCB
參考哈工大李治軍老師公開課。程序 就是正在被計算機執行的程式,比如word,ppt等,都是乙個程序。計算機系統在某乙個時刻,當只有乙個cpu工作時,它只執行乙個程序,但是使用者在使用計算機時回開啟多個進行,這樣就涉及到了程序的不同狀態。程序可以被分為5個狀態,分別是 新建態 就緒態 執行態 終止態 ...
程序,執行緒與執行緒池(1)
傳統方法 建立乙個新的執行緒,由該執行緒執行任務,任務執行完畢後執行緒退出 即時建立,即時銷毀 如果提交給執行緒的任務是執行時間較短,執行次數頻繁,那麼不斷銷毀和不斷建立的開銷則是不可忽略的。執行緒池採用預建立技術,在應用程式啟動之後,立即建立一定數量的執行緒,放入空閒佇列中,這些執行緒處於阻塞狀態...
CPU程序與執行緒的關係和區別
程序是具有一定獨立功能的程式關於某個資料集合上的一次執行活動,程序是系統進行資源分配和排程的乙個獨立單位。執行緒是程序的乙個實體,是cpu排程和分派的基本單位,它是比程序更小的能獨立執行的基本單位。程序和執行緒的關係 1 乙個執行緒只能屬於乙個程序,而乙個程序可以有多個執行緒,但至少有乙個執行緒。2...