Вообще говоря, современные ОС имеют различие между режимом ядра и режимом пользователя.Ядро имеет более высокие привилегии, и в этом режиме может работать только специализированный код.Доступ к аппаратным ресурсам обычно является областью режима ядра.Код пользовательского режима, с другой стороны, не позволяет ЦП получить доступ к этим ресурсам.
Я не знаю, о какой ОС вы говорите, но по сути драйвер, о котором вы говорите, это этот специализированный код.Ваш код пользовательского режима не имеет доступа к ресурсам напрямую и должен взаимодействовать с драйвером.
Если вы рассматриваете более простую или более старую ОС, такую как MS-DOS, в которой не было различий, и, следовательно, весь код мог получить доступ к оборудованиюРесурсы.Но я не знаю ни одной современной ОС общего назначения, которая бы позволяла это.
Это действительно хорошая статья в Википедии, объясняющая Программирование модели ядра идей.
В Windows (и в большинстве современных операционных систем) существует различие между кодом, работающим в «режиме пользователя», и кодом, работающим в «режиме ядра».Эта глава собирается указать на некоторые различия.Во-первых, у процессоров Intel есть режимы работы, называемые кольцами, которые определяют тип инструкций и объем памяти, доступной для работающего кода.Существует четыре кольца:
- Кольцо 0 (также называемое режимом ядра) имеет полный доступ к каждому ресурсу.Это режим, в котором работает ядро Windows.
- Кольца 1 и 2 могут быть настроены с уровнями доступа, но, как правило, не используются, если не запущены виртуальные машины.
- Кольцо 3 (также называемое пользовательским режимом) ограничило доступ к ресурсам.
Причина этого в том, что если бы все программы работали в режиме ядра, они могли бы перезаписывать память друг друга и, возможно, сбивать всю систему в случае сбоя.