程序 執行緒 多執行緒相關總結第二(good)

2021-09-11 01:53:19 字數 1118 閱讀 2319

這裡有一段知乎上的解釋:

看見上面幾位的回答我真的是醉了。說幾句我的理解。

首先來一句概括的總論:程序和執行緒都是乙個時間段的描述,是cpu工作時間段的描述。

乙個最最基礎的事實:cpu太快,太快,太快了,暫存器僅僅能夠追的上他的腳步,ram和別的掛在各匯流排上的裝置完全是望其項背。那當多個任務要執行的時候怎麼辦呢?輪流著來?或者誰優先順序高誰來?不管怎麼樣的策略,一句話就是在cpu看來就是輪流著來。

乙個必須知道的事實:執行一段程式**,實現乙個功能的過程介紹 ,當得到cpu的時候,相關的資源必須也已經就位,就是顯示卡啊,gps啊什麼的必須就位,然後cpu開始執行。這裡除了cpu以外所有的就構成了這個程式的執行環境,也就是我們所定義的程式上下文。當這個程式執行完了,或者分配給他的cpu執行時間用完了,那它就要被切換出去,等待下一次cpu的臨幸。在被切換出去的最後一步工作就是儲存程式上下文,因為這個是下次他被cpu臨幸的執行環境,必須儲存。

串聯起來的事實:前面講過在cpu看來所有的任務都是乙個乙個的輪流執行的,具體的輪流方法就是:先引導程式a的上下文,然後開始執行a,儲存程式a的上下文,調入下乙個要執行的程式b的程式上下文,然後開始執行b,儲存程式b的上下文。。。。

*****==== 重要的東西出現了*****===

程序和執行緒就是這樣的背景出來的,兩個名詞不過是對應的cpu時間段的描述,名詞就是這樣的功能。

程序就是包換上下文切換的程式執行時間總和 = cpu載入上下文+cpu執行+cpu儲存上下文

執行緒是什麼呢?

程序的顆粒度太大,每次都要有上下的調入,儲存,調出。如果我們把程序比喻為乙個執行在電腦上的軟體,那麼乙個軟體的執行不可能是一條邏輯執行的,必定有多個分支和多個程式段,就好比要實現程式a,實際分成 a,b,c等多個塊組合而成。那麼這裡具體的執行就可能變成:

程式a得到cpu =》cpu載入上下文,開始執行程式a的a小段,然後執行a的b小段,然後再執行a的c小段,最後cpu儲存a的上下文。

這裡a,b,c的執行是共享了a的上下文,cpu在執行的時候沒有進行上下文切換的。這裡的a,b,c就是執行緒,也就是說執行緒是共享了程序的上下文環境,的更為細小的cpu時間段。

到此全文結束,再乙個總結:

程序和執行緒都是乙個時間段的描述,是cpu工作時間段的描述,不過是顆粒大小不同。

來自

程序 執行緒 多執行緒相關總結

一 說說概念 1 程序 process 狹義定義 程序就是一段程式的執行過程。廣義定義 程序是乙個程式關於某個資料集合的一次執行。它是作業系統動態執行的基本單元,在傳統的作業系統中,程序既是基本的分配單元,也是基本的執行單元。簡單的來講程序的概念主要有兩點 第一,程序是乙個實體。每乙個程序都有它自己...

執行緒與程序相關1 執行緒與多執行緒

1.2.1 概念理解 1.2.2 執行緒的狀態1.3.1 標準庫threading python中的執行緒開發使用標準庫threading,程序靠執行緒執行 至少有乙個主線程,其他執行緒是工作執行緒,主線程是第乙個啟動的執行緒,即從上到下 執行的那個執行緒,工作執行緒是在主線程執行的基礎上進行分支並...

程序 執行緒 多執行緒

程序是系統中正在執行的乙個程式,程式一旦執行就是程序。程序可以看成程式執行的乙個例項。程序是系統資源分配的獨立實體,每個程序都擁有獨立的位址空間。乙個程序無法訪問另乙個程序的變數和資料結構,如果想讓乙個程序訪問另乙個程序的資源,需要使用程序間通訊,比如管道,檔案,套接字等。乙個程序可以擁有多個執行緒...