Multics

Multics (Multiplexed Information and Computing Service) была одной из первых операционных систем с разделением времени исполнения програм (time-sharing operating system).

Содержание

Описание

Разработка операционной системы Multics была начата в 1964 году. Изначально в этом проекте были заняты Массачусетский Технологический Институт (MIT), а так же компании General Electric (GE) и Bell Labs. Компания Bell Labs вышла из проекта в 1969 году, а в 1970 году компьютерный бизнес компании General Electric (вместе с Multics), отошел к компании Honeywell. Multics был задуман компанией General Electric как коммерческий продукт, и стал таковым уже под руководством компании Honeywell, хотя так никогда и не нашел успеха на компьютерном рынке.

Как бы там ни было, система Multics оказала очень большое влияние на компьютерную индустрию, благодаря многим новаторским и ценным идеям, заложенным в нее. Хотя система и подвергалась многочисленным насмешкам со стороны критиков [1], она все же показала что заложенные в нее концепции имеют право на долгосрочную жизнь в мире операционных систем.

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

Инновационные идеи

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

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

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

Одним из главных неудобств такого подхода (появившемся в основном из-за различий электронных архитектур вычислительных машин, на которой система работала), было ограничение размера сегмента до 256 * 1024 32-битных слов, что приблизительно равно 1 Мегабайту по сегодняшним стандартам. Поэтому для работы с файлами, большими по размеру чем установленный лимит, должен был использоваться дополнительный код в исполняемых программах. Сами файлы, по размеру большие чем 256 * 1024 32-битных слов, представлялись системой в виде ряда соединенных воедино сегментов.

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

В системе Multics была впервые реализована и следующая инновационная идея, а именно - динамическе связывание (dynamic linking) исполняемой программы с библиотеками кода. Благодаря динамическому связыванию, исполняемый процесс мог запрашивать у системы о подключении дополнительных сегментов к собственному адресному пространству, а именно сегментов, содержащих полезный код для исполняемой программы.

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

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

Стоит заметить, что две приведенные выше идеи так до сих пор и не были реализованы в полной мере на сегодняшних самых распространенных операционных системах, несмотря на большое развитие компьютерной техники, начавшееся в 60-х годах; хотя в своей нынешней реализации эти идеи формируют то что мы называем динамическими связями (dynamic linking) в компьютерных системах.

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

Как было уже упомянуто, система Multics могла работать на многопроцессорных компьютерах, по существу явившись одной из самых первых мульти-процессорных операционных систем.

Multics была так же одной из первой систем, в которой большое внимание уделялось безопасности взаимодействия между программами и пользователями. Более того, Multics возможно была самой первой операционной системой, задуманной изначально и реализованной как безопасная, не смотря на то что ранние версии системы Multics все-таки неоднократно взламывались хакерами. Взломы системы приводили к доработкам системы безопасности, которые в конечном счете определили широко распространенные подходы к архитектуре безопасности в операционных системах, и сделали саму систему Multics более безопасной. Как только в систему было установлено электронное оборудование второго поколения со встроенной поддержкой привилегий пользователей (определяющих права пользователя на доступ к данным и программам), взломы системы Multics стали очень редким явлением.

Дополнительно к тому, что в Multics одной из первых была реализована иерархическая файловая система, имена файлов могли быть практически произвольной длины и содержать любые символы. Файл или директория могли иметь несколько имен (короткое и длинное); так же были доступны для использования символьные ссылки между директориями.

Так же в Multics был впервые реализован (теперь уже стандартный) подход использования стеков для каждого вычислительного процесса в ядре системы, с отдельным стеком для каждого уровня безопасности вокруг ядра.

Multics так же явилась одной из самых первых операционных систем, написанных на языке высокого уровня. Изначально был использован PL/I, а для компьютеров Burroughs B5000 Multics была переписана на Алголе.

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

Изначально Multics была разработана для 36-битных мэйнфреймов GE-645, а позднее — и для машин серии Honeywell 6180.

Компания Bell Labs вышла из проекта в 1969-м году. Несколько человек, разрабатывающих систему Multics в этой компании перешли к созданию системы UNIX. Позднее созданная система UNIX показала внешнее сходство с системой Multics, включая даже в названиях используемых команд. Однако философия дизайна UNIX была совершенно другой, ориентированной на создание системы как можно меньших размеров, и настолько простой, насколько это будет возможно, в чем и было ее основное отличие от системы Multics.

Название "UNIX" (изначально "Unics") было образовано от "Multics". Буква U в названии UNIX означала "Uniplexed" ("односложная") в противоположность слову "Multiplexed" ("комплексная"), лежащему в основе названия системы Multics, для того чтобы подчеркнуть попытку создателей UNIX-а отойти от сложностей системы Multics для выработки более простого и работоспособного подхода.

Компания Honeywell выкупила компьютерное подразделение компании GE, и продолжила разработку системы Multics до 1985 года. Около 80 многомиллионных установок было поставлено в университетские, индустриальные и государственные вычислительные центры.

Так же в начале 80-х во Франции в нескольких университетах были установлены компьютеры с системой Multics.

После того как компания Honeywell прекратила поддержку системы Multics, пользователи мигрировали на другие системы, в том числе и системы UNIX.

Последняя машина с Multics была остановлена 31 октября 2000-го года в канадском Министерстве Обороны.

Дополнительные замечания

Удивительно что ядро системы Multics, находящееся постоянно в памяти компьютера, и в те далекие дни часто высмеиваемое за свой размер и сложность, занимало всего 135 Килобайт кода.

Первые компьютеры GE-645 имели память размером 512 * 1024 32-х битных слов (или 2 Мегабайта по сегодняшним меркам), поэтому ядро системы занимало не так уж и много места.

Стоит так же заметить, что вся операционная система, включая сложный компилятор языка PL/I, пользовательские команды и дополнительные библиотеки, состояла из примерно полутора тысяч исходных файлов, каждый из которых содержал примерно по 200 строк кода. В скомпилированном виде весь этот код занимал около 4.5 Мегабайт, что было огромным размером по тем временам.

Компиляторы Multics в основном оптимизировали код по размеру, а не по эффективности использования центрального процессора, что было обосновано экономией памяти в многопользовательской системе.

Смотри также

  • Фернандо Корбато (Fernando J. Corbato), лидер проекта Multics пока в нем участвовал MIT
  • Виктор Высоцкий (Victor A. Vyssotsky), один из лидеров проекта BESYS, предшественника Multics
  • Луис Поузин (Louis Pouzin), представивший термин оболочка (shell) в командном языке системы Multics

Дополнительный материал

Ссылки

 
Начальная страница  » 
А Б В Г Д Е Ж З И Й К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ы Э Ю Я
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9 Home