2011-07-04 46 views
-2

我想在運行時監視進程的資源使用情況(時間,內存,系統調用),在Windows中是否存在apis,如ptrace,setrlimit在linux中? 謝謝如何在運行時監視進程的資源使用情況(時間,內存)?

+0

您可以在編譯時監視資源使用情況嗎? :P你在找什麼是稱爲分析器的工具。在Web上搜索C++/C#分析器。 –

+0

感謝您的建議。我試圖在Windows上編寫簡單的在線裁判,它可以編譯用戶的代碼並在有限的時間和內存中運行程序,如https://www.spoj.pl。因此,我需要一些建議我應該用什麼winapis。 – shiwei

+0

解釋更多你需要的東西。這聽起來像是你想限制一個進程被允許使用多少內存和多少CPU時間。是這樣嗎?請根據記憶來定義你的意思,因爲有很多不同的指標。 –

回答

0

有幾種方法。首先,您會希望將流程作爲低完整性流程運行。這與Internet Explorer的運行方式類似;這些進程與其他進程,註冊表和文件系統(除選定的低完整性目錄之外)隔離。

其次,你在控制可執行文件。您應該列出允許使用哪些DLL和功能的白名單。黑名單中只有CreateProcess的變體太多。這甚至可能需要重建CRT以消除危險功能。

沙盒C#代碼有點容易。您顯然必須將其限制爲安全代碼。 PEVerify可以幫助那裏。

0

您可以使用ProcMon,Process Explorer,ProcessMonitor和Performance監視器等系統工具進行此類分析。跟蹤系統調用實際上是一項艱鉅的工作,將會有數百個系統調用將由應用程序進行。我認爲你必須使用一些像Inter VTune Analyzer這樣的工具來進行這種類型的深度剖析。

相關問題