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