Является ли 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 ».
Источник
Познакомьтесь с UNIX в исполнении Mac OS
Основной вопрос заключается в том, зачем же тогда возиться с командной строкой, если в большинстве случаев можно обойтись и без нее? Для настоящих хакеров ответ на этот вопрос очевиден: чтобы получить доступ ко всей мощи системы, невидимой для простых пользователей. Однако командная строка в действительности нужна не только хакерам — наоборот, это инструмент, который может оказаться очень полезным для каждого. Например, с помощью командной строки можно внести изменения в такие компоненты Mac OS X, которые не могут быть модифицированы иным способом. Кроме того, в некоторых случаях командная строка по-прежнему представляет собой более мощное и гибкое средство, нежели графический пользовательский интерфейс.
Простейший способ получить доступ к командной строке заключается в вызове приложения Terminal (его можно найти в папке Applications/Utilities). Когда приложение Terminal запускается и начинает работу, в вашем распоряжении оказывается оболочка (shell). В мире UNIX оболочкой называется программа, которая ожидает команд пользователя и исполняет их (в чем-то это поведение напоминает поведение приложения Finder). Именно в среде этой оболочки вы перемещаетесь по файловой системе, копируете файлы, создаете каталоги (directories) и модифицируете файлы. Вся эта работа выполняется в текстовом режиме, сильно отличающемся от графического интерфейса Mac и гораздо менее дружественном по отношению к пользователю. Тем не менее, во многих ситуациях графические инструменты сильно проигрывают командной строке в том, что касается доступных возможностей и гибкости.
Практически все функции UNIX являются конфигурируемыми (именно благодаря этому разработчики Apple и смогли превратить UNIX в Mac OS X), и вы, работая с оболочкой, тоже имеете доступ к таким возможностям. Используемой по умолчанию оболочкой является bash (Bourne Again shell), но вы можете выбрать и другую — вариантов выбора здесь предостаточно (рис. 4.1). Для большинства пользователей оболочка bash будет наилучшим выбором, так как она позволит гарантировать совместимость со всеми командными сценариями (scripts), которые приведены в этой книге и большинством сценариев, доступных для скачивания из Интернета.
Итак, приступим к знакомству с UNIX. Запустите приложение Terminal (Applications/Utilities/Terminal). Как только приложение Terminal запустится, вы увидите приглашение командной строки, выглядящее примерно следующим образом:
Рис. 4.1. Изменение оболочки, используемой по умолчанию
Здесь computer — это имя вашего Mac, а username — имя, под которым вы зарегистрировались в системе. Приглашение командной строки обладает гибкими возможностями по конфигурированию. Для обеспечения единообразия, в этой книге для обозначения приглашения командной строки будет использоваться символ $.
Как уже говорилось, значок $ представляет собой приглашение командной строки. При выполнении примеров, приведенных здесь и далее, вам его вводить с клавиатуры не следует.
) обозначает ваш домашний каталог, в котором вы находитесь в данный момент (в мире UNIX папки принято называть каталогами). Чтобы просмотреть содержимое вашего текущего каталога, введите следующую команду и нажмите клавишу Return:
Посмотрите на результат, возвращенный командой — он в точности соответствует содержимому вашей домашней папки (рис. 4.2).
Рис. 4.2. Содержимое домашнего каталога, отображаемое приложением Terminal
Для сравнения, посмотрите, как содержимое вашей домашней папки отображается приложением Finder — вы сразу же увидите сходства и различия в принципах работы между UNIX и приложениями Mac OS X с графическим интерфейсом (рис. 4.3).
Рис. 4.3. Содержимое домашнего каталога, отображаемое приложением Finder
Изменение оболочки, используемой по умолчанию
Как уже говорилось ранее в этом подразделе, приглашение командной строки обладает бесконечными возможностями по конфигурированию. Если вы работаете в системе, которая была получена путем последовательного обновления более ранних версий Mac OS X до последующих, вы можете обнаружить, что в вашем случае при вызове приложения Terminal по умолчанию используется оболочка tcsh, а не bash. Не удивляйтесь этому, потому что tcsh была оболочкой по умолчанию вплоть до выхода Mac OS X Panther, а параметры предпочтительной настройки при обновлении операционной системы не модифицируются.
Чтобы изменить стандартную оболочку на bash (или переключиться на использование какой-либо иной оболочки), раскройте панель параметров предпочтительной настройки системы и выберите опцию Accounts. На экране появится панель со списком учетных записей пользователей. Щелкните по значку с изображением замка для аутентификации, наведите курсор на имя учетной записи (Account) и выполните щелчок правой кнопкой мыши, чтобы вывести контекстное меню. Как вариант, для вывода контекстного меню можно навести курсор на имя учетной записи и выполнить щелчок мышью при нажатой клавише Ctrl. Появится новое меню с единственной опцией, Advanced Options. Выберите ее, и на экране появится диалоговое окно, показанное на рис. 4.1. В этом окне вы можете изменить используемую по умолчанию оболочку, выбрав нужную из списка Login Shell.
Ваш новый друг — тильда
) может сильно запутать новичков, не слишком хорошо освоивших работу с приложением Terminal. Стандартный способ объяснить его смысл и значение заключается в том, чтобы сказать, что
используется для обозначения вашего домашнего каталога. Это объяснение является довольно точным, но, тем не менее, все равно может создать путаницу, если вы не знаете точного пути к вашему домашнему каталогу. Наиболее четким объяснением будет рекомендация считать
просто удобным сокращением. Ее ввод эквивалентен вводу пути к каталогу /Users/username из командной строки Terminal. Здесь username — это то имя, под которым вы зарегистрировались в системе.
Быстрый ввод справочной информации о работе с TERMINAL
Любой начинающий пользователь, приступающий к работе с Terminal, наверняка заинтересуется — а где же находятся файлы справочной системы (Help), изучив которые можно было бы самостоятельно разобраться во многих вопросах. Поскольку Terminal — это точно такая же программа, как и любое другое приложение Mac OS X, логично было бы предположить, что доступ к файлам справки можно получить точно так же, как и к файлам справки других приложений — через меню окна Finder.
Однако в данном случае это не принесет вам никакой пользы и не даст никакой информации о приложении, которое вы запускаете из среды Terminal. Например, если вам захочется узнать больше о команде grep, поистине всемогущему средству поиска из мира UNIX, то полезной информации из меню Help вы не получите. Однако не спешите думать, что все пропало — файлы справочной системы для всех программ, запускаемых через Terminal (например, cp, grep, imaemagick и т. п.), все же существуют. Они называются страницами man (manual pages или manpages). Страницы man представляют собой инструкции по использованию соответствующих программ. Чтобы прочесть эти руководства, введите из командной строки следующую команду $ man programname. Здесь programname — это имя соответствующей команды. Например, команда $ man rm отобразит страницу, на которой будет рассказано все о команде rm, с практическими примерами ее использования.
Теперь, когда приложение Terminal уже запущено и вы ознакомились с азами, настало время внести ряд модификаций, которые сделают вашу жизнь чуть проще. В первую очередь необходимо отметить, что Terminal является многооконным приложением и поддерживает множество вкладок (в данном случае вкладки аналогичны вкладкам Safari, но поддерживается просмотр на вкладках только в Leopard). Эта возможность очень удобна, и вы наверняка захотите пользоваться ее преимуществами, потому что хотя Terminal и может одновременно выполнять множество задач, но объем информации, получаемой вами в результате, существенно ограничен.
Если вы работаете в окне Terminal над написанием сценария на языке Perl и внезапно (но вполне предсказуемо) вдруг захотите получить доступ к странице man, вы испытаете затруднения, поскольку удовлетворить все потребности в одном окне достаточно затруднительно. Решение заключается в использовании вкладок или множества окон. Например, на одной вкладке вы можете работать с текстовым редактором из командной строки, на другой — просматривать страницы man, а на третьей — тестировать сценарии Perl, причем ничто не мешает вам создать и еще дополнительную вкладку для наблюдения за сетевым трафиком.
Если вы работаете с одной из версий Mac OS X, более ранних, нежели Leopard, то вкладки в окне Terminal будут недоступны, и вам придется прибегать к запуску множества окон. Чтобы обойти это ограничение, вы можете попробовать пользоваться бесплатной утилитой iTerm. iTerm представляет альтернативу Terminal с поддержкой вкладок, а загрузить ее можно со следующего адреса: http://iterm.sourceforge.net.
Ну, а теперь, ознакомившись с базовыми возможностями Terminal, настало время приступить к его активному использованию!
Вполне возможно, что вы уже сталкивались с такой ситуацией, когда одна из запущенных вам программ зависала, и для принудительного завершения ее работы вам приходилось пользоваться опцией Force Quit из меню Apple. Проблема здесь заключалась в том, что на вашем Mac работает гораздо большее количество процессов, нежели отображаемые в окне Force Quit.
Чтобы корректно удалить именно тот процесс, который и требуется, хорошо бы отобразить список всех процессов, работающих в системе. Сделать это можно из окна Terminal с помощью команды top. Чтобы инициировать top, введите top в ответ на приглашение Y, а затем нажмите клавишу Return (рис. 4.4).
Рис. 4.4. Результаты вывода команды top
Если вы раскроете окно Force Quit и сравните его содержимое с выводом команды top, то вы увидите, что top отображает намного большее количество процессов, чем окно Force Quit. Если какой-то из процессов ведет себя некорректно, или если вам требуется аварийно завершить работу процесса, не отображаемого в окне Force Quit, то именно Terminal придет вам на помощь. Обратите внимание на идентификатор процесса (PID, Process ID, Process Identifier), работу которого вам требуется завершить, и либо нажмите клавишу Q (чтобы завершить работу top), либо откройте в окне Terminal новую вкладку (новая вкладка будет особенно полезной, если вы планируете остановить не один, а несколько процессов).
Затем введите команду kill PID. Допустим, что в рассматриваемом примере вам требуется завершить работу приложения Snapz Pro (оно не отображается в меню Force Quit). Чтобы добиться поставленной цели, введите команду kill 545 и нажмите клавишу . Обратите внимание, что на вашем компьютере это число практически наверняка будет другим — вводить надо не 545, а именно то число, которое отображается в столбце PID левее имени приложения, которое требуется принудительно закрыть. Затем перейдите на предыдущую вкладку и с помощью команды top убедитесь в том, что программа Snapz Pro больше не работает. Теперь, когда вы вооружены командой kill, а также новым способом наблюдения за работающими программами с помощью Terminal, вы сможете справиться с коварными проблемами утечек памяти и связанным с ними падением производительности.
Программа ACTIVITY MONITOR — это эквивалент команды TOP с графическим интерфейсом
Этот совет предназначается тем, кто оценил саму идею, заложенную в программу top, но ненавидит само упоминание о Terminal и командной строке. Есть хорошие новости и для них! На сегодняшний день любой компьютер Mac поставляется с замечательной утилитой Activity Monitor, которая представляет собой аналог команды top, но только снабженный графическим пользовательским интерфейсом (GUI). Для этого следует просто перейти в папку /Applications/Utilities, найти в ней это приложение и запустить его. Вам будут доступны все возможности команды top, с красивым графическим интерфейсом.
Можно произвести интересный эксперимент — запустите одновременно команду top и Activity Monitor и посмотрите, какая из программ потребляет больше ресурсов процессора (CPU). В моем случае Activity Monitor потребляет примерно в 4 раза больше ресурсов, нежели top.
Источник