Об этом документе
Цель этого документа состоит в том, чтобы предоставить фундаментальную высокоуровневую информацию об архитектуре операционной системы ядра OS X. Это также предоставляет фон системным программистам и разработчикам драйверов устройств, файловых систем и расширений сети. Кроме того, это вдается в подробности об интересных темах для программистов ядра в целом.
Это не документ о драйверах. Это покрывает драйверы устройств на высоком уровне только. Это действительно, однако, покрывает некоторые сферы интересов писателям драйвера, таким как пересечение границы пользовательского ядра. Если Вы пишете драйверы устройств, необходимо прежде всего считать документ Основные принципы IOKit, но можно все еще счесть этот документ полезным как дополнительное чтение.
Кто должен считать этот документ
Этот документ имеет широкую и разнообразную аудиторию — в частности, группа потенциальных разработчиков системного программного обеспечения для OS X, включая следующие виды разработчиков:
писатели драйвера устройства
писатели расширения сети
писатели файловой системы
разработчики программного обеспечения, изменяющего данные файловой системы на лету
системные программисты, знакомые с BSD, Linux и подобными операционными системами
разработчики, хотящие узнать о программировании ядра
Если Вы попадаете в одну из этих категорий, можно счесть этот документ полезным. Важно подчеркнуть уход, необходимый при записи кода, находящегося в ядре, однако, как отмечено в Не пускают.
План действий
Цель этого документа состоит в том, чтобы описать различные главные компоненты OS X на концептуальном уровне, затем предоставить более подробную программную информацию разработчикам, работающим в каждой главной области. Это разделено на несколько частей.
Первая часть является обзором программирования ядра, обсуждающим инструкции по программированию, применяющиеся ко всем аспектам программирования ядра. Это включает проблемы, такие как безопасность, безопасность SMP, стиль, производительность и архитектура ядра OS X в целом. Эта часть содержит главы, Не пускают, Обзор архитектуры Ядра, Ранний Процесс начальной загрузки, Соображения Безопасности, Соображения Производительности и Стиль программирования Ядра.
Следующая часть описывает Маха и задачу начальной загрузки, включая информацию о IPC, контекстах начальной загрузки, портах и правах порта, и т.д. Это включает главы Обзор Маха, Память и Виртуальная память, Мах, Планирующий и Интерфейсы Потока и Контексты Начальной загрузки.
Третья часть описывает Набор I/O и BSD. Набор I/O описан на только высоком уровне, так как это имеет прежде всего интерес для разработчиков драйвера. Подсистема BSD покрыта более подробно, включая описания сетей BSD и файловых систем. Это включает главы Обзор Набора I/O, Обзор BSD, Обзор Файловых систем и Сетевая архитектура.
Четвертая часть описывает службы ядра, включая граничные пересечения, синхронизацию, очереди, часы, таймеры, рычаги завершения работы и обработку параметра загрузки. Это включает Граничные Пересечения глав, Примитивы Синхронизации и Miscellaneous Kernel Services.
Пятая часть объясняет, как создать и отладить расширения ядра и расширения ядра. Это включает Обзор Расширения ядра глав и Создание и Отладку Ядер.
Каждая часть начинается с главы обзора или глав, сопровождаемых главами, адресующими определенные сферы интересов.
Документ заканчивается глоссарием терминов, используемым всюду по предыдущим главам, а также библиографии, обеспечивающей многочисленные указатели на другие ссылочные материалы.
Условия глоссария выделяются полужирным когда сначала используемый. В то время как большинство условий определяется, когда они сначала появляются, определения - все в глоссарии для удобства. Если срок кажется знакомым, это, вероятно, означает то, что Вы думаете, что это делает. Если это незнакомо, проверьте глоссарий. В любом случае все читатели могут хотеть скользить через глоссарий, в случае, если существуют тонкие различия между использованием OS X и той из других операционных систем.
Цель этого документа очень широка, предоставляя фирме, основывающейся в основных принципах программирования ядра OS X для разработчиков от многих фонов. Вследствие сложного характера программирования ядра и ограничений на длину этого документа, однако, не всегда возможно предоставить вводный материал разработчикам, у которых нет, по крайней мере, некоторого фона в их сфере интересов. Также не возможно покрыть каждую подробность определенных частей ядра. При столкновении с проблемами необходимо присоединиться к надлежащему Дарвинскому списку рассылки и задать вопросы. Можно найти списки в http://www .lists.apple.com/.
Поэтому библиография содержит высокоуровневые ссылки, которые должны помочь ознакомить Вас с некоторыми фундаментальными понятиями, что необходимо понять полностью материал в этом документе.
Этот документ является, в известной степени, справочным документом. Вводные разделы должны быть легко считаны, и мы рекомендуем сделать так для получения общего понимания каждой темы. Аналогично, первая часть каждой главы, и во многих случаях, разделов в главах, будет адаптирована в соответствии с обеспечением общего понимания отдельных тем. Однако Вы не должны планировать считать этот полный документ, а скорее, принять во внимание интересные темы так, чтобы можно было вернуться им, когда возникает потребность.
Другие публикации Apple
Этот документ, Программирование Ядра, является частью Ссылочной Библиотеки Apple. Обязательно считайте первый документ в ряду, Технологический Обзор Mac, если Вы не знакомы с OS X.
Можно получить другие документы из веб-сайта Документации Разработчика Apple в http://developer .apple.com/documentation.
Мах ссылка API
Если Вы планируете выполнить обширную работу в ядре OS X, можно счесть удобным иметь полного Маха ссылка API, так как этот документ только документирует наиболее распространенные и полезные части Маха API. Для лучше понимания определенных интерфейсов может также быть полезно изучить реализации, приведшие к используемым в OS X, особенно заполнять разрывы в понимании основных принципов реализации.
OS X основывается на Махе 3,0 микроядра, разработанные Университетом Карнеги-Меллон, и позже адаптированные к Macintosh Питания Apple и Научно-исследовательским институтом Фонда открытого программного обеспечения (теперь часть Silicomp). Это было известно как osfmk и было частью MkLinux (http://www .mklinux.org). Позже, это и код от коммерческих усилий по разработке OSF были включены в ядро Дарвина. В течение этого эволюционного процесса Мах APIs, используемый в OS X, отличил во многих отношениях от исходного Маха CMU 3 APIs.
Можно счесть более старые версии исходного кода Маха интересными, и удовлетворить историческое любопытство и избежать переделывать ошибки, сделанные в более ранних реализациях. MkLinux поддерживает активный репозиторий CVS с их последними версиями исходного кода ядра Маха. Более старые версии могут быть получены через различные Сайты. Можно также найти отчеты Маха CMU путем поиска Маха на веб-сайте кафедры информатики CMU (http://www .cs.cmu.edu), вместе с различными выборками исходного кода.
Актуальные версии Маха 3 APIs, который обеспечивает OS X, описаны в Махе ссылка API в источниках ядра. Источники ядра могут быть найдены в xnu проекте на http://kernel .macosforge.org/.
Информация о сети
Apple поддерживает несколько веб-сайтов, куда разработчики могут пойти для общей и технической информации о OS X.
Соединение Разработчика Apple: Документация Разработчика (http://developer .apple.com/documentation). Обладает той же документацией, установленной на OS X, за исключением того, что часто документация более актуальна. Также включает устаревшую документацию.
Соединение Разработчика Apple: OS X (http://developer .apple.com/devcenter/mac/). Предложения SDKs, информация о версии, примечания продукта и новости, и другие ресурсы и информация имели отношение к OS X.
Техническая Информационная Библиотека AppleCare (http://www .apple.com/support/). Содержит технические статьи, учебные руководства, FAQs, технические примечания и другую информацию.