Посторонним вход воспрещен
Этот документ принимает широкое общее понимание концепций программирования ядра. Существует много хороших вводных текстов операционных систем. Это не один из них. Для получения дополнительной информации о программировании базовых операционных систем необходимо считать тексты упомянутыми в библиографии в конце этого документа.
Много разработчиков оправданно осторожны о программировании в ядре. Решение программировать в ядре не состоит в том, чтобы быть принято слегка. Программисты ядра несут ответственность перед пользователями, значительно превосходящую ответственность программистов, пишущих пользовательские программы.
Почему необходимо избежать программировать в ядре
Код ядра должен быть почти совершенным. Ошибка в ядре могла вызвать случайные катастрофические отказы, повреждение данных, или даже представить неоперабельную операционную систему. Для определенных ошибочных операций даже возможно нанести постоянный и непоправимый ущерб аппаратных средств, например, путем отключения охлаждающего вентилятора и выполнения CPU полный наклон.
Программирование ядра является черной магией, которой нужно избежать если вообще возможный. К счастью, программирование ядра является обычно ненужным. Можно записать большую часть программного обеспечения полностью в пространстве пользователя. Даже большинство драйверов устройств (FireWire и USB, например) может быть записано как приложения, а не как код ядра. Несколько низкоуровневых драйверов должны быть резидентным объектом в адресном пространстве ядра, однако, и этот документ мог бы быть незначительно полезным, если Вы пишете драйверы, попадающие в эту категорию.
Несмотря на части этого документа, являющегося полезным в записи драйвера, это не документ о записи драйверов. В OS X Вы пишете драйверы устройств с помощью Набора I/O. В то время как этот документ касается Набора I/O на концептуальном уровне, подробные данные программирования Набора I/O выходят за рамки этого документа. Писатели драйвера призваны считать Основные принципы IOKit для получения дальнейшей информации о Наборе I/O.
Этот документ касается большинства аспектов программирования ядра за исключением драйверов устройств. Затронутые темы включают планирование, пейджеры виртуальной памяти и политики, Мах IPC, файловые системы, штабели сетевого протокола, управление процессами и управление потоком, безопасность ядра, синхронизация и много более тайных тем.
Для суммирования программирование ядра является огромной ответственностью. Необходимо исключительно стараться гарантировать, что код не заставляет систему отказывать, не обеспечивает доступа неавторизованного пользователя к чьим-либо файлам или памяти, не представляет удаленное или локальное корневое использование и не вызывает непреднамеренную потерю данных или повреждение.