1

大きなメモリ ブロックを使用する必要がある Barnes-Hut アルゴリズムを使用して、C で N 体シミュレーションを作成しています。スピードと効率を追求しています。これらのメモリ ブロックが RAM に残り、ハード ドライブにページングされないことを保証する方法はありますか?

編集: 2GB ほど割り当てたいと思いますが、より多くのメモリを使用していくつかのシミュレーションを実行することになる可能性があります。

編集:ソリューションはWindows7(おそらくWindows8が出てくると思いますか?)とUbuntuをサポートする必要があります

4

2 に答える 2

2

必要なことを行うオペレーティング システム プリミティブがありますmlock。Unix (Ubuntu はその一例です¹) とVirtualLockWindows です。(VirtualLock の正確なセマンティクスに関するコメントの口論は無視してください。それらはユース ケースには関係ありません。)

Unix プリミティブでは、呼び出しプロセスに特権が必要です (一部のシステムでは、特権なしで少量rootのメモリをロックできますが、それ以上のものが必要です)。Windows プリミティブは、特別な特権を必要としないようです。

¹ 「Linux は UNIX ではない」という反対意見が指摘され、偏見をもって無視されました。

于 2012-10-01T00:21:08.983 に答える
1

Linux の場合: mlock(2) が機能します。

https://www.kernel.org/doc/man-pages/online/pages/man2/mlock.2.html

ただし、標準システムでは通常、ユーザー mlockable メモリの量が制限されていることに注意してくださいulimit -l

Windows 版は VirtualLock です。制限があるかどうか、またどのように照会できるかはわかりません。

http://msdn.microsoft.com/en-us/library/windows/desktop/aa366895%28v=vs.85%29.aspx

于 2012-10-01T00:25:18.987 に答える