2010-12-07 21 views
0

別のプロセスのイメージ全体をメモリにページアウトしますか?数週間後、私たちのITスタッフは、すべての「コア」ネットワークスイッチを交換します。これにより、ネットワークがダウンします。これは通常の営業時間後に行われます。この間、いくつかのユーザーは私が書いたプログラムを使用しています。私のプログラムのローカルコピーを各ユーザのマシンにインストールするのは悪夢です。プログラムは通常、ネットワーク共有から実行されます。プログラムがネットワークにアクセスする唯一の時間は、プログラムが実行可能な(イメージ)コードを実行するときです。 Windowsのメモリマネージャーを使用してイメージ全体をメモリにロードし、ネットワークがオンラインに戻るまで「ロック」しておく方法を教えてください。共有可能なメモリをロックする

答えて

1

これはうまくいきません。

Windowsは実行ファイルの「静的な」コピーを必ずしもメモリにロードするとは限りません。チャンクをシャッフルしたり、ページパーツを出し入れすることは自由です。多くの場合、プログラムの実行が開始された後、実行可能ファイルからリソース(イメージ、文字列など)が読み込まれます。外部ライブラリを動的にロードすることがよくあります。

編集を追加する:

を「プロセスの全体像」のようなものはありません。たとえば、すべてのスレッドは独自の割り当てを取得します。

別の場所(つまり、バイナリのローカルコピー)からの実行がうまくいかない理由を説明してください。

+0

私はこのことを認識です。私は画像をメモリにロックしたい。これを行うVirtualLock関数があります。しかし、それは呼び出すプロセスだけであり、イメージの各セクションのベースアドレスと長さも把握する必要があります。 – Mike

+0

ローカルディスクにプログラムをコピーすることは、起動時にサーバー上のいくつかのファイルにアクセスする必要がない場合に機能します。申し訳ありませんが、私はそれについて言及しませんでした。私はいくつかのシステムAPIを呼び出す小さなプログラムを書いて、EXEのコードセクションとデータセクションをメモリに「ロック」することを望んでいました。 – Mike

1

一時ディレクトリに自分自身をコピーし、別のプロセスとしてそのコピーを実行してから、自分自身を殺す(最初のコピー)ように書くことができます。私はこの小さなジャグリングを以前にやったことがありますが、それはtempディレクトリから実行されるかどうかにかかわらず、プログラムがどのように動作するかによって異なります。

+0

これはうまくいくかもしれませんが、彼は彼のプログラムが "インストールされている"と言っているようです。 – egrunin

+0

@egruninええ、それは私が疑問に思ったことです。彼らはそれをインストールせずにネットワークから単に実行することができれば、別の場所にまっすぐにコピーされていれば、どのような違いがありますか。だからこそ、私はそれがどのように機能するかにかかっていると言いました。 – AaronLS

+0

これは興味深い考えですが、私のプログラムでは起動時にプログラムと同じディレクトリに存在する必要があるファイルがいくつか必要です。私は別の考えがあります。 EXXのようなEXEコンプレッサでEXEを圧縮すると、圧縮解除されたイメージはプライベートと見なされるため、サーバー上のイメージではなくページファイルによって "バックアップ"されます。どう思いますか? – Mike

関連する問題