什麼是程序終止?


程序是正在執行的程式,它不僅僅是稱為文字段的程式程式碼,這個概念在所有作業系統下都適用,因為作業系統執行的所有任務都需要一個程序來執行。

程序在改變狀態時執行。程序的狀態由程序的當前活動定義。

每個程序可能處於以下任何一種狀態:

  • 新建 - 程序正在建立。

  • 執行 - 在此狀態下,指令正在執行。

  • 等待 - 程序處於等待狀態,直到發生某個事件,例如 I/O 操作完成或收到訊號。

  • 就緒 - 程序正在等待分配到處理器。

  • 終止 - 程序已完成執行。

重要的是要知道,在任何時刻,只有一個程序可以在任何處理器上執行。許多程序可能處於就緒和等待狀態。

程序操作

在程序上執行的兩個主要操作如下:

  • 程序建立

  • 程序終止

現在讓我們看看程序終止。

程序終止

當程序完成其最終語句的執行並使用 exit() 系統呼叫請求作業系統刪除它時。

此時,程序可以使用 wait() 系統呼叫將其狀態值返回給其父程序。

作業系統將釋放程序的所有資源,包括物理和虛擬記憶體、開啟的檔案和 I/O 緩衝區。

程序終止的原因

程序可能終止其一個子程序執行的原因如下:

  • 子程序超過其已分配的資源使用量。

  • 分配給子程序的任務不再需要。

  • 父程序正在退出,並且作業系統不允許子程序在其父程序終止後繼續。

一些系統(包括 VMS)不允許子程序在其父程序終止後繼續存在。在這些系統中,如果程序正常或異常終止,則其所有子程序都必須終止。這個概念被稱為級聯終止。

終止的原因

其他終止原因如下:

  • 時間片到期 - 當程序執行未在時間量子內完成時,程序將從執行狀態終止。CPU 選擇就緒佇列中的下一個作業來執行。

  • 記憶體邊界違規 - 如果程序需要的記憶體超過可用記憶體。

  • I/O 失敗 - 當作業系統不提供 I/O 裝置時,程序進入等待狀態。

  • 程序請求 - 如果父程序請求子程序終止。

  • 無效指令

更新於:2021年11月30日

12K+ 瀏覽量

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告