作業系統內的並行執行進程可以是獨立的也可以是共同作業的:
-
如果一個進程不能影響其他進程或受其他進程影響,那麼該進程是獨立的,換句話說,不與任何其他進程共用資料的進程是獨立的;
-
如果一個進程能影響其他進程或受其他進程所影響,那麼該進程是共同作業的。換句話說,與其他進程共用資料的進程為共同作業進程。
提供環境允許進程共同作業,具有許多理由:
-
資訊共用:由於多個使用者可能對同樣的資訊感興趣(例如共用檔案),所以應提供環境以允許並行存取這些資訊。
-
計算加速:如果希望一個特定任務快速執行,那麼應將它分成子任務,而每個子任務可以與其他子任務一起並行執行。注意,如果要實現這樣的加速,那麼計算機需要有多個處理核。
-
模組化:可能需要按模組化方式構造系統,即將系統功能分成獨立的進程或執行緒。
-
方便:即使單個使用者也可能同時執行許多工。例如,使用者可以並行地編輯、收聽音樂、編譯。
共同作業進程需要有一種
進程間通訊機制(簡稱 IPC),以允許進程相互交換資料與資訊。進程間通訊有兩種基本模型:
共用記憶體和
訊息傳遞(訊息佇列):
-
共用記憶體模型會建立起一塊供共同作業進程共用的記憶體區域,進程通過向此共用區域讀出或寫入資料來交換資訊。
-
訊息傳遞模型通過在共同作業進程間交換訊息來實現通訊。
圖 1 給出了這兩種模型的對比。
圖 1 通訊模型