Обзор BSD
Часть BSD ядра OS X получена прежде всего из FreeBSD, версии 4.4BSD, который предлагает усовершенствованные сети, производительность, безопасность и функции совместимости. Варианты BSD в целом получены (иногда косвенно) от 4.4BSD-облегченного Выпуска 2 от Computer Systems Research Group (CSRG) в Калифорнийском университете в Беркли. BSD обеспечивает много расширенных функций, включая следующее:
Вытесняющая многозадачность с динамической приоритетной корректировкой. Гладкое и справедливое совместное использование компьютера между приложениями и пользователями обеспечено, даже при самой тяжелой из загрузок.
Многопользовательский доступ. Много людей могут использовать систему OS X одновременно для множества вещей. Это означает, например, что системные периферийные устройства, такие как принтеры и дисководы должным образом совместно используются всеми пользователями в системе или сети и что отдельные границы ресурса могут быть установлены для пользователей или групп пользователей, защитив критические системные ресурсы от злоупотребления.
Сильный TCP/IP, объединяющийся в сеть с поддержкой промышленных стандартов, таких как SLIP, PPP и NFS. OS X может взаимодействовать легко с другими системами, а также действовать как сервер предприятия, обеспечивая жизненно важные функции, такие как NFS (удаленный доступ к файлу) и почтовые сервисы или интернет-сервисы, такие как HTTP, FTP, маршрутизация и брандмауэр (безопасность) службы.
Защита памяти. Приложения не могут вмешаться друг в друга. Один катастрофический отказ приложения не влияет на других всегда.
Виртуальная память и динамическое выделение памяти. Приложения с большими аппетитами к памяти удовлетворены при тихом поддержании интерактивного ответа пользователям. С системой виртуальной памяти в OS X каждое приложение имеет доступ к своему собственному пространству адреса памяти на 4 ГБ; это должно удовлетворить даже большинство требующих много памяти приложений.
Поддержка потоков ядра на основе потоков Маха. Пакеты поточной обработки пользовательского уровня реализованы поверх потоков ядра. Каждый поток ядра является независимо запланированным объектом. Когда поток от пользовательского процесса блокирует в системном вызове, другие потоки от того же процесса могут продолжать выполняться на этом или других процессорах. По умолчанию процесс в стандартном смысле имеет один поток, основной поток. Пользовательский процесс может использовать поток POSIX API для создания других пользовательских потоков.
Поддержка SMP. Поддержка включена для компьютеров с многократным CPUs.
Исходный код. Разработчики получают самый большой уровень контроля над средой программирования BSD, потому что включен источник.
Средства BSD
Средства, которые доступны пользовательскому процессу, логически разделены на две части: средства ядра и системные средства, реализованные или в сотрудничестве с серверным процессом.
Средства, реализованные в ядре, определяют виртуальную машину, в которой работает каждый процесс. Как много реальных машин, эта виртуальная машина имеет управление памятью, средство прерывания, таймеры и счетчики.
Виртуальная машина также предоставляет доступ к файлам и другим объектам через ряд дескрипторов. Каждый дескриптор напоминает контроллер устройства и поддерживает ряд операций. Как устройства на реальных машинах, некоторые из которых являются внутренними к машине и некоторые из которых являются внешними, части машинного оборудования дескриптора встроены в операционную систему, в то время как другие части часто реализуются в серверных процессах.
Компонент BSD предоставляет следующие услуги ядра:
процессы и защита
идентификаторы хостов и идентификаторы процесса
создание процесса и завершение
пользователь и группа IDs
группы процесса
текст, данные, штабель и динамические совместно используемые библиотеки
отображение страниц
управление защитой страницы
Примитивы синхронизации POSIX
Общая память POSIX
типы сигнала
сигнальные обработчики
отправка сигналов
синхронизация и статистика
реальное время
время интервала
файлы
каналы
сокеты
управление ресурсами
приоритеты процесса
использование ресурсов и пределы ресурса
квоты
поддержка работы системы
операции начальной загрузки
операции завершения работы
учет
Системные средства BSD (средства, которые могут взаимодействовать с пространством пользователя) включают
универсальные операции ввода-вывода такой, как считано и пишут, неблокирование и асинхронные операции
операции файловой системы
межпроцессное взаимодействие
обработка терминалов и других устройств
управление процессом
операции организации сети
Различия между OS X и BSD
Несмотря на то, что часть BSD OS X прежде всего получена из FreeBSD, некоторые изменения были внесены:
sbrk()
системный вызов управления памятью осуждается. Его использование не рекомендуется в OS X.Модель времени выполнения OS X использует различный формат объектных файлов для исполнимых программ и общих объектов и различного механизма для выполнения некоторых из тех исполнимых программ.
Основной собственный формат является Мужественным. Этот формат поддерживается редактором динамического канала (dyld).
Формат двоичного файла PEF поддерживается Code Fragment Manager (CFM).
Поддержки ядра
execve()
с Мужественными двоичными файлами. Отображение и управление Мужественными динамическими совместно используемыми библиотеками, а также запуск основанных на PEF приложений, выполняется кодом пространства пользователя.OS X не поддерживает устройства с отображенной памятью через
mmap()
функция. (Графическая поддержка устройства и другие подсистемы обеспечивают схожую функциональность, но использование различного APIs.) В OS X этот интерфейс должен быть сделан через пользовательские клиенты. Посмотрите Apple документы Набора I/O для получения дополнительной информации.swapon()
вызов не поддерживается;macx_swapon()
эквивалентный вызов от пейджера Маха.Объединенная Буферная реализация Кэша в OS X отличается от найденного в FreeBSD.
Мах обеспечивает много примитивов IPC, традиционно не найденных в UNIX. Посмотрите Граничные Пересечения для получения дополнительной информации о Махе IPC. Некоторые примитивы System V поддерживаются, но их использованию обескураживают в пользу эквивалентов POSIX.
Несколько изменений были внесены в модель обеспечения безопасности BSD для поддержки однопользовательский и конфигурации многократного администратора, включая возможность отключить владение и полномочия на основе объема по объему.
Механизм блокировки, используемый всюду по ядру, отличается существенно от механизма, используемого в FreeBSD.
Механизм расширения ядра, используемый OS X, абсолютно отличается. Уровень драйвера OS X, Набор I/O, является объектно-ориентированным штабелем драйвера, записанным в C++. Общие интерфейсы программирования ядра или KPIs, используются для записи расширений ядра недрайвера. Эти механизмы описаны больше в Обзоре Набора I/O и Ссылке KPI, соответственно.
Кроме того, несколько новых опций были добавлены, которые определенные для OS X (Дарвин) реализация BSD. Эти функции не найдены в FreeBSD.
улучшения к файловой системе буферизуют кластеризация файлового ввода-вывода и кэш
адаптивное и спекулятивное чтение вперед
пользовательский процесс управлял чтением вперед
время старея файловой системы буферизует кэш
улучшения к поддержке файловой системы
реализация расширений Apple для ISO 9 660 файловых систем
многопоточный асинхронный I/O для NFS
добавление системных вызовов для поддержки семантики Расширенного Mac OS (HFS +) файловые системы
дополнения к соглашениям о присвоении имен для путей, как требуется для доступа к многократным ветвлениям в Mac OS Расширенные файловые системы
Для дополнительных материалов для чтения
Компонент BSD ядра OS X сложен. Полное описание выходит за рамки этого документа. Однако много превосходных ссылок существуют для этого компонента. Если Вы интересуетесь BSD, несомненно, обратятся к библиографии для получения дополнительной информации.
Несмотря на то, что уровень BSD OS X получен из 4.4BSD, имейте в виду, что это не идентично 4.4BSD. Некоторая функциональность 4,4 BSD не была включена в OS X. Некоторая новая функциональность была добавлена. Процитированные ссылочные материалы рекомендуются для дополнительного чтения. Однако они не должны быть предположены как формирование категорического описания OS X.