Tanenbaumの最新のオペレーティングシステム、
すべてのオペレーティングシステムには、I / Oデバイスを管理するI / Oサブシステムがあります。一部のI/Oソフトウェアは デバイス独立つまり、複数またはすべてのI / Oデバイスに同じように適用されます。デバイスドライバなどの他の部分は次のとおりです。 特定のI/Oデバイスのみ。
I / Oソフトウェアシステムの階層図もあります。
下の2つの写真LinuxIOサブシステム、デバイス独立コンポーネントとデバイス依存コンポーネントの間に線を描くことはできますか?つまり、どのコンポーネントがデバイス依存であり、どのコンポーネントがデバイスに依存しませんか?私の考えでは、「ドライバ」はデバイスによって異なり、「VFS」はデバイスに依存しないと思います。しかし、他のコンポーネントについてはよくわかりません。
同じ本から:
BovetのLinuxカーネルの理解2005にも次の記事があります。
答え1
最初のLinuxダイアグラムの「デバイスドライバ」セクションの上のBovetダイアグラムでも同様です。
オペレーティングシステムを作成するときは、より多くのデバイスをきれいに追加できるように、デバイス関連の部分をできるだけ分離したいと思います。 Linuxの場合、「ディスクデバイスドライバ」(または「ネットワークカード」、「WiFiカード」など)はクラスオブジェクト指向プログラミングの意味では、これは各デバイスタイプのクラス(例:「Realtek Semiconductor Co.、Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller」)のクラスにさらに細分化され、複数のクラスにインスタンス化できます。 。必要に応じて同じ(または十分に似た)デバイスのコピー。例えば、誰のオブジェクト場合によっては、デバイス固有の機能は、WiFi管理ドメインや制限(元の各ドライバの一部である)の完全な複雑な処理など、高レベルのサブシステムに抽象化されます。 USB を使用し、USB ディスク経由の SCSI または IP 経由の SCSI (光ファイバー ネットワーク インターフェイス経由で実行) で処理される USB サム ドライブなどのデバイス層がある場合もあります。
簡単に言うと:このきれいな分離(「オペレーティングシステム」のテキストに見られるように)は単に非常におおよその最初の近似によると、現実ははるかに興味深い混乱です。