Я читал, что Mac OS X и bsd связаны. Насколько тесно они связаны. Можно ли настроить Mac OS X на BSD?
Насколько тесно связаны Mac OS X и BSD?
Ответ 1
Назад во времена OS X 10.4 Я потратил некоторое время на то, чтобы не написать VFS для OS X. В те дни из основных подсистем ядра, только сетевой стек и VFS по-прежнему были действительно BSD. В то время даже VFS была частично переписана, чтобы сделать ее более модульной (все структуры данных BSD VFS стали непрозрачными указателями, а API - через функции, называемые KPI). Я считаю, что сетевой стек шел одинаково. На интерфейсе с пользовательским интерфейсом также был тонкий слой, который заставил ОС выглядеть как BSD для пользовательских программ.
Все остальное было переписано или заменено: управление памятью, управление процессами и т.д. поступало от микроядра Маха; подсистема драйвера устройства была написана с самого начала Apple.
В терминах программирования пользовательских программ OS X очень похож на BSD, а программы, написанные для BSD, должны быть легко переносимыми. Однако в OS X есть много API, которые недоступны в BSD. К ним относятся почти все, что связано с пользовательским интерфейсом - графикой, звуком и т.д. Существуют также другие интерфейсы, которых нет в BSD, такие как API запуска, который является предпочтительным способом OS X запуска фоновых процессов.
Ответ 2
Wikipedia статья BSD хороша (и соглашается с моим собственным пониманием, для чего это стоит). В нем говорится, что Darwin, система, на которой построена Apple Mac OS X, является производной от 4.4BSD-Lite2 и FreeBSD, и отмечает, что 4.4BSD является последней версией, в которую участвовал Беркли.
Итак, Дарвин - это BSD, как вы можете получить (как и все остальные BSD!). OS X относится к тем частям дистрибутива, которые не являются open-source, главным образом GUI, но включают в себя множество фреймворков, и все, что опирается на них, не будет переносимым.
OS X в целом представляет собой систему launchd заменил cron, at, inetd и большую часть инфраструктуры запуска.
Ответ 3
Если программное обеспечение Mac использует Cocoa, собственную библиотечную библиотеку Apple (что она делает, если она работает на Mac с графическим интерфейсом и не требует запуска X-сервера), тогда у вас могут быть некоторые проблемы с запуском кода на нормальная система BSD.
Если ваш код использует только функции, указанные в POSIX, он будет чисто переноситься на Linux, BSD и даже на Windows.
Верно, что Mac OS X и BSD связаны между собой. Хотя они имеют разные ядра, они имеют общий предок и значительный код пользователя. Очевидно, я не могу количественно определить "насколько близко" - это субъективное.
Ответ 4
Mac OS X - один из достоинств BSD Unix. Как уже указывал Борелайд, это не обязательно означает, что перенос приложений Mac на другие вкусы BSD был бы простым или даже управляемым, а тем более между другими распространенными вкусами BSD. Каждый из них привносит свою специфику, а OS X больше, чем большинство.
Портирование программ из других BSD-аксессуаров в OS X также включает в себя работу и не всегда работает (плавно или вообще), но обычно гораздо более прост.
Ответ 5
Это зависит от того, какие приложения вы пытаетесь подключить. Если вы пишете POSIX-совместимые консольные программы C/С++, они будут компилироваться и работать очень хорошо под любой POSIX-совместимой системой (в основном, с Linux и BSD-аксессуарами), но обратите внимание, что OS X часто не реализует новейшие функции POSIX (например, utimensat
), которые доступны в Linux. С другой стороны, в графических приложениях используется Cocoa или более старый Carbon, для чего потребуется GNUstep. Портирование графических приложений довольно необычно, потому что каждая графическая среда имеет разные стандарты и соглашения по дизайну, поэтому графические приложения обычно нужно писать с нуля для каждой графической среды.
Ответ 6
Установлен - нет.
Портировано из источника, может быть - см. Gnustep, Cocotron, EtoileOS - все из которых предлагают разную степень совместимости со стеком разработки Cocoa (но не с более старым Carbon). Существует ограниченное количество программного обеспечения x-platform objective-C, разработанного таким образом.