2010-02-17 182 views
0

當一個帶有一些theards,mutexes,共享數據,程序的文件句柄由於內存分配太多而崩潰時,所有資源都被釋放。你如何恢復?Linux的資源管理

+1

Hooooooooooooooomework? –

+0

不,面試問題。 – Swapna

回答

1

如果你的意思是,你如何回去並釋放現在崩潰的進程分配的資源,那麼你不必這樣做。

當進程退出(2)或死於某個信號時,將檢索所有OS分配的資源。這是內核的工作。

+0

但是這個過程並沒有做一個乾淨的退出,而不是爲什麼os首先沒有釋放它? – Swapna

+2

無論是因系統調用還是信號而發生退出,它都會執行相同的內核代碼並執行相同的清理。這就是內核的工作,如果它沒有發生就稱爲泄漏,它就像內核漏洞一樣嚴重,這是因爲撤回發佈,發佈安全警報,並且通常會引發各種緊急情況更新歇斯底里。 – DigitalRoss

1

您可以通過檢查資源獲取功能的結果並首先不允許未經檢查的錯誤進行恢復。

+2

在現實世界中,錯誤發生。 – leeeroy

+0

嘗試/捕獲內存分配可以幫助您安全關閉。 除非OOM殺手讓你第一次。 – Xorlev

+0

malloc永遠不會在Linux上失敗。當Linux嘗試使用不存在的內存時,Linux會殺死應用程序。一個嘗試/捕獲將無助於此。 –

1

清理屬於該進程的所有資源。

唯一的例外是sysv共享內存/消息隊列/信號 - 雖然可能由進程創建,但它不屬於它。