Является ли macOS UNIX? (И что это значит?)
Является ли macOS UNIX или просто Unix? Или это Unix-подобный? Мы отвечаем на бесконечные дебаты и объясняем такие стандарты, как POSIX и SUS.
macOS: UNIX или нет?
Эта тема поднимает кучу разных вопросов. Какова родословная macOS? Сколько из этого наследственного материала все еще присутствует в современных macOS, и имеет ли это значение? Прежде чем мы сможем ответить, является ли что-то UNIX, Unix или Unix-подобным, нам нужно понять, что означают эти термины. Кто решает, является ли что-то Unix или UNIX, и какие критерии они используют?
Давайте начнем с самого начала.
Unix был создан пятьдесят лет назад в Bell Labs , научно-исследовательской компании AT & T. Перенесемся в 1973 г. и в версию 4 Unix, которая была переписана на языке программирования C. Это сделало операционную систему намного более переносимой и более легкой для переноса на другие аппаратные платформы. В том же году Кен Томпсон и Деннис Ритчи , два основных архитектора Unix, представили на конференции доклад об операционных системах. Сразу же они получили запросы на копии операционной системы.
Связанный указом о согласии от 1956 года, AT & T должен был отказаться от «любого бизнеса, кроме предоставления услуг связи обычных операторов связи». Unix не квалифицировался как нечто, от чего AT & T могла бы извлечь выгоду. Итак, компания сделала что-то примечательное для того времени: распространил Unix в качестве исходного кода с либеральной лицензией. Небольшие сборы покрывали доставку и упаковку, а также «разумный гонорар».
Распространение Unixes
Поскольку Unix был предоставлен «как есть», он пришел без поддержки. В результате сообщество Unix начало объединяться, чтобы помогать участникам, а также исправлять и расширять Unix. Таким образом, вы можете получить исходный код, изменить его и получить поддержку от сообщества. Это знакомое кольцо. Различные разновидности Unix начали появляться, адаптироваться и настраиваться в соответствии с организацией, выполняющей работу.
Боб Фабри , профессор компьютерных наук в Калифорнийском университете в Беркли, был в программном комитете симпозиума по принципам операционных систем 1973 года. Он слушал презентацию Томпсона и Ричи, озаглавленную «Система разделения времени UNIX» .
Фабри запросил копию операционной системы, и в 1974 году Unix был установлен на PDP / 11 в Исследовательской группе по компьютерным наукам (CSRG) в Калифорнийском университете в Беркли. Примечательно, что Кен Томпсон провел там год, работая над тем, что быстро стало собственной разновидностью Unix в университете. Копии изменений и дополнений UC Berkeley были распространены и стали называться Berkeley Software Distribution (BSD). В конце концов, они стали дистрибутивами всей системы Unix, все еще известной как BSD. Номера версий, такие как 4.2BSD, идентифицировали разные версии.
В 1984 году AT & T была освобождена от строгих условий соглашения о согласии 1956 года и способна правильно продавать свою операционную систему. Он включает в себя код BSD, такой как TCP / IP , vi и оболочку C, csh . Даже при таком перекрестном опылении и сотрудничестве возникли трудности с лицензированием. BSD содержал код AT & T, который не был открытым исходным кодом, но элементы BSD были.
Версия BSD без кода AT & T была разработана, чтобы обойти эти проблемы. Однако когда код AT & T был удален, около 20 процентов ядра отсутствовало. Уильям Джолиц написал недостающие части, и эта версия Unix была выпущена как 386BSD . Проект 386BSD застопорился, но в 1993 году его база исходного кода породила проекты NetBSD и FreeBSD .
Это дало нам один кусок головоломки: FreeBSD.
Следующий шаг
После того, как он был уволен из Apple, Inc. в 1985 году, Стив Джобс основал компанию NeXT, Inc. Чтобы предоставить операционную систему для своей линейки продуктов для рабочих станций, NeXT разработал NeXTSTEP . Он использовал BSD в качестве кодовой базы, но представил совершенно другое ядро.
NeXT использовал модифицированную версию микроядра Mach и 4.3BSD для формирования NeXTSTEP, который является второй частью этой головоломки. Mach был разработан в Carnegie Mellon для облегчения исследований в области распределенных и параллельных вычислений. Исследовательская группа использовала BSD в качестве операционной системы и заменила ядро, а не написала свою собственную операционную систему.
В 1996 году Apple Inc. приобрела NeXT, Inc. и тем самым приобрела NeXTSTEP. Apple начала разрабатывать операционную систему, которая в конечном итоге стала macOS с помощью Mac OS X. Он обновил ядро Mach и заменил его более продвинутой версией, разработанной и использованной Open Software Foundation в операционной системе OSF / 1 . Apple также обновила компоненты BSD обновленными и улучшенными версиями из дистрибутива FreeBSD.
Apple вернула элементы ядра BSD обратно в ядро Mach. Он также разработал гибридное ядро, которое объединило характеристики как монолитной, так и микроядерной архитектуры.
Также был включен комплект ввода / вывода , разработанный Apple на основе DriverXit NeXTSTEP. Это позволило добавлять драйверы в ядро без необходимости каждый раз изменять его.
XNU — третья часть головоломки.
Стандарты POSIX и SUS
В 1996 году два органа по стандартизации — X / Open и Open Software Foundation — объединились, чтобы сформировать The Open Group .
Open Group является органом по сертификации торговой марки UNIX. Другими словами, перед тем, как вы сможете назвать ее UNIX, она должна проштамповать вашу операционную систему как соответствующую ее стандартам. UNIX во всех заглавных буквах является знаком соответствия.
Итак, категории следующие:
- Unix: семейство операционных систем. Это семейство включает как операционные системы UNIX, так и Unix-подобные операционные системы.
- Операционные системыUNIX : они были сертифицированы как соответствующие стандартам.
- Unix-подобныеоперационные системы : они выглядят и работают как Unix, но не были сертифицированы как совместимые.
Конечно, вполне возможно, что некоторые операционные системы в категории «Unix-like» могут быть протестированы завтра и признаны совместимыми. Сейчас это, по сути, UNIX, но их можно отнести только к категории Unix, потому что у них еще нет штампов.
Есть два стандарта, которые сертифицируют UNIX: POSIX и Single UNIX Specification (SUS) . SUS — это расширенный набор POSIX. Итак, что-то может быть POSIX-совместимым, но это не делает его UNIX. Однако, если что-то совместимо с SUS, это UNIX.
POSIX и SUS образуют большие коллекции документов (около 3700 страниц). Они определяют работу и ожидаемое поведение каждого аспекта совместимой системы UNIX. Все, от асинхронного и синхронного ввода-вывода до интерфейса сценариев и программ уровня пользователя, каталогизируется и определяется.
Стандарты определяют интерфейсы приложений и поведение во время выполнения, но не определяют, как они реализованы .
Итак, MacOS UNIX?
Ответ должен быть да.
Вы можете проследить его происхождение через FreeBSD до BSD, а оттуда — до Unix, распространяемого Bell Labs, до увеличения платы за лицензию от AT & T.
Но это не имеет значения.
Если вы пишете операционную систему с нуля прямо сейчас, если она удовлетворяет требованиям SUS, она считается UNIX. И не важно, как вы это реализуете. Ядро XNU в основе macOS представляет собой гибридную архитектуру. Он объединяет код Apple с частями ядер Mach и BSD.
Но это тоже не важно. Важно то, что он соответствует требованиям стандартов, по которым он измеряется.
Часть BSD ядра XNU предоставляет интерфейсы прикладного программирования POSIX (такие как различные системные вызовы API и BSD). Сохранение этого элемента ядра BSD без изменений в XNU является ключом к получению сертификации в качестве UNIX. Это позволяет XNU говорить о совместимости и совместимости UNIX с остальной частью системы.
macOS — это совместимая с UNIX 03 операционная система, сертифицированная The Open Group. Это было с 2007 года, начиная с MAC OS X 10.5. Единственным исключением был Mac OS X 10.7 Lion, но соответствие было восстановлено с OS X 10.8 Mountain Lion.
Забавно, но так же, как GNU означает «GNU — не Unix», XNU — «X не Unix ».
Источник
В чем разница Mac OS и Linux
Не надо писать в теме без толку и тупо кидать ссылки, все и так знаю, а афтор мудак, гугл сломали и тому подобное.
Меня вот интересует в чем собственно разница с точки зрения программирования?
Поскольку они являются POSIX-совместимыми (набор этих стандартов определяет интерфейс), то разрабатывая приложения основываясь на библиотеках стандарта можно писать любое переносимое ПО. Все стандартно: стандартный ввод-вывод, управление процессами, сигналы, потоки, демоны.
Так почему же все орут, что они оличаются как ночь и день?
Вот например возьмем ОЧЕНЬ сильное отличие файл паролей Linux: /etc/passwd Mac: netinfo(служба каталогов) но файл /etc/passwd используется в однопользовательском режиме.
И вот такие отличия всех в ужас вгоняют или я что то не понимаю?
Одним POSIX-ом долго сыт не будешь, если пишешь приложение с мордой. Приложения для макоси используют совершенно ни на что не похожий набор фреймворков (проприетарный, кстати, в отличие от базовой системы), в то время как в линукс мы имеем свой собственный зоопарк тулкитов в этом месте.
И если ты собрался писать консольный хелло ворлд, то да, так и есть. А если аудио-видео, окошки, интеграция с DE. то все уже немного сложнее.
и выигрышнее в пользу мака, т.к. нет зоопарка тулкитов, фреймворков, WM, DE и что там еще в этих ваших графических средах водится
Вот что без википедии-то твориться! 🙂
Меня вот интересует в чем собственно разница с точки зрения программирования?
Консольные утилиты часто собираются вообще без изменений, причем с теми же Makefile-ами.
Графические приложения можно писать на принятых в линуксе qt и gtk, но не нужно, потому что есть лучшие средства, нативные для мака.
Вы полагаете, ТС знает, что такое википедия?
Не, вброс не защитан. С точки зрения разработчика — зоопарк это как раз хорошо. Не нравится GTK? Пиши на qt, проблем-то. Или вообще на wxWidgets. Тебя ж никто не заставляет писать морду под все возможные тулкиты.
Это как раз плохо, ибо всем не угодишь.
я пробовал писать гуи под gtk, qt, wxwidgets — ни один так толком и не осилил. Вероятно проблема скорее моя, но CocoaTouch под iOS как-то лучше пошел, по крайней мере на начальном этапе
С точки зрения разработчика — зоопарк это как раз хорошо
и выигрышнее в пользу мака, т.к. нет зоопарка тулкитов, фреймворков, WM, DE и что там еще в этих ваших графических средах водится
А кто в здравом уме будет писать только под мак? Среди проприетарщиков не принято обделять одну систему на букву «Ш». А писать по два раза одно и тоже — имхо, идиотизм.
Зато в Linux обязательным стандартом является X11, а тулкиты — это надстройки над ним. Причём эти тулкиты почти все кроссплатформенные. Проблему я лишь вижу в интеграции в плане графических тем и других подобных плюшек. Но, думаю, кое-как решить можно. Qt, наприрмер, вроде достаточно хорошо подхватывает тему GTK.
В MacOS тоже есть X11, но не думаю, что яблочники обрадуются приложениям, использующим его.
Надо бы запретить отправку сообщений с объемом нецитируемого текста менее 10 символов. Сколько мусора бы исчезло сразу!
в чем собственно разница с точки зрения программирования?
пиши на жабе или на какой-нибудь другой кросс-платформенной штуке :3
Вот например возьмем ОЧЕНЬ сильное отличие файл паролей Linux: /etc/passwd Mac: netinfo(служба каталогов) но файл /etc/passwd используется в однопользовательском режиме.
ой, будто все программы хранят пароли именно там
Лучше искать разницу между FreeBSD и Mac OS, а не между Linux и Mac OS.
В чем разница между гомосеками и бородатыми хакерами
Не надо писать в теме без толку и тупо кидать ссылки, все и так знаю, а афтор мудак, гугл сломали и тому подобное.
Меня вот интересует в чем собственно разница с точки зрения нормального общения?
Поскольку они являются людьми (этот стандарт определяет интерфейсы), то основываясь на библиотеках стандарта можно смотреть футбол, спать в одной палатке и даже сидеть без трусов в бане с любым из них. Все стандартно: стандартный ввод-вывод, управление процессами, сигналы, потоки, демоны.
Так почему же все орут, что они оличаются как ночь и день?
и правда. что за шум?
Меня вот интересует в чем собственно разница с точки зрения программирования?
Поскольку они являются POSIX-совместимыми (набор этих стандартов определяет интерфейс) . бла-бла-бла
Потому что погромисты, понадеявшиеся на совместимость искаропки забывают про их существенные отличия 🙂 А потом проги, портированные с мака, не находят папку /home/vasya/Desktop в линуксе, хотя вроде бы используется не POSIX, а Qt и прога кроме линукса и мака еще винду поддерживает 🙂 Или программисты под маком не могут найти, куда пишутся логи, а потом замечают, что распухает то, что они ошибочно считали «исполняемым файлом» как в линуксе. И логи у них под макосью пишутся внезапно внутрь файла пакета с исполняшкой, потому что в проге жестко прошит текущий каталог.
И логи у них под макосью пишутся внезапно внутрь файла пакета с исполняшкой, потому что в проге жестко прошит текущий каталог.
С точки зрения разработчика — зоопарк это как раз хорошо. Не нравится GTK? Пиши на qt, проблем-то. Или вообще на wxWidgets.
Проблема в том, что в состоянии зоопарка сложно отполировать всё. А этот зоопарк ещё и шевелится, некоторые части объявляются deprecated, потом выкидываются. Далее идёт выкидывание из дистрибутивов.
Зато в Linux обязательным стандартом является X11, а тулкиты — это надстройки над ним.
Чем дальше, тем меньше от X11 остаётся в линуксах (давно пора). А тулкиты неплохо скрывают то, что есть.
Все стандартно: стандартный ввод-вывод, управление процессами, сигналы, потоки, демоны.
В линуксах принято забивать на posix и вообще на всё, что не linux или GNU. Привязываться к gcc, glibc, glib, иногда dbus (пусть и опционально), epoll. В общем, что вижу на своём компьютере, под то и пишу.
Отсюда же идёт традиция использовать хорошо закопанные вещи и считать, что это нормально/круто/модно (например, неумеющий в юникод говнософт, включая всякие suckless.org в полном составе).
Сам выдыхай. Или не знаешь, не говри 🙂 Это реальный случай из поддержки американского проекта на Qt. Rocketstream, может слышал? (Мы им поддержку SOCKS 5, туннелирование и «пробой фаерволов как в скайпе» запиливали. У меня сорцы еще завалялись, если что. У них просто деньги кончились внезапно — мы успели запилить тоннель для UDP/TCP и STUN-протокол, попутно исправляя косяки с поддержкой кроссплатформы. Они не заплатили вовремя — было велено сорцы рокетстриму не отдавать. А девелоперы были не в курсе — еще какие-то задачи присылали неделей позже :)) Эти люди использовали в маркетинге поделия хитрую формулу, чтоб показать, как оно «ускоряет интернеты», но не знали разницу между собственно исполняемым файлом и маковским пакетом, внутри которого этот файл лежит. Итог — писанина внутрь одной из веток, так как логи писались под линуксом в каталог с исполняшкой.
Гордый список поддерживамых платформ http://support.rocketstream.com/docs/RS1.7Install/ 🙂 Раньше у них была федорка и висита, теперь бубунта и семерочка. Проэкт деградирует^Wразвивается 🙂
Дооооооо, так хорошо, что порой охота разнести все эти ОйДе масштаба предприятия к такой-то матери.
PowerПЦ какой-то. Довольно, кстати, характерная ситуация.
Сударь, я считаю, что вы не правы, ибо 4.2
Ничего не изменило бы такое ограничение =)
Чем дальше, тем меньше от X11 остаётся в линуксах (давно пора). А тулкиты неплохо скрывают то, что есть.
Ололо, стандарт на окошки почти выкинули, а всё остальное — «ещё и шевелится, некоторые части объявляются deprecated, потом выкидываются. Далее идёт выкидывание из дистрибутивов».
Добро пожаловать в светлое будущее, чо.
В линуксах принято забивать на posix и вообще на всё, что не linux или GNU. Привязываться к gcc, glibc, glib, иногда dbus (пусть и опционально), epoll. В общем, что вижу на своём компьютере, под то и пишу.
gcc, glibc, glib, dbus переносимы на кучу платформ. GNU — это метаплатформа, построенная вокруг компилятора же.
Итог — писанина внутрь одной из веток, так как логи писались под линуксом в каталог с исполняшкой.
Макось позволяет от пользователя писать внутрь пакета? Закопайте.
Процесс установки в том виде, как достался нам, вообще не был заморочен какими-то там системными папками 🙂
Источник