Как ОС общается с другими аппаратными компонентами?

Как может, программа, работающая на ЦП (главным образом ОС), получает доступ к другим аппаратным средствам ПК? Такой как Видеокарта, жесткий диск и так?

Из того, что я читал в DOS, это было сделано с помощью вызовов BIOS, конкретно инструкция INT. Но, инструкция INT должна только перейти к определенному пространству в RAM. Таким образом, как некоторые могут программировать сохраненный в доступе RAM другое компьютерное оборудование, когда ЦП может только получить доступ к RAM, и получать прерывания?

Windows использует инструкции INT также или является там новым способом связаться с аппаратными средствами?

7
задан 20.09.2013, 13:40

4 ответа

[H] ой может программировать runnig на ЦП (главным образом, ОС) получают доступ к другим аппаратным средствам ПК? Такой как Видеокарта, жесткий диск и так?

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

Для 32/64-bit защищенных режимов, как используется MS Windows 95 и более новый, или Linux на x86 процессоре (IA-32), программные прерывания (такие как код операции INT для x86) переходят к соответствующей Таблице векторов прерываний (или диспетчеризируйте таблицу), который может направить ЦП, где в ОС процесс должен перейти к обработчику прерываний (или Процедура обработки прерывания, ISR) для того, чтобы обработать запрос.

В x86 реальном режиме как MS-DOS они могут быть обработаны BIOS, который предоставляет определенную подробную информацию реализации низкого уровня для той конкретной системы / чипсет / материнская плата.

[H] ой действительно ли некоторые могут программировать сохраненный в доступе RAM другой компьютер HW, когда ЦП может получить доступ только к RAM и прерываниям reeive?

Таким образом, Вы не хотите обычный ручной волнистый ответ? Я попытаюсь ответить на это, но я не инженер по вычислительной технике или эксперт архитектуры ЭВМ.

Существуют различные механизмы включая

(Src: CS 473 - IO, Университет штата Нью-Мексико, pfeiffer, 2006)

Самым простым является ввод-вывод с отображенной памятью, где адрес памяти мог бы быть отображен на регистрах устройства (например, последовательный UART) и ЦП и запись и/или читать определенные адреса памяти для доступа к аппаратным средствам непосредственно. Это быстро, и просто, но уменьшает диапазон адреса памяти того, что может использоваться в качестве RAM.

Другие - более усовершенствованные методы, разработанные для разрешения современных центральных процессоров и более усовершенствованных аппаратных средств доступа Операционных систем управляемым способом.

В самой ОС они обычно упоминаются как драйверы устройств, поскольку они включают определенные детали об устройствах, которые они поддерживают.

И, окна используют международные инструкции также или являются там каким-либо новым способом общаться с HW?

Да, и да, но я думаю, что объяснил это.

9
ответ дан 07.12.2019, 14:39

Существует несколько способов, которыми программное обеспечение, работающее на ЦП на ПК, может общаться с остальной частью аппаратных средств.

Самыми простыми для понимания являются порты I/O. Программное обеспечение использует инструкция записать 8, 16, или 32 бита за один раз к порту I/O. Таким же образом программное обеспечение использует В инструкции читать из порта I/O. Порты I/O живут в отдельном 16-разрядном адресном пространстве, не связанном с пространством адресов, использованным оперативной памятью. Каждая часть аппаратных средств, которые используют порты I/O, имеет диапазон адресов ввода-вывода; запись в и чтение из каждого из этих адресов имеют различный эффект (и часто читающий из, и пишущий в тот же адрес имеет различные эффекты также).

Иначе ввод-вывод с отображенной памятью, где часть пространства адреса памяти отображается на части аппаратных средств. Вместо того, чтобы идти в оперативную память, чтения и записи от и до того региона памяти переходят к соответствующим аппаратным средствам. То, что они имеют в виду, зависит от аппаратных средств и от региона (весьма распространено иметь больше чем один регион ввода-вывода с отображенной памятью в той же части аппаратных средств); чтение и запись в него могли иметь специальный эффект (как распространено с портами I/O), или оно могло просто читать и записать непосредственно в память на аппаратных средствах (например, кадровый буфер видеокарты).

На другом направлении (остальная часть аппаратных средств, говорящих с программным обеспечением, работающим на ЦП), существует также несколько путей. Самый простой должен был бы ожидать программного обеспечения для выяснения (или через порт I/O или через ввод-вывод с отображенной памятью); используемый один, это может быть очень неэффективно.

Иначе, чтобы аппаратные средства записали непосредственно в оперативную память. Это очень эффективно для того, чтобы перевести большие объемы данных и может использоваться в другом направлении также (для чтения из оперативной памяти). Однако программное обеспечение все еще должно знать, когда передача закончена.

Последним путем являются прерывания. ЦП получает запрос на прерывание, вместе с номером прерывания. Прерывания ЦП (таким образом имя), что это делало и переключает на другую часть кода (какая часть зависит от номера прерывания). Обычно каждые аппаратные средства соответствуют единственному номеру прерывания, но номера прерывания часто совместно используются несколькими источниками прерывания. Существуют также специальные виды прерывания, которые не имеют числа; например, NMI.


Для практического примера давайте возьмем простую сетевую карту. Эта сетевая плата имеет ряд регистров, к которым можно получить доступ или через порты I/O или через ввод-вывод с отображенной памятью. Это может также читать из и записать в оперативную память и имеет контакт прерывания.

Для отправки пакета в сеть драйвер сетевой платы сначала пишет полный пакет в память в адресе, выровненном к нескольким 4 байтам. Это затем пишет в несколько регистров на сетевой карте, говоря этому адрес памяти, размер пакета и некоторую другую информацию. Сетевая плата затем читает пакет из памяти, отправляет его в сеть и сигнализирует о прерывании. Контроллер прерываний (отдельная часть аппаратных средств) отправляет запрос на прерывание в ЦП и говорит этому номер прерывания. В обработчике прерываний драйвер читает регистр из карты, которая говорит ему, что прерывание было об отправляемом пакете, читает другой регистр для обнаружения, какой пакет был отправлен и знает, что это может теперь снова использовать память, где это записало пакет.

Для получения пакетов из сети драйвер сетевой платы выделяет блок памяти, которая будет использоваться в качестве устройства хранения данных для пакетов и пишет несколько регистров на карте, говоря этому адрес памяти блока памяти, ее размера и некоторой другой информации. Когда пакет получен от сети, сетевая плата пишет это в тот блок памяти, вместе с размером пакета и некоторой другой информацией. Это обновляет некоторые регистры, которые говорят и это и драйвер, сколько свободного пространства находится там в том блоке памяти, где свободное пространство начинается, и где использованное пространство начинается (буфер является кольцевым, поэтому после получения в конец это переворачивается к началу). Наконец, это сигнализирует о своем прерывании. Драйвер считает регистры и память для получения пакета (пакетов), и обновит регистры, чтобы сказать карте, что пространство теперь свободно снова.

Существуют другие вещи, которые карта может сказать драйверу путем записи его регистров и передачи сигналов о прерывании; например, то, что сетевой кабель был отключен, что была ошибка передачи и так далее.

4
ответ дан 07.12.2019, 14:39

То, что Вы ищете, является "IRQ", Запросами на прерывание от аппаратных средств до ЦП. Здесь существует основная статья.

1
ответ дан 07.12.2019, 14:39

Это было бы тем, для чего драйверы оборудования. Кроме того, окна теперь использует HAL (Уровень аппаратной абстракции) вместо DOS.

0
ответ дан 07.12.2019, 14:39

Теги

Похожие вопросы