4.1. Device Drivers

Traditionally, the operating system is responsible for controlling devices on behalf of applications. Even though applications could control devices directly, delegating the task to the operating system keeps the applications device independent and makes it possible to safely share devices among multiple applications.

The operating system concentrates the code for controlling specific devices in device drivers. The details of controlling individual devices tend to depend on the device model, version, manufacturer and other factors. A device driver can hide these details behind an interface that is the same for a class of similar devices. This makes it possible to keep the rest of the operating system code largely device independent as well.

To be done.

Architektura I/O systému. Přítomnost přerušení ovlivňuje strukturu driveru, bude mít část obsluhující požadavky na přerušení od hardware, která je volaná asynchronně (kdykoliv přijde přerušení) a část obsluhující požadavky na operace od software, která je volaná synchronně (když aplikace nebo operační systém zavolají ovladač). Mezi těmito částmi se komunikuje většinou pomocí front a bufferů, vzniká problém se zamykáním takto sdílených dat, protože obsluha přerušení od hardware může běžet současně s obsluhou operace od software. Tento problém se řeší použitím mechanismů, které dovolují naplánovat na později vykonání operací, které jsou součástí obsluhy přerušení od hardware (v Linuxu bottom half handlers a tasklets, ve Windows deferred procedure calls, v Solarisu pinned interrupt thread pools).

Pro označení těchto dvou částí driveru se používají termíny bottom half (asynchronně volaná část driveru, která se stará převážně o požadavky hardware) a top half (synchronně volaná část driveru, která se stará převážně o požadavky software). Toto označení odpovídá chápání architektury, kde na nejnižší úrovni je hardware, následují drivers, pak operační systém, pak aplikace.

Zmíněné označení koliduje s termíny v Linuxu, který jako top half označuje okamžitě vykonávanou a jako bottom half odloženou část obsluhy přerušení. Zahlédl jsem označení této terminologie jako Linuxové a té zmíněné výše jako BSD, řada textů se zdá se oběma terminologiím vyhýbá.