Історія операційних систем
Історію ОС зазвичай подають списком дат, і з нього нічого не випливає. Тут вона розкладена інакше: у кожен момент часу чогось бракувало, і система була відповіддю на цю нестачу. Коли нестача змінювалася — змінювалися й системи, а старі не зникали, а йшли туди, де їхня відповідь досі правильна.
Це додаток, а не модуль: тут немає нового механізму, який треба зрозуміти. Він потрібен, щоб покласти на місце те, що курс пояснює по частинах, — і щоб видно було, що майже все, чим ми користуємося, старше за нас.
Шість дефіцитів
Кожна епоха на карті — це не десятиліття, а відповідь на брак конкретного ресурсу. Межі між ними умовні: попередній дефіцит нікуди не зникає, просто перестає бути головним.
- 1955—1964бракує: машинний час
- пакетна обробка
- 1964—1975бракує: увага процесора
- мультипрограмування, поділ часу
- 1975—1990бракує: ціна заліза
- персоналка без захисту
- 1990—2002бракує: сумісність і мережа
- POSIX, вільні ядра, інтернет
- 2002—2012бракує: утилізація серверів
- віртуалізація, потім контейнери
- 2012—бракує: ядра, батарея, довіра
- паралелізм, енергія, ізоляція
Карта
Час іде згори вниз, кожна система — вертикальна лінія від появи до згасання, сусідні колонки — одна родина. Суцільна лінія походження означає спільний код, пунктирна — тільки успадковані ідеї: у Linux немає жодного рядка з Unix, а Windows NT не є нащадком VMS, хоч і написана тими самими людьми. Наведіть або виберіть систему — підсвітиться весь її рід, від пращурів до нащадків.
Наведіть курсор на систему або виберіть її з клавіатури (Tab, далі стрілки) — тут з'явиться, звідки вона взялася і що дала далі.
На вузькому екрані карта ширша за нього — її можна посунути вбік.
Найпомітніше на карті — не те, скільки систем померло, а те, скільки живих ліній починається до 1995 року. З усього, що працює сьогодні на серверах, телефонах і в машинах, майже нічого не спроєктовано в цьому столітті: змінювалися реалізації, а не рішення.
Що звідки взялося
Механізми, які курс розбирає по модулях, з'явилися не там, де ми з ними зустрічаємося. Колонка «модуль» веде туди, де механізм пояснено по-справжньому: додаток дає дату, курс — пояснення.
| Що | Коли | Де вперше | Модуль |
|---|---|---|---|
| Пакетний монітор | 1956 | GM-NAA I/O | 1. Що таке ОС і навіщо вона |
| Поділ часу | 1961 | CTSS | 7. Планування CPU |
| Сторінкова віртуальна пам’ять | 1962 | Atlas | 11. Пейджинг |
| Віртуальна машина | 1968 | CP/CMS | 17. Віртуалізація і контейнери |
| Кільця захисту й сегментація | 1969 | Multics | 16. Захист і безпека |
| Ядро мовою високого рівня | 1973 | Unix V4 на C | 3. Ядро і межа user/kernel |
| Конвеєр як спосіб композиції | 1973 | Unix | 6. Процеси |
| Сокети як інтерфейс мережі | 1983 | 4.2BSD | 13. Підсистема вводу-виводу |
| Мікроядро | 1985 | Mach, далі L4 (1993) | 3. Ядро і межа user/kernel |
| POSIX як писаний стандарт | 1988 | IEEE 1003.1 | 4. Unix, Linux, дистрибутиви |
| Журналювання файлової системи | 1990 | JFS в AIX | 15. Файлові системи |
| Потоки в стандарті | 1995 | POSIX threads | 8. Потоки і конкурентність |
| Ізоляція без віртуальної машини | 2000 | FreeBSD jail, далі cgroups (2007) | 17. Віртуалізація і контейнери |
| Формально верифіковане ядро | 2009 | seL4 | 18. Куди рухаються ОС |
| Програмованість ядра без модулів | 2014 | eBPF у Linux | 18. Куди рухаються ОС |
Три лінії, що дожили
З усього розмаїття на карті до масового вжитку дійшли три родоводи, і кожен відповідав на своє питання.
Unix виграв переносимістю. Ядро мовою високого рівня в 1973-му дозволило переносити систему між машинами, і далі гілка розійшлася на BSD і System V, а через NEXTSTEP дійшла до macOS та iOS. Сучасний Mac — сертифікований Unix, а не «щось схоже».
Linux виграв ліцензією й темпом. Коду Unix у ньому немає — є Unix-інтерфейс, написаний наново, і GPL, через яку внески вигідніше віддавати вгору, ніж тримати у форку. Сьогодні це те саме ядро на суперкомп'ютері, у телефоні й у кавоварці — різні лише конфігурація й оточення.
Windows NT виграв сумісністю. Лінія DOS із Windows 9x закінчилася 2001 року, а поточна Windows — це ядро, написане з нуля в 1993-му за досвідом VMS, з захистом пам'яті й списками доступу від першої версії. Те, що на ньому досі запускаються програми 1995 року, — не випадковість, а зобов'язання, яке визначило його архітектуру.
Четверта лінія на карті не перемогла, але й не зникла: мікроядра. Mach виявився надто повільним для настільної машини, зате L4 живе в модемах мільярдів телефонів, QNX — в автомобілях, а seL4 став першим ядром із математичним доказом коректності. Куди це рухається — умодулі 18.
Джерела
- The Unix Heritage Society — архіви коду й документації Research Unix
- Салус, A Quarter Century of UNIX — розкол BSD і System V з перших вуст
- Брукс, Міфічний людино-місяць — OS/360 очима її керівника
- Multicians.org — Multics, зібраний його ж авторами
- Torvalds, Diamond, Just for Fun — про перші роки Linux
- Computer History Museum — дати, машини й усні історії