2003-07-11 [長年日記]

[Q3] 新着メールのチェック (3)

感覚的なものかもしれませんが、本体メモリにメールボックスを置いているとそこまで重くない気がします。しかし、SDカードの書き込みにCPUパワーを使うというのもないですよね。

[Q3] 本体メモリにメールボックス

試しに1メッセージ1ファイルになるようにしてみました。本体メモリはクラスタギャップが発生することもないので、ファイルをいっぱい作っても良いだろうということで。メッセージボックスを1MBで分割していたときに比べると描画が極端に遅くなることは減った気がします。でもやっぱり時々引っかかりますね。

ところで、本体メモリに置くと受信なども恐ろしく速くなりました。うれしいような悲しいような。。

[SIG3] SDカードのドライバ (3)

以前書いたように無線LANカード挿したまま電源を切るとSDカード上のファイルへのハンドルが無効になってしまいます。

それじゃあと思って試してみました。まずSDカード上に実行ファイルを置いて実行します。無線LANカードを挿したまま電源を切ります。そして電源を入れて実行中のプログラムの実行ファイルを削除すると、削除できてしまいます。普通実行中の実行ファイルは削除できないのですが。つまり、OS側が実行中として掴んでいる実行ファイルへのハンドルも無効になってしまうということですね。

テキストセグメントやリソースのように不変なデータはメモリ上にロードされつづけるわけではなくて、不必要になると捨てられて必要になったときに実行ファイルから再度ロードされることがあります(少なくともWindowsでは。CEでも同じようなことが起きると思うのですが詳しくないので知りません^^;)。でも、上で書いたように実行ファイルへのハンドルが無効になってしまうとロードできずにクラッシュしてしまうことになりますね。もちろん明示的にリソースをロードした場合も同様でしょう。

[SIG3] SDカードのドライバ (4)

試しにリソースの明示的なロードで試してみました。プログラムを実行してからメッセージボックスで止めて、電源を落とします。再度電源を入れた後で、メッセージボックスを閉じるとリソースをロードします。

やはり、リソースのロードに失敗しますね。もちろん明示的にロードする場合、リソースをロードする関数は失敗して戻ってくるので検出は可能ですけど。


トップ «前の日記(2003-07-10) 最新 次の日記(2003-07-12)»