程式並發執行

程式並發執行

一組在邏輯上互相獨立的程式或程式段在執行過程中,其執行時間在客觀上互相重疊,即一個程式段的執行尚未結束,另一個程式段的執行已經開始的這種執行方式。

基本介紹

  • 中文名:程式並發執行
  • 外文名: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);
它們既可以同時執行,也可以顛倒次序執行。也就是說,對於這樣的語句,同時執行不會改變順序程式所具有的邏輯性質。因此,可以採用並發執行來充分利用系統資源以提高計算機的處理能力。
在大多數計算問題中,僅要求部分操作在時間上是有序的。有些操作必須在其他操作之後執行,另外有些操作卻可以並行地執行。如圖3.2所示,其先後次序是:I1先於P1和I2;P1先於O1、P2和I3;O1先於O2,P3……部分有序使某些操作的並行執行成為可能,如I2和P1,I3,P2與O1等操作的執行可以在時間上互相重疊。

優勢

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

制約方式

有如下兩種。
(1)間接制約方式。
(2)直接制約方式。
無論是作業系統自身的程式還是用戶程式,通常總是存在一些相對獨立、但又能並發執行的程式段
為了合理利用系統資源,更好地發揮各種資源的效益,使各種物理設備之間的時間性限制條件減少到最低限度,最大限度地提高系統的效率,因而引出了多道程式方法。其實質是減少程式的順序性,提高系統的並行性

相關詞條

熱門詞條

聯絡我們