Экспериментальная операционная система IBM
Операционная система
CP-40 был исследовательским предшественником CP-67 , который, в свою очередь, был частью революционной на тот момент CP[-67]/CMS от IBM — операционной системы с разделением времени виртуальной машины / виртуальной памяти для IBM System/360 Model 67 и родителя семейства VM от IBM . CP-40 запускал несколько экземпляров клиентских операционных систем — в частности, CMS , Cambridge Monitor System , [1] созданных в рамках тех же усилий. Как и CP-67, CP-40 и первая версия CMS были разработаны сотрудниками Cambridge Scientific Center (CSC) IBM в тесном сотрудничестве с исследователями MIT в Project MAC и Lincoln Laboratory . Производственное использование CP-40/CMS началось в январе 1967 года. CP-40 работал на уникальной, специально модифицированной IBM System/360 Model 40 .
Цели проекта
CP-40 была одноразовой исследовательской системой. Ее заявленными целями были:
- Оказывать исследовательскую поддержку команде System/360 Model 67, работающей в Покипси, которая открывала новые горизонты с пока еще не доказанной концепцией виртуальной памяти.
- Поддержка требований CSC по разделению времени в Кембридже.
Однако была и важная неофициальная миссия: продемонстрировать приверженность IBM и ее возможности для поддержки пользователей с разделением времени, таких как MIT. CP-40 (и его преемник) достигли своих целей с технической и социальной точек зрения — они помогли доказать жизнеспособность виртуальных машин, создать культуру пользователей с разделением времени и запустить индустрию удаленных компьютерных услуг. Проект оказался втянутым во внутреннюю политическую войну IBM по поводу разделения времени против пакетной обработки; и он не смог завоевать сердца и умы академического сообщества компьютерных наук, которое в конечном итоге отвернулось от IBM к таким системам, как Multics , UNIX , TENEX и различным операционным системам DEC . В конечном итоге концепции виртуализации, разработанные в проекте CP-40, принесли плоды в различных областях и остаются важными сегодня.
Функции
CP-40 была первой операционной системой, которая реализовала полную виртуализацию, т. е. она предоставляла среду виртуальной машины, поддерживающую все аспекты ее целевой компьютерной системы (S/360-40), так что другие операционные системы S/360 могли быть установлены, протестированы и использованы как на отдельной машине. CP-40 поддерживала четырнадцать одновременных виртуальных машин. Каждая виртуальная машина работала в «проблемном состоянии» — привилегированные инструкции, такие как операции ввода-вывода, вызывали исключения, которые затем перехватывались управляющей программой и моделировались. Аналогично, ссылки на области виртуальной памяти, отсутствующие в основной памяти, вызывают ошибки страниц , которые снова обрабатывались управляющей программой, а не отражались на виртуальной машине. Дополнительные сведения об этой реализации можно найти в CP/CMS (архитектура) .
Базовая архитектура и пользовательский интерфейс CP-40 были перенесены в CP-67/CMS , которая впоследствии стала текущей линейкой продуктов IBM для виртуальных машин.
Аппаратная платформа
Модель 67 не была доступна для построения CP-40, поэтому для CSC было спроектировано и построено специальное устройство виртуальной памяти на основе ассоциативной памяти («CAT box» [2] ). Оно включало как аппаратные, так и микрокодовые изменения в специально модифицированной System/360 Model 40. Эти изменения дали устройству технологию, необходимую для полной виртуализации оборудования System/360. Эта модифицированная Model 40 повлияла на дизайн будущей Model 67, которая была предназначена для удовлетворения потребностей того же сообщества пользователей с разделением времени (в частности, Project MAC MIT и Bell Laboratories – хотя обе эти площадки стали заметными провалами продаж IBM).
В этот период IBM реализовала три различные системы виртуальной памяти:
- «Blaauw Box» (названный в честь Джерри Блау ), часть оригинальной конструкции S/360-67
- «CAT Box» (Cambridge Address Translator), добавленный к CSC S/360-40 для запуска CP-40
- «DAT Box» (динамическая трансляция адресов), анонсированный как дополнение к серии S/370 в 1972 году
Все эти системы были разными, но имели семейное сходство. CAT box CP-40 был ключевой вехой. Pugh et al. [3] цитируют статью IEEE [4] об аппаратном обеспечении виртуальной памяти CP-40 и утверждают, что она была «уникальна тем, что включала банк регистров параллельного поиска для ускорения динамической трансляции адресов. На средства, предоставленные Кембриджем, инженеры IBM... построили 64-регистровую ассоциативную память и интегрировали ее в 360/40. Единственный в своем роде результат был отправлен в Кембридж в начале 1966 года».
Хотя поддержка виртуализации была явной целью для модифицированной модели 40 CSC, это, по-видимому, не относилось к оригинальной конструкции модели 67. Тот факт, что возможности виртуализации были в конечном итоге реализованы в -67 и, таким образом, обеспечили успех CP-67/CMS , говорит об упорстве и убедительности команды CSC.
CMS по CP-40
CMS была впервые создана в 1964 году в CSC для работы в качестве «клиентской» операционной системы под управлением CP-40. Руководителем проекта CMS был Джон Хармон. Хотя любая операционная система S/360 могла работать в виртуальной машине CP-40, было решено, что лучше всего для поддержки интерактивных пользователей с разделением времени подойдет новая, простая, однопользовательская интерактивная операционная система. Это позволило бы избежать сложности и накладных расходов на работу многопользовательской системы, такой как CTSS . (Сравните это с OS/MVT-TSO от IBM и ее преемниками — по сути, операционной системой с разделением времени, работающей как одна задача под пакетной операционной системой IBM. С CMS каждый интерактивный пользователь получает частную виртуальную машину.)
К сентябрю 1965 года многие важные решения по проектированию CMS уже были приняты:
- Удобные для пользователя команды с режимом по умолчанию и необязательными параметрами везде, где это возможно (для простоты использования и обучения, а также для минимизации требований к контролю заданий)
- Базовый набор команд и макросов файловой системы; простое соглашение об именовании файлов, основанное на имени файла, типе файла и режиме файла (режим файла = идентификатор логического диска или мини-диска , форма назначения букв диска )
- Записи сопоставлены с блоками фиксированного размера, которые можно читать или записывать по относительному номеру записи
- Файлы, которые можно создать, просто записав в них что-либо, без необходимости специальных операций «создания»
- Файловые режимы по умолчанию, позволяющие выполнять поиск на дисках в фиксированном порядке
Это были радикальные отступления от сложного именования файлов, управления заданиями (через JCL) и других требований «реальных» операционных систем IBM. [5] (Некоторые из этих концепций были целями для операционных систем других поставщиков, таких как Control Data Corporation и DEC .)
Дизайн файловой системы CMS с ее плоской структурой каталогов был намеренно сохранен простым. Кризи отмечает: «Эта структура из нескольких дисков, каждый с одним каталогом, была выбрана, чтобы быть простой, но полезной. Многоуровневые связанные каталоги с файлами, хранящимися в общих областях, были тенденцией дизайна, когда мы начинали. Мы упростили дизайн этого и других компонентов CMS, чтобы уменьшить сложность реализации». [6]
Прикладные программы, работающие под CMS, выполнялись в том же адресном пространстве. Они обращались к системным службам, таким как файловая система CMS, через простой программный интерфейс к ядру CMS , которое находилось в нижней памяти виртуальной машины CMS. Были предоставлены различные системные вызовы, большинство из которых знакомы нынешним программистам CMS. (Поскольку приложения работали в виртуальной машине CMS, они могли потенциально вести себя неправильно, перезаписывая данные CMS, используя привилегированные инструкции или выполняя другие действия, которые могли бы захватить или привести к сбою виртуальной машины. Конечно, это не могло повлиять на другие виртуальные машины, которые все были взаимно изолированы; и это не могло повредить базовую программу управления. В отличие от большинства операционных систем, сбои CP редко возникали из-за ошибок приложений — и, таким образом, сами по себе были относительно редки.)
Исторические заметки
В следующих заметках приводятся краткие цитаты, в основном из Pugh, Varian и Creasy [см. ссылки], иллюстрирующие контекст разработки CP-40. Здесь приведены прямые цитаты, а не парафразы, поскольку точки зрения авторов окрашивают их интерпретации. Также см. History of CP/CMS для получения дополнительного контекста.
- Генезис проекта CP-40:
- Расмуссен из CSC испытывал «большие сомнения» по поводу TSS/360 и решил, что его свободные ресурсы CSC следует использовать для создания «надежной системы разделения времени для S/360», которая стала известна как CP-40. Руководителем проекта был Роберт Кризи, который был программистом CTSS . [7]
- Цели CP-40 включали как проведение исследований (получение и анализ данных о системах и программном обеспечении, включая использование ассоциативной памяти), так и удовлетворение собственных вычислительных требований CSC посредством разделения времени. Вариан добавляет: «Настоящей целью проекта было создание системы разделения времени, но другие цели также были подлинными, и они всегда подчеркивались, чтобы замаскировать «контрстратегические» аспекты проекта». Кризи описывает цели CP/CMS следующим образом: она должна была стать «системой разделения времени второго поколения для недавно анонсированной IBM System/360... [которая] поддерживала бы все виды деятельности Кембриджского центра, включая такие разнообразные виды деятельности, как исследование операционных систем, разработка приложений и подготовка отчетов программистами, учеными, секретарями и менеджерами. Вскоре после ее создания было удобно, чтобы система была признана и финансово поддерживалась извне центра как инструмент для оценки и тестирования производительности операционных систем». [8]
- Исследования CSC были важны для IBM, поскольку в то время «мало что было известно о системах виртуальной памяти». Вариан цитирует Л. У. Комо: «[Приверженность] [IBM] виртуальной памяти не была подкреплена успешным опытом.... Пугало то, что никто из тех, кто устанавливал это направление виртуальной памяти в IBM, не знал, почему [современная система виртуальной памяти Ferranti] Atlas не работала». (Комо позже пришел к выводу, что Atlas страдал от пробуксовки , которая не изучалась, пока не была обнаружена на IBM M44/44X и на CP-40.) [9] [10]
- Конструкция CP-40: Пью и др. пишут, что: «В 1964 году... исследовательский центр IBM рекомендовал использовать принципы виртуальной машины для планировщиков с разделением времени... [которые] были подхвачены командой Кембриджа [CSC], которая, среди прочего, хотела получить систему, способную тестировать операционные системы». Ключевым решением по проектированию, принятым Кризи и Комо в конце 1964 года, было создание CP-40 не только на виртуальной памяти, но и на виртуальных машинах (сначала называемых псевдомашинами , пока более поздний термин не был присвоен из проекта IBM M44/44X, который Кризи описывает как имеющий «похожие, но независимые идеи». [11] Кризи дает четкое описание стратегии виртуализации CP, основанной на наборе инструкций S/360 , который состоял из привилегированных инструкций «состояния супервизора», отличных от обычных инструкций «состояния проблемы»: «Каждая программа виртуальной машины [CP] фактически выполняется [полностью] в состоянии проблемы... Привилегированные инструкции... [воспроизводятся] CP в виртуальных машинах...». При запуске ОС в состоянии проблемы все «сложные» инструкции автоматически перехватывались оборудованием. Это оставляло только одну главную проблему виртуализации: ссылки на память. «Опыт [с CTSS]... предполагал необходимость динамического перемещения программ... в разбить программы на части, которые можно было бы перемещать в память, из памяти и внутри нее независимо друг от друга." [12]
- Виртуальные машины CP-40:
- Более ранние исследовательские проекты, включающие концепцию виртуальной машины, такие как IBM M44/44X, не пытались создать точную виртуальную копию реальной машины. Кризи: «[Они] были достаточно близки... чтобы доказать, что „достаточно близко“ не имеет значения».
- CP-40 сделал смелый шаг полной виртуализации , создав четырнадцать виртуальных сред S/360, каждая с фиксированным размером виртуальной памяти 256 КБ, сопоставленным доступом к разделам диска и буферизованным доступом к устройствам записи единиц (например, принтерам). Комо: «[Создание полной виртуализации] позволило одновременно разрабатывать CP и CMS; это позволило нам измерять невиртуальные системы, ОС и DOS, в среде виртуальной памяти, а также обеспечило высокий уровень целостности и безопасности». [13] [14]
- Помимо демонстрации ценности полной виртуализации, экспериментальная IBM M44/44X «внедрила идею о том, что концепция виртуальной машины не обязательно менее эффективна, чем более традиционные подходы» — основное предположение в архитектуре CP-40, которое в конечном итоге оказалось весьма успешным. [15]
- CP-40 вскоре должен был поддерживать «до дюжины виртуальных машин System/360» под управлением терминала [большинство источников указывают четырнадцать]. (CP-67 позже «использовал... трансляцию адресов... и увеличил скорость... для удвоения емкости» CP-40. [16] )
- CMS в рамках CP-40:
- О решении разделить CMS и CP Кризи пишет: «Внедрение CTSS проиллюстрировало необходимость модульной конструкции для эволюции системы. Несмотря на успех в качестве производственной системы, взаимосвязи и зависимости ее супервизорной конструкции затрудняли расширение и изменение. Ключевой концепцией конструкции CP/CMS было разделение управления компьютерными ресурсами и поддержки пользователей. По сути, интегрированная конструкция [CTSS] была разделена на CP и CMS». Ценность опыта, полученного в проекте CTSS, невозможно переоценить. [17]
- О ранних CMS Кризи пишет: CMS «предоставляла однопользовательские услуги, не обремененные проблемами совместного использования, распределения и защиты». [18] Ранняя разработка CMS включала загрузку CMS под BPS , ранней системой поддержки S/360, пока CMS не продвинулась достаточно далеко, чтобы загрузиться автономно. В конце концов разработка перешла на виртуальные машины под CP. [19]
Смотрите также
Ссылки
- ^ Control Program-67/Cambridge Monitor System (GH20-0857-1) . IBM. Октябрь 1971 г.
- ^ Вариан (1997), стр. 11 («коробка CAT»)
- ^ Pugh, Johnson & Palmer (1991), стр. 741 (примечание 218 к гл. 6)
- ^ AB Lindquist; RR Seeber; LW Comeau (декабрь 1966 г.). «Система разделения времени с использованием ассоциативной памяти». Труды IEEE . 54 (12): 1774–1779. doi :10.1109/PROC.1966.5261.
- ^ Вариан (1997), стр. 14 – новизна интерфейса CMS
- ^ Creasy (1981), стр. 489 – плоская файловая система
- ^ Вариан (1997), стр. 3, 9, 16 – генезис проекта CP-40
- ^ Кризи (1981), стр. 485 – цели дизайна
- ^ W. O'Neill, «Опыт использования многопрограммной системы с разделением времени и аппаратным обеспечением динамического перемещения адресов», Proc. AFIPS Computer Conference 30 (Spring Joint Computer Conference, 1967), стр. 611–621 – работа на IBM M44/44X
- ^ LW Comeau, «Operating System/360 Paging Studies», симпозиум IBM Storage Hierarchy System, декабрь 1966 г. – критика Atlas, цитируется в Varian (1997), стр. 17.
- ^ Creasy (1981), стр. 485 – аналогично, но независимо от IBM M44/44X
- ^ Кризи (1981), стр. 486 – стратегия виртуализации: выполнение состояния проблемы, плюс трансляция адресов
- ^ Вариан (1997), стр. 9, 13
- ^ Комо (1982), стр. 40, 42–43, цитируется в Вариан (1997), стр. 9, 13
- ↑ Л. Токингтон, «Хорошая идея, которая все еще растет», Информационный бюллетень Центра развития Уайт-Плейнс , том 2, № 3 (март 1969 г.), цитируется в Varian (1997 г.), стр. 10.
- ^ Пью, Джонсон и Палмер (1991), стр. 364–365.
- ^ Кризи (1981), стр. 485 – разделение CP и CMS
- ^ Кризи (1981), стр. 485 – область применения CMS
- ^ Вариан (1997), стр. 12, 15–16 – Загрузка CMS под BPS
Дальнейшее чтение
- Adair, R. J.; Bayles, R. U.; Comeau, L. W.; Creasy, R. J. (1966). Система виртуальной машины для 360/40 (Отчет). Кембридж, Массачусетс: IBM, Кембриджский научный центр. Отчет 320-2007., цитируется в Varian (1997) и Creasy (1981)
- Комо, Л. В. (сентябрь 1982 г.). «CP-40, происхождение VM/370». Труды SEAS AM82 .
- Кризи, Р. Дж. (1981). «Происхождение системы разделения времени VM/370» (PDF) . IBM Journal of Research & Development . 25 (5): 483–490. doi :10.1147/rd.255.0483.
- Лингквист, А. Б.; Сибер, Р. Р.; Комо, Л. В. (1966). «Система разделения времени с использованием ассоциативной памяти». Proc. IEEE . 54 (12): 1774–1779. doi :10.1109/PROC.1966.5261.
- Pugh, Emerson W.; Johnson, Lyle R.; Palmer, John H. (1991). IBM's 360 и Early 370 Systems . Cambridge MA: MIT Press. ISBN 0-262-16123-0.
- Вариан, Мелинда (1997). ВМ и сообщество ВМ, прошлое, настоящее и будущее (PDF) . ПОДЕЛИТЬСЯ 89 сессий 9059-9061.
Генеалогическое древо