引用文章:
程序之前---多道程式設計
多道程式設計技術出現之前多個程式序列執行。只存在乙個程式計數器,乙個程式執行完畢之後,才會執行下乙個程式。
設計思想是允許多個程式同時進入記憶體並同時執行(巨集觀上並行,微觀上序列,各道程式輪流使用cpu,交替執行),其目的是為了cpu的利用率,進而提高系統效率。
如果記憶體中有四個程式在併發執行,那就需要四個程式計數器
新技術帶來的問題
乙個技術、乙個機制的引入,一方面解決了以前棘手的問題,但同時,往往帶來新的問題
多道程式設計技術允許多個程式同時進入記憶體並執行,在這樣的併發環境下,如何描述、刻畫這樣執行的程式呢?因此引入了「程序」。
這也是程序的作用
百科說法:
作業系統引入程序的概念的原因:
從理論角度看,是對正在執行的程式過程的抽象;
從實現角度看,是一種資料結構,目的在於清晰地刻畫動態系統的內在規律,有效管理和排程進入計算機主儲存器執行的程式。
程序
程序:作業系統進行資源分配和排程的基本單位,是乙個具有獨立功能的程式關於某種資料集合上的一次活動。
資源:如記憶體、檔案
程式:指令的集合
特點:動態性:程序的實質是程式在多道程式系統中的一次執行過程,程序是動態產生,動態消亡的。
併發性:任何程序都可以同其他程序一起併發執行(同時執行)
獨立性:程序是乙個能獨立執行的基本單位,同時也是系統分配資源和排程的獨立單位;
非同步性結構特徵:程序由程式、資料和程序控制塊(pcb)三部分組成。
多個不同的程序可以包含相同的程式:乙個程式在不同的資料集裡就構成不同的程序,能得到不同的結果;但是執行過程中,程式不能發生改變。
引入執行緒
為什麼引入執行緒 有了程序這概念之後 應用程式可以併發地去執行了 那麼為什麼要在程序當中再派生出執行緒呢?
程序有利於資源的管理和保護,但是程序有這樣的問題:
1. 程序切換的代價、開銷比較大;
2. 在乙個程序內也需要並行執行多個程式,實現不同的功能。
3. 程序有時候效能比較低。
引入執行緒有以下三個方面的考慮
開銷的考慮。在程序內建立、終止執行緒比建立、終止程序要快。同一程序內的執行緒間切換比程序間的切換要快,尤其是使用者級執行緒間的切換。執行緒之間相互通訊無須通過核心(同一程序內的執行緒共享記憶體和檔案)
效能的考慮。多個執行緒中,任務功能不同(有的負責計算,有的負責i/o),如果有多個處理器,乙個程序就可以有很多的任務同時在執行。
執行緒
執行緒定義方面:程序是程式在某個資料集合上的一次執行活動;執行緒是程序中的乙個執行路徑。
角色方面:在支援執行緒機制的系統中,程序是系統資源分配的單位,執行緒是系統排程的單位。
關於這方面內容,可以參考 android中的執行緒與程序在此感謝。
執行緒和程序的區別
易於排程。執行緒切換比程序切換要快。虛擬記憶體空間,io裝置等 開銷小。建立執行緒比建立進行要快,所需開銷小。進展用少量資源,如棧和暫存器。提高併發性。程序可以建立多個執行緒來執行統一程式的不同任務。有利於充分發揮多處理器的功能。通過建立多執行緒的程序,每個執行緒在乙個處理器上執行,從而實現了應用程...
執行緒和程序的區別
這個問題我查了不下4次,每次都是突然想到查一下,當時明白,完了又會混淆 首先我們知道 程序 執行緒 執行緒 在乙個程式裡面的多個任務,比如賣票系統,他有退票和賣票的功能,我們就可以給他稱之為執行緒。程序 我們開啟任務管理器可以看到的是我們在系統上執行的程式稱之為執行緒 總之,乙個程式必須有乙個程序,...
執行緒和程序的區別
1.計算機的核心是cpu,它承擔了所有的計算任務。它就像一座工廠,時刻在執行。2.假定工廠的電力有限,一次只能供給乙個車間使用。也就是說,乙個車間開工的時候,其他車間都必須停工。背後的含義就是,單個cpu一次只能執行乙個任務。3.程序就好比工廠的車間,它代表cpu所能處理的單個任務。任一時刻,cpu...