Interested Article - Multics
- 2020-03-23
- 1
Multics ( МФА : [ m ʌ l t ɪ k s ]; аббр. от англ. Multiplexed Information and Computing Service ) — ранняя операционная система с разделением времени исполнения программ , основанная на концепции одноуровневой памяти.
Разработка операционной системы Multics была начата в 1964 году и в её основу вошли труды наработанные во время создания в Bell Labs операционной системы BESYS , руководителем проекта которой являлся Виктор Высотский . Изначально в проекте по разработке Multics были заняты Массачусетский технологический институт (MIT), а также компании General Electric (GE) и сама Bell Labs. Компания Bell Labs вышла из проекта в 1969 году , а в 1970 году компьютерный бизнес компании General Electric (вместе с Multics) отошёл к компании Honeywell , которая продала его Bull . Multics был задуман компанией General Electric как коммерческий продукт, и стал таковым уже под руководством компании Honeywell, хотя так никогда и не нашёл успеха на компьютерном рынке.
Система Multics оказала очень большое влияние на компьютерную отрасль благодаря многим новаторским и ценным идеям, заложенным в неё. Хотя система и подвергалась многочисленным насмешкам со стороны критиков , она всё же показала, что заложенные в неё концепции имеют право на долгосрочную жизнь в мире операционных систем.
Система Multics имела множество характерных особенностей, обеспечивавших её безотказность и высокую производительность. Например, дополнительно к поддержке модульности программного обеспечения система также была ориентирована на модульную поддержку используемых в её работе электронных устройств, что позволило наращивать вычислительные возможности системы простой заменой её модулей: центрального процессора, памяти, дискового пространства, и т. д. Отдельные для каждого пользователя списки доступа к файлам обеспечили весьма гибкий механизм коллективного использования информации в системе, гарантирующей также обеспечение полной конфиденциальности хранимой и используемой пользователями информации. Также система Multics обладала рядом стандартных механизмов, позволявших инженерам анализировать вычислительные мощности системы, а также набором механизмов, обеспечивавших оптимизацию работы самой операционной системы.
Инновационные идеи
Multics была одной из первых операционных систем, реализовавшей плоскую модель хранения данных, чётко разделявшая концепции файлов (называемых в системе Multics сегментами ) и памяти вычислительных процессов . Память вычислительных процессов состояла из сегментов, каждый из которых обладал своим адресным пространством . Для чтения или записи в сегменты вычислительный процесс использовал инструкции центрального процессора системы, а операционная система брала на себя всю заботу по сохранению изменённых данных на устройстве внешней памяти компьютера.
Таким образом, в Multics была спроектирована и реализована полностью централизованная файловая система, в которой файлы, физически располагающиеся на разных физических устройствах внешней памяти, логически объединяются в один централизованный архив или древовидную иерархическую структуру, промежуточными узлами которой являются именованные каталоги, а в листьях содержатся файлы.
В Multics была также спроектирована и реализована большая сегментно-страничная виртуальная память , позволившая использовать отображение файлов в сегменты виртуальной памяти. Иными словами, при открытии файла в виртуальной памяти соответствующего процесса образовывался сегмент, в который полностью отображался файл, располагающийся во внешней памяти (в файловой системе ОС Multics на базовом уровне поддерживались файлы со страничной структурой. Более сложные организации являлись надстройкой). Дальнейшая работа с файлом происходила на основе общего механизма управления виртуальной памятью.
Одним из главных неудобств такого подхода (появившегося в основном из-за различий электронных архитектур вычислительных машин, на которой система работала) было ограничение размера сегмента до 256 * 1024 32-битных слов, что равно 1 Мегабайту. Поэтому для работы с файлами, бо́льшими по размеру, чем установленный лимит, должен был использоваться дополнительный код в исполняемых программах. Сами файлы, по размеру бо́льшие, чем 256 * 1024 32-битных слов, представлялись системой в виде ряда соединённых воедино сегментов.
До появления больших баз данных и графических данных огромных объёмов данное ограничение по размеру файлов нарушалось крайне редко.
В системе Multics была впервые реализована и следующая инновационная идея — (dynamic linking) исполняемой программы с библиотеками кода. Благодаря динамическому связыванию исполняемый процесс мог запрашивать у системы о подключении дополнительных сегментов к собственному адресному пространству, а именно сегментов, содержащих полезный код для исполняемой программы.
Таким образом программы смогли автоматически использовать внешние библиотеки кода, хранимые в отдельных сегментах, создавая при этом динамические связи с функциями, хранимыми в этих библиотеках. Динамическая связь с внешним исполняемым кодом создавалась всего один раз, во время первого вызова функции из библиотеки, и в дальнейшем могла быть использована повторно. Так как каждому пользователю в системе соответствовали отдельные процессы, то различные внешние библиотеки могли быть подключены к одной и той же программе в зависимости от потребностей пользователя.
В равной степени важным являлось и то, что с правильной настройкой системы безопасности в Multics код из одного сегмента мог получать доступ к структурам данных, инициализированным в совершенно другом процессе. Для такого взаимодействия между пользовательскими и отдельными daemon -процессами (или просто демонами) процесс пользователя должен был динамически подключить сегмент кода, ассоциированный с этим процессом, и вызывать находящиеся там методы. Код, находящийся в подключённом сегменте, мог напрямую работать с используемыми в демоне структурами данных. Когда вызванный код из подключённого сегмента заканчивал работу, выполнение возвращалось в пользовательский процесс через обычную процедуру возвращения из вызываемого метода.
Две приведённые выше идеи так до сих пор и не были реализованы в полной мере в сегодняшних самых распространённых операционных системах, несмотря на большое развитие компьютерной техники, начавшееся в 1960-х годах ; хотя в своей нынешней реализации эти идеи формируют то, что мы называем динамическими связями (dynamic linking) в компьютерных системах.
Система Multics поддерживала весьма агрессивную переконфигурацию всей системы «на ходу», позволяя подключать, отключать и настраивать центральные процессоры, блоки памяти, жёсткие диски и другие устройства, не останавливая при этом всю систему. Например, в MIT во время профилактики системы Multics было обычной практикой разделять систему — которая была мультипроцессорной — на две, постепенно конфигурируя компьютерные устройства для создания двух независимых друг от друга систем. Одна из получившихся систем продолжала обслуживать всех подключённых пользователей, а другая позволяла проводить профилактику, установку новых устройств или обновление программного обеспечения. Когда все необходимые мероприятия завершались, систему вновь собирали в единое целое без всяких перезагрузок.
Система Multics могла работать на многопроцессорных компьютерах, по существу явившись одной из самых первых мультипроцессорных операционных систем.
Multics была также одной из первых систем, в которой большое внимание уделялось безопасности взаимодействия между программами и пользователями. Более того, Multics, возможно, была самой первой операционной системой, задуманной изначально и реализованной как безопасная, несмотря на то, что ранние версии системы Multics всё-таки неоднократно взламывались хакерами. Взломы системы приводили к доработкам системы безопасности, которые в конечном счете определили широко распространённые подходы к архитектуре безопасности в операционных системах и сделали саму систему Multics более безопасной. Как только в систему было установлено электронное оборудование второго поколения со встроенной поддержкой привилегий пользователей (определяющих права пользователя на доступ к данным и программам), взломы системы Multics стали очень редким явлением.
В Multics одной из первых была реализована иерархическая файловая система. Имена файлов могли быть практически произвольной длины и содержать любые символы. Файл или каталог могли иметь несколько имён (короткое и длинное); также были доступны для использования символьные ссылки ( symlink ) между каталогами.
Также в Multics был впервые реализован (теперь уже стандартный) подход использования стеков для каждого вычислительного процесса в ядре системы , с отдельным стеком для каждого уровня безопасности вокруг ядра.
Multics также явилась одной из первых операционных систем, написанных на языке высокого уровня PL/I (самой первой такой системой была для компьютеров , которая использовала диалект Алгола ).
История проекта
Изначально Multics была разработана для 36-битных мэйнфреймов , а позднее — и для машин серии .
Компания Bell Labs вышла из проекта в 1969 году . Несколько человек, разрабатывавших систему Multics в этой компании, перешли к созданию системы UNIX . Позднее созданная система UNIX показала внешнее сходство с системой Multics, в том числе в названиях используемых команд. Однако философия дизайна UNIX была совершенно другой, ориентированной на создание системы как можно меньших размеров, и настолько простой, насколько это будет возможно, в чём и было её основное отличие от системы Multics.
Название « UNIX » (изначально «Unics») было образовано от «Multics». Буква U в названии UNIX означала «Uniplexed» («односложная») в противоположность слову «Multiplexed» («комплексная»), лежавшему в основе названия системы Multics, для того, чтобы подчеркнуть попытку создателей UNIX’а отойти от сложностей системы Multics для выработки более простого и работоспособного подхода.
Компания Honeywell выкупила компьютерное подразделение компании GE и продолжала разработку системы Multics до 1985 года . Около 80 многомиллионных установок было поставлено в университетские, промышленные и государственные вычислительные центры.
Также в начале 1980-х годов во Франции в нескольких университетах были установлены компьютеры с системой Multics.
После того как компания Honeywell прекратила поддержку системы Multics, пользователи мигрировали на другие системы, в том числе и на системы UNIX.
Последняя машина с Multics была остановлена 31 октября 2000 года в канадском Министерстве обороны.
В 2007 году исходный код и документация Multics были переданы компанией BULL Массачусетскому технологическому институту и опубликованы на сайте MIT.
Текущее состояние
В 2006 году выпустила исходный код для MR12.5, окончательного выпуска Multics 1992 года, в MIT . Большая часть системы теперь доступна в виде свободного программного обеспечения, за исключением некоторых дополнительных частей, таких как TCP/IP .
В 2014 году Multics был успешно запущен на современном оборудовании с помощью эмулятора . Версия эмулятора 1.0 доступна с 2017 года . Выпуск 12.6f Multics сопровождается выпуском эмулятора 1.0 и добавляет несколько новых функций, включая усовершенствованную систему ввода-вывода, а также возможность редактирования видео вывода .
Последняя версия на текущий момент MR12.7 вышла 30 июля 2021 года и доступна в репозитории GitHub .
Поддерживаемые команды
Ниже приведен список программ и команд для базовых компьютерных задач, которые поддерживаются интерфейсом командной строки Multics .
Дополнительные замечания
Ядро системы Multics, находившееся постоянно в памяти компьютера, и в те далёкие годы часто высмеивавшееся за свой размер и сложность, занимало всего 135 Килобайт кода.
Первые компьютеры GE-645 имели память размером 512 * 1024 32-битных слов (2 Мегабайта), поэтому ядро системы занимало не так уж и много места.
Вся операционная система, включая сложный компилятор языка PL/I, пользовательские команды и дополнительные библиотеки, состояла из примерно полутора тысяч исходных файлов, каждый из которых содержал примерно по 200 строк кода. В скомпилированном виде весь этот код занимал около 4,5 мегабайта, что было огромным размером по тем временам.
Компиляторы Multics в основном оптимизировали код по размеру, а не по эффективности использования центрального процессора, что было обосновано стремлением к экономии памяти в многопользовательской системе.
См. также
- Операционная система
- Разделение времени
- Лаборатории Белла
- BESYS — предшественник Multics разработанный в Bell Labs
- Unix — в его основе лежат наработки взятые у Multics, был более ориентирован на «однозадачность»
- Фернандо Корбато , лидер проекта Multics, пока в нём участвовал MIT
- Виктор Высоцкий , один из лидеров проекта BESYS , предшественника Multics
- Луи Пузен , представивший термин оболочка (shell) в командном языке системы Multics.
Примечания
- ↑
- ↑
- « Мультиплексные информационные и вычислительные сервисы »
- . Дата обращения: 7 октября 2006. 1 февраля 2014 года.
- Van Vleck, Tom (англ.) . Multicians.org . Дата обращения: 8 сентября 2022. 10 февраля 2014 года.
- Anthony, Charles (англ.) . Sourceforge.net . Дата обращения: 8 сентября 2022. 21 марта 2022 года.
- (англ.) . WikidotCom . Дата обращения: 8 сентября 2022. 3 марта 2022 года.
- (англ.) . Дата обращения: 8 сентября 2022. 23 августа 2022 года.
- (англ.) . Дата обращения: 8 сентября 2022. 23 августа 2022 года.
- (англ.) . Дата обращения: 8 сентября 2022. 5 мая 2022 года.
- (англ.) . Дата обращения: 8 сентября 2022. 8 сентября 2022 года.
- (англ.) (PDF) (февраль 1985). Дата обращения: 7 сентября 2022. Архивировано из 6 июня 2022 года.
- (англ.) . Дата обращения: 7 сентября 2022. 21 марта 2022 года.
- (англ.) . Дата обращения: 7 сентября 2022. 16 августа 2000 года.
Литература
- F. J. Corbato, V. A. Vyssotsky, (англ.)
- F. J. Corbato, C. T. Clingen, J. H. Saltzer, (англ.)
- , V. A. Vyssotsky , ( 1965) is a good introduction to the system.
- , C. T. Clingen, , (AFIPS, 1972) is an excellent review, written after a considerable period of use and improvement over the initial efforts.
- J. J. Donovan, , , is a fundamental read on operating systems.
- J. J. Donovan, , is a good introduction into systems programming and operating systems.
- , (MIT Project MAC, 1974) is a considerably longer introduction to the system, geared towards actual users.
- , The Multics System: An Examination of Its Structure (MIT Press, 1972) is the standard work on the system, although it documents an early version, and some features described therein never appeared in the actual system.
- , , R. M. Graham, (AFIPS 1965) describes the basic internal structure of the Multics kernel.
- , (MIT Project MAC, June 1966) is the original description of the idea of switching kernel stacks; one of the classic papers of computer science.
- R. C. Daley, , (AFIPS, 1965) describes the file system, including the access control and backup mechanisms.
- R. J. Feiertag, , . Describes the lower levels of the I/O implementation.
- A. Bensoussan, C. T. Clingen, R. C. Daley, , ( ACM , 1969) describes the Multics memory system in some detail.
- , от 5 марта 2001 на Wayback Machine is a good in-depth look at the Multics storage system.
- , Dynamic Reconfiguration in a Modular Computer System (MIT Project MAC, 1971) describes the reconfiguration mechanisms.
- Paul A. Karger, , (Air Force Electronic Systems Division, 1974) describes the classic attacks on Multics security by a " ".
- , Michael D. Schroeder , (Proceedings of the IEEE , September 1975) describes the fundamentals behind the first round of security upgrades; another classic paper.
- M. D. Schroeder , D. D. Clark, , D. H. Wells. (MIT LCS, 1978) describes the security upgrades added to produce an even more improved version.
- Paul A. Karger, , (IBM, 2002) is an interesting retrospective which compares actual deployed security in today's hostile environment with what was demonstrated to be possible decades ago. It concludes that Multics offered considerably stronger security than most systems commercially available in 2002.
Ссылки
- на сайте bitsavers.org (англ.)
-
is a comprehensive site with a lot of material
- discusses numerous myths about Multics in some detail, including the myths that it failed, that it was big and slow, as well as a few understandable misapprehensions
- Includes extensive overview of other software systems influenced by Multics
- . Charles Babbage Institute , University of Minnesota. Multics development records include the second MULTICS System Programmers Manual; MULTICS Technical Bulletins that describe procedures, applications, and problems, especially concerning security; and returned "Request for Comments Forms" that include technical papers and thesis proposals.
- 30 ноября 2001 года.
- от 9 июля 2008 на Wayback Machine
- , a critical review of Multicians.org, plus a capsule history of Multics.
- 2020-03-23
- 1