Драйверы ядра и уровень драйверов устройств

Нижний слой OS X включает ядро, драйверы и части BSD системы и базируется прежде всего на технологиях с открытым исходным кодом. OS X расширяет эту низкоуровневую среду с помощью нескольких технологий базовой инфраструктуры, упрощающих для Вас разрабатывать программное обеспечение.

../art/osx_architecture-kernels_drivers_2x.png

Высокоуровневые функции

Следующие разделы описывают функции в уровне Kernel и Device Drivers OS X.

Межпроцессное взаимодействие XPC и службы

XPC является технологией межпроцессного взаимодействия OS X что Тестовая среда приложения дополнений путем включения разделения полномочия. Разделение полномочия, в свою очередь, стратегия развития, в которой Вы делите приложение на части согласно доступу системного ресурса, в котором нуждается каждая часть. Части компонента, которые Вы создаете, вызывают службами XPC.

Вы создаете службу XPC как отдельную цель в Вашем проекте XCode. Каждая служба получает свою собственную песочницу — в частности, это получает свой собственный контейнер и свой собственный набор прав. Кроме того, служба XPC, которую Вы включаете со своим приложением, доступна только Вашим приложением. Эти преимущества составляют в целом создание XPC лучшая технология для реализации разделения полномочия в приложении OS X.

XPC интегрируется с Grand Central Dispatch (GCD). При создании соединения Вы связываете его с очередью отгрузки, на которой выполняется трафик сообщений.

Когда приложение запускается, система автоматически регистрирует каждую службу XPC, которую это находит в пространство имен видимый к приложению. Приложение устанавливает соединение с одной из его служб XPC и отправляет, это обменивается сообщениями содержащий события, которые тогда обрабатывает служба.

Для больше на XPC Services, считайте Creating XPC Services в Руководстве по программированию Демонов и Служб. Для узнавания больше о Тестовой среде приложения считайте Руководство по проектированию Тестовой среды приложения.

Кэширование API

libcache API является низкоуровневым purgeable кэшированием API. Агрессивное кэширование является важным методом в максимизации производительности приложения. Однако, когда кэширование требований превышает доступную память, система должна высвободить память по мере необходимости для обработки новых требований. Как правило, это значит кэшированные данные разбивки на страницы для и от относительно медленных устройств хранения, иногда даже приводящих к ухудшению производительности в масштабе всей системы. Ваше приложение должно избежать потенциальной разбивки на страницы наверху путем активного управления ее кэшами данных, выпуска их, как только этому больше не нужны кэшированные данные.

В более широком системном контексте Ваше приложение может также помочь путем создания кэшей, которых операционная система может просто произвести чистку на приоритетной основе, поскольку давление памяти требует. libcache библиотека и платформа Основы NSCache класс помогает Вам создать эти purgeable кэши.

Для получения дополнительной информации о функциях libcache библиотека, см. libcache Ссылку. Для получения дополнительной информации о NSCache класс, см. Ссылку класса NSCache.

Видеосъемка в ядре

Видео I/O обеспечивает интерфейс программирования на C++ уровня ядра для записи драйверов устройств видеосъемки. Видео I/O заменяет средство захвата последовательности QuickTime API в качестве средние значения получения видео в OS X.

Видео I/O состоит из IOVideoDevice класс на стороне ядра (вместе с различными связанными незначительными классами), который Ваш драйвер должен разделить на подклассы, и интерфейс устройства пространства пользователя для связи с драйвером.

Для получения дополнительной информации посмотрите IOVideoDevice.h заголовочный файл в платформе Ядра.

Ядро

Ниже обращения простой в использовании интерфейс OS X является рок-существенной, основанной на UNIX основой, спроектированной для устойчивости, надежности и производительности. Среда ядра создается поверх Маха 3.0 и предоставляет услуги высокопроизводительной сети и поддержку многократных, интегрированных файловых систем.

Следующие разделы описывают некоторые главные особенности ядра и части драйвера Дарвина.

Мах

Мах в основе Дарвина, потому что это обеспечивает некоторые самые критические функции операционной системы. Большая часть того, что обеспечивает Мах, очевидна для приложений. Это управляет ресурсами процессора, такими как использование CPU и память, планирование дескрипторов, осуществляет защиту памяти и реализует центрируемую обменом сообщениями инфраструктуру для невведенного межпроцессного взаимодействия, и локального и удаленного. Мах обеспечивает следующие важные преимущества для вычислений Mac:

  • Защищенная память. Устойчивость операционной системы не должна зависеть от всех приложений выполнения, являющихся добропорядочными гражданами. Даже процесс хорошего поведения может случайно записать данные в адресное пространство системы или другого процесса, который может привести к потере или повреждению данных или даже осесть системные катастрофические отказы. Мах гарантирует, что приложение не может записать в памяти другого приложения или в памяти операционной системы. Путем отгораживания приложений друг от друга и от системных процессов, Мах делает, это фактически невозможный для сингла плохо вело себя приложение для нанесения ущерба остальной части системы. Лучший из всех, если сбои приложения как результат его собственного неправомерного поведения, катастрофический отказ влияет только что приложение и не остальная часть системы.

  • Вытесняющая многозадачность. С Махом процессы совместно используют CPU эффективно. Мах следит за процессором компьютера, приоритезируя задачи, уровни деятельности проверки в максимуме, и гарантируя, что каждая задача получает ресурсы, в которых это нуждается. Это использует определенные критерии, чтобы решить, насколько важный задача и поэтому сколько времени для выделения ему прежде, чем дать другой задаче его очередь. Ваш процесс не зависит от другого процесса, приводящего к его времени обработки.

  • Усовершенствованная виртуальная память. В OS X виртуальная память находится «на» все время. Система виртуальной памяти Маха дает каждому процессу свое собственное частное виртуальное адресное пространство. Для 64-разрядных приложений теоретический максимум составляет приблизительно 18 эксабайт или 18 миллиардов миллиардов байтов. Мах поддерживает таблицы адресов, управляющие переводом виртуальных адресов задачи в физическую память. Обычно только часть данных или кода, содержавшегося в виртуальном адресном пространстве задачи, находится в физической памяти в любой момент времени. Поскольку страницы необходимы, они загружаются в физическую память из хранения. Мах увеличивает их семантика с абстракцией объектов памяти. Названные объекты памяти позволяют одной задаче (на достаточно низком уровне) отобразить диапазон памяти, не отобразить его и отправить его в другую задачу. Эта возможность важна для реализации отдельных сред выполнения в той же системе.

  • Поддержка в реальном времени. Эта функция гарантирует доступ низкой задержки к ресурсам процессора для чувствительных ко времени мультимедийных приложений.

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

64-разрядное Ядро

С v10.8 OS X требует Mac, использующего 64-разрядное ядро. 64-разрядное ядро предоставляет несколько преимуществ:

  • Ядро может поддерживать конфигурации памяти большой емкости более эффективно.

  • Максимальный размер буферного кэша увеличен, потенциально улучшив производительность I/O.

  • Производительность улучшена при работе со специализированными сетевыми аппаратными средствами, эмулирующими память, отображающуюся через провод или с многократными видеокартами, содержащими более чем 2 ГБ видеопамяти.

Поскольку 64-разрядное ядро не поддерживает 32-разрядные драйверы и расширения ядра (KEXTs), те элементы должны быть созданы для 64-разрядного. К счастью, для большинства драйверов и KEXTs, создающего для 64-разрядного ядра, является обычно не столь трудным, как Вы могли бы думать. По большей части переходя драйвер или KEXT, чтобы быть 64-разрядные способный точно так же, как переходят любая другая часть кода. Для получения дополнительной информации о том, как сделать переход, включая то, какой вещи проверить на в Вашем коде, посмотрите 64-разрядное Руководство по Переходу.

Поддержка драйвера устройства

Дарвинские предложения объектно-ориентированная платформа для разработки драйверов устройств вызвали платформу Набора I/O. Эта платформа упрощает создание драйверов для OS X и обеспечивает большую часть инфраструктуры, в которой они нуждаются. Записанный в ограниченном подмножестве C++ и разработанный для поддержки диапазона семейств устройства Набор I/O является и модульным и расширяемым.

Драйверы устройств, создаваемые с Набором I/O, получают несколько важных функций:

  • Истинный Plug and Play

  • Динамическое управление устройствами («замена в горячем режиме»)

  • Управление питанием (и для рабочих столов и для портативных устройств)

Если Ваше устройство соответствует стандартным спецификациям — таким как те для мышей, клавиатур, устройств аудиовхода, современных MIDI-устройств, и т.д. — оно должно просто работать, когда Вы включаете его. Если Ваше устройство не соответствует опубликованному стандарту, можно использовать ресурсы Набора I/O для создания пользовательского драйвера для удовлетворения потребностей. Устройства, такие как платы AGP, PCI и карты PCIe, сканеры и принтеры обычно требуют пользовательских драйверов или другого программного обеспечения поддержки для работы с OS X.

Для получения информации о создании драйверов устройств см. Руководство по проектированию Драйвера устройства IOKit.

Сетевые расширения ядра

Дарвин позволяет разработчикам ядра добавлять сетевые возможности к операционной системе путем создания сетевых расширений ядра (NKEs). Средство NKE позволяет Вам создавать сетевые модули и даже штабели полного протокола, которые могут быть динамично загружены в ядро и разгружены от него. NKEs также позволяют сконфигурировать стеки протоколов автоматически.

Модули NKE имеют встроенные возможности контроля и изменения сетевого трафика. В канале передачи данных и сетевых уровнях, они могут также получить уведомления об асинхронных событиях от драйверов устройств, такой как тогда, когда существует изменение в состоянии сетевого интерфейса.

Для получения информации о том, как записать NKE, см. Сетевое Руководство по программированию Расширений ядра.

BSD

Интегрированный с Дарвином настроенная версия операционной системы Berkeley Software Distribution (BSD). Реализация Дарвином BSD включает большую часть POSIX API, который высокоуровневые приложения могут также использовать для реализации основных функций приложения. BSD служит основанием для файловых систем и сетевых средств OS X. Кроме того, это обеспечивает несколько интерфейсов программирования и служб, включая:

Следующие разделы описывают некоторые главные особенности уровня BSD OS X.

IPC и механизмы уведомления

OS X поддерживает следующие технологии для межпроцессного взаимодействия (IPC) и для поставки уведомлений через систему:

  • События файловой системы. События файловой системы (FSEvents) когда изменения происходят в файловой системе, такой как при создании, модификации или удалении файлов и каталогов, механизм для уведомления Вашего приложения. FSEvents API дает Вам способ контролировать много каталогов сразу и обнаружить общие изменения в файловой иерархии. Например, Вы могли бы использовать эту технологию в программном обеспечении для резервного копирования для обнаружения то, что изменили файлы. FSEvents API не предназначается для обнаружения тонкозернистых изменений в отдельных файлах.

    Изучить, как использовать FSEvents API, см. Руководство по программированию Событий Файловой системы.

  • Очереди ядра и события ядра. Эти механизмы позволяют Вам прерывать события уровня ядра для получения уведомлений об изменениях в сокетах, процессах, файловой системе и других аспектах системы. Очереди ядра и события являются частью уровня FreeBSD операционной системы и описаны в kqueue и kevent страницы справочника.

  • Уведомления BSD. Уведомления BSD имеют несколько преимуществ перед услугами уведомления, предложенными Базовой Основой и Основой. Например, Ваша программа может получить уведомления BSD через механизмы, включающие порты Маха, сигналы и дескрипторы файлов. Кроме того, эта технология легка, эффективна, и способна к объединению уведомлений.

    Можно добавить поддержку уведомлений BSD любому типу программы, включая приложения Какао. Для получения дополнительной информации см. Обзор Уведомления Mac или notify страница справочника. Для обсуждения Какао и Базовых интерфейсов Основы для межпроцессного уведомления, см. Распределенные Уведомления.

  • Сокеты и порты. Сокеты и порты являются переносимыми механизмами для межпроцессного взаимодействия. Сокет представляет один конец канала передачи между двумя процессами или локально или по сети. Порт является каналом между процессами или потоками на локальном компьютере. Базовая Основа и Основа обеспечивают высокоуровневые абстракции для портов и сокетов, делающих их проще реализовать и предложить дополнительные функции. Например, можно использовать a CFSocket с a CFRunLoop для мультиплексирования данных, полученных от сокета с данными, полученными от других источников (или больше информации, см. Ссылку Ссылки и CFRunLoop CFSocket).

  • Потоки. Поток является механизмом для передачи данных между процессами при передаче использования установленного транспортного механизма такой как Добрый день или HTTP. Высокоуровневые интерфейсы Базовой Основы и Основы (которые работают с CFNetwork) обеспечьте способ на основе потоков считать и записать сетевые данные, и может использоваться с выполненными циклами для работы эффективно в сетевой среде.

  • Каналы. Когда дочерний процесс разветвлен, канал является каналом передачи, обычно создаваемым между родителем и дочерним процессом. Данные, записанные в канал, буферизуются и считываются в методе «первым пришел - первым вышел» (FIFO) порядок. Можно создать именованные каналы (pipe функция) для коммуникации между связанными процессами или именованными каналами для коммуникации между любыми двумя процессами. Именованный канал должен быть создан с уникальным именем, известным и отправке и процессу получения.

  • Общая память. Общая память является областью памяти, выделенной процессом в частности в целях того, чтобы быть читаемым и возможно перезаписываемым среди нескольких процессов. Можно создать области общей памяти с помощью нескольких подходов BSD, включая shm_open и shm_unlink подпрограммы, и mmap подпрограмма. Доступом к общей памяти управляют через семафоры POSIX, реализующие своего рода механизм блокировки.

    Несмотря на то, что общая память разрешает любой процесс с надлежащими полномочиями считать или записать область общей памяти непосредственно, это очень хрупко — приведение к опасностям повреждения данных и нарушений защиты — и должно использоваться с осторожностью. Это лучше всего используется только в качестве репозитория для необработанных данных (таких как пиксели или аудио) со структурами данных управления, к которым получают доступ посредством более стандартного межпроцессного взаимодействия.

    Для получения информации о shm_open, shm_unlink, и mmap, посмотрите shm_open, shm_unlink, и mmap страницы справочника.

  • Событие Apple. Событие Apple является высокоуровневым семантическим событием, которое приложение может отправить в себя в другие приложения на том же компьютере, или к приложениям на удаленном компьютере. Приложения могут использовать события Apple для запроса служб и информации из других приложений. К службам поставок Вы определяете объекты в своем приложении, к которому можно получить доступ с помощью событий Apple и затем обеспечить обработчики событий Apple для ответа на запросы на те объекты.

    Несмотря на то, что события Apple не являются технологией BSD, они - низкоуровневая альтернатива для межпроцессного взаимодействия. Чтобы изучить, как использовать события Apple, см. Руководство по программированию Событий Apple.

Сетевая поддержка

OS X является одной из главных платформ для вычислений во взаимосвязанном мире. Это поддерживает доминирующие типы среды, протоколы, и службы в отрасли, а также дифференцируемые и инновационные службы от Apple.

Штабель сетевого протокола OS X основывается на BSD. Расширяемая архитектура, предоставленная сетевыми расширениями ядра, полученными в итоге в Сетевых Расширениях ядра, упрощает создание модулей, реализовывая новые или существующие протоколы, которые могут быть добавлены к этому штабелю.

Стандартные сетевые протоколы

OS X предоставляет встроенную поддержку для большого количества сетевых протоколов, которые являются стандартными в вычислительной отрасли. Таблица 6-1 суммирует эти протоколы.

Табличные 6-1  Сетевые протоколы

Протокол

Описание

802.1x

802.1x протокол для реализации основанного на порте доступа к сети по соединенному проводом или беспроводному LANs. Это поддерживает широкий диапазон методов аутентификации, включая TLS, TTLS, LEAP, MDS и PEAP (MSCHAPv2, MD5, GTC).

DHCP и BOOTP

Протокол динамического конфигурирования узлов и Протокол начальной загрузки автоматизируют присвоение IP-адресов в определенной сети.

DNS

Службы именования доменов являются стандартным интернет-сервисом для отображения имен хоста к IP-адресам.

FTP и SFTP

Протокол передачи файлов и Безопасный Протокол передачи файлов являются двумя стандартными средними значениями движущихся файлов между компьютерами в сетях TCP/IP.

HTTP и HTTPS

Гипертекстовый Транспортный протокол является стандартным протоколом для передачи веб-страниц между веб-сервером и браузером. OS X предоставляет поддержку и для небезопасных и для защищенных версий протокола.

LDAP

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

NBP

Обязательный протокол Имени используется для привязки процессов через сеть.

NTP

Протокол сетевого времени используется для синхронизации клиентских часов.

КАША

Протокол доступа Принтера используется для спулинга заданий печати и печати к сетевым принтерам.

PPP

Для коммутируемого доступа (модем) получают доступ, OS X включает PPP (Протокол «точка-точка»). Поддержка PPP включает TCP/IP, а также протоколы Аутентификации PAP и аутентификации CHAP.

PPPoE

Протокол «точка-точка» по протоколу Ethernet предоставляет основанное на Ethernet коммутируемое соединение широкополосным пользователям.

S/MIME

Безопасное шифрование поддержки протоколов / шифрование поддержки протоколов Многоцелевых расширений почты в Интернете электронной почты и присоединение цифровых подписей для проверки адресов электронной почты.

SLP

Протокол обнаружения сервисов разработан для автоматического обнаружения ресурсов (серверы, факсы, и т.д.) в сети IP.

SOAP

Простой протокол доступа к объектам является легким протоколом для обмена инкапсулированными сообщениями по сети или другим сетям.

SSH

Безопасный протокол Shell является безопасным способом выполнить удаленный вход в систему другого компьютера. Информация о сеансе шифруется для предотвращения несанкционированного доступа данных.

TCP/IP и UDP/IP

OS X обеспечивает два протокола уровня передачи, TCP (протокол управления передачей) и UDP (Протокол пользовательских дейтаграмм), для работы с Протоколом Интернета (IP) сетевого уровня. (OS X включает поддержку IPv6 и IPSec.)

XML-RPC

XML-RPC является протоколом для отправки вызовов удаленной процедуры с помощью XML по сети.

OS X также реализует много протоколов совместного доступа к файлам; посмотрите Таблицу 6-4 для сводки этих протоколов.

Сетевые технологии

OS X поддерживает сетевые технологии, перечисленные в Таблице 6-2.

Табличная 6-2  поддержка Сетевой технологии

Технология

Описание

Ethernet 10/100Base-T

Для портов Ethernet, встроенных в каждый новый Macintosh.

Ethernet 1000Base-T

Также известный как Гигабитный Ethernet. Для передачи данных по волоконно-оптическому кабелю и стандартизированного медного проводного соединения.

Крупный кадр

Этот формат Ethernet использует кадры на 9 КБ для ссылок межсервера, а не стандартный кадр на 1,5 КБ. Крупный кадр уменьшает сеть наверху и увеличения поток данных от сервера к серверу и сервера к приложению.

Последовательный

Модем поддержек и возможности ISDN.

Беспроводная связь

Поддерживает 802.11b, 802.11g, и 802.11n технологическое использование беспроводной сети Экстремальное значение AirPort и AirPort.

Маршрутизация/RIP IP

Маршрутизация IP обеспечивает службы маршрутизации для небольших сетей. Это использует Протокол маршрутной информации (RIP) в своей реализации.

Размещение в разных сетях

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

Искажение IP

Позволяет администратору сети присваивать многократные IP-адреса единственному сетевому интерфейсу.

Сети нулевой конфигурации

Посмотрите добрый день.

NetBoot

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

Персональное веб-совместное использование

Позволяет пользователям делиться информацией с другими пользователями на интранет, независимо от того какой компьютер или браузер они используют. Веб-сервер Apache интегрируется как служба HTTP системы.

Диагностика сети

Диагностика сети является способом помочь пользователю решить сетевые проблемы. Несмотря на то, что современные сети обычно надежны, существуют все еще времена, когда сетевые службы могут перестать работать. Иногда причина отказа вне возможности настольного пользователя фиксировать, но иногда проблема находится в способе, которым сконфигурирован компьютер пользователя. Функция диагностики сети обеспечивает диагностическое приложение, чтобы помочь пользователю определить местоположение проблем и исправить их.

Если Ваше приложение встречается с сетевой ошибкой, можно использовать диагностические интерфейсы CFNetwork запустить диагностическое приложение и попытаться решить проблему в интерактивном режиме. Можно также принять решение сообщить о диагностических проблемах пользователю, не пытаясь решить их.

Для получения дополнительной информации об использовании этой функции посмотрите Используя Диагностику сети.

Поддержка файловой системы

Компонент файловой системы Дарвина основывается на расширениях BSD и улучшенного проекта Виртуальной файловой системы (VFS). Компонент файловой системы включает следующие функции:

  • Полномочия на съемных носителях. Эта функция основывается на глобально уникальном идентификаторе, зарегистрированном для каждого подключенного съемного устройства (включая USB и устройства FireWire) в системе.

  • Списки управления доступом, поддерживающие тонкозернистый доступ к объектам файловой системы.

  • ОСНОВАННЫЙ НА URL объем монтируется, которые позволяют пользователям (через команду Finder) смонтировать такие вещи как AppleShare и веб-серверы

  • Объединенный буферный кэш, консолидирующий буферный кэш с кэшем виртуальной памяти

  • Длинные имена файлов (255 символов или 755 байтов, на основе UTF-8)

  • Поддержка сокрытия расширений файла на основе на файл

  • Журналирование всей файловой системы вводит для помощи в восстановлении данных после катастрофического отказа

Из-за его многократных сред приложения и различных видов устройств это поддерживает, OS X обрабатывает данные файла во многих стандартных форматах объема. Таблица 6-3 перечисляет поддерживаемые форматы.

Таблица 6-3  Поддерживаемые форматы локального тома

Формат объема

Описание

Расширенный формат Mac OS

Также названный HFS (иерархическая файловая система) Плюс или HFS +. Это - формат корневого и загрузочного тома по умолчанию в OS X. Эта расширенная версия HFS оптимизирует емкость памяти больших жестких дисков путем уменьшения минимального размера единственного файла.

Стандартный формат Mac OS

Также вызванная иерархическая файловая система или HFS. Это - устаревший формат объема в системах Mac OS до Mac OS 8.1. HFS (как HFS +) хранит ресурсы и данные в отдельных ветвлениях файла и использует различные атрибуты файла, включая коды создателя и тип.

UDF

Универсальный Формат диска, используемый для жестких дисков и оптических дисков, включая большинство типов CDs и DVDs. Поддержки OS X, читая версии UDF 1.02 до 2,60 на обоих блочных устройствах и большинстве оптических носителей, и это поддерживает запись в блочные устройства и DVD-RW и носителям DVD+RW с помощью UDF 2.00 до 2,50 (за исключением зеркальных разделов метаданных в 2,50). Можно найти спецификацию UDF в http://www .osta.org.

ISO 9660

Стандартный формат для объемов CDROM.

NTFS

Файловая система NT, используемая компьютерами Windows. OS X может считать отформатированные NTFS объемы, но не может записать в них.

UFS

Файловая система UNIX, плоское (т.е. единственное ветвление) формат дискового тома, на основе BSD FFS (Быстрая Файловая система), который подобен стандартному формату объема большинства операционных систем UNIX; это поддерживает семантику файловой системы POSIX, которые важны для многих серверных приложений. Несмотря на то, что UFS поддерживается в OS X, его использованию обескураживают.

MS-DOS (FAT)

Файловая система FAT используется многими компьютерами Windows, цифровыми фотоаппаратами, видеокамерами, SD и картами памяти SDHC и другими цифровыми устройствами. OS X может считать и записать отформатированные FAT объемы.

ExFAT

Файловая система ExFAT является расширением файловой системы FAT и также используется на компьютерах Windows, некоторых цифровых фотоаппаратах и видеокамерах, картах памяти SDXC и других цифровых устройствах. OS X может считать и записать ExFAT-отформатированные объемы.

HFS + объемы поддерживают псевдонимы, символьные ссылки и жесткие ссылки, тогда как объемы UFS поддерживают символьные ссылки и жесткие ссылки, но не псевдонимы. Несмотря на то, что псевдоним и символьная ссылка являются оба легкими ссылками на файл или каталог в другом месте в файловой системе, они семантически отличаются значительными способами. Для получения дополнительной информации посмотрите Псевдонимы и Символьные ссылки в Обзоре Файловой системы.

Поскольку OS X предназначается, чтобы быть развернутым в неоднородных сетях, он также поддерживает несколько протоколов совместного доступа к файлам в сети. Таблица 6-4 перечисляет эти протоколы.

Таблица 6-4  Поддерживаемые протоколы совместного доступа к файлам в сети

Файловый протокол

Описание

AFP

Файловый протокол Apple, основной протокол совместного доступа к файлам в Mac OS 9 систем (доступный только по транспорту TCP/IP).

NFS

Сетевая файловая система, доминирующий протокол совместного доступа к файлам в мире UNIX.

WebDAV

Веб-Распределенная Авторская разработка и Управление версиями, расширение HTTP, позволяющее совместное управление файлами в сети.

SMB/CIFS

SMB/CIFS, протокол совместного доступа к файлам, используемый на Windows и системах UNIX.

Безопасность

Корни OS X в операционной системе UNIX обеспечивают устойчивую и безопасную вычислительную среду, достижения которой уходят корнями много десятилетий. Службы безопасности OS X создаются поверх BSD (Распределение программного обеспечения Беркли), стандарт с открытым исходным кодом. BSD является формой операционной системы UNIX, обеспечивающей основную безопасность для фундаментальных служб, таких как доступ к файлу и доступ к сети.

Библиотека CommonCrypto, которая является частью libSystem, обеспечивает необработанные криптографические алгоритмы. Это предназначается для замены подобных интерфейсов OpenSSL.

OS X также включает следующие средства защиты:

  • Принятие Мандатного управления доступом, обеспечивающего тонкозернистую архитектуру безопасности для управления выполнением процессов на уровне ядра. Эта функция включает «игру в песочнице» приложений, позволяющую Вам ограничить доступ данного приложения к только тем функциям, которые Вы определяете.

  • Поддержка подписывания кода и подписания пакета установщика. Если в приложение вмешиваются, эта функция позволяет системе проверить приложения с помощью цифровой подписи и предупредить пользователя.

  • Поддержка компилятора укрепления Вашего исходного кода против потенциальных угроз нарушения безопасности. Эта поддержка включает опции запретить выполнение кода, расположенного на штабеле или других частях памяти, содержащей данные.

  • Поддержка помещения неизвестных файлов в карантин. Это особенно полезно для разработчиков веб-браузеров или других основанных на сети приложений, получающих файлы от неизвестных источников. Система предотвращает доступ к изолированным файлам, если пользователь явно не утверждает тот доступ.

Для введения в средства защиты OS X см. Обзор безопасности.

Сценарии поддержки

Дарвин включает все языки сценариев, обычно находимые в основанных на UNIX операционных системах. В дополнение к языкам сценариев, связанным с оболочками командной строки (такой как bash и csh), Дарвин также включает поддержку Perl, Python, Ruby, Ruby on Rails и других.

OS X обеспечивает мосты сценариев для классов Objective C Какао. Эти мосты позволяют Вам использовать классы Какао из своего Python и сценариев Ruby. Для получения информации об использовании этих мостов посмотрите Ruby и Темы Программирования Python для Mac.

Поточная обработка поддержки

OS X предоставляет полную поддержку для создания многократных приоритетных потоков выполнения в единственном процессе. Потоки позволяют Вашей программе выполнить многократные задачи параллельно. Например, в то время как отдельный поток реагирует на пользовательские события и обновляет окна в приложении, Вы могли бы создать поток для выполнения некоторых долгих вычислений в фоновом режиме. Используя многократные потоки может часто приводить к значительным повышениям производительности в Вашем приложении, особенно на компьютерах с многократными ядрами CPU. Многопоточное программирование не без его опасностей все же. Это требует, чтобы тщательная координация гарантировала, что состояние Вашего приложения не становится поврежденным.

Все потоки пользовательского уровня в OS X основываются на потоках POSIX (также известный как pthreads). pthread является легкой оберткой вокруг потока Маха, который является реализацией ядра потока. Можно использовать pthreads API непосредственно или использовать любой из пакетов поточной обработки, предлагаемых Какао. Несмотря на то, что каждая поточная обработка предложения различная комбинация гибкости по сравнению с простотой в употреблении, все пакеты предлагают примерно ту же производительность.

В целом необходимо попытаться использовать Центральную Отгрузку или объекты операции для выполнения работы одновременно. Однако могли бы все еще быть ситуации, где необходимо создать потоки явно. Для получения дополнительной информации о поточной обработке поддержки и инструкций по тому, как использовать потоки безопасно, см. Руководство по программированию Поточной обработки.

X11

Система управления окнами X11 предоставлена как дополнительный компонент установки для системы. Эта система управления окнами используется многими приложениями UNIX для рисования окон, средств управления и других элементов графических интерфейсов пользователя. Реализация OS X X11 использует Кварцевую среду рисования, чтобы дать окнам X11 собственное чувство OS X. Эта интеграция также позволяет вывести на экран окна X11 рядом с окнами из исходных приложений, записанных в Какао.

Поддержка разработки программного обеспечения

Следующие разделы описывают некоторые дополнительные функции OS X, влияющие на процесс разработки программного обеспечения.

Архитектура двоичного файла

Базовая архитектура исполнимых программ OS X была создана из начала с гибкости в памяти. Эта гибкость стала важной, поскольку компьютеры Mac перешли от использования PowerPC к Intel CPUs и от поддержки только 32-разрядных приложений к 64-разрядным приложениям. Следующие разделы обеспечивают обзор типов архитектуры, которую можно поддерживать в исполнимых программах OS X вместе с другой информацией о средах выполнения и средах отладки, доступных Вам.

Аппаратные архитектуры

Когда OS X был сначала представлен, он был создан для поддержки 32-разрядной аппаратной архитектуры PowerPC. С переходом Apple к основанным на Intel компьютерам Mac OS X добавил начальную поддержку 32-разрядных аппаратных архитектур Intel. В дополнение к 32-разрядной поддержке OS X v10.4 добавил некоторую основную поддержку 64-разрядной архитектуры также, и эта поддержка была расширена в OS X v10.5. Это означает, что приложения и библиотеки могут теперь поддерживать две различной архитектуры:

  • 32-разрядный Intel (i386)

  • 64-разрядный Intel (x86_64)

Несмотря на то, что приложения могут поддерживать всю эту архитектуру в единственном двоичном файле, делание так не требуется. Возможность создать “универсальные двоичные файлы”, работающие исходно на всей поддерживаемой архитектуре, дает OS X гибкость, в которой это нуждается для будущего.

Поддержка многократной архитектуры требует тщательного планирования и тестирования Вашего кода для каждой архитектуры. Существуют тонкие различия от одной архитектуры до следующего, которое может вызвать проблемы если не составленный в Вашем коде. Например, некоторые встроенные типы данных имеют различные размеры в 32-разрядной и 64-разрядной архитектуре. Учет этих различий не является трудным, но требует, чтобы рассмотрение избежало кодировать ошибки.

XCode предоставляет интегральную поддержку для создания приложений, поддерживающих многократные аппаратные архитектуры. Для получения информации о поддержке инструментов и создании универсальных двоичных файлов. Для получения информации о 64-разрядной поддержке в OS X, включая ссылки к документации для того, как сделать переход, посмотрите 64-разрядную Поддержку.

64-разрядная Поддержка

OS X был первоначально разработан для поддержки двоичных файлов на компьютерах с помощью 32-разрядной архитектуры. В OS X v10.4, однако, поддержка была представлена для компиляции, соединения и отладки двоичных файлов на 64-разрядной архитектуре. Эта начальная поддержка была ограничена для кодирования записанного использования C или C++ только. Кроме того, 64-разрядные двоичные файлы могли соединиться против Ускорять платформы и libSystem.dylib только.

При запуске в OS X v10.5, большинство системных библиотек и платформ 64-разрядные готовый, означая, что они могут использоваться и в 32-разрядных и в 64-разрядных приложениях. Платформы, созданные для 64-разрядного, означают, что можно создать приложения, адресующие чрезвычайно большие наборы данных, до 128 TB на текущем основанном на Intel CPUs. На основанных на Intel компьютерах Macintosh некоторые 64-разрядные приложения могут даже работать быстрее, чем их 32-разрядные эквиваленты из-за доступности дополнительных ресурсов процессора в 64-разрядном режиме.

Существует несколько технологий, не портированных к 64-разрядному. Разработка 32-разрядных приложений с этим APIs все еще поддерживается, но если Вы хотите создать 64-разрядное приложение, необходимо использовать альтернативные технологии. Среди этого APIs следующее:

  • Весь QuickTime C API (не осуждаемый, но разработчики должен использовать Набор QuickTime вместо этого в 64-разрядных приложениях),

  • HIToolbox, Менеджер окон и большая часть другого пользовательского интерфейса APIs (не осуждаемый, но разработчики должен использовать Какао классы UI и другие альтернативы); посмотрите 64-разрядное Руководство для Разработчиков Углерода для списка определенного APIs и путей перехода.

OS X использует модель LP64, использующуюся другими 64-разрядными системами UNIX, что означает меньше головных болей при портировании от других операционных систем. Для получения общей информации о модели LP64 и как записать 64-разрядные приложения, посмотрите 64-разрядное Руководство по Переходу. Дополнительные сведения см. в 64-разрядном Руководстве по Переходу для Какао.

Форматы объектных файлов

OS X способен к файлам загружаемого объекта, использующим несколько различных форматов объектных файлов. Мужественный формат является форматом, используемым для всей собственной разработки приложений OS X.

Для получения информации о Мужественном формате файла посмотрите OS X ABI Мужественная Ссылка Формата файла. Для получения дополнительной информации об использовании Мужественных файлов посмотрите Мужественные Темы Программирования.

Отладьте форматы файлов

Каждый раз, когда Вы отлаживаете исполняемый файл, отладчик использует информацию о символе, сгенерированную компилятором к читаемым ассоциированным пользователем именам с процедурой и адресом данных, который это находит в памяти. Обычно, эта читаемая пользователем информация не необходима рабочей программе и разделяется (или никогда не сгенерирована) компилятором для оставления свободного места в получающемся двоичном файле. Для отладки, однако, эта информация очень важна, чтобы быть в состоянии понять то, что делает программа.

OS X поддерживает два различных форматов файлов отладки для скомпилированных исполнимых программ: Удары и DWARF. Формат Ударов присутствует во всех версиях OS X и пока введение Xcode 2.4 не было форматом отладки значения по умолчанию. Код скомпилировал с Xcode 2.4 и более поздним использованием формат отладки DWARF по умолчанию. При использовании формата Ударов отладочная информация, как другие символы сохранена в таблице символов исполнимой программы; посмотрите OS X ABI Мужественная Ссылка Формата файла. С форматом DWARF отладочная информация сохранена или в специализированном сегменте исполнимой программы или в отдельном файле отладочной информации.

Для получения информации о стандарте DWARF перейдите к Стандарту Отладки DWARF; поскольку информация об Ударах отлаживает формат файла, посмотрите Формат Отладки STABS. Для получения дополнительной информации о Мужественных файлах и их сохраненных символах, посмотрите Мужественные Темы Программирования.

Среды выполнения

Начиная с его первого выпуска OS X поддерживал несколько различных сред для запущенных приложений. Самой видной из этих сред является редактор динамического канала (dyld) среда, которая является также единственной средой, поддерживаемой для активной разработки. Большинство других сред предоставило устаревшую поддержку во время перехода от Mac OS 9 к OS X и больше не поддерживается для активной разработки. Следующие разделы описывают среды выполнения, с которыми можно встретиться в различных версиях OS X.

Среда выполнения dyld

dyld среда выполнения является собственной средой в OS X и используется, чтобы загрузить, соединить, и выполнить Мужественные файлы. В основе этой среды dyld динамическая программа загрузчика, обрабатывающая загрузку модулей кода программы и связавшая динамические библиотеки, разрешает любые зависимости между теми библиотеками и модулями, и начинает выполнение программы.

После загрузки модулей кода программы динамический загрузчик выполняет минимальную сумму привязки символа, должен был запустить Вашу программу и получить его выполнение. Этот процесс привязки включает разрешение ссылок к внешним библиотекам и загрузке их, поскольку используются их символы. Динамический загрузчик проявляет ленивый подход к привязке отдельных символов, делая настолько только, как они используются Вашим кодом. Символы в Вашем коде могут быть строго соединены или слабо соединены. Строго соединенные символы заставляют динамический загрузчик завершать Вашу программу, если библиотека, содержащая символ, не может быть найдена, или символ не присутствует в библиотеке. Слабо соединенные символы завершают Вашу программу, только если символ не присутствует, и попытка предпринята для использования его.

Для получения дополнительной информации о динамической программе загрузчика, посмотрите dyld страница справочника. Для получения информации о создании и работе с Мужественными исполняемыми файлами, посмотрите Мужественные Темы Программирования.

Поддержка языка

Инструменты, идущие с OS X, предоставляют прямую поддержку для разработки программного обеспечения с помощью C, C++, Objective C, Objective C ++, и языки Swift вместе с многочисленными языками сценариев. Поддержка других языков может также быть предоставлена сторонними разработчиками. Для получения дополнительной информации о главных особенностях Swift и Objective C, посмотрите Языки Разработки