stringtranslate.com

Мультикс

MulticsMULTiplexed Information and Computing Service ») — влиятельная ранняя операционная система с разделением времени , основанная на концепции одноуровневой памяти . [4] [5] Натан Грегори пишет, что Multics «повлияла на все современные операционные системы с тех пор, от микрокомпьютеров до мэйнфреймов». [6]

Первоначальное планирование и разработка Multics начались в 1964 году в Кембридже, штат Массачусетс . Первоначально это был совместный проект под руководством MIT ( проект MAC с Фернандо Корбато ) вместе с General Electric и Bell Labs . Он был разработан на компьютере GE 645 , который был специально разработан для него; первый был доставлен в MIT в январе 1967 года. GE предложила свои более ранние системы 635 с ранней системой разделения времени, известной как «Mark I», и намеревалась предложить 645 с Multics в качестве более крупного преемника. Bell вышла из проекта в 1969 году, поскольку стало ясно, что она не предоставит работающую систему в краткосрочной перспективе. Вскоре после этого GE решила полностью выйти из компьютерной индустрии и продала подразделение Honeywell в 1970 году. Honeywell предложила Multics на коммерческой основе, но с ограниченным успехом.

Multics имеет множество функций, предназначенных для обеспечения высокой доступности, чтобы он мог поддерживать вычислительную утилиту , похожую на телефонную и электроэнергетическую . Для достижения этого используются модульная аппаратная структура и программная архитектура. Система может увеличиваться в размерах, просто добавляя больше соответствующих ресурсов, будь то вычислительная мощность, основная память или дисковое хранилище. Отдельные списки контроля доступа для каждого файла обеспечивают гибкий обмен информацией, но полную конфиденциальность при необходимости. Multics имеет ряд стандартных механизмов, позволяющих инженерам анализировать производительность системы, а также ряд адаптивных механизмов оптимизации производительности.

Благодаря множеству новых и ценных идей, Multics оказал значительное влияние на информатику, несмотря на свои недостатки. [7] Его наиболее продолжительное влияние на компьютерную индустрию было вдохновением для создания Unix, которая перенесла многие функции Multics, но могла работать на менее дорогом оборудовании. Unix был разработан в Bell, чтобы позволить их команде Multics продолжить свои исследования, используя меньшие машины, сначала PDP -7 и, в конечном итоге, PDP-11 .

Новые идеи

Справочное руководство по командам Multics

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 Corporation разработал произносимый генератор случайных слов для удовлетворения требований к паролям таких установок, как Центр обслуживания данных ВВС (AFDSC), обрабатывающий секретную информацию. Чтобы избежать угадываемых паролей, AFDSC решил назначать пароли, но пришел к выводу, что ручное назначение требует слишком больших административных издержек. Таким образом, был исследован и затем разработан генератор случайных слов на PL/I. Вместо того, чтобы основываться на фонемах , система использовала фонемные сегменты (второй порядок приближений английского языка) и другие правила для повышения произносимости и случайности, что было статистически смоделировано по сравнению с другими подходами. [13] Потомок этого генератора был добавлен в Multics во время проекта Guardian. [14]

История проекта

В 1964 году Multics изначально разрабатывался для мэйнфрейма GE-645 , 36-битной системы. Компьютерный бизнес GE, включая Multics, был приобретен Honeywell в 1970 году; около 1973 года Multics поддерживался на машинах Honeywell 6180 , которые включали улучшения безопасности, включая аппаратную поддержку защитных колец .

Bell Labs вышла из проекта в 1969 году; некоторые из людей, которые работали над ним там, продолжили работу над системой Unix . Разработка Multics продолжилась в MIT и General Electric. В MIT в 1975 году использование Multics снижалось и к 1976 году не восстановилось до прежнего уровня. [15] [16] Наконец, снизив цены, MIT удалось вернуть пользователей к Multics в 1978 году. [17]

В 1974 году Honeywell заключила контракт на разработку с Военно-воздушными силами (с MIT в качестве субподрядчика) для разработки ядра безопасности для Multics. Это включало бы уменьшение размера ядра Multics путем перемещения определенных компонентов супервизора из кольца 0. Получившийся в результате Project Guardian просуществовал до завершения в 1976 году; хотя большинство его изменений не были добавлены в Multics, некоторые части проекта, такие как предложенный Secure Front End Processor, были выпущены Honeywell как SCOMP (Secure Communications Processor). [18]

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 под лицензией свободного программного обеспечения . [19]

Последняя известная установка Multics, работающая на оборудовании Honeywell, была закрыта 30 октября 2000 года в канадском Министерстве национальной обороны в Галифаксе, Новая Шотландия, Канада. [20]

Текущий статус

В 2006 году Bull HN опубликовала исходный код MR12.5, финального релиза Multics 1992 года, в Массачусетском технологическом институте. [21] Большая часть системы теперь доступна как свободное программное обеспечение , за исключением некоторых дополнительных частей, таких как TCP/IP . [22]

В 2014 году Multics был успешно запущен на текущем оборудовании с использованием эмулятора, созданного разработчиками Multicians Гарри Ридом и Чарльзом Энтони. [23] Версия 1.0 эмулятора доступна с 2017 года . [24] Выпуск 12.6f Multics сопровождает версию 1.0 эмулятора и добавляет несколько новых функций, включая вызов командной строки и редактирование с использованием видеосистемы. [25]

Команды

Ниже приведен список программ и команд [26] для общих вычислительных задач, которые поддерживаются интерфейсом командной строки Multics . [27] [28]

Команды доступа к файлам и каталогам

Текстовые редакторы

Форматировщики документов

Компиляторы, ассемблеры и интерпретаторы

Электронная почта

Онлайн документация

Скриптинг

Обработка данных

Вход в систему сеансов

Активные функции

Язык оболочки Multics поддерживает «активные функции», которые похожи на команды, но возвращают строковое значение. Активная функция вызывается путем помещения имени активной функции и аргументов активной функции в квадратные скобки [ и ] . Строка, возвращаемая активной функцией, подставляется в команду вместо вызова активной функции. Например, при обработке команды echo [working_dir] запускается активная функция working_dir ; она возвращает полный путь к рабочему каталогу , который подставляется в команду, так что команда echo печатает рабочий каталог.

Некоторые программы могут действовать либо как команды, либо как активные функции; при запуске в качестве команды ее результат выводится на печать, а при запуске в качестве активной функции ее результат возвращается в виде строки. [28]

Некоторые общие активные функции:

Ретроспективные наблюдения

Питер Х. Салус , автор книги, посвященной ранним годам Unix, [30] изложил одну позицию: «С Multics они пытались создать гораздо более универсальную и гибкую операционную систему, и это с треском провалилось». [31] Однако эта позиция, как говорят, была дискредитирована в компьютерном сообществе, поскольку многие технические инновации 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, может ли он организовать изменение названия во всех их компьютерных документах. Когда его спросили, когда этот процесс может быть завершен, Multician ответил: «Все готово». Сотрудник повторил, что ему нужно обновить сотни, а может быть, и тысячи документов. Multician объяснил, что он выполнил глобальный поиск и замену, пока говорил сотрудник, и задача была фактически выполнена. [ необходима цитата ]

Влияние на другие проекты

Unix

Дизайн и особенности Multics повлияли на операционную систему Unix , которая изначально была написана двумя программистами Multics, Кеном Томпсоном и Деннисом Ритчи . [32] Влияние Multics на Unix очевидно во многих областях, включая иерархическую файловую систему , перенаправление , оболочку и наименование некоторых команд. Но внутренняя философия дизайна совершенно иная, сосредоточенная на сохранении небольшой и простой системы, и, таким образом, исправлении некоторых предполагаемых недостатков Multics из-за ее высоких требований к ресурсам на ограниченном компьютерном оборудовании того времени.

Название Unix (первоначально Unics ) само по себе является игрой слов на Multics . По слухам, U в Unix означает «uniplexed» (униплексный ) , в отличие от « multiplexed » (мультиплексный ) в Multics, что еще больше подчеркивает отказ разработчиков от сложности Multics в пользу более простого и работоспособного подхода для меньших компьютеров. (Гарфинкель и Абельсон [33] ссылаются на альтернативное происхождение: Питер Нойманн из Bell Labs, наблюдая за демонстрацией прототипа, предложил каламбурное название UNICS — произносимое как « евнухс » — как «кастрированный Multics», хотя Деннис Ритчи, как говорят, отрицал это. [34] )

Кен Томпсон в расшифрованном интервью 2007 года с Питером Сейбелем [32] называет Multics «перепроектированным и перестроенным и над всем. Он был близок к непригодности для использования. Они [Массачусетский технологический институт] до сих пор утверждают, что это чудовищный успех, но это просто явно не так». О влиянии Multics на Unix Томпсон заявил, что «вещи, которые мне понравились достаточно (в Multics), чтобы на самом деле взять, были иерархическая файловая система и оболочка — отдельный процесс, который можно заменить каким-то другим процессом».

Деннис Ритчи писал, что на дизайн UNIX повлияла CTSS . [35]

Другие операционные системы

Операционная система 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, ограничивающая возможность кода на одном уровне системы получать доступ к ресурсам на другом, была принята в качестве основы для функций безопасности операционной системы VME компании ICL .

Система множественного доступа Эдинбурга (EMAS) в частности опирается на концепцию одноуровневого хранилища, используемую Multics, предоставляя доступ к файлам только путем их отображения в памяти. Все пространство памяти связано с сегментом.

Смотрите также

Ссылки

  1. ^ ab RA Freiburghouse, «Компилятор Multics PL/1», General Electric Company, Кембридж, Массачусетс, 1969.
  2. ^ "Multics License (Multics) - Open Source Initiative". opensource.org . 5 февраля 2008 г. Получено 11 апреля 2018 г.
  3. ^ "Мифы о Multics". www.multicians.org . Получено 11 апреля 2018 г. .
  4. Деннис М. Ритчи, «Эволюция системы разделения времени Unix», Communications of the ACM, т. 17, 1984, стр. 365-375.
  5. ^ Дэн Мерфи (1996) [1989]. «Истоки и развитие TOPS-20».
  6. Грегори, Натан (май 2018 г.). Tym Before. Lulu.com. стр. 66. ISBN 9781387824755. Получено 29 марта 2020 г. .
  7. ^ ab "Мифы о Multics". www.multicians.org . Получено 11 апреля 2018 г. .
  8. ^ Saltzer, Jerome H. (февраль 1974 г.). «Защита и контроль обмена информацией в Multics» (PDF) . Введение в Multics», MAC TR-123 (отчет). Кембридж, Массачусетс: Массачусетский технологический институт и Honeywell Information Systems Inc., стр. 2–41 . Получено 16 марта 2022 г.
  9. Том Ван Флек (2002). «Как ВВС взломали систему безопасности Multics».
  10. ^ "Multics Glossary -F-". www.multicians.org . Получено 11 апреля 2018 г. .
  11. ^ RC Daley и PG Neumann, «Универсальная файловая система для вторичного хранения», AFIPS '65 (осень, часть I) Труды 30 ноября – 1 декабря 1965 г.
  12. ^ Брайан Керниган о происхождении Unix LWN.net. 2022.
  13. ^ "Генератор случайных слов для произносимых паролей" (PDF) . Бедфорд, Массачусетс: Отдел электронных систем, Командование систем ВВС, ВВС США. Ноябрь 1975 г. ESD-TR-75-97. Архивировано (PDF) из оригинала 8 апреля 2022 г. . Получено 8 марта 2021 г. .
  14. ^ Ван Флек, Том. "Генератор паролей" . Получено 8 марта 2021 г.
  15. ^ "Отчет президента" (PDF) . Бюллетень Массачусетского технологического института . 111 (4): 355. Декабрь 1975 г. Архивировано из оригинала (PDF) 13 апреля 2022 г. . Получено 12 апреля 2022 г. Использование службы Multics, работающей на системе Honeywell 6180, снизилось... на 15 процентов.
  16. ^ "Отчет президента" (PDF) . Бюллетень Массачусетского технологического института . 112 (4): 392. Ноябрь 1976 г. Архивировано из оригинала (PDF) 13 апреля 2022 г. . Получено 12 апреля 2022 г. . ... крах нескольких проектов Multics, которые не смогли получить финансирование.
  17. ^ "Отчет президента и канцлера" (PDF) . Массачусетский технологический институт. 1978. стр. 450. Архивировано из оригинала (PDF) 13 апреля 2022 г. . Получено 12 апреля 2022 г. . Однако эта новая цена оказалась настолько привлекательной для многих людей, что число пользователей и использование Multics значительно возросло.
  18. ^ Фрейм, Лестер Дж. (июль 1983 г.). «Scomp: решение проблемы многоуровневой безопасности». Computer . 16 (7): 26–34. doi :10.1109/MC.1983.1654440.
  19. ^ "Multics". stuff.mit.edu . Получено 25 июля 2022 г. .
  20. ^ "Multics History Dates" . Получено 13 сентября 2015 г. . Выключение DND-H (17:08Z 10/30/00)
  21. ^ Ван Флек, Том. "Open Source for Multics". Multicians.org . Получено 11 апреля 2016 г.
  22. ^ Энтони, Чарльз. "(email) Re: [dps8m-developers] Многопроцессорные и/или сетевые Multics". Sourceforge.net . Получено 11 апреля 2016 г. .
  23. ^ "RingZero - Multics reborn". WikidotCom . Получено 11 апреля 2015 г. .
  24. ^ "Multics Simulator" . Получено 9 июля 2017 г.
  25. ^ "Установка Multics" . Получено 19 мая 2020 г.
  26. ^ Honeywell Bull, Inc. (февраль 1985 г.). Multics Commands and Active Functions (AG92-06) (PDF) . Получено 30 марта 2023 г. .
  27. ^ «Unix и Multics».
  28. ^ ab "Команды Multics".
  29. ^ Руководство пользователя Multics C (PDF) . Honeywell Bull. Ноябрь 1987 г. Получено 26 марта 2024 г.
  30. ^ Salus, Peter H. (1994). Четверть века UNIX (переиздано с исправлениями в январе 1995 г.). Reading, Mass.: Addison-Wesley Pub. Co. ISBN 978-0-201-54777-1.
  31. Уорд, Марк (20 августа 2009 г.). «40 лет Unix». BBC News . Получено 27 апреля 2010 г.Цитата из Питера Салуса.
  32. ^ Питер Сейбел. Кодеры за работой : размышления о ремесле программирования. APress Publications, 2007. ISBN 978-1-4302-1948-4 
  33. ^ Гарфинкель, Симсон и Абельсон, Гарольд. Архитекторы информационного общества: тридцать пять лет Лаборатории компьютерных наук Массачусетского технологического института. MIT Press, 1999. ISBN 978-0262071963 
  34. ^ Карн, Фил (28 октября 1981 г.). "Origins of unix". Группа новостей : fa.unix-wizards. Usenet:  [email protected] . Получено 11 апреля 2014 г.
  35. ^ Ритчи, Деннис М. (1977). Система разделения времени Unix: ретроспектива (PDF) . Десятая Гавайская международная конференция по системным наукам. можно привести веские доводы в пользу того, что UNIX по сути является современной реализацией системы CTSS Массачусетского технологического института

Дальнейшее чтение

В литературе содержится большое количество статей о Multics и различных его компонентах; довольно полный список доступен на странице библиографии Multics и во второй, более краткой библиографии Multics 1994 года (текстовый формат). Наиболее важные и/или информативные из них перечислены ниже.

Технические подробности

Безопасность

Внешние ссылки