Multics (« Мультиплексная информационная и вычислительная служба ») — влиятельная ранняя операционная система с разделением времени, основанная на концепции одноуровневой памяти . [4] [5] Натан Грегори пишет, что Multics «с тех пор оказала влияние на все современные операционные системы, от микрокомпьютеров до мэйнфреймов». [6]
Первоначальное планирование и разработка Multics начались в 1964 году в Кембридже, штат Массачусетс . Первоначально это был совместный проект, возглавляемый MIT ( Проект MAC с Фернандо Корбато ) вместе с General Electric и Bell Labs . Он был разработан на специально разработанном для него компьютере GE 645 ; первый из них был доставлен в Массачусетский технологический институт в январе 1967 года. GE предлагала свои более ранние системы 635 с ранней системой разделения времени, известной как «Mark I», и намеревалась предложить 645 с Multics в качестве более крупного преемника. Bell вышла из проекта в 1969 году, поскольку стало ясно, что в краткосрочной перспективе она не сможет создать работающую систему. Вскоре после этого GE решила полностью выйти из компьютерной индустрии и в 1970 году продала это подразделение компании Honeywell. Honeywell предлагала Multics на коммерческой основе, но с ограниченным успехом.
Multics имеет множество функций, предназначенных для обеспечения высокой доступности и поддержки вычислительных утилит , аналогичных телефонным и электроэнергетическим компаниям . Для этого используются модульная аппаратная структура и архитектура программного обеспечения. Система может увеличиваться в размерах, просто добавляя больше соответствующего ресурса, будь то вычислительная мощность, основная память или дисковое хранилище. Отдельные списки контроля доступа для каждого файла обеспечивают гибкий обмен информацией, но при необходимости полную конфиденциальность. Multics имеет ряд стандартных механизмов, позволяющих инженерам анализировать производительность системы, а также ряд механизмов адаптивной оптимизации производительности.
Благодаря множеству новых и ценных идей Multics оказал значительное влияние на информатику , несмотря на свои недостатки. [7] Его наиболее продолжительное влияние на компьютерную индустрию было вдохновением на создание Unix, который сохранил многие функции Multics, но мог работать на менее дорогом оборудовании. Unix была разработана в Bell, чтобы позволить команде Multics продолжить исследования, используя машины меньшего размера, сначала PDP-7 , а затем PDP-11 .
Multics реализует одноуровневое хранилище для доступа к данным, игнорируя четкое различие между файлами (называемыми сегментами в Multics) и памятью процесса . Память процесса состоит исключительно из сегментов, отображенных в его адресное пространство . Для их чтения или записи процесс просто использует обычные инструкции центрального процессора (ЦП), а операционная система заботится о том, чтобы все изменения были сохранены на диске . В терминологии POSIX это как если бы был mmap()
изменен каждый файл; однако в Multics нет понятия памяти процесса , отдельной от памяти, используемой для хранения отображаемых файлов, как в Unix . Вся память в системе является частью некоторого сегмента, который появляется в файловой системе ; сюда входит временная рабочая память процесса, его стек ядра и т. д.
Сегменты ограничены 256 килословами , что чуть больше 1 МБ , поскольку аппаратное обеспечение Multics имело 18-битные адреса слов для содержимого сегмента. Файлы большего размера являются «многосегментными файлами» и обрабатываются по-другому. Ограничение в 256 кВт на практике встречалось редко, поскольку в то время один мегабайт памяти был непомерно дорогим.
Еще одной важной новой идеей Multics было динамическое связывание , при котором запущенный процесс может сделать доступными внешние подпрограммы, добавляя содержащие их сегменты в свое адресное пространство. Это позволяет приложениям всегда использовать последнюю версию любой внешней процедуры, поскольку эти процедуры хранятся в других сегментах, которые динамически связываются только тогда, когда процесс впервые пытается начать в них выполнение. Поскольку разные процессы могут использовать разные правила поиска , разные пользователи могут использовать разные версии внешних подпрограмм. Не менее важно и то, что при соответствующих настройках средств безопасности Multics код в другом сегменте может получить доступ к структурам данных, поддерживаемым в другом процессе. Динамическое связывание в Multics не требует специальных библиотек динамической компоновки (DLL) ; программа может динамически связываться с любым исполняемым сегментом, к которому у нее есть права доступа.
Таким образом, для взаимодействия с приложением, работающим частично как демон (в другом процессе), пользовательский процесс просто выполняет обычную инструкцию вызова процедуры для сегмента кода, с которым он был динамически связан (сегмент кода, который реализовал некоторую операцию, связанную с демон). Код в этом сегменте может затем изменять данные, поддерживаемые и используемые в демоне. Когда действие, необходимое для запуска запроса, завершено, простая инструкция возврата процедуры возвращает управление пользовательским процессом пользовательскому коду.
Multics также поддерживает чрезвычайно агрессивную онлайновую реконфигурацию : центральные процессоры , банки памяти, дисководы и т. д. могут добавляться и удаляться, пока система продолжает работать. В системе MIT, где разрабатывалось программное обеспечение на ранних этапах, было обычной практикой разделять многопроцессорную систему на две отдельные системы в нерабочее время путем постепенного удаления достаточного количества компонентов для формирования второй рабочей системы, оставляя остальные работать для исходной системы. вошедшие в систему пользователи. Тестирование разработки системного программного обеспечения можно было провести во второй системе, затем компоненты второй системы были добавлены обратно в основную пользовательскую систему, даже не выключая ее. Multics поддерживает несколько процессоров; это одна из первых многопроцессорных систем.
Multics — первая крупная операционная система, изначально спроектированная как безопасная . [8] Несмотря на это, ранние версии Multics неоднократно подвергались риску. [9] Это привело к дальнейшей работе, которая сделала систему более безопасной и послужила прообразом современных методов обеспечения безопасности . После внедрения аппаратной базы второго поколения взломы стали очень редкими; имеет аппаратную поддержку кольцевой безопасности , многоуровневую доработку концепции ведущего режима . [ нужна цитата ] Проект группы тигров ВВС США проверял безопасность Multics в 1973 году под кодовым словом ZARF. 28 мая 1997 года американское агентство национальной безопасности рассекретило использование кодового слова ZARF.
Multics — первая операционная система, предоставляющая иерархическую файловую систему [10] [11] , а имена файлов могут иметь практически произвольную длину и синтаксис. Данный файл или каталог может иметь несколько имен (обычно длинную и короткую форму), также поддерживаются символические ссылки между каталогами. Multics — первая компания, которая использует в ядре ставшую стандартной концепцию стеков для каждого процесса [ оспаривается ] с отдельным стеком для каждого кольца безопасности. Это также первый процессор команд , реализованный в виде обычного пользовательского кода — идея, позже использованная в оболочке Unix . Это также один из первых языков высокого уровня (Multics PL/I ), [1] [12] после системы Burroughs MCP , написанной на ESPOL , расширенной версии ALGOL .
Внедрение Multics в защищенные вычислительные среды также стимулировало разработку инновационных вспомогательных приложений. В 1975 году Морри Гассер из корпорации MITRE разработал генератор произносимых случайных слов для удовлетворения требований к паролю на таких объектах, как Центр служб данных ВВС (AFDSC), обрабатывающий секретную информацию. Чтобы избежать угадывания паролей, AFDSC решил назначать пароли, но пришел к выводу, что назначение вручную требует слишком больших административных затрат. Таким образом, генератор случайных слов был исследован и затем разработан в PL/I. Вместо того, чтобы основываться на фонемах , система использовала фонематические сегменты (аппроксимации второго порядка английского языка) и другие правила для улучшения произношения и случайности, что статистически моделировалось на основе других подходов. [13] Потомок этого генератора был добавлен в Multics во время Project Guardian. [14]
В 1964 году Multics был первоначально разработан для мэйнфрейма GE-645 , 36-битной системы. Компьютерный бизнес GE, включая Multics, был передан Honeywell в 1970 году; Примерно в 1973 году Multics стал поддерживаться на машинах Honeywell 6180 , что включало улучшения безопасности, включая аппаратную поддержку защитных колец .
Bell Labs вышла из проекта в 1969 году; некоторые из людей, которые там работали над этим, впоследствии создали систему Unix . Разработка Multics продолжалась в Массачусетском технологическом институте и General Electric. В Массачусетском технологическом институте в 1975 году использование Multics сокращалось и не вернулось к 1976 году до прежнего уровня. [15] [16] Наконец, снизив цены, MIT удалось переманить пользователей обратно в Multics в 1978 году. [17]
Компания Honeywell продолжала разработку системы до 1985 года. Было установлено около 80 объектов стоимостью в несколько миллионов долларов в университетах, на промышленных предприятиях и в государственных учреждениях. В начале 1980-х годов во французской университетской системе было несколько объектов. После того, как Honeywell прекратила поддержку Multics, пользователи перешли на другие системы, такие как Unix.
В 1985 году Multics получила сертификат безопасной операционной системы уровня B2 с использованием критериев оценки доверенной компьютерной системы Национального центра компьютерной безопасности (NCSC), подразделения АНБ , и стала первой операционной системой, оцененной до этого уровня.
Multics распространялся с 1975 по 2000 год компанией Groupe Bull в Европе и компанией Bull HN Information Systems Inc. в США. В 2006 году Bull SAS выпустила исходный код версий Multics MR10.2, MR11.0, MR12.0, MR12.1, MR12.2, MR12.3, MR12.4 и MR12.5 под лицензией свободного программного обеспечения . [18]
Последняя известная установка Multics, изначально работавшая на оборудовании Honeywell, была остановлена 30 октября 2000 года в Министерстве национальной обороны Канады в Галифаксе, Новая Шотландия, Канада. [19]
В 2006 году Bull HN предоставил MIT исходный код MR12.5, последней версии Multics 1992 года. [20] Большая часть системы теперь доступна в виде бесплатного программного обеспечения , за исключением некоторых дополнительных компонентов, таких как TCP/IP . [21]
В 2014 году Multics был успешно запущен на современном оборудовании с использованием эмулятора, созданного мультицианцами Гарри Ридом и Чарльзом Энтони. [22] Версия эмулятора 1.0 доступна с 2017 года [обновлять]. [23] Версия 12.6f Multics сопровождает версию 1.0 эмулятора и добавляет несколько новых функций, включая вызов командной строки и редактирование с использованием видеосистемы. [24]
Ниже приведен список программ и команд [25] для распространенных вычислительных задач, которые поддерживаются интерфейсом командной строки Multics . [26] [27]
Язык оболочки Multics поддерживает «активные функции», которые похожи на команды, но возвращают строковое значение. Активная функция вызывается путем помещения имени активной функции и аргументов активной функции в квадратные скобки [ и ] . Строка, возвращаемая активной функцией, подставляется в команду вместо вызова активной функции. Например, при обработке команды echo [рабочий_каталог] запускается активная функция рабочий_каталог ; он возвращает полный путь к рабочему каталогу , который подставляется в команду, так что команда echo печатает рабочий каталог.
Некоторые программы могут действовать либо как команды, либо как активные функции; при запуске как команда ее результат выводится на печать, а при запуске как активная функция ее результат возвращается в виде строки. [27]
Некоторые общие активные функции:
Питер Х. Салус , автор книги, посвященной ранним годам Unix, [28] высказал одну позицию: «С помощью Multics они пытались создать гораздо более универсальную и гибкую операционную систему, но это с треском провалилось». [29] Однако эта позиция, как говорят, была дискредитирована в компьютерном сообществе, поскольку многие технические инновации Multics используются в современных коммерческих вычислительных системах. [7] [ нужен лучший источник ]
Постоянно резидентное ядро Multics, системы, которую в свое время высмеивали как слишком большую и сложную, содержало 135 КБ кода. [ нужна цитата ] Первый MIT GE-645 имел 512 килослов памяти (2 МБ), поистине огромный объем в то время, и ядро использовало умеренную часть основной памяти Multics.
Вся система, включая операционную систему и сложный PL/I- компилятор , пользовательские команды и библиотеки подпрограмм, состоит примерно из 1500 исходных модулей. В среднем они содержат около 200 строк исходного кода каждый, а общий объем кода процедур составляет примерно 4,5 МБ, что было довольно большим по стандартам того времени.
Компиляторы Multics обычно оптимизируют больше для плотности кода , чем для производительности ЦП, например, используя небольшие подпрограммы, называемые операторами , для коротких стандартных последовательностей кода, что делает сравнение размера объектного кода с современными системами менее полезным. Высокая плотность кода — хороший выбор для оптимизации Multics как многопользовательской системы с дорогой основной памятью.
В ходе истории коммерческого продукта внутри компании часто отмечалось, что сотрудники отдела продаж и маркетинга Honeywell Information Systems (HIS) (позже Honeywell-Bull) были более знакомы и комфортно обосновывали экономическое обоснование другой линейки компьютеров Honeywell - DPS 6 под управлением GCOS. . DPS-6 и GCOS были уважаемой и надежной платформой для инвентаризации, бухгалтерского учета, обработки текстов и приложений вертикального рынка, таких как банковское дело, где у нее была значительная клиентская база. Напротив, в ту эпоху было нелегко осознать весь потенциал гибкости Multics даже для повседневных задач, и его возможности обычно находились за пределами навыков современных бизнес-аналитиков. [ нужна цитация ] Масштабы этого разногласия были конкретизированы анекдотом, рассказанным Полом Стахуром, CNO/CSC:
Когда в 1983 году компания American Telephone and Telegraph меняла свое название на AT&T, появился сотрудник юридического отдела Honeywell и спросил у Multician, может ли он организовать изменение имени во всех их компьютеризированных документах. Когда его спросили, когда процесс может быть завершен, Мультициан ответил: «Все готово». Сотрудник повторил, что ему необходимо обновить сотни, возможно, тысячи документов. Мультицианец объяснил, что он выполнил глобальный поиск и замену, пока говорил сотрудник, и задача фактически была выполнена. [ нужна цитата ]
Дизайн и особенности Multics повлияли на операционную систему Unix , которая изначально была написана двумя программистами Multics, Кеном Томпсоном и Деннисом Ритчи . [30] Влияние Multics на Unix очевидно во многих областях, включая иерархическую файловую систему , перенаправление , оболочку и именование некоторых команд. Но философия внутреннего дизайна совершенно иная: она сосредоточена на том, чтобы система оставалась маленькой и простой, и таким образом исправляла некоторые очевидные недостатки Multics из-за ее высоких требований к ресурсам на ограниченном компьютерном оборудовании того времени.
Название Unix (первоначально Unics ) само по себе является каламбуром от Multics . Ходят слухи, что буква U в Unix означает « униплексный» , а не « мультиплексный » Multics, что еще раз подчеркивает отказ дизайнеров от сложности Multics в пользу более простого и работоспособного подхода для небольших компьютеров. (Гарфинкель и Абельсон [31] указывают на альтернативное происхождение: Питер Нейман из Bell Labs, наблюдая за демонстрацией прототипа, предложил каламбур UNICS – произносится как « евнухи » – как «кастрированный Multics», хотя говорят, что Деннис Ритчи отрицал это. [32] )
Кен Томпсон в расшифрованном интервью Питеру Сейбелю в 2007 году [30] называет Multics «перепроектированным, перестроенным и поверх всего. Он был почти непригоден для использования. Они [Массачусетский технологический институт] до сих пор утверждают, что это чудовищный успех, но это совершенно очевидно. не было». Что касается влияния Multics на Unix, Томпсон заявил, что «что мне понравилось (в Multics), так это иерархическая файловая система и оболочка — отдельный процесс, который можно заменить каким-либо другим процессом».
Деннис Ритчи писал, что на дизайн UNIX повлиял CTSS . [33]
Операционную систему Prime Computer , PRIMOS , Уильям Подуска , основатель компании, назвал «Multics в обувной коробке» . Позже Подуска основал компанию Apollo Computer , чьи операционные системы AEGIS и более поздние версии Domain/OS , иногда называемые «Multics в спичечном коробке», расширяют дизайн Multics до среды сетевых графических рабочих станций.
Операционная система Stratus VOS компании Stratus Computer (теперь Stratus Technologies ) находится под очень сильным влиянием Multics, и ее внешний пользовательский интерфейс и внутренняя структура во многом схожи со старым проектом. Функции высокой надежности, доступности и безопасности Multics расширены в Stratus VOS для поддержки новой линейки отказоустойчивых компьютерных систем, поддерживающих безопасную и надежную обработку транзакций . Stratus VOS является наиболее прямым потомком Multics, который до сих пор активно разрабатывается и используется в производстве.
Многоконсольная система разделения времени (MCTS) компании General Motors для компьютера STAR-100 Control Data Corporation была основана на Multics.
Архитектура защиты Multics, ограничивающая возможность кода на одном уровне системы получать доступ к ресурсам на другом, была принята в качестве основы для функций безопасности операционной системы ICL VME .
Эдинбургская система множественного доступа (EMAS) опирается, в частности, на концепцию одноуровневого хранилища, используемую Multics, обеспечивая доступ к файлам только путем их отображения в памяти. Все пространство памяти связано с сегментом.
Использование сервиса Multics, работающего в системе Honeywell 6180, сократилось... на 15 процентов.
... закрытие нескольких проектов Multics, которым не удалось получить финансирование.
Однако эта новая цена оказалась настолько привлекательной для многих людей, что количество пользователей и объем использования Multics значительно возросли.
Отключение ДНД-Х (17:08З 30.10.00)
можно привести хороший пример того, что UNIX, по сути, является современной реализацией системы CTSS MIT.
В литературе содержится большое количество статей о Multics и различных его компонентах; довольно полный список доступен на странице библиографии Multics, а также во второй, более краткой библиографии Multics 1994 года (текстовый формат). Наиболее важные и/или информативные из них перечислены ниже.