В чем разница между ядром и программированием в пользовательском режиме? - PullRequest
5 голосов
/ 22 мая 2010

Я хотел бы знать, что программист ядра думает о памяти против программиста пользовательского режима. Я также хотел бы знать несколько различий между программированием ядра и программированием в пользовательском режиме.

Ответы [ 3 ]

6 голосов
/ 22 мая 2010

Программирование в пользовательском режиме относится к программированию в рамках механизмов защиты, контроля и абстракции ядра операционной системы.Например: в пользовательском режиме вы не можете записывать секторы диска, так как они «скрыты» под API файловой системы.Вы не можете записывать адреса физической памяти, поскольку ядро ​​контролирует перевод между виртуальной и физической памятью, хотя вы можете зарезервировать память для своих собственных нужд.Кроме того, несмотря на то, что вы можете перейти на низкоуровневый (сборка), вы не можете выполнять привилегированные инструкции, например, пытаться связываться с кэшами процессора, TBL и MMU.для пошлин низкого уровня без каких-либо ограничений.Драйверы оборудования, например, не могут быть запрограммированы в пользовательском режиме, так как им необходим прямой доступ к оборудованию для выполнения операций ввода-вывода, отображения областей памяти и т. Д.

Конечно, вы не можете думать о режиме ядра как о «менее ограниченном» и заниматься разработкой приложений в KM.Многие системные средства для прикладного программирования недоступны в KM, поскольку библиотеки, необходимые для взаимодействия с пользователем, запускаются в режиме пользователя.Кроме того, эти пользовательские библиотеки не будут ссылаться на модуль ядра.

Это различие может быть более или менее определено в зависимости от операционной системы.KM / UM - это нонсенс в DOS, где программам был разрешен свободный доступ к системным ресурсам (по крайней мере в реальном режиме 8086/88 - это не относится к расширителям DOS).

2 голосов
/ 22 мая 2010
0 голосов
/ 02 июня 2015

Идеальный ответ выбран в качестве ответа. В двух словах, насколько мне известно, в режиме ядра вы читаете / записываете байты по физическим адресам устройства, например VGA-карты. Однако в пользовательском режиме вы выполняете запись в файл, т. Е. Если операционная система в UNIX похожа на.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...