程式,狹義上講可以理解為可執行檔案,是乙個靜態的概念,本質上就是一些預先編譯好的指令和資料組成的乙個檔案。
程序,是程式執行時的乙個過程,是乙個動態的概念。
最大的區別就是乙個是靜態的,乙個是動態的。例如qq本身是乙個程式,但執行時qq也是任務管理器中的乙個程序。有人做過乙個比喻,如果拿程式和程序的概念和做菜比較的話,程式就是菜譜,cpu就是人,相關廚具就是各種其他硬體,整個炒菜的過程就是乙個程序,比喻很形象。
我們常說,程序是作業系統進行資源分配(包括cpu、記憶體、磁碟io等)的最小單位,執行緒是cpu排程和分配的基本單位(可以理解為cpu只能看到執行緒)。執行緒,有時候被稱為輕量級的程序,換句話說它是程式執行流的最小單位,是程式在執行過程(程序)中的 『步驟』 之一。通常,乙個程序由乙個到多個執行緒組成,各個執行緒之間共享程式的記憶體空間,及一些程序級的資源。
乙個標準的執行緒由執行緒id、當前指令指標pc、暫存器集合和堆疊組成。
例如整個qq,執行時是乙個程式,qq開多個視窗,每個視窗可以簡單理解為乙個執行緒。沿用上乙個比喻,對整個做菜過程(程序)來說,備菜、炒菜、上菜,分三個步驟,每個步驟都可以開乙個執行緒來解決。當然,開執行緒的方式有很多種,這只是其中一種(也可以炒多個菜,每炒一種菜是乙個執行緒,這種方式就和qq多視窗意思一樣了)。
首先,執行緒是執行在cpu上的,是cpu排程的單位。是壓榨cpu資源的工具。
其次,從執行緒的角度看,多核可以簡單理解為多個cpu,也就是多個人同時做菜。當然 多核單個cpu和多個單核cpu還是有區別的,具體可以參考( 和
最後就是現有的執行緒排程和優先順序問題,常見的執行、就緒、等待啥的就不說了,主要是三句話:
附乙份神奇的筆記(包你看後忍不住三連~):
程序和執行緒之間的區別
程序執行緒 定義資源單位 房子 執行單位 優點多核cpu密集型節省時間 節省資源 速度快 多個執行緒 io密集型節省資源 缺點浪費資源,建立耗費時間長 同一程序下多執行緒無法執行,無法利用多核優勢 目的 gil控制python直譯器記憶體管理 資料相關 程序之間資料相互隔離,可以通過佇列模組和ipc...
程式 程序和執行緒的區別
以前一直搞不清楚這個問題,最近看了 現代作業系統 這本書,有了點深入的了解,在此記錄一下。1 首先來看程式和程序 曾經我認為這兩者應該是沒有什麼區別的,實則不然。在這裡可以引用書裡的比方,假如有乙個廚師要根據乙個食譜做乙個蛋糕,那麼這個廚師就好比cpu,而食譜就是程式 以一定形式寫好的演算法 當然還...
程式 程序 執行緒之間的區別與聯絡
程式 實現了功能,就是程式,是靜態的 程序 執行中的程式就是程序,是動態的 執行緒 程序內的乙個執行單元,也是程序內的可排程實體,可以併發執行提高了程序的效率。1 乙個執行緒只能屬於乙個程序,而乙個程序可以有多個執行緒,但至少有乙個執行緒。2 資源分配給程序,同一程序的所有執行緒共享該程序的所有資源...