Process
Unix 中暫停的作業會發生什麼?
我們可以發出
CTRL+Z
暫停 Unix 中的任何作業,然後使用fg
或使它們恢復生機bg
。我想了解那些像這樣暫停的工作會發生什麼?他們被殺死/終止了嗎?換句話說,殺死和暫停程序有什麼區別?
作業沒有被殺死,它們被暫停。它們完全保持在暫停時的狀態:相同的記憶體映射,相同的打開文件,相同的執行緒,……只是程序坐在那裡什麼都不做,直到它恢復。就像你暫停一部電影一樣。掛起的程序的行為與調度程序頑固地拒絕給 CPU 時間的程序完全相同,只是程序狀態被記錄為掛起而不是執行。
從使用者的角度來看,這意味著作業已暫停。它將不再使用任何 CPU。但是,它將繼續使用相同數量的 RAM。這就是為什麼你可以將它帶回到前台,
fg
它會從它停止的地方繼續。如果您殺死一個作業然後重新啟動它,它將從頭開始。