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

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


person Boolean    schedule 10.08.2010    source источник


Ответы (6)


Еще во времена 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 для запуска фоновых процессов.

person JeremyP    schedule 10.08.2010

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

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

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

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

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

person Norman Gray    schedule 10.08.2010

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

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

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

person Borealid    schedule 10.08.2010
comment
@AmokHuginnsson На самом деле, Windows XP, 7, Server 2003 и 2003 R2 (о которых я знаю) имеют компонент POSIX, который можно установить через запись панели управления «Добавить или удалить компоненты Windows». После установки они действительно становятся совместимыми с POSIX. - person Borealid; 03.03.2015

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

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

person Christopher Creutzig    schedule 10.08.2010

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

person Philipp    schedule 10.08.2010

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

Может быть, портировано из исходного кода — см. Gnustep, Cocotron, EtoileOS — все они предлагают разную степень совместимости со стеком разработки Cocoa (но не со старым Carbon). Существует ограниченное количество программного обеспечения для X-платформы Objective-C, разработанного таким образом.

person JulesLt    schedule 10.08.2010