Какие функции есть у Darwin, которых нет у других Unix-систем, и наоборот?

Какие функции есть у Darwin, которых нет у других Unix-систем, и наоборот?

Есть ли у Darwin какие-то особенности, характерные только для него? Есть ли у других Unix-ов особенности, которых нет у Darwin?

решение1

OS X — единственная оставшаяся операционная системана основе микроядра Machчто также все еще актуально с коммерческой точки зрения. Есть несколько текущих исследовательских проектов и устаревших ОС, которые, без сомнения, все еще используются в производственных условиях на старых машинах, но ничего такого, что вы могли бы пойти и купить на новой машине сегодня.

OS X имеет обычный набор несовместимостей функций ядра, которые есть у любого *ix. Самая большая из тех, с которыми мне недавно пришлось иметь дело, это отсутствиеОчереди сообщений System V. ( msgget(2)и друзья.) Нам пришлось заменить наш код очереди сообщений — который был написан для «реального» варианта System V и позже перенесен на Linux — на TCP/IP, чтобы наше программное обеспечение работало на OS X. Для нашего приложения различия между этими двумя методами IPC имели значение в то время, когда мы сделали выбор в пользу очередей сообщений, но из-за более поздних архитектурных изменений переход на TCP/IP оказался не такой уж большой проблемой.

решение2

Если говорить вкратце, разве Darwin не является всего лишь тонким слоем BSD поверх Mach 2.0?

Раньше я пользовался NeXTStep, не знаю, насколько нынешняя MacOSX отличается от NeXTStep, но...

Mach 2.0 предлагал другой набор абстракций на уровне ядра:

  1. «Задача»: это адресное пространство + набор «портов», возможно, с запущенным в нем потоком.
  2. Потоки. Это была планируемая единица выполнения. Задача (адресное пространство) могла иметь более 1 запущенного в ней потока. Я считаю, что файлы Mach-O (формат исполняемых файлов Mach) могли указывать более одного потока во время выполнения процесса: нет функции main(), которая запускала бы больше потоков Cthreads, ОС запускала бы один.
  3. Порты. Они не похожи на порты TCP или UDP. Они были типизированными, упорядоченными потоками сообщений. Скорее RPC-подобными. Вы составляли файл спецификации протокола, затем пропускали его через компилятор, чтобы получить заглушки на стороне сервера и клиента, процедуры маршалинга и демаршалинга и т. д.
  4. Пейджеры памяти на уровне пользователя. Вы можете настроить задачу+поток для обработки страниц адресных пространств других задач.

Первоначальные разработчики CMU Mach использовали эти абстракции дляподражатьПроцессы BSD Unix, процессы MS-DOS и в сказочном припадке чудачества задачи VMS. Каждая задача VMS занимала 2 задачи Mach, плюс много потоков. Кто-то продавал эмулятор Mac OS (до OSX) для NeXTStep, который использовал пейджеры пользовательского пространства с хорошим эффектом.

Старая страница публикаций CMU Mach: http://www.cs.cmu.edu/afs/cs/project/mach/public/www/doc/documents_top.html

Статья VMS-on-Mach: http://www.sture.ch/vms/Usenix_VMS-on-Mach.pdf

решение3

Это не совсем ответ, но,DTrace— великолепный инструмент отладки системы, существующий для Solaris, Darwin/OS X и *BSD, но не для Linux.

решение4

Я думаю, лучше всего описать Дарвина как еще одногоразновидность UNIX. Solaris — один. HP/UX — другой. Есть многоболее, может быть, не такие "громкие", но они есть. И у каждого вкуса есть своя специфика. Вот почему вообще есть вкусы. Какая-то компания придумывает что-то, что поможет это продать (или просто работать с этим или даже администрировать), и создает это и дает ему свое имя.

Связанный контент