CPU, RAM, Chipset/BIOS, аппаратное обеспечение (периферийные устройства) и ОС

Я просто хотел бы прояснить точный порядок взаимоотношений между оборудованием (точнее, периферией - мышью, клавиатурой и т. Д.), ОС, набором микросхем /BIOS, оперативной памятью и процессором:

Мое понимание: Действие: Нажмите кнопку на экране с помощью мыши: 1. Любой ввод с аппаратного обеспечения обрабатывается драйверами устройства (будь то системное ПЗУ BIOS, дополнительное ПЗУ BIOS или программные драйверы). 2. Из драйверов инструкции отправляются в набор микросхем (южный мост в случае устройств ввода-вывода), а затем в ЦП для обработки. 3. Из процессора команды сохраняются в оперативной памяти, а затем передаются в ОС.

Это правильная цепь событий?

Спасибо

1 ответ

Решение

Более или менее, если мы предполагаем доступ DMA, это будет порядок:

  1. Он начинается с аппаратного устройства, вызывающего прерывание для какого-либо события. Это приводит к тому, что контроллер прерываний прерывает ЦП, что (при условии, что прерывание не маскируется, а ЦП еще не выполняет другое прерывание) заставит ЦП захватывать прерывания, а операционная система обычно обрабатывает его, обычно выполняя код в драйвер устройства.

  2. Любой ввод с аппаратного обеспечения обрабатывается южным мостом (который он подключен к северному мосту по внутренней шине) и сохраняет значения в адрес назначенной памяти в основной памяти (RAM).

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

Помните, что драйверы не предназначены для работы с BIOS для получения данных (они могут получать информацию оттуда), и ОС организует код, позволяющий процессору выполнять его. Я не уверен, но я думаю, что процессор никогда не знает, что является вводом от оборудования, это просто еще один код / ​​данные с адреса памяти.

Извините за мой английский или, если я допустил ошибку, исправьте меня и добавьте комментарий, я обновлю текст.

Другие вопросы по тегам