デバイスドライバをはじめ、デバイスにかかわるお困りごとの際はお気軽にお問い合わせください。
【 デバドラ講座9 : マルチスレッドとマルチタスク 】
1.マルチスレッドとマルチタスク
システム上で実行されているプログラムのことをプロセスと言います。例えば、Wordをインストールしたとします。インストールしただけではただのプログラムですが、実際にWordを起動することで1つのプロセスと呼ぶことができます。
1つのプロセスは、さらにスレッドと呼ばれる小さな実行単位に分けられます。通常1つのスレッドは1つの単純な機能を実装しており、1つのプロセスに最低1つのスレッドが存在します。例えば、Wordではキーボードからの入力を取得しモニタに表示させるスレッドと、必要に応じてHelpやエラーメッセージを表示するスレッドが並行してシステム上に走っています。1つのプロセスに多くのスレッドが存在することで、スレッドのスケジュール化が必要となります。
1つのプロセスに複数のスレッドが存在し並行して処理を行うことをマルチスレッドと言います。また、1つのPCで複数のプロセスを並行して処理を行うことをマルチプロセスといいます。マルチスレッドとマルチプロセスの両方を行えるものをマルチタスクと言います。つまり、マルチタスクは複数のスレッドを持つ複数のプロセスを並行して処理することができます。例えば、WordとExcelを同時に実行することはマルチタスクです。
2.NT Executive
NT ExecutiveはOSの基本サービスを提供し、10数個の機能モジュールが含まれています。NT Executiveが提供する主なサービスを下記に記します。
2-1. I/Oマネージャ
I/Oマネージャは入出力を管理します。周辺機器に関わるデータの読み出し、書き込み、設定など、OSの入出力に対する全ての操作を行います。I/Oマネージャはデバイスドライバに多くの機能を提供しています。デバイスドライバを開発する上で、I/Oマネージャは重要なので、後で詳しく説明します。
2-2. オブジェクトマネージャ
Windows NTはオブジェクトをベースするシステムです。オブジェクトとは、物理的または抽象的な実体を属性と操作の集合体としてコンピュータ上に再現したものです。オブジェクトマネージャはこれらのオブジェクトを管理します。すべての実体をオブジェクトという同じ形式で扱うことにより、その管理を容易にします。具体的には、オブジェクトの生成、削除、ネームスペースの維持、参照回数の追跡を行います。2-3. コンフィグレーション(構成)マネージャ
構成マネージャはレジストリによってシステムの構成を管理します。レジストリとはPCの構成情報等を保存するデータベースです。レジストリを介してデバイスドライバの管理も行います。
2-4. メモリマネージャとキャッシュマネージャ
メモリマネージャとキャッシュマネージャは、ユーザーモードとカーネルモードで使う全てのメモリの管理、割り当てを行います。デバイスドライバはメモリ関連の全ての動作についてメモリマネージャとやり取りをする必要があります。
2-5. プロセスマネージャ
プロセスマネージャは全てのプロセスとスレッドの作成、削除、管理を行います。スレッド間の同期処理のためのサービスも提供しています。プロセスオブジェクトとスレッドオブジェクトの構築のため、オブジェクトマネージャと共に機能し、実行します。また、プロセスとスレッドが実行中に必要とするメモリの確保のため、メモリマネージャと共に機能しています。
2-6. セキュリティ参照モニタ
セキュリティ参照モニタはWindows XPのセキュリティアクセスポリシーを実装しています。全てのシステムリソースへのアクセスはここを介して行われます。セキュリティの定義は行いませんが、ユーザー権限のチェックを行ったり、監査メッセージの生成を行ったりします。
2-7. ローカルプロシージャーコール(LPC: Local Procedure Call)
LPCは同一マシーン上でのプロセス間のメッセージ通信に使用されます。LPCはメッセージもしくは共有メモリを用いてクライアント/サーバー間でのデータのやり取りをサポートします。主に保護されたサブシステムとそのクライアント間で行われます。
2-8. サービス制御マネージャ
サービス制御マネージャはWindowsのロード後にデバイスドライバの起動と停止の処理を行います。また、ユーザーに提供する全てのサービス管理を行います。
2-9. Win32サポートコンポーネント
Win32サポートコンポーネントにはウィンドウズマネージャとグラフィックデバイスドライバが含まれます。ウィンドウズマネージャはウィンドウ機能、Windowメッセージの管理などを行います。Win32サポートコンポーネントはGUI(Graphic User Interface)の提供、管理を行います。
2-10. PnPマネージャ
PnPマネージャはプラグアンドプレイの機能のサポートを行います。
2-11. 電源管理(Power Management)
電源管理はPCの休止、休止状態からのウォームアップ、自動シャットダウン等の管理を行います。
参考資料
- IT用語辞典「マルチスレッドとは」
- http://e-words.jp/w/E3839EE383ABE38381E382B9E383ACE38383E38389.html
- nifty デジタル用語辞典「マルチスレッド」
- http://www.nifty.com/webapp/digitalword/word/027/02778.htm
- 「NTドライバプログラミング」
- Peter G. Viscarola、W. Anthony Mason著 久保雅俊、三浦秀朗訳 サイエンスパーク株式会社 監修
- 「Windows NTデバイスドライバプログラミング」
- アート・ベーカー著 WinProgDDK ML和訳プロジェクト訳
- 「WDMデバイスドライバ」
- Chris Cant著 エクストランス株式会社訳 サイエンスパーク株式会社 監修