Подсистема управления внешними устройствами называется также подсистемой ввода-вывода. Она играет роль интерфейса со всеми устройствами, подключенными к компьютеру. Номенклатура выпускаемых внешних устройств – накопителей на жестких, гибких, оптических и магнитооптических дисках, принтеров, сканеров, плоттеров, модемов, сетевых адаптеров, а также специализированных устройств, таких как аналого-цифровых, цифро-аналоговых и прочих преобразователей – насчитывает сотни и тысячи моделей. Каждое из этих устройств характеризуется своим набором команд, а также протоколами обмена информацией с процессором и памятью компьютера, скоростью работы, кодировкой данных, возможностью совместного использования и множеством других характеристик.
Программа, управляющая работой конкретной модели внешнего устройства и учитывающая все его особенности, обычно называется драйвером этого устройства. Драйвер может управлять единственной моделью устройства, например, модемом Onmi PCI фирмы ZyXEL, или группой устройств определенного типа, например, любыми Hayes-совместимыми модемами. Пользователю обычно важно наличие как можно большего количества разнообразных драйверов. От этого часто зависит успех той или иной операционной системы. Так, именно отсутствие драйверов многих популярных внешних устройств было причиной низкой популярности OS/2.
Созданием драйверов устройств занимаются как разработчики конкретной операционной системы, так и разработчики конкретных внешних устройств. Обычно операционная система поддерживает хорошо определенный интерфейс между драйверами и остальной частью операционной системы. Часто этот интерфейс бывает открытым, иногда – частично.
В принципе, никто не мешает прикладным программистам пользоваться этим интерфейсом в своих программах. Однако, обычно этого не делают, так как такой интерфейс представлен низкоуровневыми операциями, обремененными большим количеством деталей и параметров.
Одной из наиболее важных задач операционной системы является поддержание высокоуровневого унифицированного интерфейса прикладного программирования (API). В последнее время в большинстве операционных систем этот интерфейс строится на концепции файлового доступа. Эта концепция заключается в том, что обмен с любым внешним устройством выглядит как обмен с файлом, имеющим имя и представляющим собой неструктурированную последовательность байтов. В качестве файла может выступать как реальный файл, так и одно из реальных внешних устройств (клавиатура, принтер, сетевой адаптер и т. д.).