程序的不同操作


可以對程序執行許多操作。其中一些是程序建立、程序搶佔、程序阻塞和程序終止。這些操作的詳細說明如下:

程序建立

系統需要為不同的操作建立程序。這可以透過以下事件完成:

  • 使用者請求建立程序
  • 系統初始化
  • 執行程序執行程序建立系統呼叫
  • 批處理作業初始化

可以使用 fork() 函式由另一個程序建立一個程序。建立程序的程序稱為父程序,建立的程序稱為子程序。一個子程序只有一個父程序,但一個父程序可以有多個子程序。父程序和子程序具有相同的記憶體映像、開啟的檔案和環境字串。但是,它們具有不同的地址空間。

演示使用 fork() 建立程序的圖表如下:

fork

程序搶佔

搶佔使用中斷機制來掛起當前正在執行的程序,下一個要執行的程序由短期排程程式確定。搶佔確保所有程序都能獲得一些 CPU 時間來執行。

演示程序搶佔的圖表如下:

Process Preemption

程序阻塞

如果程序正在等待某些事件發生,則該程序將被阻塞。此事件可能是 I/O,因為 I/O 事件在主記憶體中執行,不需要處理器。事件完成後,程序再次進入就緒狀態。

演示程序阻塞的圖表如下:

Process Blocking

程序終止

程序完成其最後一條指令的執行後,它將終止。程序終止後,它持有的資源將被釋放。

如果子程序的任務不再相關,則其父程序可以終止它。子程序在終止之前將其狀態資訊傳送給父程序。此外,當父程序終止時,其子程序也將終止,並且如果父程序終止,子程序將無法執行。

更新於:2020年6月24日

22K+ 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.