CP/CMS - CP/CMS

CP/CMS
IBM logo.svg
Deweloper Centrum Naukowe IBM Cambridge
Napisane w Monter (F)
Rodzina systemów operacyjnych maszyna wirtualna
Stan pracy Historyczny
Model źródłowy Kod źródłowy (szczegóły w tekście)
Pierwsze wydanie maj 1968 ; 53 lata temu ( 1968-05 )
Najnowsze wydanie 3.2 / 1972 ; 49 lat temu ( 1972 )
Dostępne w język angielski
Platformy IBM System/360-67 ; także System/370 ze sprzętem pamięci wirtualnej (nie występuje w oryginalnych modelach S/370); używany również na eksperymentalnym sprzęcie
Domyślny interfejs użytkownika Interfejs linii komend
Licencja Biblioteka IBM Type-III (bezpłatna w formie kodu źródłowego bez opłat dla klientów IBM, bez wsparcia)

CP/CMS ( Control Program/Cambridge Monitor System ) to przerwany system operacyjny z podziałem czasu w późnych latach 60. i wczesnych 70., znany z doskonałej wydajności i zaawansowanych funkcji. Miał trzy różne wersje:

  • CP-40 /CMS, ważny „jednorazowy” system badawczy, który ustanowił architekturę maszyny wirtualnej CP/CMS
  • CP-67 /CMS, reimplementacja CP-40/CMS dla IBM System/360-67 i główny temat tego artykułu
  • CP-370 /CMS, reimplementacja CP-67/CMS dla Systemu/370 – nigdy nie wydana jako taka, ale stała się podstawą systemu operacyjnego IBM VM/370 , ogłoszonego w 1972 roku.

Każda implementacja była znacznym przeprojektowaniem swojego poprzednika i ewolucyjnym krokiem naprzód. CP-67/CMS był pierwszą powszechnie dostępną architekturą maszyny wirtualnej. IBM zapoczątkował ten pomysł swoimi systemami badawczymi M44/44X (wykorzystujący częściową wirtualizację ) i CP-40 (wykorzystujący pełną wirtualizację ).

Oprócz swojej roli jako poprzednika rodziny maszyn wirtualnych, CP/CMS odegrał ważną rolę w rozwoju teorii systemów operacyjnych (OS), projektowaniu systemu IBM/370, branży współdzielenia czasu i tworzeniu samonośna społeczność użytkowników, która przewidziała dzisiejszy ruch wolnego oprogramowania .

Historia

Podstawowe parametry architektoniczne i strategiczne CP/CMS zostały ustalone w CP-40, który rozpoczął produkcję w Cambridge Scientific Center IBM na początku 1967 roku. Wysiłek ten miał miejsce w złożonym środowisku politycznym i technicznym , omawiany dość obszernie i poparty cytatami z pierwszej ręki w artykule Wikipedii Historia CP/CMS .

W skrócie:

  • We wczesnych latach sześćdziesiątych IBM starał się utrzymać dominację nad obliczeniami naukowymi, na których skupiono się na dzieleniu czasu, takim jak CTSS i MIT Project MAC . Jednak IBM zaangażował się w ogromny projekt System/360 , który poprowadził firmę w innym kierunku.
  • Społeczność dzielenia czasu była rozczarowana brakiem możliwości dzielenia czasu w S/360. Doprowadziło to do kluczowych strat sprzedaży IBM w Project MAC i Bell Laboratories . Cambridge Scientific Center (CSC) IBM, pierwotnie założone w celu wspierania Projektu MAC, rozpoczęło starania o odzyskanie wiarygodności IBM w zakresie podziału czasu, budując system operacyjny z podziałem czasu dla S/360. Ten system ostatecznie stałby się CP/CMS. W tym samym duchu IBM zaprojektował i wypuścił model S/360 z funkcjami współdzielenia czasu, IBM System/360-67, oraz system operacyjny do współdzielenia czasu TSS/360 . TSS nie powiodło się; ale 360-67 i CP/CMS odniosły sukces, pomimo wewnętrznych batalii politycznych o podział czasu i skoordynowanych wysiłków IBM, aby zlikwidować wysiłek CP/CMS.
  • W 1967 rozpoczęto produkcję CP/CMS, najpierw na CP-40 firmy CSC, a później na CP-67 w Lincoln Laboratories i innych zakładach. Został udostępniony za pośrednictwem biblioteki IBM Type-III w 1968 roku. Do 1972 roku CP/CMS przeszedł kilka wersji; był to solidny, stabilny system działający na 44 systemach; może obsługiwać 60 użytkowników współdzielenia czasu na S/360-67; a co najmniej dwóch komercyjnych dostawców usług timesharingu ( National CSS i IDC ) odsprzedało czas S/360-67 przy użyciu technologii CP/CMS.
  • W 1972 roku IBM ogłosił dodanie pamięci wirtualnej do serii S/370, wraz z systemem operacyjnym VM/370, reimplementację CP/CMS dla S/370. Oznaczało to koniec wydań CP/CMS, chociaż system przez pewien czas kontynuował swoją niezależną egzystencję. Wersje maszyn wirtualnych przez jakiś czas zawierały kod źródłowy, a członkowie społeczności maszyn wirtualnych przez długi czas pozostawali aktywnymi współtwórcami.

Przegląd

 CTSS 
> IBM M44/44X
>> CP-40/CMSCP[-67]/CMS  VM/370 → Wersje VM/SE → Wersje VM/SP → Wersje VM/XA → VM/ESAz/VM
Wiceprezes/CSS
> TSS/360
> OSP dla MVT → dla OS/VS2 → dla MVS → ... → dla z/OS
>> MULTICS i większość innych platform z podziałem czasu

CP / CMS został zbudowany przez IBM „s Cambridge Centrum Naukowego (CSC), badań i rozwoju laboratorium z powiązaniami z MIT pod kierownictwem Roberta Creasy . Cele systemu, proces rozwoju, wydanie i dziedzictwo przełomowej technologii odróżniają ten system od innych systemów operacyjnych w tamtych czasach i innych dużych projektów IBM. Był to system typu open source , udostępniany w formie kodu źródłowego wszystkim klientom IBM bezpłatnie — w ramach nieobsługiwanej biblioteki IBM Type-III . Użytkownicy CP/CMS wspierali siebie i siebie nawzajem. Do takiej sytuacji doprowadziły nietypowe okoliczności, opisane w sekcji Historia poniżej.

CP/CMS składał się z dwóch głównych komponentów:

  • CP , Program Sterujący , stworzył środowisko maszyny wirtualnej. Powszechnie stosowaną wersją był CP-67, prowadzony na S/360-67. (System badawczy CP-40 ustanowił architekturę. Trzecia wersja, CP-370, stała się VM/370.) Zamiast jawnie dzielić pamięć i inne zasoby między użytkowników, co było tradycyjnym podejściem, CP zapewnił każdemu użytkownikowi symulowany samodzielny komputer System/360 . Każdy system był w stanie uruchomić dowolne oprogramowanie S/360 działające na samej maszynie, co w efekcie zapewniało każdemu użytkownikowi prywatny system komputerowy.
  • CMS , Cambridge Monitor System (a także Console Monitor System - ale przemianowany na Conversational Monitor System w VM) był lekkim systemem operacyjnym dla jednego użytkownika, do interaktywnego użytku z podziałem czasu. Dzięki uruchomieniu wielu kopii CMS na maszynach wirtualnych CP – zamiast wielu kopii dużego, tradycyjnego wielozadaniowego systemu operacyjnego – obciążenie przypadające na użytkownika było mniejsze. Umożliwiło to dużej liczbie jednoczesnych użytkowników współdzielenie jednego S/360.

Koncepcja maszyny wirtualnej CP/CMS była ważnym krokiem naprzód w projektowaniu systemu operacyjnego.

  • Odizolowując użytkowników od siebie, CP/CMS znacznie poprawił niezawodność i bezpieczeństwo systemu.
  • Symulując pełny, samodzielny komputer dla każdego użytkownika, CP/CMS może uruchamiać dowolne oprogramowanie S/360 w środowisku współdzielenia czasu, a nie tylko aplikacje zaprojektowane specjalnie do współdzielenia czasu.
  • Wykorzystując lekki CMS jako główny interfejs użytkownika, CP/CMS osiągnęły bezprecedensową wydajność podziału czasu. Ponadto prostota CMS ułatwiła implementację ulepszeń interfejsu użytkownika niż w tradycyjnym systemie operacyjnym.

IBM ponownie zaimplementował CP/CMS jako linię produktów VM/370, wydaną w 1972 roku, kiedy pamięć wirtualna została dodana do serii S/370 . Następcy VM/370 (tacy jak z/VM ) pozostają w powszechnym użyciu. (Ważne jest, aby pamiętać, że IBM ponownie zaimplementował CP-67, ponieważ miał CP-40, a nie po prostu zmienił nazwę i przepakował go. VM współistniał z CP/CMS i jego następcami przez wiele lat. Dlatego należy spojrzeć na CP/ CMS jako niezależny system operacyjny, odrębny od rodziny maszyn wirtualnych).

CP/CMS jako darmowe oprogramowanie

CP/CMS był dystrybuowany w formie kodu źródłowego , a wielu użytkowników CP/CMS było aktywnie zaangażowanych w badanie i modyfikację tego kodu źródłowego. Takie bezpośrednie zaangażowanie użytkownika w system operacyjny dostarczony przez producenta było niezwykłe.

W erze CP/CMS wielu dostawców dystrybuowało systemy operacyjne w kodzie źródłowym do odczytu maszynowego. IBM dostarczył opcjonalny kod źródłowy dla np. OS/360 , DOS/360 oraz kilku późniejszych głównych systemów operacyjnych IBM. W przypadku wszystkich tych systemów pewna świadomość kodu źródłowego systemu była również zaangażowana w proces SYSGEN , porównywalna z kompilacją jądra w nowoczesnych systemach, również w przypadku instalowania zestawu startowego . (Czterdzieści lat później emulator Hercules może być używany do uruchamiania skamieniałych wersji tych systemów, opartych na kodzie źródłowym, który jest obecnie traktowany jako część domeny publicznej .)

Znaczenie kodu źródłowego systemu operacyjnego zmieniało się z biegiem czasu. Zanim firma IBM wydzieliła oprogramowanie ze sprzętu w 1969 r., system operacyjny (i większość innego oprogramowania) był uwzględniony w kosztach sprzętu. Każdy sprzedawca ponosił całkowitą odpowiedzialność za cały system, sprzęt i oprogramowanie. To sprawiło, że medium dystrybucji było stosunkowo nieistotne. Po uwolnieniu IBM, oprogramowanie systemu operacyjnego zostało dostarczone jako oprogramowanie IBM System Control Program (SCP) , ostatecznie w postaci samego kodu obiektowego (OCO).

Ze skomplikowanych powodów CP/CMS nie został wydany w normalny sposób. Nie było obsługiwane przez IBM, ale zostało włączone do nieobsługiwanej biblioteki IBM Type-III , zbioru oprogramowania dostarczonego przez personel IBM (podobnie oprogramowanie dostarczone przez klientów utworzyło bibliotekę Type-IV). IBM rozprowadzał tę bibliotekę wśród swoich klientów do użytku „tak jak jest”. Brak bezpośredniego wsparcia IBM dla takich produktów zmusił aktywnych użytkowników do samodzielnego wsparcia i zachęcał do modyfikacji i wzajemnego wsparcia. CP/CMS i inne produkty typu III były wczesnymi formami wolnego oprogramowania .

Dystrybucja kodu źródłowego innych systemów operacyjnych IBM mogła być kontynuowana przez pewien czas (np. OS/360 , DOS/360 , DOS/VSE , MVS , a nawet TSS/370 , które obecnie są ogólnie uważane za należące do domeny publicznej ). zostały one prawdopodobnie opublikowane bez informacji o prawach autorskich przed 1978 r. Jednak nieobsługiwany status CP/CMS wywarł różne naciski na społeczność użytkowników i stworzył potrzebę dystrybucji kodu źródłowego.

Co ciekawe, CP/CMS został wniesiony do Biblioteki Typu III przez Lincoln Laboratory z MIT, a nie przez IBM, mimo że system został zbudowany przez Cambridge Scientific Center IBM . Ta zaskakująca decyzja została opisana jako forma zmowy mającej na celu wymanewrowanie sił politycznych IBM przeciwnych podziałowi czasu. Może również odzwierciedlać ilość formalnego i nieformalnego wkładu MIT i Union Carbide, który został wniesiony do zaprojektowania i wdrożenia CP-40, S/360-67, CP-67 i CMS. Zobacz Historia CP/CMS (notatki historyczne), aby uzyskać dalsze informacje i odniesienia na ten temat.

Wielu użytkowników CP/CMS dokonało rozległych modyfikacji własnych kopii kodu źródłowego. Wiele z tych prac zostało udostępnionych między witrynami, a ważne zmiany powróciły do ​​podstawowego systemu. Inni użytkownicy, tacy jak National CSS i niektóre witryny akademickie, kontynuowali niezależny rozwój CP/CMS, zamiast przechodzić na VM/370, gdy stał się on dostępny. Wysiłki te odbiegały od społeczności, w czymś, co dziś można by nazwać widelcem oprogramowania .

Po wydaniu przez IBM VM/370, dystrybucja kodu źródłowego VM była kontynuowana przez kilka wydań. (Projekt VM nie zastosował PL/S , wewnętrznego języka programowania systemów, który ma być używany w IBM w wielu porównywalnych projektach. Użycie PL/S uniemożliwiłoby dystrybucję kodu źródłowego. IBM próbował odejść od asemblera język do języków wyższego poziomu już w 1965 r., a do 1969 r. w znacznym stopniu korzystał z PL/S , np. w MVS. PL/S był wówczas uważany za tajemnicę handlową i nie był dostępny dla klientów. IBM najwyraźniej zrobił od tego wyjątki polityka znacznie później). Niewiele witryn OS lub DOS wykazywało aktywne zaangażowanie użytkowników w głębokie procesy wewnętrzne systemu operacyjnego, ale zostało to stwierdzone w wielu witrynach maszyn wirtualnych. Ta obsługa odwrotna pomogła koncepcjom CP/CMS przetrwać i ewoluować, pomimo statusu obywatela drugiej kategorii w IBM.

Architektura

Architektura CP/CMS była jak na swoje czasy rewolucyjna. System składał się z programu sterującego wirtualizacją (CP), który tworzył wiele niezależnych maszyn wirtualnych (VM). Wirtualizacja platformy była możliwa dzięki dwóm elementom IBM System/360-67:

  • Segregacja uprzywilejowanych instrukcji „stanu nadzorcy” od normalnych instrukcji „stanu problemowego”
  • Sprzęt do tłumaczenia adresów

Gdy program działał w stanie „problemowym”, użycie uprzywilejowanej instrukcji lub nieprawidłowego adresu pamięci spowodowałoby, że sprzęt podniósłby warunek wyjątku. Zatrzymując te warunki, CP może symulować odpowiednie zachowanie, np. wykonywanie operacji we/wy lub stronicowania. System operacyjny gościa, który działałby w „stanie nadzorcy” na samej maszynie, był uruchamiany w „stanie problemowym” pod kontrolą CP.

W rezultacie powstało w pełni zwirtualizowane środowisko. Każda maszyna wirtualna posiadała własny zestaw urządzeń wirtualnych, odwzorowanych z rzeczywistego środowiska sprzętowego systemu. W ten sposób dany teletyp dial-up był prezentowany w instancji maszyny wirtualnej jako jej konsola wirtualna .

Należy zauważyć, że w CP-67 niektóre instrukcje zależne od modelu i diagnostyczne nie zostały zwirtualizowane, w szczególności instrukcja DIAG. Ostatecznie, w późniejszym rozwoju w IBM i innych firmach, instrukcje DIAG zostały użyte do stworzenia niezwirtualizowanego interfejsu do tego, co nazwano hiperwizorem . Systemy operacyjne klientów mogą używać tego mechanizmu do bezpośredniej komunikacji z programem sterującym; dało to radykalną poprawę wydajności.

W rzeczywistości każdy system operacyjny S/360 mógłby działać pod kontrolą CP, ale zwykli użytkownicy korzystali z Cambridge Monitor System (CMS), prostego systemu operacyjnego przeznaczonego dla jednego użytkownika. CMS umożliwiał użytkownikom uruchamianie programów i zarządzanie urządzeniami wirtualnymi. CP-67 w wersji 1 i 2 nie obsługuje pamięci wirtualnej wewnątrz maszyny wirtualnej. Zostało to dodane w wersji 3. W tym momencie testowanie i rozwój samego CP można było wykonać, uruchamiając pełną kopię CP/CMS na pojedynczej maszynie wirtualnej. Niektóre systemy operacyjne CP/CMS, takie jak programowanie CP-370 i testowanie MVS, uruchamiały cztero- lub pięciopoziomowe głębokie stosy symulacji sprzętu i systemu operacyjnego.

Projekt CP/CMS różni się od poprzednich monolitycznych systemów operacyjnych IBM , oddziela złożony „duży system” (dysponowanie, zarządzanie sprzętem, pamięć masowa) od „małego systemu” (wykonywanie programu aplikacji, operacje wejścia/wyjścia plików, wejścia/wyjścia konsoli) . Ponowna kategoryzacja obu systemów do ich własnych jednostek zapobiega wpływowi błędu w systemie jednego użytkownika na oba. Jest to modelowa funkcja w systemach operacyjnych z mikrojądrem .

Decyzja IBM o wdrożeniu funkcji wirtualizacji i pamięci wirtualnej w kolejnym projekcie S/370 (chociaż brak jej w początkowej serii S/370) przynajmniej częściowo odzwierciedla sukces podejścia CP/CMS. Z kolei przetrwanie i sukces rodziny systemów operacyjnych IBM dla maszyn wirtualnych oraz ogólnie technologii wirtualizacji zawdzięczają wiele S/360-67.

Pod wieloma względami produkty IBM CP-67 i CP/CMS antycypowały (i miały duży wpływ) na współczesne oprogramowanie do wirtualizacji , takie jak VMware Workstation, Xen i Microsoft Virtual PC .

Powiązana terminologia

  • CP : Program Kontroli . CP-40 i CP-67 były implementacjami odpowiednio dostosowanych S/360-40 CSC i standardowego S/360-67.
  • CMS : Cambridge Monitor System . Ta część systemu CP/CMS została przemianowana na Conversational Monitor System po wydaniu przez IBM VM/370. Jednak w przeciwieństwie do przejścia z CP na VM, które było ponowną implementacją, większość CMS została przeniesiona bez modyfikacji z CP/CMS do VM/370.
  • VM : Virtual Machine , początkowo używano terminu pseudo-maszyna , ale wkrótce maszyna wirtualna została zapożyczona z projektu IBM M44/44X . Był dobrze ugruntowany w CP/CMS do czasu wprowadzenia przez IBM VM/370.
  • hypervisor : mechanizm parawirtualizacji . Termin ten został ukuty podczas ponownej implementacji CP-67 przez IBM jako VM/370.

Zobacz też

Przypisy

Cytaty

Podstawowe źródła CP/CMS

Dodatkowe źródła CP/CMS

  • RJ Adair, RU Bayles, LW Comeau and RJ Creasy, A Virtual Machine System for the 360/40, IBM Corporation, Cambridge Scientific Center Report No. 320‐2007 (maj 1966)
    ― przełomowy artykuł opisujący implementację koncepcji maszyny wirtualnej, z opisów dostosowane CSC S / 360-40 i CP-40 projektu
  • International Business Machines Corporation, CP-67/CMS , Program 360D-05.2.005, IBM Program Information Department (czerwiec 1969)
    ― Podręcznik referencyjny IBM
  • RA Meyer i LH Seawright, „System współdzielenia czasu maszyny wirtualnej”, IBM Systems Journal, tom. 9, nr 3, s. 199–218 (wrzesień 1970)
    ― opisuje system CP-67/CMS, przedstawia funkcje i zastosowania
  • RP Parmelee, TI Peterson, CC Tillman i DJ Hatfield, „Koncepcje wirtualnej pamięci masowej i maszyn wirtualnych”, IBM Systems Journal, tom. 11, nr 2 (czerwiec 1972)

Źródła CP/CMS w tle

  • FJ Corbató i in., Kompatybilny system podziału czasu, Przewodnik programisty, MIT Press, 1963
  • FJ Corbató, M. Merwin-Daggett i RC Daley, „Eksperymentalny system podziału czasu”, Proc. Spring Joint Computer Conference (AFIPS) 21, s. 335–44 (1962) — opis CTSS
  • FJ Corbató i VA Vyssotsky, „Wprowadzenie i przegląd systemu MULTICS”, Proc. Jesienna Wspólna Konferencja Komputerowa (AFIPS) 27, s. 185-96 (1965)
  • PJ Denning, „Pamięć wirtualna”, Computing Surveys tom. 2, s. 153-89 (1970)
  • JB Dennis, „Segmentacja i projektowanie wieloprogramowych systemów komputerowych”, JACM tom. 12, pp. 589-602 (1965)
    ― wymagania dotyczące pamięci wirtualnej dla Projektu MAC, przeznaczonego dla GE 645
  • CAR Hoare i RH Perrott, wyd., Techniki systemów operacyjnych , Academic Press, Inc., Nowy Jork (1972)
  • T. Kilburn, DBG Edwards, MJ Lanigan i FH Sumner, „Jednopoziomowy system magazynowania”, IRE Trans. Elektron. Komputery EC-11, s. 223-35 (1962)
    ― Manchester/Ferranti Atlas
  • RA Nelson, „Mapping Devices and the M44 Data Processing System”, Research Report RC 1303 , IBM Thomas J. Watson Research Center (1964)
    ― o IBM M44/44X
  • RP Parmelee, TI Peterson, CC Tillman i DJ Hatfield, „Koncepcje wirtualnej pamięci masowej i maszyn wirtualnych”, IBM Systems Journal , tom. 11, s. 99-130 (1972)

Dodatkowe zasoby on-line CP/CMS

Szczegółowe cytaty za punkty poczynione w tym artykule można znaleźć w Historii CP/CMS .

Linki zewnętrzne