Я часто сталкиваюсь с термином "Unix-like" на многих веб-сайтах.
Там нет стандарта; это просто в том, как он себя ведет.
Но если бы я разрабатывал ядро с нуля, что бы оно считало «unix-like»?
В основном, что делает написанный код таким, как Unix?
linux
unix-philosophy
один аксон отсутствует
источник
источник
Ответы:
Я полагаю, что большинство "unix-подобных" ОС действительно прилагают очень серьезные усилия, чтобы придерживаться стандарта POSIX , который контролируется Open Group, которая также контролирует Единственную Спецификацию UNIX, которая определяет "истинную UNIX". Первое - это ядро позднего.
Таким образом, на самом деле существует стандарт, который определяет практичность Unix-подобных операционных систем. Посмотрите список «полностью» и «в основном» совместимых ОС в конце статьи в Википедии о POSIX.
Есть несколько очевидных причин, по которым linux, в частности, может не считаться полностью совместимым или сертифицируемым Спецификацией Single Unix (SUS), но это не потому, что любая данная система linux обязательно несовместима с ней. Статья в Википедии кратко описывает спецификацию следующим образом:
Это, очевидно, относится конкретно ко многим пользовательским компонентам (таким как оболочка), которые просто не являются частью ядра Linux. Таким образом, нет никакого способа, которым linux.org et. и др. может иметь только сертифицированное ядро - в этом смысле это вовсе не операционная система. Конечно, они могли бы попытаться сертифицировать какую-то конкретную систему, используя ядро, но это было бы бессмысленно в свете общей схемы распространения: ядро и люди, которые его поддерживают, независимы от людей, которые поддерживают ядро пользовательского пространства (GNU). которые не зависят от людей, которые поддерживают фактически собранные дистрибутивы ОС (Debian, Fedora и т. д.).
Я полагаю, что Debian или Fedora сами могут участвовать в процессе сертификации (например, RedHat Enterprise может стать «сертифицированным Unix»), но возникает вопрос, что это действительно желательно. Я бы предположил, что основной причиной для систем SUS является запуск программного обеспечения (коммерческого масштаба, не для потребителя), написанного для такого, что просто не является нишей для linux - люди, занимающиеся этим, будут платить тысячи долларов за лицензию для ОС, включая много поддержки и т. д., поскольку они также платят десятки или сотни тысяч долларов за лицензию за любое дополнительное программное обеспечение, которое они хотят запустить в системе. Linux и другие выпадающие, с другой стороны, преследовали цели проектирования помимо простого соответствия коммерческим целям, и есть различные примеры этого, например (изhttp://en.wikipedia.org/wiki/STREAMS ):
Интересное размещение, в котором подчеркивается, что SUS и The Open Group! = Linux,! = BSD и т. Д.
источник
Чтобы расширить первый ответ о POSIX, понять, что означает «unix-like», сначала нужно попытаться понять, что такое UNIX. Посмотрев документацию от Open Group , которой принадлежит торговая марка Unix, вы найдете подробности об эволюции спецификации Single UNIX - вот UNIX03 :
UNIX98 :
UNIX95 (мой акцент):
Серверные версии стандарта добавляют Интернет-сервер и IPv6 в некоторых случаях.
Поэтому, конечно, мы видим ссылку на AT & T Bell Laboratories, и язык C лежит в основе UNIX: язык C, модульные базовые инструменты и оболочка, а также то, как ядро, файловая система и другие ключевые компоненты ОС были спроектированы и реализованы. ,
Вот где книга Мориса Дж. Баха «Дизайн операционной системы UNIX» становится бесценным чтением, потому что это исторические вопросы на данный момент. Следует отметить, конечно, как это связано с другими изобретениями, такими как язык Си. C был разработан AT & T Bell для реализации Unix с языком, который может быть таким же быстрым, как сборка, но переносимым на другое оборудование, и большая часть POSIX является расширением стандарта C.
Что касается самого ядра, вы часто найдете такую концептуальную диаграмму, как эта, чтобы проиллюстрировать то, чем традиционно было ядро UNIX:
Вот некоторые выдержки из классической книги господина Баха (1986), в которой обсуждаются основы ядра UNIX System V:
Если вас интересуют различные реализации ядер в Unix-подобных операционных системах, вы также можете взглянуть на реализацию FreeBSD (4.4BSD) или на ядро Mach или посмотреть на сравнение этих возможностей.
Чем больше вы знаете о дизайне UNIX, тем больше вы понимаете, что произошло на следующей диаграмме о происхождении UNIX и его истории . Г-н Бах в своей книге говорит в основном о Системе V, но также обсуждает BSD:
Это больше, чем кажется на первый взгляд . Например, Mac OSX сертифицирована UNIX03, но вы видите, что он подключен к любому из чистых UNIX (в основном красным)?
Выше вы можете увидеть, как BSD, GNU, Microsoft и другие люди внесли свой вклад в эту вселенную. Хотя GNU и, в конечном счете, linux не имеют прямого отношения к UNIX, вы видите, что GNU - это попытка реорганизовать в мире открытого исходного кода инструменты и программное обеспечение из коммерческой UNIX, которые стали закрытыми. Таким образом, рассмотрение программного обеспечения, поддерживаемого GNU, дает представление, например, о первоначальных прототипных приложениях и библиотеках.
Лицензионные войны сыграли свою роль в эволюции (и иногда стагнации) UNIX. Вы можете сразу увидеть, что UNIX выстроены в соответствии с типом лицензии - закрытая или BSD ( BSD позволяет создавать код с закрытым исходным кодом ... см. OSX) и GPL, что позволяет Linux и GNU дополнять себя в мире авторского лева. Вот классическая карта ядра Linux, изначально разработанная Линусом Торвальдсом, которая также показывает, что ядро «может» быть в Unix-подобной операционной системе:
Это намекает на мысль о том, что тип конструкции « ядро » - это не то, что делает стандарт UNIX или что определяет Unix-подобную ОС. Об этом свидетельствует тот факт, что многие unix-подобные ОС могут иметь либо монолитное ядро, либо микроядро - монолитный был классическим типом разработки для UNIX. На самом деле, даже в чистых UNIX, HPUX имеет монолитное ядро, тогда как AIX использует микроядро. Эта дискуссия о дизайне связана с производительностью и не связана с происхождением или идентичностью Unix. С другой стороны, существует традиционный концептуальный подход к предоставлению сервисов программному обеспечению, работе с файловыми системами и т. Д. В операционных системах UNIX / unix.
Я полагаю, что такие соображения добавят контекст к части OS вашего вопроса.
источник