基本からデバッグまで
基本02 デバイスドライバの種類と役割
デバイスドライバをはじめ、デバイスにかかわるお困りごとの際はお気軽にお問い合わせください。
1.デバイスドライバの種類
前回の講座では、ドライバをタクシーの運転手に例えて、て、デバイスとOSの橋渡しをする存在として紹介しました。しかし実際には、1つのデバイスを動作させるために、1つのドライバだけではなく、複数のドライバが必要になります。
ドライバは大きく3つに分類され、それぞれ異なる役割を担っています。ファンクションドライバは、デバイスの機能を直接制御するドライバです。バスドライバは、デバイスの接続や認識を管理するドライバです。そしてフィルタードライバは、機能を追加・調整する補助的なドライバです。
これらのドライバが連携することで、1つのデバイスが正しく動作する仕組みが成り立っています。
図1:ドライバの関係性
ファンクションドライバ
ファンクションドライバは、カメラ、プリンタ、マスストレージ、マウス、キーボードなど、さまざまなハードウェアを制御するためのインターフェースを提供するドライバです。これらのドライバは、ハードウェアとの通信や電源管理を行います。
ファンクションドライバはさらに以下の2種類に分類されます。
・クラスドライバ
同じ種類のデバイスに共通する基本的な機能を提供するドライバです。たとえば、すべてのプリンタやキーボードに共通する操作を扱います。クラスドライバは、OSとデバイスの間の標準的なインターフェースを提供します。
・ミニポートドライバ
特定のハードウェアに固有の機能を提供するドライバで、クラスドライバと連携して動作します。たとえば、同じ種類のネットワークカードでも、メーカーやモデルによって異なる操作が必要な場合があり、そのようなデバイス固有の処理をミニポートドライバが担当します。
バスドライバ
バスドライバは、デバイスがどのようにコンピュータに接続されるかによって分類されます。たとえば、USB接続のデバイスにはUSBバスドライバが、PCIe接続のデバイスにはPCIeバスドライバが使用されます。
バスドライバの主な役割は、接続されたデバイスを認識し、必要なリソース(メモリや割り込みなど)を割り当てることです。また、デバイスへの指示の送信、接続・取り外し時の処理、電源状態の管理要求への応答なども担います。
フィルタードライバ
ファンクションドライバの上位または下位、バスドライバの上位に挿入されるドライバで、フィルタリング機能を持ちます。これにより、ファンクションドライバに拡張機能を持たせることが可能となります。例えば、ネットワークパケットのフィルタリングやデータの暗号化などの機能を追加することができます。
2.近年の主要な接続子
ここでは、現在主に使用されている主要な接続子(インターフェース規格)について紹介します。
PCI Express(PCIe)
PCI Expressは、コンピュータ内部で拡張カード(GPU、SSD、ネットワークカードなど)を接続するための高速インターフェースです。シリアル通信を採用し、レーン数(x1, x4, x8, x16など)に応じて帯域幅を柔軟に拡張できます。最新のPCIe 5.0や6.0では、AI処理や高性能ストレージに対応するための非常に高い転送速度が実現されています。
USB(USB 3以前)
USBは、パソコンと周辺機器を接続するための汎用インターフェースとして広く普及しています。USB 2.0では最大480Mbps、USB 3.0では最大5Gbpsの転送速度を実現し、マウスやキーボードから外付けストレージまで幅広い用途に対応してきました。従来のUSBは主にデータ転送と給電に特化しており、映像出力やPCIe通信などの高度な機能は備えていません。
USB4 / Thunderbolt
USB4およびThunderboltは、データ転送・映像出力・電力供給を一本のUSB-Cケーブルで統合的に行える次世代の高速接続規格です。Thunderbolt 3以降の技術がUSB4に取り込まれたことで、両者は高い互換性を持ち、最大40Gbpsの転送速度、DisplayPort映像出力、PCIeデータ転送、最大100Wの給電などをサポートします。ノートPCやドッキングステーションなどでの活用が広がっています。
NVMe(Non-Volatile Memory Express)
NVMeは、SSDなどの不揮発性メモリに最適化されたストレージアクセス用プロトコルです。PCIeバスを利用することで、従来のSATA接続に比べて大幅に高速なデータ転送が可能となり、OSの起動やアプリケーションの読み込み速度が大きく向上します。高性能PCやサーバー、データセンターでの採用が進んでいます。
HDMI(High-Definition Multimedia Interface)
HDMIは、映像と音声を一本のケーブルで同時にデジタル伝送できるインターフェースで、テレビやモニター、ゲーム機、PCなどで広く使用されています。4Kや8Kといった高解像度映像に対応し、著作権保護機能(HDCP)も備えているため、家庭用エンターテインメント機器との親和性が高いのが特徴です。
DisplayPort
DisplayPortは、主にPCとディスプレイ間の接続に用いられる映像・音声伝送用のデジタルインターフェースです。高リフレッシュレートや高解像度に対応しており、ゲーミングやクリエイティブ用途に適しています。また、マルチディスプレイ接続や可変リフレッシュレート(VRR)などの先進機能もサポートしています。
イーサネット(Ethernet)
イーサネットは、有線ネットワーク接続の標準規格として、家庭から企業、データセンターまで幅広く利用されています。安定した通信と低遅延が特徴で、一般的な家庭用では1Gbps、業務用では10Gbps以上の高速通信が可能です。PoE(Power over Ethernet)による電力供給にも対応するなど、柔軟性の高い通信手段です。
OCuLink(Optical Copper Link)
OCuLinkは、主に内部ストレージや外部NVMeデバイスとの接続に用いられるPCIeベースのインターフェースです。小型で高速な接続が可能で、SFF(Small Form Factor)デバイスや組み込みシステムなど、スペースと性能の両立が求められる用途に適しています。外部接続にも対応しており、柔軟なストレージ構成が可能です。
3.カーネルモードとユーザーモード
-
Windowsのシステムは、カーネルモードとユーザーモードの2つのモードに分かれています。それぞれの違いは以下の通りです。
カーネルモード
OSの中核部分が動作するモードで、すべてのメモリ領域にアクセス可能であり、必要な処理をすべて実行できます。ただし、カーネルモード独自のルールがあり、問題が発生した際はOSが強制終了することもあるため、開発時にはまずユーザーモードでの実装を検討することが推奨されます。なお、カーネルモードにはGUIは存在しません。ユーザーモード
アプリケーションなど、ユーザーに近いプログラムが動作するモードです。メモリへのアクセスが制限されており、他のプログラムやカーネルに悪影響を与えないよう設計されています。デバイスドライバには、カーネルモードで動作するものと、ユーザーモードで動作するものの両方が存在します。用途やセキュリティ要件に応じて、適切なモードで設計・実装されます。