2011-07-04 17 views
-2

実行時にプロセスのリソース使用量(時間、メモリ、システムコール)を監視しようとしていますが、ptrace、linuxのsetrlimitなどのウィンドウにapisがありますか? ありがとう実行時にプロセスのリソース使用量(時間、メモリ)を監視する方法はありますか?

+0

コンパイル時にリソースの使用状況を監視できますか? :Pあなたが探しているのは、プロファイラーと呼ばれるツールです。 Web上のC++/C#プロファイラを検索します。 –

+0

あなたの提案をお寄せいただきありがとうございます。私はWindows上で簡単なオンラインジャッジを作成しようとしており、ユーザーのコードをコンパイルし、https://www.spoj.plのような限られた時間とメモリでプログラムを実行できます。私は何を使うべきですか? – shiwei

+0

必要なものをさらに説明してください。プロセスが使用できるメモリの量とCPU時間の制限を設定したいと思うようです。そうですか?さまざまな指標があるため、メモリの意味を定義してください。 –

答えて

0

あなたはC/C++(またはC#P /呼び出しを介して)にしたいものに応じたAPIの束があります。

例えば、探し始めるために、

は、プロセスのCPU時間(UM/KM) : http://msdn.microsoft.com/en-us/library/ms683223(VS.85).aspx

プロセスVM(ワーキングセット): http://msdn.microsoft.com/en-us/library/ms683226(v=VS.85).aspx

プロセスI/Oデータ: http://msdn.microsoft.com/en-us/library/ms683218(v=VS.85).aspx

これらを試すことができます。

0

いくつかの方法があります。まず、プロセスを低保全プロセスとして実行したいと考えています。これは、Internet Explorerの実行方法に似ています。そのようなプロセスは、他のプロセス、レジストリ、およびファイルシステム(選択された低完全性ディレクトリを除く)から分離されます。

第2に、あなたは実行可能ファイルを管理しています。どのDLLや関数を使用することが許可されているかをホワイトリストに登録する必要があります。ブラックリストにはCreateProcessの亜種が多すぎます。これは、危険な機能を排除するためにCRTを再構築する必要があるかもしれません。

サンドボックスC#のコードはやや簡単です。明らかに安全なコードに制限する必要があります。 PEVerifyがお手伝いできます。

0

この種の分析には、ProcMon、Process Explorer、ProcessMonitor、Performance Monitorなどのシステムツールを使用できます。システムコールの追跡は、実際には難しい作業です。アプリケーションによって数百のシステムコールが作成されます。このようなタイプの深いプロファイリングには、Inter VTune Analyzerのようなツールを使用する必要があると思います。

関連する問題