Що робить операційну систему "Unix-Like"?


20

Я часто зустрічаю термін "схожий на unix" на багатьох веб-сайтах.

Немає стандарту; це просто в тому, як він поводиться.

Але якби я розробляв ядро ​​з нуля, що б вважало його "схожим на unix"?

В основному, які речі створюють написаний код на зразок Unix?


1
en.wikipedia.org/wiki/Unix-like (яка сама по собі посилається на linfo.org/unix-like.html )
Drav Sloan

Відповіді:


15

Немає стандарту; це просто в тому, як він поводиться.

Я вважаю, що більшість "схожих на Unix" ОС докладають дуже серйозних зусиль, щоб дотримуватися стандарту POSIX , який контролює Open Group, яка також контролює єдину специфікацію UNIX, яка визначає "справжній UNIX". Перша - ядро ​​пізнішої.

Таким чином, насправді існує стандарт, який визначає практику роботи операційних систем, схожих на unix . Перегляньте список "повністю" та "переважно" сумісних ОС в кінці статті вікіпедії на POSIX.

Є кілька очевидних причин, зокрема, що Linux не може вважатися повністю сумісним або сертифікованим Єдиною специфікацією Unix (SUS), але це не тому, що будь-яка дана система Linux обов'язково несумісна з нею. Стаття Вікіпедії узагальнює специфікацію таким чином:

SUSv3 налічує близько 3700 сторінок, які тематично розділені на чотири основні частини:

Базові визначення (XBD) - перелік визначень та конвенцій, що використовуються в специфікаціях, і список файлів заголовків C, які повинні надаватися сумісними системами. Загалом надано 84 файли заголовків.

Shell and Utilities (XCU) - перелік утиліт та опис оболонки, ш. Загалом вказано 160 комунальних послуг.

Системні інтерфейси (XSH) - містить специфікацію різних функцій, які реалізуються як системні виклики або функції бібліотеки. Всього вказано 1123 системних інтерфейсів.

Обґрунтування (XRAT) - пояснення, що стоїть за стандартом.

Стандартний користувальницький командний рядок та інтерфейс сценаріїв - це оболонка POSIX, розширення оболонки Борна на основі ранньої версії оболонки Корна.

Інші програми, сервіси та утиліти на рівні користувача включають awk, echo, ed, vi та сотні інших. Необхідні послуги на рівні програми включають основні послуги вводу / виводу (файлові, термінальні та мережеві).

Тестовий набір супроводжує стандарт. Він називається PCTS або тест-пакет для сертифікації POSIX.

Крім того, SUS включає специфікацію CURSES (XCURSES), яка вказує 372 функції та 3 файли заголовка. Загалом, SUSv3 визначає 1742 інтерфейси.

Це, очевидно, стосується багатьох компонентів користувача (наприклад, оболонки), які просто не входять до ядра Linux. Тож немає можливості, щоб linux.org et. ін. може мати сертифіковане ядро ​​самостійно - у цьому сенсі це зовсім не операційна система. Звичайно, вони могли б спробувати сертифікувати якусь конкретну систему за допомогою ядра, але це було б безглуздо з огляду на загальну схему розподілу: ядро ​​та люди, які його підтримують, не залежать від людей, які підтримують ядро ​​користувача (GNU) які не залежать від людей, які підтримують фактично зібрані дистрибутиви ОС (Debian, Fedora тощо).

Я вважаю, що Debian або Fedora самі могли брати участь у процесі сертифікації (наприклад, RedHat Enterprise може стати «сертифікованим unix»), але це ставить питання про те, що таке насправді бажано. Я б припустив, що основна причина для систем SUS - це запуск (комерційного масштабу, неспоживчого) програмного забезпечення, написаного для такого, що просто не є нішу Linux - люди, які роблять це, платять тисячі доларів за ліцензію на ОС, включаючи лоти підтримки тощо, оскільки вони також платять десятки чи сотні тисяч доларів за ліцензію за будь-яке додаткове програмне забезпечення, яке вони хочуть запустити в системі. З іншого боку, Linux та інші люди, що пережили, переслідували цілі дизайну, що виходять за рамки простого дотримання комерційних цілей, і є різні приклади цього, наприклад (зhttp://en.wikipedia.org/wiki/STREAMS ):

STREAMS необхідні для відповідності версіям Єдиної специфікації UNIX 1 (UNIX 95) та 2 (UNIX 98), але внаслідок відмови розробників BSD та Linux у наданні STREAMS [цитування необхідне] було позначено як необов'язкове для POSIX відповідність Остін Груп у версії 3 (UNIX 03).

Цікаве житло, що підкреслює, що SUS та The Open Group! = Linux,! = BSD тощо.


2
Зауважте, що сертифікація відрізняється від дотримання. Наприклад, недоцільно для Linux Foundation отримувати сертифікацію кожної версії ядра через вартість та швидкість розробки. Але це не означає, що це (ядро) не повністю або здебільшого не відповідає.
strugee

2
@strugee Стандарт POSIX не застосовується до ядра та не піклується про нього. Стандартизовано - це команди (shell, ls, cat, ...) та API (що надає libc, потоки). Що робить Unix-дистрибутив на основі Linux, це в основному компоненти GNU (команди та glibc). Ядро знаходиться поза сферою сертифікації / відповідності.
jlliagre

1
Не спростовувати, а уточнювати (я повторюю це з мого коментаря до відповіді iluminÉ): стандарти - це "що", ядро ​​- "як". Я читав лише біти та фрагменти стандартів, але не думаю, що вони взагалі посилаються на "ядро" (це просто "система"). Отже сертифікація та відповідність WRT: це "що" робить ядро ​​/ ОС, а не "як" це робить.
goldilocks

3
@strugee Єдина специфікація Unix застосовується до інтерфейсів користувача. Звичайно, ядро ​​залучається, але мій коментар стосувався вашої заяви про сертифікацію ядерної бази Linux. Ядро не може бути сертифіковане, у ньому відсутні всі компоненти, з якими взаємодіє процес сертифікації. Те, що можна сертифікувати (або принаймні намагатися зробити якомога суміснішим) - це Операційна система, тобто те, що прийнято називати розподілом у спільноті Linux.
jlliagre

2
@strugee Це може бути причиною, однак, це не стільки швидкий перекидання, але це те, що немає зобов'язань забезпечити не сумісні зміни. Наприклад, Solaris 10 відповідає сумісності, гарантуйте цю сумісність, і тому було сертифіковано Unix03 з десяток оновлень. Більше того, комбінація Gnu / Linux намагається бути настільки ж сумісною, наскільки вона може / хоче, але не більше. Він (майже) ніколи не намагався бути сертифікованим, оскільки це і дорогий процес, і все одно не буде виконувати, оскільки деякі вимоги відсутні (навмисно), а деякі розширення несумісні
jlliagre

12

Щоб розкрити першу відповідь про POSIX, зрозуміти, що означає "схожий на unix", спершу слід спробувати зрозуміти, що саме таке UNIX. Переглянувши документацію Відкритої групи , яка є власником торговельної марки Unix, ви знайдете подробиці про розвиток єдиної специфікації UNIX - ось UNIX03 :

Стандарт продукту UNIX 03 - це марка для систем, що відповідають версії 3 Єдиної специфікації UNIX. Це значно вдосконалена версія продуктового стандарту UNIX 98. Обов'язкові вдосконалення включають узгодження з ISO / IEC 9989: 1999 C програмуванням, програмою IEEE Std 1003.1-2001 та ISO / IEC 9945: 2002. Цей стандарт продукту включає такі обов'язкові стандарти продукту: інтернаціоналізовані системні виклики та бібліотеки, розширені V3, команди та утиліти V4, мова мови V2 та інтернаціоналізовані інтерфейсні термінали.

UNIX98 :

Стандарт продукту UNIX 98 є значно вдосконаленою версією продуктового стандарту UNIX 95. Обов’язкові вдосконалення включають: (1) інтерфейси ниток, (2) розширення підтримки багатобайтової підтримки (MSE), (3) підтримка великих файлів, (4) динамічне посилання, (5) зміни для усунення апаратних залежностей або обмежень довжини даних та (6) ) 2000 рік змін. Крім того, включені наступні додаткові удосконалення: засоби адміністрування програмного забезпечення та набір API для підтримки в режимі реального часу. Цей стандарт продукту включає такі обов'язкові стандарти продукту: інтернаціоналізовані системні виклики та бібліотеки, розширені V2, команди та утиліти V3, мова C, транспортна служба (XTI) V2, розетки V2 та інтернаціоналізовані інтерфейсні термінали. Крім того, він також може відповідати Стандарту продукту адміністрування програмного забезпечення.

UNIX95 (мій акцент):

Цей Стандарт продукту визначає консолідовану платформу для підтримки широкого спектру застосунків, спочатку розроблених для одного з класів операційних систем, які були отримані з коду операційної системи UNIX та / або інтерфейсів, спочатку розроблених AT&T , на додаток до наданих засобів за базовим продуктом. Він має ширший обсяг, ніж База. Цей стандарт продукту включає такі стандарти продукту: розширені інтернаціоналізовані системні виклики та бібліотеки, команди та утиліти V2, мова C, транспортна служба (XTI), розетки та інтернаціоналізовані інтерфейсні термінали.

Серверні версії стандарту в деяких випадках додають Інтернет-сервер та IPv6.

Звичайно, ми бачимо, що посилання на AT&T Bell Laboratories і мова C лежить в основі того, що є UNIX: мова C, модульні базові інструменти та оболонка, а також те, як ядро, файлова система та інші ключові компоненти ОС були розроблені та реалізовані .

введіть тут опис зображення

введіть тут опис зображення

Ось де книга Модис Дж. Баха «Дизайн операційної системи UNIX» стає неоціненною для читання, оскільки на даний момент це історичні питання. Зрозуміло, що це пов'язано з іншими винаходами, такими як мова С. C був розроблений AT&T Bell для впровадження Unix з мовою, яка може бути такою ж швидкою, як збірка, але портативною для різних апаратних засобів, і багато POSIX - це розширення до стандартного C.

Наскільки це стосується самого ядра, ви часто знайдете концептуальну діаграму, як ця, щоб проілюструвати те, про що ядро ​​UNIX традиційно стосувалося:

введіть тут опис зображення

Ось кілька уривків із класичної книги містера Баха (1986), в якій обговорюються основи ядра UNIX System V:

Однак вони [додаткові підсистеми та програми] всі користуються сервісами нижчого рівня, зрештою наданими ядром, і вони користуються цими послугами через набір системних викликів. У системі V існує близько 64 системних дзвінків, з яких менше 32 використовуються часто. Вони мають прості параметри, які роблять їх простими у використанні, але надають користувачеві велику потужність. Набір системних викликів та внутрішніх алгоритмів, які їх реалізують, утворюють тіло ядра [...]

[...] двома його основними компонентами є файлова підсистема та підсистема процесу.

Файли організовані у файлові системи, які розглядаються як логічні пристрої; фізичний пристрій, такий як диск, може містити кілька логічних пристроїв (файлових систем). Кожна файлова система має суперблок, який описує структуру та вміст файлової системи, а кожен файл у файловій системі описується індедом, який дає атрибути файлу. Системні дзвінки, що маніпулюють файлами, роблять це через inodes. [і буферний пул]

[...] Є дві версії inode: дискова копія, яка зберігає інформацію про inode, коли файл не використовується, і вбудована копія, яка записує інформацію про активні файли.

Виконання користувацьких процесів у системах UNIX поділяється на два рівні: користувальницький і ядерний. Коли процес виконує системний виклик, режим виконання процесу змінюється від призначеного для користувача режиму в режим ядра : операційна система виконує і спробу обслужити запит користувача [...]

[...] Філософія системи UNIX полягає у наданні примітивів операційної системи, які дозволяють користувачам писати невеликі модульні програми, які можна використовувати як будівельні блоки для створення більш складних програм. Один з таких примітивних, помітних користувачам оболонок, - це можливість перенаправляти введення-виведення .

[...] Окрім обслуговування системних викликів, ядро ​​здійснює загальну бухгалтерію для спільноти користувачів, контролює планування процесів, керує зберіганням та захистом процесів у основній пам'яті, поле переривання, керування файлами та пристроями та піклування про системні помилки умови.

Якщо ви зацікавлені в різних реалізаціях ядер в UNIX-подібних операційних систем, ви також можете подивитися регент реалізації (4.4BSD) або на Mach ядрі або подивіться на це порівняння їх особливостей.

Чим більше ви знаєте про дизайн UNIX, тим більше ви розумієте, що сталося на наступній діаграмі про походження UNIX та його історію . У своїй книзі пан Бах в основному говорить про Систему V, але також обговорює BSD:

введіть тут опис зображення

Тут є більше, ніж насправді зустрічає очі . Наприклад, Mac OSX сертифікований UNIX03, але чи бачите ви, що він підключений до будь-якого з чистих UNIX (переважно червоним кольором)?

введіть тут опис зображення

Вище ви можете бачити, як BSD, GNU, Microsoft та різноманітні люди сприяли цьому Всесвіту. Навіть незважаючи на те, що GNU і в кінцевому підсумку Linux не мають прямого походження до UNIX, ви бачите, що GNU намагається перепрофілювати у світі відкритих джерел інструменти та програмне забезпечення комерційного UNIX, яке закрилося. Тож перегляд програмного забезпечення, що підтримується GNU, дає уявлення, наприклад, про початкові програми-бібліотеки та прототипи.

Ліцензійні війни відігравали певну роль у еволюції (а іноді і застою) UNIX. Ви можете відразу побачити, що UNIXs вишиковуються відповідно до типу ліцензії - закрито проти BSD ( BSD дозволяє зробити код закритим джерелом ... див. OSX) та GPL, що дозволяє Linux і GNU доповнювати себе у світі копілефт. Ось класична карта ядра Linux, спочатку розроблена Лінусом Торвальдсом, яка також розкриває, що ядро ​​"може" бути в Unix-подібній операційній системі:

введіть тут опис зображення

Це натякає на ідею, що тип дизайну " ядра " - це не те, що робить стандарт UNIX, або те, що визначає unix-подібну ОС. Про це свідчить той факт, що багато Unix-подібних ОС можуть мати або монолітне ядро, або мікроядро - монолітний був класичним типом проектування для UNIX. Насправді, навіть в рамках чистих UNIXes, HPUX має монолітне ядро, тоді як AIX використовує мікроядро. Ця дискусія з приводу дизайну стосується продуктивності та не пов'язана з родовищем або особистістю Unix. З іншого боку, існує традиційний концептуальний підхід до надання послуг програмному забезпеченню, роботи з файловими системами тощо в рамках UNIX / unix-подібних операційних систем.

Вважаю, що такі міркування додадуть контексту до вашої ОС питання.


3
+1 Деякі хороші моменти тут: 1) Про взаємозв'язок між C та Unix (додамо: C розроблено AT&T Bell для впровадження Unix з мовою, яка може бути такою ж швидкою, як збірка, але портативною на різних апаратних засобах та багато POSIX є розширенням до стандарту C). 2) Ця конструкція ядра не залежить від стандартів. Стандарти - це "що", ядра - "як".
goldilocks

1
@goldilocks Дякую, я додав ваш коментар про C дослівно. Я намагався зрозуміти, що міркування ядра не пов'язані зі стандартом. Питання передбачає, що в ядрі, схожому на Unix, є щось конкретне, але ще немає. З іншого боку, історично перші ядра Unix могли бути таким і таким чином. Моє розуміння обмежене, але я б припустив, що ядра сильно змінилися, оскільки апаратне забезпечення сильно змінилося з 70-х. Ясне те, що ядро ​​не визначає Unix / unix-подібне, подумав, що ядро ​​Linux чітко визначає GNU / Linux або Linux.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.