1. 程式人生 > >【作業系統】程序的非同步性

【作業系統】程序的非同步性

非同步性是指程序以不可預知的速度向前推進。記憶體中的每個程序何時執行,何時暫停,以怎樣的速度向前推進,每道程式總共需要多少時間才能完成等,都是不可預知的。
是程式併發執行時,程式之間的相互制約關係導致了併發程式這種“執行——暫停——執行”這種間斷性的活動規律。

比如,當正在執行的程序提出某種資源請求時,如列印請求,而此時印表機正在為其他某程序列印,由於印表機屬於臨界資源,因此正在執行的程序必須等待,且放棄處理機,直到印表機空閒,並再次把處理機分配給該程序時,該程序方能繼續執行。可見,由於資源等因素的限制,程序的執行通常都不是“一氣呵成”,而是以“停停走走”的方式執行。

非同步性就是描述程序這種以不可預知的速度走走停停、何時開始何時暫停何時結束不可預知的性質。

也就是說,如果傳統意義上的程式沒有在作業系統中為之配備程序控制塊(PCB),沒有用它來描述程序基本情況和活動過程,進而控制和管理程序,這樣就會使程式在併發執行的時候失去其封閉性,也失去了可再現性。
但是,如果作業系統採用了程序同步機制,雖然程式具有非同步性(走走停停、以不可預知的速度前進),但仍能保證程序併發執行的結果是可再現的。

所以,只要在作業系統中配置有完善的程序同步機制,且執行環境相同,作業經多次執行都會獲得完全相同的結果。因此,非同步執行方式是允許的。