Насколько тесно связаны Mac OS X и BSD?

Я читал, что Mac OS X и bsd связаны между собой. Насколько тесно они связаны. Может ли программное обеспечение Mac OS X быть настроено и установлено на BSD?

46
задан jm3 31 March 2016 в 04:19
поделиться

6 ответов

Mac OS X - это разновидность BSD Unix. Как уже указывал Борелайд, это не обязательно означает, что перенос приложений Mac на другие разновидности BSD будет простым или даже управляемым, гораздо меньше, чем между другими распространенными разновидностями BSD. Каждый из них имеет свою специфику, и OS X - больше, чем многие другие.

Перенос программ из других разновидностей BSD в OS X также требует работы и не всегда работает (плавно или вообще), но обычно намного проще.

4
ответ дан 26 November 2019 в 20:36
поделиться

Если программа для Mac использует Cocoa, проприетарную библиотеку отображения Apple (что она делает, если она работает на Mac с графическим интерфейсом и не требует запуска X-сервера), то у вас могут возникнуть некоторые проблемы с запуском кода на обычной системе BSD.

Если ваш код использует только POSIX-специфицированные функции, он будет легко переноситься на Linux, BSD и даже Windows.

Это правда, что Mac OS X и BSD родственны. Хотя у них разные ядра, у них общий предок и значительный пользовательский код. Очевидно, я не могу количественно определить "насколько близки" - это субъективно.

7
ответ дан 26 November 2019 в 20:36
поделиться

Это зависит от того, какие приложения вы пытаетесь перенести. Если вы пишете консольные программы C / C ++, совместимые с POSIX, они будут компилироваться и нормально работать в любой системе, совместимой с POSIX (в основном, в Linux и BSD), но учтите, что OS X часто не реализует новейшие функции POSIX (например, utimensat ), которые доступны в Linux. С другой стороны, графические приложения используют Cocoa или более старую версию Carbon, для чего потребуется GNUstep. Перенос графических приложений довольно необычен, потому что каждая графическая среда имеет разные стандарты проектирования и соглашения, поэтому графические приложения обычно приходится писать с нуля для каждой графической среды.

1
ответ дан 26 November 2019 в 20:36
поделиться

Установлено - нет.

Возможно, перенесено из исходного кода - см. Gnustep, Cocotron, EtoileOS - все они предлагают разную степень совместимости со стеком разработки Cocoa (но не со старым Carbon). Таким образом разработано ограниченное количество программного обеспечения x-platform objective-C.

0
ответ дан 26 November 2019 в 20:36
поделиться

Еще во времена OS X 10.4 я провел некоторое время, не сумев написать VFS для OS X. В те дни из основных подсистем ядра только сетевой стек и VFS все еще были по-настоящему BSD. В то время даже VFS была частично переписана, чтобы сделать ее более модульной (все структуры данных BSD VFS стали непрозрачными указателями, а API осуществлялся через так называемые KPI-функции). Я полагаю, что сетевой стек шел тем же путем. Также был тонкий слой на интерфейсе с пользовательским окружением, который делал ОС похожей на BSD для пользовательских программ.

Все остальное было практически переписано или заменено: управление памятью, управление процессами и т.д. происходило из микроядра Mach; подсистема драйверов устройств была написана с нуля компанией Apple.

С точки зрения программирования пользовательского интерфейса, OS X очень похожа на BSD, и программы, написанные для BSD, должны быть легко переносимы. Однако в OS X есть множество API, которые недоступны в BSD. К ним относится почти все, что связано с пользовательским интерфейсом - графика, звук и т.д. Есть и другие интерфейсы, которых нет в BSD, например, API запуска, который является предпочтительным способом запуска фоновых процессов в OS X.

31
ответ дан 26 November 2019 в 20:36
поделиться

Статья BSD в Википедии хороша (и согласуется с моим собственным пониманием, чего бы это ни стоило). В ней говорится, что Darwin, система, на которой построена Mac OS X от Apple, является производной от 4.4BSD-Lite2 и FreeBSD, и отмечается, что 4.4BSD - это последний релиз, в создании которого принимала участие компания Berkeley.

Таким образом, Darwin является настолько BSD, насколько вы можете получить (как и все остальные BSD!). OS X относится к тем частям дистрибутива, которые не являются открытым исходным кодом, в основном к графическому интерфейсу, но включая различные фреймворки, и все, что полагается на них, не будет переносимым.

OS X в целом является UNIX 03 системой. Это эквивалентно тому, чтобы быть действительно POSIX-совместимой системой (в отличие от POSIX-подобной).

Как отмечалось в других ответах, пользовательские части ОС неудивительны для тех, кто имеет большой опыт работы с unix, и я редко сталкивался с трудностями при создании переносимых unix-программ на OS X.

В отличие от этого, не пользовательские части ОС совсем другие. Похоже, что Apple готова к инновациям в этих областях довольно охотно. Я думаю (но не уверен), что эти изменения формально являются частью Darwin. Одно из наиболее очевидных различий заключается в том, что launchd заменил cron, at, inetd и большую часть инфраструктуры запуска.

20
ответ дан 26 November 2019 в 20:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: