複製鏈接
請複製以下鏈接發送給好友

程序併發執行

鎖定
一組在邏輯上互相獨立的程序或程序段在執行過程中,其執行時間在客觀上互相重疊,即一個程序段的執行尚未結束,另一個程序段的執行已經開始的這種執行方式。
中文名
程序併發執行
外文名
Concurrent Execution
領    域
操作系統
特    點
間斷性、失去封閉性、不可再現
制約方式
直接、間接

目錄

程序併發執行簡介

操作系統中引入併發程序設計技術後,程序的執行不再是順序的,一個程序未執行完而另一個程序便己開始執行,程序外部的順序性特性消失,程序與計算不一一對應,所以,操作系統中引進進程概念來描述這種變化。進程的併發性(Concurrency)是指一組進程的執行在時間上是重疊的。所謂執行在時間上是重疊的,是指一個進程執行的第一條指令是在另一個進程執行的最後‘條指令完成之前開始的。例如:有兩個進程A和B,它們分別執行操作al,a2,a3和b1,b2,b3。在一個單處理器上,就A和B兩個進程而言,它們的執行順序分別為al,a2,a3和b1,b2, ,b3,這是進程執行的操作的順序性。然而,這兩個進程在單處理器上它們的操作可能是交叉執行的,如執行序列為al, b1, a2, b2, a3, b3或al, b1, a2, b2, b3, a3等,則説A和B兩個進程的執行是併發的。從宏觀上來看,併發性反映出一個時間段中有幾個進程都處於運行還未運行結束狀態,目‘這些進程都在同‘處理器上運行,但從微觀上來看任一時刻僅有一個進程在處理器上運行。反過來看,併發的實質是一個處理器在幾個進程之間的多路複用,併發是對有限的物理資源強制行使多用户共享,消除計算機部件之間的互等現象,以提高系統資源利用率。
一組在邏輯上互相獨立的程序或程序段在執行過程中,其執行時間在客觀上互相重疊,即一個程序段的執行尚未結束,另一個程序段的執行已經開始的這種執行方式。
程序的併發執行可進一步分為兩種,第一種是多道程序系統的程序執行環境變化所引起的多道程序的併發執行;第二種併發執行是在某道程序的幾個程序段中,包含着一部分可以同時執行或順序顛倒執行的代碼。例如:
read(a);
read(b);
它們既可以同時執行,也可以顛倒次序執行。也就是説,對於這樣的語句,同時執行不會改變順序程序所具有的邏輯性質。因此,可以採用併發執行來充分利用系統資源以提高計算機的處理能力。 [1] 
在大多數計算問題中,僅要求部分操作在時間上是有序的。有些操作必須在其他操作之後執行,另外有些操作卻可以並行地執行。

程序併發執行優勢

(1)更好地反映問題的邏輯結構。許多程序裏,特別是各種服務器、圖形應用、計算機模擬等,需要做很多基本上相互獨立的工作。構造這種程序,最簡單也最合邏輯的方式,就是用一個獨立的執行進程實現一個工作。 [2] 
(2)計算機硬件通常控制着一批獨立設備和部件,例如鍵盤、顯示器、打印機,還有各種內部組件。這些設備/部件的特性和操作速度不同,相應控制程序最好作為獨立的進程,根據需要開始/結束或暫時中斷。實時控制系統通常需要指揮控制多台獨立的外部設備,最好用獨立的控制線程,還需要與處理器上運行的其他線程交互,實現系統的整體行為。
(3)通過併發執行有可能提高計算的性能。有些程序本質上並不需要並行執行,但如果能使用多個處理器同時計算,可能得到很大的速度提升,或者滿足實際的需要。

程序併發執行制約方式

有如下兩種。
(1)間接制約方式。
(2)直接制約方式。
無論是操作系統自身的程序還是用户程序,通常總是存在一些相對獨立、但又能併發執行的程序段
為了合理利用系統資源,更好地發揮各種資源的效益,使各種物理設備之間的時間性限制條件減少到最低限度,最大限度地提高系統的效率,因而引出了多道程序方法。其實質是減少程序的順序性,提高系統的並行性
參考資料
  • 1.    張堯學 史美林 張高.計算機操作系統教程:清華大學出版社,2006年10月第3版
  • 2.    孫鍾秀.操作系統:高等教育出版社,2003:151-157