程序和執行緒的由來

2021-10-11 01:12:17 字數 798 閱讀 5649

計算機原理是個比較複雜的話題,但是不論多麼複雜的計算機結構,都可以抽象簡化一下,成為如下的模型

那麼問題來了

從輸入到輸出,計算機幹啥了,把大象塞入冰箱,攏共需要幾步?

只要3步

讀,算,寫

為了完成這3步,我們需要控制模組,運算模組,儲存模組

執行緒是對於cpu的概念

cpu控制器(控制模組),運算器(運算模組),暫存器(儲存模組),

完成一次輸入到輸出的轉化工作,必須要讀,算,寫,也就必須要以上3個模組工作,少了任何乙個模組,cpu都不可能完成一次計算

這就是執行緒的工作原理,執行緒也就是cpu的最小工作單位,

電腦的cpu往往就標註的多少核心多少執行緒

比如我的電腦就是16核心32執行緒

那麼程序咋工作呢?

程序是作業系統的概念

它在記憶體中建立堆疊,為執行緒提供資源,cpu取資料時,去記憶體中取,寫資料時也往記憶體中寫

為了保證cpu的計算速度,暫存器就不可能設計的很大

cpu的暫存器,用來暫存指令、資料和位址,速度最快,cpu去記憶體中定址取到資料,計算完,再放到指定位址

參考下馮·諾依曼結構計算機

執行一段程式,需要記憶體來為計算提供儲存,記憶體的大小受暫存器定址空間限制,

早期的計算機都以程序作為最小工作單位,計算機為每乙個執行緒都分配記憶體空間,不同程序記憶體空間隔離,程序切換,資源消耗很大

以執行緒為最小工作單位,同一程序的執行緒切換,記憶體空間不變,開銷小

linux 啟動 shell程序由來

linux建立新程序的過程。系統允許乙個程序建立新程序,新程序即為子程序,子程序還可以建立新的子程序,形成程序樹結構模型。整個linux系統的所有程序也是乙個樹形結構。樹根是系統自動構造的,即在核心態下執行的0號程序,它是所有程序的祖先。由0號程序建立1號程序 核心態 1號負責執行核心的部分初始化工...

執行緒和程序

標準的定義是 程序是執行緒的容器,乙個程序可於乙個或者多個執行緒,它是系統分配資源的基本單位 同乙個程序下,執行緒共享位址空降 已經開啟的檔案 訊號處理函式 報警訊號和其他,執行緒自己只保留程式計數器和棧。但是很遺憾的,這個只是教科書上的定義,實際情況是每個作業系統實現的作業系統特性不同,實現的方法...

程序和執行緒

乙個程序就是當前正在執行的乙個程式,包括程式的暫存器 程式計數器和變數的當前值。不同的程序擁有不同的位址空間。而執行緒可以理解為是程序中的控制流。同乙個程序內也就是說在同乙個位址空間內可以有多個控制流。也就是可以有多個線 程,他們共享位址空間。我們通常將程序視為是資源的集合,程序中有程式的正文 資料...