基礎 2022 程序 執行緒

2022-10-11 04:39:10 字數 883 閱讀 9235

程序與執行緒

程序與執行緒的區別

1. 執行緒是程式執行的最小單位,而程序是作業系統分配資源的最小單位;

2. 乙個程序由乙個或多個執行緒組成,執行緒是乙個程序中**的不同執行路線

3. 程序之間相互獨立,但同一程序下的各個執行緒之間共享程式的記憶體空間(包括**段,資料集,堆等)及一些程序級的資源(如開啟檔案和信

號等),某程序內的執行緒在其他程序不可見;

4. 排程和切換:執行緒上下文切換比程序上下文切換要快得多

執行緒與程序,你真的清楚嗎?

執行緒執行的本質其實就是函式的執行。函式的執行總會有乙個源頭,這個源頭就是所謂的入口函式,cpu 從入口函式開始執行從而形成乙個執行流,只不過我們人為的給執行流起乙個名字,這個名字就叫執行緒。

由於執行緒執行的本質就是函式執行,函式執行時資訊是儲存在棧幀中的,因此每個執行緒都有自己獨立的、私有的棧區。

cpu 執行指令的資訊儲存在乙個叫做程式計數器的暫存器中,通過這個暫存器我們就知道接下來要執行哪一條指令。由於作業系統隨時可以暫停執行緒的執行,因此我們儲存以及恢復程式計數器中的值就能知道執行緒是從**暫停的以及該從**繼續執行了。

所屬執行緒的棧區、程式計數器、棧指標以及函式執行使用的暫存器是執行緒私有的。

以上這些資訊有乙個統一的名字,就是執行緒上下文,thread context。

除此之外,剩下的都是執行緒間共享資源。

程序位址空間的樣子 (**區、資料區、堆區)

如果乙個程式是動態鏈結生成的,那麼其位址空間中有一部分包含的就是動態鏈結庫,否則程式就執行不起來了,這一部分(動態鏈結庫)的位址空間也是被所有執行緒所共享的。

如果程式在執行過程中開啟了一些檔案,那麼程序位址空間中還儲存有開啟的檔案資訊,程序開啟的檔案也可以被所有的執行緒使用,這也屬於執行緒間的共享資源。

程序,執行緒基礎

作業系統發展史 1 計算機剛剛誕生的時候 計算機只能接受一些特定的指令,使用者輸入乙個指令,計算機就做乙個操作。當使用者在思考或者輸入資料時,計算機就等待。顯然這樣效率很低下,因為很多時候,計算機處於等待使用者輸入的狀態。2 後來批處理擦作業系統誕生 把一系列需要的指令預先寫下來,形成乙個清單,然後...

基礎 2022 綜合1

什麼是原碼 反碼 補碼!一 原碼 0表示正數,1表示負數 二 反碼 正數的反碼就是自身,負數的反碼除符號位外,其他各位求反 三 補碼 正數的補碼還是自身,負數的補碼,符號位不變,其餘取反,然後最低為加1 因為人腦可以知道第一位是符號位,在計算的時候我們會根據符號位進行加減。但是對於計算機,加減乘數已...

python 基礎 執行緒 和 程序

程序執行緒 同一程序中,資訊共享和通訊。訪問差異會導致結果不一致。python程式中由global interpreter lock gil 主迴圈中要求只能有乙個控制線程執行。import time import threading threading.thread 是執行緒 每個執行緒的內容,等...