2012-05-24 1 views
3

Насколько я понимаю, любая программа скомпилирована в серию инструкций по сборке для архитектуры, на которой она работает. Я не понимаю, как операционная система взаимодействует с такими периферийными устройствами, как видеокарта. Разве сам драйвер не является серией инструкций по сборке для CPU?Как взаимодействует ОС с периферийными устройствами, такими как звуковые карты/видеокарты и т. Д.

Единственное, что я могу думать, это то, что он использует области памяти, которые затем контролируются периферийным устройством, или использует шину для обмена данными и получения результатов. Есть ли простое объяснение этому процессу.

Извините, если этот вопрос слишком общий, это то, что меня беспокоит.

+0

Вопрос очень общий, поэтому вы в значительной степени ответили на него в своем 2-м абзаце. Существуют просто инструкции, которые позволяют процессору взаимодействовать с подключенными к нему устройствами. Детали зависят от конкретной реализации. Вы можете попробовать wiki на [bus] (http://en.wikipedia.org/wiki/Bus_%28computing%29) –

ответ

2

Вы в основном правы в своих предположениях. В зависимости от архитектуры ЦП, периферийные устройства могут реагировать на «ввод-вывод с памятью» (где они смотрят на чтение и запись на определенные адреса памяти) или на другие конкретные инструкции ввода-вывода (такие как инструкции x86 IN и OUT) ,

Драйверы устройств - это программное обеспечение, специфичное для ОС, и обеспечивают интерфейс между ОС и оборудованием.

Специфическое физическое устройство либо имеет аппаратное обеспечение, которое знает, как реагировать на любые сигналы от процессора, который он контролирует, либо имеет собственный процессор и программное обеспечение, которое часто называют прошивкой . Прошивка устройства не относится к какой-либо операционной системе и обычно хранится в постоянной памяти на устройстве даже после его выключения. Однако некоторые периферийные устройства могут иметь прошивку, загруженную драйвером устройства при загрузке ОС.

2

Есть простые объяснения и есть правдивые объяснения - выберите один!

Я попробую простой: по инструкции по сборке есть некоторые, которые предназначены для общения с периферийными устройствами. Аппаратное обеспечение интерпретирует их не, например, добавляя значения в регистры или записывая что-то в ОЗУ, но перемещая некоторые данные из регистра или области в ОЗУ на периферию (или наоборот).

Внутри ОС, например, звуковой драйвер отвечает за сбор некоторых звуковых данных вместе с некоторыми командами в ОЗУ, а ОС затем вызывает драйвер шины для выдачи этих специальных инструкций для перемещения команды и данных на звуковую карту. Аппаратные средства звуковой карты (надеюсь) понимают команду и интерпретируют данные как звук, который он должен играть.