MULTICS
MULTICS (Multiplexed Information and Computing Service) — это многопользовательская операционная система, разработанная в 1960-х годах совместно Массачусетским технологическим институтом (MIT), компанией General Electric (GE) и лабораториями Bell Labs (подразделение AT&T). Проект был одним из первых, реализовавших концепцию универсальной, надёжной и безопасной вычислительной среды с разделением времени, предназначенной для одновременной работы множества пользователей. Несмотря на то, что коммерческий успех MULTICS был ограничен, её архитектурные решения и идеи оказали фундаментальное влияние на развитие операционных систем, в частности на создание Unix.
История
Предпосылки и начало проекта (1964—1965)
В начале 1960-х годов вычислительная техника развивалась в направлении пакетной обработки данных, когда пользователи сдавали задания на перфокартах и получали результаты через несколько часов. В то же время в MIT под руководством Фернандо Корбато велись работы над системой Compatible Time-Sharing System (CTSS), которая позволяла нескольким пользователям одновременно работать с терминалами. Успех CTSS продемонстрировал перспективность разделения времени, но выявил ограничения оборудования того времени.
В 1964 году MIT, GE и Bell Labs заключили соглашение о создании новой операционной системы, которая должна была превзойти CTSS по всем параметрам. Проект получил название MULTICS (первоначально — Multiplexed Information and Computing Service). Основной целью было создание системы, способной обеспечить бесперебойную работу для сотен пользователей, высокую степень безопасности и возможность динамического расширения ресурсов.
Разработка и реализация (1965—1969)
Разработка велась на компьютерах GE-645, специально модифицированной версии машины GE-635, оснащённой поддержкой сегментно-страничной памяти. Языком программирования для системы был выбран PL/I, который, по замыслу создателей, должен был обеспечить переносимость и удобство написания сложного системного кода. Однако реализация компилятора PL/I оказалась крайне проблемной, что стало одной из главных причин задержек.
К 1969 году стало очевидно, что проект отстаёт от графика, а его стоимость превышает запланированную. Bell Labs, разочаровавшись в темпах разработки и практической пригодности системы, вышла из проекта. Это решение привело к тому, что один из участников проекта, Кен Томпсон, начал самостоятельно писать упрощённую операционную систему на ассемблере, которая впоследствии стала Unix. MIT и GE продолжили работу, и первая рабочая версия MULTICS была запущена в 1969 году.
Коммерциализация и дальнейшая судьба (1970—2000)
После выхода на рынок система предлагалась компанией Honeywell (которая приобрела компьютерное подразделение GE в 1970 году) под названием Multics. Она использовалась в основном в академических и государственных учреждениях, а также в крупных корпорациях, где требовалась высокая надёжность и безопасность. В частности, MULTICS применялась в системах управления базами данных, в проектах по автоматизации проектирования и в военных целях.
В 1980-х годах, с распространением более дешёвых Unix-систем и персональных компьютеров, популярность MULTICS начала снижаться. Последняя версия системы была выпущена в 1985 году, а официальная поддержка прекращена в 2000 году. На пике использования MULTICS работала на нескольких десятках машин по всему миру.
Архитектура и ключевые особенности
Сегментно-страничная организация памяти
Одной из главных инноваций MULTICS стала реализация виртуальной памяти на основе сегментов и страниц. Каждый сегмент представлял собой логически законченный блок данных (например, программный модуль или файл), а внутри сегмента адресация осуществлялась по страницам фиксированного размера. Это позволяло эффективно распределять память, защищать данные и обеспечивать совместное использование кода между процессами. Адресное пространство каждого процесса было организовано как набор сегментов, что давало возможность гибко управлять доступом.
Многоуровневая система защиты
MULTICS была одной из первых систем, реализовавших концепцию многоуровневой защиты (ring protection). В архитектуре было предусмотрено до 8 колец привилегий (rings), от 0 (наивысший, ядро) до 7 (наинизший, пользовательский). Каждому сегменту и процессу назначался уровень привилегий, и доступ к данным или выполнение операций разрешались только в том случае, если уровень процесса был не ниже уровня сегмента. Эта модель стала прообразом современных механизмов защиты в процессорах x86 и других архитектурах.
Динамическое связывание и общие библиотеки
Система поддерживала динамическое связывание (dynamic linking) — возможность загружать и связывать программные модули в момент выполнения, а не на этапе компиляции. Это позволяло экономить память и упрощало обновление программного обеспечения. MULTICS также реализовала концепцию общих библиотек (shared libraries), которые могли одновременно использоваться несколькими процессами.
Иерархическая файловая система
MULTICS ввела иерархическую файловую систему с каталогами, подкаталогами и файлами, которая стала стандартом для последующих ОС. Файлы могли быть как обычными данными, так и сегментами памяти. Система поддерживала длинные имена файлов (до 248 символов) и гибкую систему прав доступа на уровне пользователей и групп.
Высокая надёжность и отказоустойчивость
Система проектировалась с расчётом на круглосуточную работу без перезагрузок. В MULTICS были реализованы механизмы восстановления после сбоев, включая контроль целостности файловой системы и автоматическое переключение на резервные компоненты. Время безотказной работы (uptime) некоторых установок измерялось годами.
Влияние на последующие системы
Unix
Наиболее известным «наследником» MULTICS является операционная система Unix. Кен Томпсон и Деннис Ритчи, работавшие над MULTICS в Bell Labs, использовали многие идеи проекта, но упростили их до минимума. Название Unix было задумано как каламбур к Multics (Unics — «однополая» версия). От MULTICS в Unix перешли иерархическая файловая система, концепция процессов, командный интерпретатор (shell) и многие системные вызовы.
Современные операционные системы
Идеи MULTICS, такие как сегментно-страничная память, кольца защиты и динамическое связывание, стали основой для архитектуры большинства современных операционных систем, включая Linux, Windows и macOS. В частности, механизм колец защиты (ring 0 для ядра, ring 3 для пользовательских приложений) напрямую заимствован из MULTICS. Системы управления доступом на основе ролей и мандатного контроля также восходят к разработкам этого проекта.
Безопасность
MULTICS считается одной из первых систем, в которой безопасность была заложена на уровне архитектуры. В 1970-х годах она прошла сертификацию по стандартам Министерства обороны США (класс B2 по «Оранжевой книге»), что подтверждало её высокую устойчивость к взлому. Исследователи безопасности до сих пор изучают исходные коды MULTICS для поиска уязвимостей, хотя система уже не используется.
Критика и недостатки
Несмотря на инновационность, MULTICS подвергалась критике за чрезмерную сложность и высокую стоимость. Реализация на языке PL/I оказалась крайне неэффективной: компилятор генерировал медленный код, а сама система требовала значительных вычислительных ресурсов. Производительность MULTICS на типичном оборудовании 1970-х годов была ниже, чем у более простых систем, таких как Unix.
Кроме того, проект страдал от «раздувания» функциональности: разработчики стремились предусмотреть все возможные сценарии, что приводило к увеличению объёма кода и времени его отладки. Выход Bell Labs из проекта был во многом обусловлен именно этими проблемами.
Интересные факты
- Оригинальное название проекта — Multiplexed Information and Computing Service — было предложено Фернандо Корбато. Буква «I» в аббревиатуре была заменена на «U» для благозвучия.
- В MULTICS впервые была реализована команда
lsдля вывода списка файлов, которая позже перешла в Unix. - Система поддерживала до 64 одновременных пользователей на одном компьютере GE-645, что для своего времени было рекордным показателем.
- В 1980-х годах на базе MULTICS была создана система управления базами данных MRDS (Multics Relational Data Store), одна из первых реляционных СУБД.
- Последняя известная рабочая установка MULTICS была выключена в 2000 году в Университете Карнеги — Меллона.
Источники
- Corbató, F. J. (1990). On the Design of a Time-Sharing System. IEEE Annals of the History of Computing.
- Organick, E. I. (1972). The Multics System: An Examination of Its Structure. MIT Press.
- Ritchie, D. M. (1977). The Evolution of the Unix Time-Sharing System. Bell Laboratories.
- Saltzer, J. H. (1974). Protection and the Control of Information Sharing in Multics. Communications of the ACM.
- Документация проекта MULTICS (архив MIT).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →