Насколько тесно связаны Mac OS X и BSD? - PullRequest
44 голосов
/ 10 августа 2010

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

Ответы [ 6 ]

29 голосов
/ 10 августа 2010

Во времена 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.

19 голосов
/ 10 августа 2010

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

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

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

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

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

7 голосов
/ 10 августа 2010

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

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

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

4 голосов
/ 10 августа 2010

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

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

1 голос
/ 10 августа 2010

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

0 голосов
/ 10 августа 2010

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

Возможно, перенесено из исходного кода - см. Gnustep, Cocotron, EtoileOS - все они предлагают различные степени совместимости со стеком разработки Какао (но не со старым Carbon). Таким образом, существует ограниченное количество программного обеспечения X-Platform Objective-C.

...