Дополнительные функции

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

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

AppleScript и AppleScript Studio

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

AppleScript Studio является комплектом инструментов — XCode, Интерфейсного Разработчика, и среды разработки приложения Какао — которые вместе позволяют Вам создавать целые приложения, записанные полностью в AppleScript.

Для получения дополнительной информации о AppleScript и AppleScript Studio, см. документацию AppleScript в http://developer .apple.com/.

Аудио архитектура

OS X обеспечивает большую часть аудио функциональности, обычно связанной со сторонним MIDI и аудио инструментариев. Это дает разработчикам простую платформу для разработки динамических аудиоприложений. Для конечных пользователей это минимизирует конфигурацию, обычно требующуюся, чтобы заставлять высокопроизводительные аудиоприложения работать. Как разработчик UNIX, это означает, что при поиске платформы для разработки устойчивого аудиоприложения на, у Вас теперь есть тот. Среди высокоуровневых функций Core Audio OS X подсистема они:

Если Вы разрабатываете приложения, которые должны получить доступ к аудио уровню OS X, можно стремиться к обширным ресурсам, доступным в http://developer .apple.com/audio/.

Последовательность начальной загрузки

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

В том документе Вы узнаете об устаревших элементах запуска (рекомендуемый способ запустить демонов до v10.4), launchd (рекомендуемый путь в v10.4 и позже), и почему необходимо запустить демонов с этих механизмов вместо изменения rc файлы.

Конфигурационные файлы

Часто в основанной на UNIX системе, Вы находите файлы конфигурации системы в /etc. Это все еще верно в OS X, но конфигурационная информация также найдена в других местах. Сети, распечатывая, и пользовательские подробные данные конфигурации системы, по умолчанию, отрегулированы базой данных NetInfo. Приложения обычно используют списки свойств XML (plists) для содержания конфигурационной информации. Можно просмотреть много списков свойств в качестве примера путем заглядывания ~/Library/Preferences.

При изменении конфигурационного файла в /etc не имеет Вашего желаемого эффекта, тогда та информация, вероятно, отрегулирована информацией в базе данных NetInfo или списком свойств приложения.

Например, пользователи и группы не обрабатываются с файлами в /etc. Для создания пользователя вместо этого необходимо использовать предпочтительную область Учетных записей или менеджера NetInfo. Менеджер NetInfo может также использоваться для создания групп.

Драйверы устройств

OS X реализует модель объектно-ориентированного программирования для разработки драйверов устройств. Эту технологию вызывают Набором I/O. Это - набор системных платформ, библиотек, инструментов и других ресурсов. Эта модель отличается от модели, традиционно найденной в системе BSD. Если Ваш код должен получить доступ к каким-либо устройствам кроме дисков, Вы используете Набор I/O. Программирование Набора I/O сделано с помощью ограниченного подмножества C++, опускающего функции, неподходящие для использования в многопоточном ядре. Путем моделирования аппаратных средств, подключенных к системе OS X и абстракции общей функциональности для устройств в определенных категориях, Набор I/O оптимизировал процесс разработки драйвера устройства. Информация о Наборе I/O и документация доступны в http://developer .apple.com/.

Файловая система

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

Структура файловой системы и видимость

Структура файловой системы OS X подобна системе стиля BSD. Быстрый взгляд на hier должен успокоить Вас. Когда в сомнении как, туда, где поместить вещи, можно поместить их, где Вы были бы в системе стиля BSD. Существует несколько каталогов, которые Вы не могли бы распознать. Эти различия описаны более подробно в Организации Файловой системы.

Поведение по умолчанию Средства поиска OS X состоит в том, чтобы скрыть каталоги, что пользователи обычно не интересовались бы, а также невидимые файлы, такие как те, которым предшествует точка (.). Это появление сохраняется Средством поиска для продвижения простоты в пользовательском интерфейсе. Как разработчик, Вы могли бы хотеть видеть точечные файлы и Ваше расположение полного списка. /usr/bin/defaults инструмент позволяет Вам переопределять поведение по умолчанию сокрытия невидимых файлов. Чтобы показать все файлы, что Средство поиска обычно скрывается, введите следующую команду в оболочке:

defaults write com.apple.Finder AppleShowAllFiles true

Тогда перезапустите Средство поиска или выйдя из системы и въезжайте задним ходом или путем выбора Force Quit из Меню Apple.

Существует несколько других простых способов просмотреть содержание скрытых папок, не изменяя поведение по умолчанию самого Средства поиска. Можно использовать /usr/bin/open команда или команда Finder Go to Folder. С open можно открыть каталог в Средстве поиска, скрытом или нет, от оболочки. Например, open /usr/include открывает скрытую папку в новом окне Finder. Если Вы находитесь в Средстве поиска и хотите видеть содержание невидимой иерархии папок, выбрать Go to Folder из меню Go, или просто нажать команду - ~, и тип в пути Вашего желаемого места назначения.

Для получения информации о том, как разметить структуру каталогов Ваших завершенных приложений Mac, консультируйтесь с Инструкциями по Интерфейсу пользователя OS X и Технологическим Обзором Mac.

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

OS X поддерживает Расширенный Mac OS (HFS +), традиционный формат объема Macintosh и UNIX File System (UFS). HFS + рекомендуется и - то, на чем большинству пользователей установили их систему. Некоторым более серверно-ориентированным установкам установили их систему на UFS. Если Вы разрабатываете на UFS, необходимо полностью протестировать код HFS + также. Несмотря на то, что HFS + файловая система сохраняет случай, это не чувствительно к регистру. Это означает, что, если у Вас есть два файла, имена которых отличаются только случаем, HFS +, файловая система расценивает их как тот же файл. В разработке Вашего приложения Вы не должны поэтому пытаться поместить два объекта с именами, отличающимися только случаем в том же каталоге — например, Make-файл и make-файл.

Однако разработка на HFS + не обязательно гарантирует, что Ваше приложение будет работать над UFS. Слишком просто записать код, в котором Ваша программа открывает файл как org.mklinux.formattool.prefs одно время и как org. MkLinux.formattool.prefs другое время и получает абсолютно различные результаты.

Кроме того, не предполагайте, что ошибка неважна просто, потому что Вы видели его только на UFS. Другие файловые системы имеют подобные свойства, включая потенциально NFS, SMB или долю AFP, особенно когда те доли подаются чем-то другим, чем Mac. Таким образом ошибка, происходящая в одной файловой системе, вероятно, произойдет на других.

Ядро

Ядро любой операционной системы является своим ядром. Хотя OS X совместно использует большую часть своей базовой архитектуры с BSD, ядро OS X, известное как XNU, отличается значительно. XNU основывается на проекте микроядра Маха, но это также включает функции BSD. Это не технически реализация микроядра, но все еще обладает многими преимуществами микроядра, такими как механизмы межпроцессорного взаимодействия Маха и относительно чистое разделение API между различными частями ядра.

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

Как это касается фактических задач, которые должно выполнить ядро? Рисунок 9-1 иллюстрирует, как проявлены различные лица ядра.

Рисунок 9-1  лица XNU
XNU personalities

Аспекты Маха дескриптора ядра

Компоненты BSD

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

Откройте Directory и dscl Инструмент

Откройте Directory является встроенной системой каталогов OS X, которую системные процессы и порядок подачи заявки могут использовать, чтобы сохранить и найти административную информацию о ресурсах и пользователях. Откройте Directory включает компоненты, такие как OpenLDAP и Kerberos для обеспечения локальной и удаленной аутентификации.

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

Службы каталогов являются способом по умолчанию, которым OS X хранит пользователя и некоторую информацию о сети. Когда пользователь добавляется, система автоматически добавляет, что их информация к использованию локальной базы данных Открывает Directory. Традиционные инструменты такой как adduser или не существуйте или не работайте, как Вы могли бы ожидать. Можно добавить пользователей и группы несколькими способами:

Можно найти больше информации о NetInfo в страницах руководства для netinfo, nidump, nicl, nifind, niload, niutil, и nireport на компьютере рабочий OS X v10.4 или ранее. NetInfo больше не поддерживается в OS X v10.5 и позже. Необходимо использовать функциональность Службы каталогов вместо этого.

Можно найти, что больше информации о Службе каталогов в Открывает Directory Programming Guide и страницы руководства DirectoryService, dscl, dsconfigldap, dsexport, dsimport, и dsperfmonitor.

Пример: добавление пользователя из командной строки

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

  1. Создайте новую запись в локальной переменной (/) домен под категорией /users.

    dscl . -create /Users/portingunix

  2. Создайте и установите свойство оболочки в bash.

    dscl . -create /Users/portingunix UserShell /bin/bash

  3. Создайте и установите полное имя пользователя.

    dscl . -create /Users/portingunix RealName "Porting Unix Applications To OS X"

  4. Создайте и установите ID пользователя.

    dscl . -create /Users/portingunix UniqueID 503

  5. Создайте и установите свойство ID группы пользователя.

    dscl . -create /Users/portingunix PrimaryGroupID 1000

  6. Создайте и установите пользовательский корневой каталог. (Несмотря на имя NFSHomeDirectory, это может также использоваться для пути к корневому каталогу на локальном томе.)

    dscl . -create /Users/portingunix NFSHomeDirectory /Network/Servers/techno/Users/portingunix

    или

    dscl . -create /Users/portingunix NFSHomeDirectory /Users/portingunix

  7. Установите пароль.

    dscl . -passwd /Users/portingunix PASSWORD

    или

    passwd portingunix

  8. Для создания того пользователя полезным Вы могли бы хотеть добавить их к администраторской группе.

    dscl . -append /Groups/admin GroupMembership portingunix

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

Печать (CUPS)

OS X, начинающийся в версии 10.2, использует Common UNIX Printing System (CUPS) в качестве основания ее системы печати. CUPS является бесплатным программным обеспечением система печати (с открытым исходным кодом), которая также популярна в кругах UNIX и Linux. Для получения дополнительной информации о CUPS посмотрите, что OS X Распечатывает веб-сайт в http://developer .apple.com/printing.

Добрый день

Добрый день реализация IETF ZeroConf, работающего проект. Добрый день имеет три базовых детали:

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

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

Открытие службы является способом запросить локальные машины (использующий, многоадресно передает DNS), или сервер DNS для наблюдения, какие машины (компьютеры, принтеры, и т.д.) поддерживают данную службу. Если Вы пишете службу, можно зарегистрировать службу, использующую Добрый день. Тогда кто-либо еще, кто выполняет запрос, видит, что Ваша машина поддерживает ту службу.

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

Для получения дополнительной информации о Добрый день, см. Руководство по программированию Открытия Службы DNS.

Языки сценариев

С OS X можно выполнить сценарии оболочки в его собственном компоненте sh совместимая оболочка, bash, или включенный csh и tcsh. Можно также выполнить Ruby, Perl, Python, Tcl, PHP и другие сценарии, которые Вы разработали. Кроме того, OS X обеспечивает специфичный для Apple язык сценариев, AppleScript. Несмотря на то, что AppleScript очень мощен и может использоваться для создавания приложений сам, он разработан в основном для передачи с графическими компонентами операционной системы. Существует другое использование, которое можно найти для него, но это не замена для языков сценариев стиля UNIX. Можно использовать его, тем не менее, для помещения фронтэнда GUI на традиционные сценарии.

AppleScript соответствует языку Open Scripting Architecture (OSA) и может использоваться от командной строки до osascript команда. Другие языки могут быть сделаны OSA, совместимым для включения взаимодействия с операционной системой.

Безопасность и службы безопасности

OS X реализует Common Data Security Architecture (CDSA). Если необходимо использовать Authorization Services, Безопасный Транспорт или сертификаты в рамках CDSA, онлайн-документация доступна в http://developer .apple.com/.

Кроме того, OS X предоставляет OpenSSL и PAM для упрощения портирования приложений от других основанных на UNIX операционных систем до OS X.

Основанная на ролях аутентификация

По умолчанию в OS X нет никакого пароля пользователя root. Это - преднамеренное проектное решение максимизировать безопасность и упростить пользовательский интерфейс. Ваши приложения не должны предполагать, что пользователю нужен доступ суперпользователя к системе. Для продвинутых пользователей и разработчиков, sudo предоставлен для запуска привилегированных приложений в оболочке. Привилегированные приложения могут также быть запущены элементами администраторской группы. По умолчанию администраторская группа включена в список «sudoers» (который может быть найден в файле /etc/sudoers). Можно присвоить пользователей администраторской группе в Установках системы:

  1. Нажмите кнопку Users.

  2. Выберите пользователя из списка и нажмите Edit User или сделайте нового пользователя.

  3. Щелкните по вкладке Password.

  4. Проверка Позволяет пользователю администрировать этот компьютер.

  5. Тот пользователь может теперь использовать административные приложения, а также sudo в оболочке.

Несмотря на то, что это обычно считают небезопасной практикой для входа в систему как пользователь root, это упоминается здесь, потому что пользователь root часто используется для устанавливания приложений во время разработки. Если во время разработки необходимо включить пользователю root для себя.

В OS X до версии 10.5:

  1. Запуск /Applications/Utilities/NetInfo Manager.

  2. Выберите Domain> Security> Authenticate.

  3. Как запрошено, введите свое имя и пароль администратора.

  4. Теперь выберите Domain> Security> Enable Root User. В первый раз, когда Вы делаете это, необходимо выбрать пароль root.

В версии 10.5 OS X и позже:

  1. Запуск /Applications/Utilities/Directory Utility.

  2. Щелкните по значку блокировки для аутентификации себя.

  3. Выберите Edit> Enable Root User. В первый раз, когда Вы делаете это, необходимо выбрать пароль root.

Также можно использовать sudo passwd root от оболочки и набора надлежащий пароль root.