Введение
Операционная система IBM, специализирующаяся на виртуализации.
CP/CMS (Control Program/Cambridge Monitor System) — устаревшая операционная система с разделением времени конца 1960-х и начала 1970-х годов. Она известна своей высокой производительностью и передовыми возможностями. Среди трёх версий CP 40/CMS была важной экспериментальной системой, которая заложила основу архитектуры виртуальных машин CP/CMS. За ней последовала CP 67/CMS — переработка CP 40/CMS для IBM System/360 67, являющаяся основной темой данной статьи. Наконец, CP 370/CMS представляла собой повторную реализацию CP 67/CMS для System/370. Хотя она и не была выпущена как самостоятельный продукт, она стала основой операционной системы IBM VM/370, анонсированной в 1972 году. Каждая реализация являлась существенной переработкой предшествующей и шагом вперёд в развитии. CP 67/CMS стала первой широкодоступной архитектурой виртуальных машин. IBM стала пионером в этой области благодаря своим исследовательским системам M44/44X (использовавшим частичную виртуализацию) и CP 40 (использовавшим полную виртуализацию). Помимо роли предшественника семейства VM, CP/CMS сыграла важную роль в развитии теории операционных систем (ОС), проектировании IBM System/370, индустрии совместного использования времени и формировании сообщества пользователей, предвосхитившего современное движение за свободное программное обеспечение.
CP/CMS как свободное программное обеспечение
CP/CMS распространялся в форме исходного кода, и многие пользователи CP/CMS активно участвовали в изучении и модификации этого исходного кода. Такое непосредственное участие пользователя в работе с операционной системой, поставляемой поставщиком, было необычным. В эпоху CP/CMS многие поставщики распространяли операционные системы в машиночитаемом исходном коде. IBM предоставила дополнительный исходный код для, например, OS/360, DOS/360 и нескольких более поздних основных операционных систем IBM. При всех этих системах в процессе SYSGEN также участвовало некоторое знание исходного кода системы, сравнимое с построением ядра в современных системах, а также при установке стартового набора. (Сорок лет спустя эмулятор Hercules может использоваться для запуска устаревших версий этих систем, основанных на исходном коде, который теперь рассматривается как часть общественного достояния.) Важность исходного кода операционной системы со временем изменилась. До того, как IBM отделила программное обеспечение от аппаратного обеспечения в 1969 году, ОС (и большинство других программных средств) были включены в стоимость аппаратного обеспечения. Каждый поставщик нес полную ответственность за всю систему, аппаратное и программное обеспечение. Это делало средство распространения относительно неважным. После разделения IBM, ОС поставлялась как программное обеспечение IBM System Control Program (SCP), в конечном итоге в форме только объектного кода (OCO). По сложным причинам, CP/CMS не был выпущен обычным способом. Он не поддерживался IBM, но был включен в не поддерживаемую библиотеку IBM Type III – коллекцию программных вкладов от сотрудников IBM (аналогично программное обеспечение, предоставленное клиентами, сформировало библиотеку Type IV). IBM распространяла эту библиотеку своим клиентам для использования "как есть". Отсутствие прямой поддержки IBM для таких продуктов вынуждало активных пользователей поддерживать себя и поощряло модификации и взаимную поддержку. CP/CMS и другие продукты типа III были ранними формами свободного программного обеспечения. Распространение исходного кода других операционных систем IBM, возможно, продолжалось некоторое время (например, OS/360, DOS/360, DOS/VSE, MVS и даже TSS/370, которые сегодня обычно считаются общедоступными), поскольку они, возможно, были опубликованы без уведомления об авторском праве до 1978 года. Однако не поддерживаемый статус CP/CMS оказывал иное давление на сообщество пользователей и создал необходимость в распространении исходного кода. CP/CMS был внесен в Библиотеку Типа III Лабораторией Линкольна МТИ, а не IBM, несмотря на то, что система была построена Кембриджским научным центром IBM. Это решение было описано как форма сговора, чтобы обойти политические силы IBM, выступающие против разделения времени. Считается, что оно также может отражать объем формального и неформального вклада MIT и Union Carbide, который способствовал разработке и внедрению CP 40, S/360 67, CP 67 и CMS. См. История CP/CMS (исторические заметки) для получения дополнительных сведений и ссылок на эту тему. Многие пользователи CP/CMS внесли значительные изменения в свои копии исходного кода. Большая часть этой работы была распространена между сайтами, и важные изменения находили свой путь обратно в основную систему. Другие пользователи, такие как National CSS и некоторые академические сайты, продолжали независимую разработку CP/CMS, вместо того чтобы переключиться на VM/370, когда он стал доступен. Эти усилия отклонялись от основного направления развития, что сегодня называется программной вилкой. После выпуска IBM VM/370, распространение исходного кода VM продолжалось в течение нескольких релизов. (Проект VM не использовал PL/S, внутренний язык программирования систем, предназначенный для использования в IBM во многих сопоставимых проектах. Использование PL/S сделало бы распространение исходного кода невозможным. IBM пыталась отказаться от языка ассемблера в пользу языков более высокого уровня уже в 1965 году и активно использовала PL/S к 1969 году, например, в MVS. В то время PL/S считался коммерческой тайной и не был доступен клиентам. IBM, по-видимому, делала исключения из этой политики гораздо позже.) Сообщество пользователей VM продолжало вносить важный вклад в программное обеспечение, как и в период CP/CMS Type III. Немногие сайты OS или DOS демонстрировали активное участие пользователей в глубоких внутренних операционных системах, но это наблюдалось на многих сайтах VM. Эта обратная поддержка помогла концепциям CP/CMS сохраниться и развиваться, несмотря на второстепенный статус VM в IBM.
Связанная терминология
CP: Контрольная программа. CP 40 и CP 67 были реализациями для настроенных CSC S/360 40 и стандартных S/360 67 соответственно. CMS: Кембриджская система мониторинга. Эта часть системы CP/CMS была переименована в Conversational Monitor System после выпуска IBM VM/370. Однако, в отличие от перехода от CP к VM, который представлял собой полную переработку, большая часть CMS была перенесена в VM/370 из CP/CMS без изменений. VM: Виртуальная машина, изначально использовался термин "псевдомашина", но вскоре термин "виртуальная машина" был заимствован из проекта IBM M44/44X. Он прочно вошел в обиход в CP/CMS к моменту представления IBM VM/370. Гипервизор: механизм паравиртуализации. Этот термин был введен в IBM при переработке CP 67 в VM/370.
Цитаты
Подробные ссылки на источники, подтверждающие положения, изложенные в этой статье, можно найти в «Истории CP/CMS».