Plan 9
Віконна система rio у четвертій редакції Plan 9 | |
| Розробник | Bell Labs; з 2021 року — Plan 9 Foundation |
|---|---|
| Написано на | C |
| Родина ОС | Unix-подібні операційні системи |
| Робочий стан | Розробку оригінального дистрибутива припинено; існують підтримувані спільнотою продовження |
| Модель початкових кодів | Вільне програмне забезпечення |
| Початковий випуск | 1992 |
| Останній випуск | Fourth Edition (четверта редакція) / квітень 2002 (оновлена документація — червень 2003) |
| Репозиторій | |
| Платформи | x86, MIPS, DEC Alpha, SPARC, PowerPC, ARM (залежно від редакції та порту) |
| Тип ядра | Монолітне ядро |
| Інтерфейс користувача | rio / rc |
| Ліцензія | MIT (з 2021 року; раніше — Lucent Public License 1.02) |
| 9p.io/plan9 | |
Plan 9 (повна назва — Plan 9 from Bell Labs) — експериментальна розподілена багатокористувацька операційна система, створена в Bell Labs наприкінці 1980-х років як переосмислення принципів Unix. Вона призначена для спільної роботи комп'ютерів у мережі: користувач може звертатися до файлів, пристроїв і служб інших машин за допомогою однакових операцій, не обов'язково знаючи, де фізично розміщений потрібний ресурс. Основу такого підходу становлять протокол 9P та окремі, змінювані для кожного процесу простори імен.[1][2]
Розробниками початкової системи були Кен Томпсон, Роб Пайк, Дейв Пресотто та Філ Вінтерботтом; згодом до них приєдналися інші співробітники Bell Labs. Першу редакцію поширили серед університетів 1992 року, а четверту — останню велику редакцію — опублікували 2002 року. Від 2021 року вихідний код історичних випусків доступний за ліцензією MIT під опікою Plan 9 Foundation. Ідеї Plan 9 продовжують застосовувати в інших операційних системах і споріднених проєктах.[2][3]
Назва Plan 9 from Bell Labs відсилає до науково-фантастичного фільму «План 9 з відкритого космосу» (Plan 9 from Outer Space).[3]
У середині 1980-х років поширення персональних робочих станцій змінило організацію обчислень: замість великих машин із численними терміналами використовували мережі окремих комп'ютерів. На думку розробників Plan 9, поширені тоді системи Unix успадкували підхід, орієнтований на окремий комп'ютер із розподілом машинного часу, тоді як мережеве адміністрування, графічні засоби та доступ до віддалених ресурсів залишалися недостатньо узгодженими. Розробники прагнули об'єднати переваги персональних машин зі спільним використанням обчислювальних потужностей і централізованим адмініструванням.[1]
Роботи над Plan 9 розпочалися наприкінці 1980-х років у тому самому дослідницькому підрозділі Bell Labs, де раніше створили Unix. На відміну від чергової модифікації Unix, систему спроєктували заново, зберігши окремі її підходи — передусім представлення різних ресурсів через файловий інтерфейс. До 1989 року частина авторів уже використовувала Plan 9 як своє основне робоче середовище.[1]
Перша редакція вийшла 1992 року й поширювалася серед університетів. Вона містила ядро, мережеві засоби, текстовий редактор sam та підтримку UTF-8. Другу редакцію випустили 1995 року у вигляді комплекту документації та компакт-диска. Вона, зокрема, містила інтегроване середовище редагування acme. Упродовж певного часу розробники працювали над переробленим варіантом системи під назвою Brazil, але наприкінці 1990-х років повернулися до назви Plan 9.[2]
Третя редакція, випущена в червні 2000 року, стала доступною для безкоштовного завантаження разом із вихідним кодом за окремою ліцензією Plan 9. Вона принесла зміни до графічної підсистеми, механізм plumbing для обміну повідомленнями між програмами та інструмент wrap для встановлення оновлень.[2]
Четверта редакція (Fourth Edition) вийшла у квітні 2002 року; документацію до неї оновили в червні 2003 року. Її найпомітнішою зміною став протокол 9P2000, що усунув попередні обмеження на довжину імен файлів та змінив спосіб узгодження автентифікації. Також з'явилися засіб керування ключами factotum, сховище секретів secstore та сервер блокового сховища Venti. Файлова система Fossil, пов'язана з Venti, увійшла до середовища четвертої редакції на початку 2003 року.[4][2]
Після четвертої редакції вихідне дерево Plan 9 ще певний час регулярно оновлювали через мережевий файловий сервер. Останні зміни та інсталяційний образ оригінального дистрибутива Bell Labs опублікували 10 січня 2015 року. Його подальша розробка в Bell Labs припинилася.[5]
Умови поширення Plan 9 неодноразово змінювалися. Перша редакція призначалася для університетів, друга продавалася на комерційних умовах, а з випуском третьої 2000 року вихідний код став загальнодоступним за спеціальною ліцензією. Четверту редакцію згодом поширювали за Lucent Public License версії 1.02. У 2014 році Каліфорнійський університет у Берклі отримав дозвіл від Alcatel-Lucent розповсюджувати код, на який поширювалася ця ліцензія, також за GNU GPL версії 2.[6] 23 березня 2021 року Nokia, яка на той час володіла Bell Labs, оголосила про передання авторських прав на Plan 9 організації Plan 9 Foundation. Історичні редакції були перевипущені за дозвільною ліцензією MIT.[2][3][5]
Оригінальний код продовжують використовувати незалежні спільноти. Проєкт 9legacy, започаткований 2010 року, підтримує набір виправлень до базового дистрибутива та збирає готові інсталяційні образи. Окрема гілка 9front розвиває систему незалежно, додаючи підтримку нового обладнання та власні можливості. Тому припинення розробки саме в Bell Labs не означає завершення розвитку всієї родини Plan 9.[5]
Plan 9 створювалася як середовище, у якому кілька машин можуть виконувати різні ролі й спільно утворювати одну обчислювальну систему. В описаній авторами конфігурації термінали забезпечували взаємодію з користувачами, файлові сервери зберігали спільні дані, а обчислювальні сервери (CPU servers) виконували програми від імені користувачів. Окремі сервери автентифікації підтверджували їхні повноваження. Така модель не вимагала, щоб кожен термінал мав усі ресурси, необхідні для виконання завдання.[1]
Команда cpu дозволяла з термінала запустити оболонку на віддаленому обчислювальному сервері. Водночас цей сервер міг отримувати доступ до файлів та інших ресурсів термінала через наданий йому файловий інтерфейс. Команда import виконувала зворотну за напрямком операцію: приєднувала дерево ресурсів віддаленої машини до локального простору імен. Застосунку при цьому не потрібно було мати окрему реалізацію доступу до віддалених файлів.[1]
Plan 9 розвиває принцип Unix «усе є файлом». Через файли й каталоги система представляє не лише дані на носіях, але й процеси, мережеві з'єднання, пристрої та функції графічного інтерфейсу. Програми можуть керувати такими ресурсами звичайними операціями відкриття, читання й запису. Наприклад, відомості про процеси надає дерево /proc, а мережеві служби представлені у /net.[1]
Для доступу до ресурсів, які експортує файловий сервер, використовується 9P (Plan 9 Filesystem Protocol). Він визначає запити на пошук, відкриття, читання, запис і зміну файлових об'єктів. Локальні файлові інтерфейси ядра виконують відповідні операції без потреби передавати мережеві повідомлення. На відміну від протоколів конкретного мережевого рівня, 9P описує операції над файловими ресурсами; його повідомлення можуть передаватися як мережею, так і через локальний канал обміну даними. Отже, сервер 9P не обов'язково працює на окремому фізичному комп'ютері.[7][2][1]
Одна з визначальних властивостей Plan 9 — можливість кожного процесу мати власний простір імен файлових ресурсів. Системні операції bind та mount приєднують частини дерев каталогів до вибраних шляхів. Так процес може бачити по тому самому шляху локальний ресурс, віддалену службу або інший набір файлів, не змінюючи їхніх фізичних розташувань. Зміни простору імен одного процесу не обов'язково впливають на інші процеси.[7][2]
Plan 9 також підтримує об'єднані каталоги (union directories): кілька дерев каталогів можуть бути представлені під одним шляхом, а під час пошуку файлів система переглядає їх у визначеному порядку. Системний виклик rfork дає змогу визначати, чи процес-нащадок ділитиме простір імен із батьківським процесом, чи отримає власну копію. Завдяки цьому користувацьке середовище формується з набору локальних і мережевих ресурсів; прикладним програмам зазвичай достатньо знати узгоджені імена, а не місце розміщення служб.[7]
Для спільного зберігання файлів Plan 9 передбачала окремі сервери, які експортували файлові дерева за протоколом 9P. До можливостей таких серверів належали архівні знімки стану файлової системи (dump), за допомогою яких користувачі могли звертатися до раніших версій файлів. У четвертій редакції представили Venti — сховище незмінюваних блоків із адресацією за вмістом, де ідентифікатором блока є його криптографічний хеш. Файловий сервер Fossil використовував Venti для зберігання архівних даних.[1][2][4][8]
У початковій архітектурі Plan 9 автентифікацію користувачів забезпечував спеціалізований сервер, а доступ до обчислювальних і файлових ресурсів надавався відповідно до підтвердженої особи. Замість універсального привілейованого облікового запису root, характерного для багатьох систем Unix, Plan 9 використовує розділення адміністративних повноважень між службами. Це не скасовує спеціальних прав адміністрування, але обмежує сферу їхньої дії.[1]
У четвертій редакції механізм factotum став посередником для роботи з паролями та криптографічними ключами, а автентифікаційні процедури винесли за межі самого протоколу 9P. Сховище secstore призначалося для захищеного зберігання відповідних секретів.[4][9]
Значну частину Plan 9 написано мовою C. Для неї створили власні компілятори й системні бібліотеки. Серед основних складників середовища — командна оболонка rc, віконна система rio, текстові редактори sam і acme, мережеві служби та інструменти адміністрування. На відміну від типових переносів Unix, багато цих програм розробили спеціально для нової системи.[2][1]
Plan 9 стала однією з перших операційних систем із наскрізною підтримкою Unicode та UTF-8: це кодування застосували не лише в редакторах, а й у системних інтерфейсах і назвах файлів. UTF-8 було розроблено Кеном Томпсоном і Робом Пайком під час роботи над міжнародною підтримкою Plan 9.[10]
Plan 9 не є двійково сумісною з Unix і не ставить повну сумісність із POSIX за головну мету. Для перенесення частини звичних програм існує середовище APE (ANSI/POSIX Environment), проте базові служби та прикладні програми Plan 9 використовують власні системні інтерфейси. Відмінності від поширених настільних систем, зокрема в наборі драйверів і прикладного програмного забезпечення, обмежують її застосування як універсальної робочої ОС.[2][1]
Розробки Plan 9 вплинули на подальше вивчення розподілених обчислень, організації просторів імен та взаємодії зі службами через файловий інтерфейс. Реалізації протоколу 9P з'явилися, зокрема, в Linux, що дало змогу користуватися ним поза оригінальною системою. Від Plan 9 походить також Inferno — споріднена операційна система для розподіленого виконання програм.[2][11]
Окремий проєкт Plan 9 from User Space (plan9port) переносить значну частину утиліт і бібліотек Plan 9 до Unix-подібних систем, дозволяючи використовувати їх без встановлення самої ОС. Водночас 9legacy та 9front розвивають саму операційну систему й роблять її доступною для новіших комп'ютерів.[12][5]
- 1 2 3 4 5 6 7 8 9 10 11 Pike R., Presotto D., Dorward S., Flandrena B., Thompson K., Trickey H., Winterbottom P. Plan 9 from Bell Labs. Bell Laboratories (дата звернення: 11 листопада 2026).
- 1 2 3 4 5 6 7 8 9 10 11 12 Plan 9 from Bell Labs — Overview. 9p.io. Процитовано 11 листопада 2026.
- 1 2 3 Nokia Bell Labs (23 березня 2021). Plan 9 from Bell Labs in Cyberspace!. Nokia. Процитовано 11 листопада 2026.
- 1 2 3 Plan 9 — Fourth Edition Release Notes. Lucent Technologies. 2003–06. Процитовано 11 листопада 2026.
{{cite web}}: Обслуговування CS1: Сторінки з неправильним форматом в діапазонах дат (посилання) - 1 2 3 4 9legacy — Introduction. 9legacy.org. Процитовано 11 листопада 2026.
- ↑ Plan 9 from Bell Labs, under GPL. GitHub. Процитовано 11 листопада 2026.
- 1 2 3 Pike R., Presotto D., Thompson K., Trickey H., Winterbottom P. The Use of Name Spaces in Plan 9. Bell Laboratories (дата звернення: 11 листопада 2026).
- ↑ Venti — archival storage server. Plan 9 Manual. Процитовано 11 листопада 2026.
- ↑ Cox R., Grosse E., Pike R., Presotto D., Quinlan S. Security in Plan 9. Bell Laboratories (дата звернення: 11 листопада 2026).
- ↑ Pike R., Thompson K. Hello World or Καλημέρα κόσμε or こんにちは 世界. Bell Laboratories (дата звернення: 11 листопада 2026).
- ↑ Van Hensbergen E., Minnich R. Grave Robbers from Outer Space: Using 9P2000 Under Linux. USENIX Annual Technical Conference, 2005 (дата звернення: 11 листопада 2026).
- ↑ Plan 9 from User Space. 9fans.github.io. Процитовано 11 листопада 2026.
- Plan 9 from Bell Labs — сторінка історичного дистрибутива, документації та вихідного коду.
- Plan 9 from Bell Labs — технічна стаття розробників.
- 9legacy — актуалізований дистрибутив на основі оригінального коду.
- 9front — незалежна гілка Plan 9.