почему драйвер клавиатуры, необходимый для ввода с клавиатуры, может быть получен либо из прерываний, либо путем доступа к буферу клавиатуры? - PullRequest
2 голосов
/ 14 января 2012

В качестве ввода с клавиатуры в качестве кодов сканирования можно получить вызов 1001 * прерывание 09 IRQ1 или аналогичные, либо путем прямого доступа к буферу клавиатуры BIOS в сегменте 0040h

почему существует требование для отдельного драйвера клавиатуры? или сам драйвер клавиатуры выполняет одно из вышеперечисленных действий для ОС?

что я имею в виду для ввода с клавиатуры, когда мы можем использовать клавиатуру BIOSбуфер или некоторые процедуры прерывания, почему существует требование написать «драйвер клавиатуры», потому что в некоторых ОС, таких как minix, в списке драйверов этой ОС есть отдельная река клавиатуры?

Ответы [ 2 ]

1 голос
/ 14 января 2012

Вообще говоря, современные ОС имеют различие между режимом ядра и режимом пользователя.Ядро имеет более высокие привилегии, и в этом режиме может работать только специализированный код.Доступ к аппаратным ресурсам обычно является областью режима ядра.Код пользовательского режима, с другой стороны, не позволяет ЦП получить доступ к этим ресурсам.

Я не знаю, о какой ОС вы говорите, но по сути драйвер, о котором вы говорите, это этот специализированный код.Ваш код пользовательского режима не имеет доступа к ресурсам напрямую и должен взаимодействовать с драйвером.

Если вы рассматриваете более простую или более старую ОС, такую ​​как MS-DOS, в которой не было различий, и, следовательно, весь код мог получить доступ к оборудованиюРесурсы.Но я не знаю ни одной современной ОС общего назначения, которая бы позволяла это.

Это действительно хорошая статья в Википедии, объясняющая Программирование модели ядра идей.

В Windows (и в большинстве современных операционных систем) существует различие между кодом, работающим в «режиме пользователя», и кодом, работающим в «режиме ядра».Эта глава собирается указать на некоторые различия.Во-первых, у процессоров Intel есть режимы работы, называемые кольцами, которые определяют тип инструкций и объем памяти, доступной для работающего кода.Существует четыре кольца:

  • Кольцо 0 (также называемое режимом ядра) имеет полный доступ к каждому ресурсу.Это режим, в котором работает ядро ​​Windows.
  • Кольца 1 и 2 могут быть настроены с уровнями доступа, но, как правило, не используются, если не запущены виртуальные машины.
  • Кольцо 3 (также называемое пользовательским режимом) ограничило доступ к ресурсам.

Причина этого в том, что если бы все программы работали в режиме ядра, они могли бы перезаписывать память друг друга и, возможно, сбивать всю систему в случае сбоя.

0 голосов
/ 14 января 2012

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

Рассмотрим / dev / random, который является генератором случайных чисел.ОС знает, что она может «читать» с этого устройства и получать случайное число.Как генерируется случайное число?ОС не волнует.Этот процесс изолирован и абстрагируется водителем.Это может быть псевдослучайный алгоритм.Это может быть специальное устройство на материнской плате.Это может быть видеокамера, наблюдающая за движением в час пик.Кто знает.Дело в том, что операционная система не заботится о том, «как» это делается, она знает только, что с помощью различных драйверов она может общаться с большинством аппаратных средств, реальных или синтетических.

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

...