- ベストアンサー
Windowsにおけるサブルーチンの実行時間
今日は! 東芝製にWindows7を使用しています。 サブルーチンの実行時間について質問します。 通常約0.5msで実行できるサブルーチンの実行時間がが、時々40ms程度かかる ことがあります(1時間に一回程度か?)。 セキュリティーとインターネット接続は外しています。 タスクマネージャーでプロセスをみますと、このAppと、他にperfmon.exe 、svchost.exe等が多少動いている様です。 Q1)この程度の実行時間変動は、Windowsでは普通でしょうか? 東芝製のPower_saverが影響しているかとも考えています。 以上、宜しくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
普通です、それどころか更に遅い場合もあります。 WindowsというOSは元々実行時間を完全に保証する仕組みではありません。 そういうのはリアルタイムOSなどと呼ばれて、組み込み系などであります。 http://www.mnc.co.jp/INtime/MncPresidentPage/hikaku.htm Windowsでできるだけリアルライムにソフトを動かそうとすると、デバイスドライバ等の特権レベルで動作するプログラムをする必要がありますが、それは難しくかなり制約のあるものです。 また特権レベルのモジュールでバグや不具合などが起こると、まずPCがフリーズしたり落ちたりします。
その他の回答 (1)
- yama1718
- ベストアンサー率41% (670/1618)
すみません、私もそこまでは詳しくないので、 でも言われている通りリアルタイム性が必要な処理なら一体でカーネルモードで作るべきでしょうね。 少なくともそのUSBドライバなどのソースリストが無いと難しいと思います。 メーカーに問い合わせてみてはどうでしょうか。 WindowsのカーネルモードのプログラムはDDKやWDKなどの専用の開発キットを使います。 http://www.atmarkit.co.jp/fwin2k/win2ktips/029overkernel/overkernel.html http://www2.softether.jp/en/vpn2/old/journal/02.aspx 前に話したプログラムが難しい理由はカーネルモードでは使える関数やAPIが非常に限定されるからです。 あとデバックもかなり面倒です、すぐにフリーズやブルー画面で落ちますから。 先のドライバのソースリストがあればバッファの値を増やして再ビルドするだけで済むような気がします。 また、レジストリなどにそのドライバーの設定があってバッファ値が設定されていたら、それをいじるだけでバッファを増やせるかもしれません。
補足
毎度、お世話になります コメント有難うございます。 >WindowsのカーネルモードのプログラムはDDKやWDKなどの専用の開発キットを使います。 <---以前、USBのデバイスドライバーの開発をDDKやWDKでトライしましたが、出来上がりの ものがありましたので、中止しました。 柏野政弘作の汎用デバイスドライバーUUSBDがありましたので、中止しました。 多分、Windows8.1以降には、利用できないと考えています。 WindowsなるOSは優れたものですが、独占企業の傲慢さがあり、情報開示不足の傲慢さが 有りますね。 世界のPC関係企業は、MSの奴隷になった感が無きにしもあらずですね。 日本発のtron?があるようですが、目先の利益しか考えられない状態かもしれません。 大変な困難にあわないと目が覚めないと思います。
補足
yama1718さん 情報有難うございます。 音声データーの読込みのためにlibusb_1.0を使用して、USBを使用しまして非同期で読込んでいます。 (48000サンプル/秒、4ch、32ビット/ch) このデバイスドライバーは、usBデーターの取込み部分と、読取開始部分がありますが、 この2個の部分にの間に、読込んだbulkデーターをバッファーにセーブするためのルーチンが必要ですが。 このコードは、ユーザが作成したものであり、特権命令ではありません。 このユーザーが作成したコードの部分を特権を持たせることは可能ですか? 又は、下記のスレッド全体を特権化できますか? 1)usBデーターの取込み部分 <--libusb_1.0のデバイスドライバ 2)ユーザーが作成したコード <--ここが問題かも知れません。 3)読取開始部分 <--libusb_1.0のデバイスドライバ 注1)デバイス側で約40msに相当するバッファーをもっています。 注2)VC++のApp場合は、問題が少ないようですが、javaのAppの場合は、ブロック抜けが 頻繁に起きます。 この件に付いて、コメント頂ければ有り難いです。