人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

自作のプログラムをUSBから実行しているときにUSBメモリを引っこ抜いた場合、ファイル操作がないためか処理が正常に動作し続けました。実行ファイルは、実行後になくなっても正常動作し続けるものなのでしょうか?
Windowsのバージョンごとに違うと思いますが、考え方も含めて教えていただきたく宜しくお願いします。

●質問者: harunoharuno
●カテゴリ:コンピュータ インターネット
✍キーワード:USB USBメモリ Windows バージョン ファイル
○ 状態 :終了
└ 回答数 : 7/7件

▽最新の回答へ

1 ● きゃづみぃ
●30ポイント

http://www.sugilab.net/jk/joho-kiki/1406/index.html

パソコンには メモリという記憶するところがあります。

パソコンによって違いますが、そのメモリは 256MBとか 512MBなどの容量があります。

実行させるプログラムは たいてい 数メガ以下ぐらいでしょう。

たとえば 1MBの場合、パソコンは いったんそれを メモリにすべて読み込みます。

256MBのメモリに1MB読み込むと 残りは 255MBとなります。

そして実行は、すべてそのメモリの中で 行われるため そのプログラムの元は 必要なくなります。

巨大なブログラムの場合は、その実行単位のプログラムを 細かくわけて メモリにすべて読み込まなくていいようにしています。

◎質問者からの返答

変数などがメモリに蓄えられるという話は聞いたことがあります。起動後exeがなくなってもそのエリアを見て処理を行っているため動作し続けることができるのですね。回答ありがとうございました。


2 ● くまっぷす
●30ポイント

http://www.atmarkit.co.jp/fwin2k/special/winxp_over/winxp_over_1...

基本的にプログラムが実行されるのは本体内のメモリ(RAM)にロードされてからです。

したがって質問者さんのプログラムがメモリ上に全部入りきってしまったとするとそのまま動きつづけることはありえます。

もちろん、プログラムが大きくて、かつメモリが少ない場合は部分的に必要なところだけ適宜読み込んで実行、ということを行うので例えばその自作のプログラムも全ての機能が問題なく動いたかどうかはわかりません。

◎質問者からの返答

基本的にプログラムはメモリに読み込んで実行するが、でかいプログラムの場合は、必要な場所のみ順次メモリに蓄えられて処理を行うという感じなんですね。私が作ったプログラムは、2M位なのでメモリにすっぽり収まった形になったようですね。


3 ● goldenden
●20ポイント

RAMディスク

http://ja.wikipedia.org/wiki/RAM%E3%83%87%E3%82%A3%E3%82%B9%E3%8...


メモリは高速な記憶領域としての利用も可能です。

かつてのDOS、また最近の特化した1FDLinux(HDDレス、FDDレス)も

メモリ領域にOS、プログラムがメモリにコピーされ利用されています。


RAMディスクにプログラムを置いて、実行するのと同じような状態だと思います。

◎質問者からの返答

回答ありがとうございます。


4 ● kurukuru-neko
●40ポイント

>正常動作し続けるものなのでしょうか?

プログラムを実行→

USBメモリーよりプログラムを主記憶(RAM)

に読み込み実行する。 このときWindowsは、

主記憶(RAM)に余裕がある場合、プログラム

を全て主記憶(RAM)に読み込んでしまう。

プログラムの容量が大きい場合は、必要な部分

のみを主記憶(RAM)に適時読み込みを行う。

通常プログラム実行中はUSBメモリーを

抜けない場合Windowsが警告をだすが、

人が勝手に抜いた場合プログラムがエラー

となり処理を中断する可能性もある。

http://www.wincons.or.jp/view/vol23/page8.html

http://ja.wikipedia.org/wiki/%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%B...

http://ja.wikipedia.org/wiki/%E4%BB%AE%E6%83%B3%E3%83%A1%E3%83%A...

◎質問者からの返答

プログラムの容量が大きい場合は、必要な部分

のみを主記憶(RAM)に適時読み込みを行うのですね。

私のプログラムは容量が少ないので、USBメモリを抜いても問題なかったのでしょう。

仮想記憶という仕組みの説明を見て、メモリが不足した場合、

HDDなどにデータを待避するようなイメージかなぁと考えました。

これだったら、メモリに全てのデータが入っている場合でも、

HDDなどに待避されるはずですし、USBがなくても

動作上問題がないように思えます。


5 ● hissssa
●30ポイント

Windowsのメモリ管理の仕組みに依存する話ですね。ある程度は他の方も言及されているので補足をば。

Windowsでアプリケーションを実行する際、当然そのプログラムコードがメモリに読み込まれて実行されるわけですが、このときにそのメモリエリアには「Discardable」(破棄可能)な属性が付与されています。この属性が付与されたメモリエリアは、もしメモリが不足した場合にOSによって削除されてしまいます。

ただ、そこに置かれていたプログラムコードは、通常ならディスク装置に残っているわけなので、必要ならいつでもまた読み込む事ができます。よって、プログラム処理がまたその部分のコードを必要としたときに、OSはその部分のメモリを再確保してプログラムコードを読み込み、何事もなかったかのように処理を継続するわけです。

ご質問のようにUSBメモリに書かれたプログラムを実行し、その後そのメモリを強制的に抜いたような場合は、そのプログラムがこのメモリ破棄という状態にならない限り、継続して動作し続けることが出来ます。もし破棄が実施されて、その後に再読込みが必要になった場合、その時点でアプリケーションエラーが発生してプロセスが停止することになります。

まぁUSBメモリにおく程度の小さなプログラムなら、破棄されるようなことはめったにないとは思いますが・・・。

http://support.microsoft.com/kb/112676/ja

◎質問者からの返答

>>メモリエリアには「Discardable」(破棄可能)な属性が付与されています

破棄可能ということならEXEがなくなったときの

動作は、かなり不安定な状態ということになりますね。回答ありがとうございます。


1-5件表示/7件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ