Multics - Multics

Multics
Logo Multics.gif
Dezvoltator MIT , GE , Bell Labs
Scris in PL / I , limbaj de asamblare
Starea de lucru Matur, istoric, emulator disponibil
Modelul sursă Sursa deschisa
Eliberarea inițială 1969 ; Acum 52 de ani ( 1969 )
Ultima lansare 12.7 / 28 iulie 2021 ; 2 luni în urmă ( 28.07.2021 )
Repertoriu
Disponibil in Engleză
Platforme Mașini principale GE-645 , mașini din seria Honeywell 6180
Tipul de nucleu Nucleul monolitic
Influențat Unix , GEORGE 3 , ICL VME , PRIMOS , Domain / OS , Stratus VOS

Interfață de utilizator implicită
Linia de comandă
Licență Licență Multics pentru software gratuit , proprietară inițială
din 2007
Precedat de Sistem de partajare a timpului compatibil
Site oficial www .multicieni .org

Multics ( „ Multiplexate Serviciul de Informații și Computing “) este un influent timpuriu time-sharing sistem de operare bazat pe conceptul de memorie de un singur nivel . S-a spus că Multics „a influențat toate sistemele de operare moderne de atunci, de la microcomputere la mainframes”.

Planificarea și dezvoltarea inițiale pentru Multics au început în 1964, în Cambridge, Massachusetts . Inițial a fost un proiect de cooperare condus de MIT ( Project MAC cu Fernando Corbató ) împreună cu General Electric și Bell Labs . A fost dezvoltat pe computerul GE 645 , care a fost special conceput pentru acesta; primul a fost livrat MIT în ianuarie 1967.

Multics a fost conceput ca un produs comercial pentru General Electric și a devenit unul pentru Honeywell , deși nu cu mare succes. Datorită numeroaselor sale idei noi și valoroase, Multics a avut un impact semnificativ asupra informaticii în ciuda defecțiunilor sale.

Multics are numeroase caracteristici menite să asigure o disponibilitate ridicată , astfel că va susține un utilitar de calcul similar cu telefon si electricitate utilitati . Structura hardware modulară și arhitectura software sunt utilizate pentru a realiza acest lucru. Sistemul poate crește în dimensiune prin simpla adăugare a resurselor adecvate, fie că este vorba de putere de calcul, memorie principală sau stocare pe disc. Listele separate de control al accesului din fiecare fișier oferă schimb de informații flexibil, dar confidențialitate completă atunci când este necesar. Multics are o serie de mecanisme standard pentru a permite inginerilor să analizeze performanța sistemului, precum și o serie de mecanisme de optimizare a performanței adaptive.

Idei noi

Manual de referință Comenzi Multics

Multics implementează un magazin cu un singur nivel pentru accesul la date, eliminând distincția clară între fișiere (numite segmente în Multics) și memoria de proces . Memoria unui proces constă numai din segmente care au fost mapate în spațiul său de adrese . Pentru a le citi sau scrie, procesul folosește pur și simplu instrucțiunile normale ale unității centrale de procesare (CPU), iar sistemul de operare se asigură că toate modificările au fost salvate pe disc . În terminologia POSIX , este ca și cum fiecare fișier ar fi mmap()ed; cu toate acestea, în Multics nu există un concept de memorie de proces , separat de memoria utilizată pentru a păstra fișierele mapate, așa cum a făcut Unix . Toată memoria din sistem face parte dintr- un anumit segment, care apare în sistemul de fișiere ; aceasta include memoria temporară de zgârieturi a procesului, stiva sa de nucleu etc.

Un dezavantaj a fost că dimensiunea segmentelor era limitată la 256 kilowords , puțin peste 1  MB . Acest lucru s-a datorat arhitecturii hardware specifice a mașinilor pe care rulează Multics, având o dimensiune a cuvintelor de 36 de biți și registre de index (utilizate pentru adresarea în segmente) de jumătate din această dimensiune (18 biți). Trebuia folosit codul suplimentar pentru a lucra la fișiere mai mari decât acestea, numite fișiere multisegment. În zilele în care un megabyte de memorie era prohibitiv de scump și înaintea bazelor de date mari și mai târziu a graficelor uriașe bitmap , această limită era rar întâlnită.

O altă idee nouă majoră a Multics a fost legarea dinamică , în cadrul căreia un proces de execuție ar putea solicita adăugarea altor segmente în spațiul său de adrese, segmente care ar putea conține cod pe care să le poată executa apoi. Acest lucru a permis aplicațiilor să utilizeze automat cea mai recentă versiune a oricărei rutine externe pe care au apelat-o, deoarece aceste rutine au fost păstrate în alte segmente, care au fost legate dinamic doar atunci când un proces a încercat mai întâi să înceapă execuția în ele. Deoarece diferite procese ar putea folosi reguli de căutare diferite , diferiți utilizatori ar putea ajunge să folosească automat diferite versiuni ale rutinelor externe. La fel de important, cu setările corespunzătoare pentru facilitățile de securitate Multics, codul din celălalt segment ar putea avea apoi acces la structurile de date menținute într-un proces diferit.

Astfel, pentru a interacționa cu o aplicație care rulează parțial ca un daemon (într-un alt proces), procesul unui utilizator pur și simplu a efectuat o instrucțiune normală de apel procedură la un segment de cod de care a fost legat dinamic (un segment de cod care a implementat o operație asociată cu demonul). Codul din acel segment ar putea modifica datele păstrate și utilizate în daemon. Când acțiunea necesară pentru a începe solicitarea a fost finalizată, o instrucțiune simplă de returnare a procedurii a returnat controlul procesului utilizatorului în codul utilizatorului.

Multics a acceptat, de asemenea, reconfigurarea online extrem de agresivă : unitățile centrale de procesare , băncile de memorie, unitățile de disc etc. puteau fi adăugate și eliminate în timp ce sistemul continua să funcționeze. La sistemul MIT, unde s-a realizat cea mai timpurie dezvoltare software, era o practică obișnuită să împărțiți sistemul multiprocesor în două sisteme separate în timpul orelor libere, eliminând în mod incremental suficiente componente pentru a forma un al doilea sistem de lucru, lăsând restul în continuare să ruleze înregistrarea originală -în utilizatori. Testarea dezvoltării software-ului de sistem ar putea fi făcută pe al doilea sistem, apoi componentele celui de-al doilea sistem au fost adăugate înapoi la sistemul principal al utilizatorului, fără ca acesta să fi fost închis vreodată. Multics a acceptat mai multe procesoare; a fost unul dintre primele sisteme multiprocesor.

Multics a fost primul sistem de operare major care a fost proiectat ca un sistem sigur de la început. În ciuda acestui fapt, versiunile timpurii ale Multics au fost împărțite în mod repetat. Acest lucru a condus la lucrări suplimentare care au făcut sistemul mult mai sigur și au prefigurat tehnicile moderne de inginerie de securitate . Break-in-urile au devenit foarte rare odată cu adoptarea bazei hardware a doua generație; avea suport hardware pentru securitate orientată către inel , un rafinament pe mai multe niveluri al conceptului de mod master . Un proiect al echipei de tigri din Forțele Aeriene din SUA a testat securitatea Multics în 1973 sub cuvântul cod ZARF. La 28 mai 1997, Agenția Națională de Securitate Americană a declasificat această utilizare a cuvântului cod ZARF.

Multics a fost primul sistem de operare care a oferit un sistem de fișiere ierarhic , iar numele fișierelor ar putea avea o lungime și o sintaxă aproape arbitrare. Un anumit fișier sau director ar putea avea mai multe nume (de obicei o formă lungă și scurtă), iar legăturile simbolice între directoare au fost, de asemenea, acceptate. Multics a fost primul care a folosit acum conceptul standard de stive per- proces în nucleu , cu o stivă separată pentru fiecare inel de securitate. De asemenea, a fost primul care a implementat un procesor de comandă ca un cod de utilizator obișnuit - o idee folosită ulterior în shell-ul Unix . A fost, de asemenea, unul dintre primele scrise într-un limbaj de nivel înalt (Multics PL / I ), după sistemul Burroughs MCP scris în ALGOL .

Implementarea Multics în medii de calcul securizate a stimulat, de asemenea, dezvoltarea de aplicații inovatoare de sprijin. În 1975, Morrie Gasser de la MITRE Corporation a dezvoltat un generator de cuvinte pronunțabil aleatoriu pentru a răspunde cerințelor de parolă ale instalațiilor, cum ar fi Centrul de servicii de date ale forțelor aeriene (AFDSC) care prelucrează informații clasificate. Pentru a evita parolele ghicibile, AFDSC a decis să atribuie parole, dar a concluzionat că atribuirea manuală necesită prea multe cheltuieli administrative. Astfel, a fost cercetat un generator de cuvinte aleatoriu și apoi dezvoltat în PL1. În loc să se bazeze pe foneme, sistemul a folosit segmente fonemice (aproximări de ordinul doi al englezei) și alte reguli pentru a spori pronunțabilitatea și aleatoritatea, care a fost modelată statistic în raport cu alte abordări. Un descendent al acestui generator a fost adăugat la Multics în timpul Project Guardian.

Istoria proiectului

În 1964, Multics a fost dezvoltat inițial pentru mainframe - ul GE-645 , un sistem de 36 de biți . Activitatea de calculatoare a GE, inclusiv Multics, a fost preluată de Honeywell în 1970; în jurul anului 1973, Multics a fost acceptat pe mașinile Honeywell 6180 , care au inclus îmbunătățiri de securitate, inclusiv suport hardware pentru inele de protecție .

Bell Labs a ieșit din proiect în 1969; unii dintre oamenii care lucraseră acolo au continuat să creeze sistemul Unix . Dezvoltarea Multics a continuat la MIT și General Electric.

Honeywell a continuat dezvoltarea sistemului până în 1985. Aproximativ 80 de site-uri de milioane de dolari au fost instalate, la universități, industrie și site-uri guvernamentale. Sistemul universitar francez avea mai multe instalații la începutul anilor 1980. După ce Honeywell a încetat să accepte Multics, utilizatorii au migrat către alte sisteme precum Unix.

În 1985, Multics a primit o certificare ca sistem de operare securizat la nivel B2, utilizând criteriile de evaluare a sistemului computerizat de încredere de la Centrul Național de Securitate a Computerelor (NCSC), o divizie a NSA , primul sistem de operare evaluat la acest nivel.

Multics a fost distribuit între 1975 și 2000 de Groupe Bull în Europa și de Bull HN Information Systems Inc. în Statele Unite. În 2006, Bull SAS a lansat codul sursă al versiunilor Multics MR10.2, MR11.0, MR12.0, MR12.1, MR12.2, MR12.3, MR12.4 și MR12.5 sub o licență de software gratuit .

Ultima instalație Multics cunoscută care rulează nativ pe hardware-ul Honeywell a fost oprită la 30 octombrie 2000, la Departamentul canadian de apărare națională din Halifax, Nova Scotia, Canada.

Statusul curent

În 2006 Bull HN a lansat codul sursă pentru MR12.5, ultima versiune Multics din 1992, către MIT. Cea mai mare parte a sistemului este acum disponibilă ca software gratuit, cu excepția unor piese opționale, cum ar fi TCP / IP .

În 2014, Multics a fost rulat cu succes pe hardware-ul actual folosind un emulator. Versiunea 1.0 a emulatorului este acum disponibilă. Versiunea 12.6f Multics însoțește versiunea 1.0 a emulatorului și adaugă câteva caracteristici noi, inclusiv reamintirea în linie de comandă și editarea utilizând sistemul video.

Comenzi

Următoarea este o listă de programe și comenzi pentru sarcini de calcul obișnuite care sunt acceptate de interfața liniei de comandă Multics .

Observații retrospective

Peter H. Salus , autorul unei cărți care acoperă primii ani ai Unix, a afirmat o poziție: „Cu Multics au încercat să aibă un sistem de operare mult mai versatil și mai flexibil și a eșuat lamentabil”. Cu toate acestea, această poziție a fost discreditată în comunitatea de calcul, deoarece multe dintre inovațiile tehnice ale Multics sunt utilizate în sistemele moderne de calcul comercial.

Nucleul rezident permanent al Multics, un sistem ridiculizat la vremea sa ca fiind prea mare și complex, avea doar 135 KB de cod. În comparație, un sistem Linux în 2007 ar fi putut ocupa 18 MB. Primul MIT GE-645 avea 512 kilowords de memorie (2 MiB), o cantitate cu adevărat enormă în acel moment, iar nucleul folosea doar o porțiune moderată de memorie principală Multics.

Întregul sistem, inclusiv sistemul de operare și compilatorul complex PL / 1 , comenzile utilizatorului și bibliotecile de subrutine, constau din aproximativ 1500 de module sursă. Acestea au avut în medie aproximativ 200 de linii de cod sursă fiecare și au fost compilate pentru a produce un total de aproximativ 4,5 MiB de cod de procedură, care a fost destul de mare în conformitate cu standardele zilei.

Compilatoarele Multics, în general, au optimizat mai mult pentru densitatea codului decât performanța procesorului, de exemplu folosind mici subrutine numite operatori pentru secvențe de cod standard scurte, ceea ce face ca comparația dimensiunii codului obiectului cu sistemele moderne să fie mai puțin utilă. Densitatea ridicată a codului a fost o alegere bună de optimizare pentru Multics ca sistem multi-utilizator cu memorie principală scumpă.

În timpul istoriei sale de produse comerciale, a fost adesea comentat pe plan intern că personalul de vânzări și marketing Honeywell Information Systems (HIS) (mai târziu Honeywell-Bull) era mai familiarizat și mai confortabil făcând argumentul pentru cealaltă linie de calculatoare Honeywell, DPS 6 care rulează GCOS . DPS-6 și GCOS erau o platformă bine considerată și fiabilă pentru inventar, contabilitate, procesare de text și aplicații verticale de piață, cum ar fi serviciile bancare, unde avea o bază de clienți considerabilă. În contrast, întregul potențial al flexibilității Multics pentru sarcini chiar banale nu a fost ușor de înțeles în acea epocă, iar caracteristicile sale erau, în general, în afara setului de competențe al analiștilor de afaceri contemporani. Scopul acestei deconectări a fost concretizat printr-o anecdotă transmisă de Paul Stachour, CNO / CSC:

Când American Telephone și Telegraph și-a schimbat numele în AT&T în 1983, un personal din departamentul juridic al lui Honeywell a apărut și l-a întrebat pe un Multician dacă poate aranja schimbarea numelui în toate documentele computerizate ale acestora. Când a fost întrebat când se poate finaliza procesul, Multicianul a răspuns: „S-a terminat”. Personalul a repetat că are nevoie de sute, poate mii de documente actualizate. Multicianul a explicat că a executat o căutare și o înlocuire globală în timp ce personalul vorbea, iar sarcina a fost de fapt finalizată.

Influența asupra altor proiecte

Unix

Designul și caracteristicile Multics au influențat foarte mult sistemul de operare Unix , care a fost scris inițial de doi programatori Multics, Ken Thompson și Dennis Ritchie . Influența superficială a Multics pe Unix este evidentă în multe domenii, inclusiv denumirea unor comenzi. Dar filozofia de proiectare internă era destul de diferită, concentrându-se pe menținerea sistemului mic și simplu și, astfel, corectarea unor deficiențe percepute ale Multics din cauza cerințelor sale mari de resurse pentru hardware-ul computerului limitat al vremii.

Numele Unix (inițial Unics ) este el însuși un joc de cuvinte pentru Multics . Se zvonește că U în Unix ar reprezenta uniplex , spre deosebire de multiplexul Multics, subliniind în continuare respingerea de către proiectanți a complexității Multics în favoarea unei abordări mai simple și mai viabile pentru computerele mai mici. (Garfinkel și Abelson citează o origine alternativă: Peter Neumann de la Bell Labs, urmărind o demonstrație a prototipului, a sugerat numele de joc UNICS - pronunțat „ eunuc ” - ca „Multics castrat”, deși se spune că Dennis Ritchie a negat acest lucru. )

Ken Thompson, într-un interviu transcris din 2007 cu Peter Seibel, se referă la Multics ca fiind „supradiseinat și supraconstruit și peste tot. Era aproape inutilizabil. Ei [Institutul de Tehnologie din Massachusetts] susțin în continuare că este un succes monstruos, dar pur și simplu nu a fost ". În ceea ce privește influența Multics pe Unix, Thompson a afirmat că „lucrurile pe care mi-au plăcut suficient (despre Multics) să le iau de fapt erau sistemul de fișiere ierarhic și shell-ul - un proces separat pe care îl puteți înlocui cu un alt proces”.

Alte sisteme de operare

Sistemul de operare Prime Computer , PRIMOS , a fost denumit „Multics in a shoebox” de William Poduska , fondatorul companiei. Ulterior, Poduska a fondat Apollo Computer , ale cărui sisteme de operare AEGIS și ulterior Domain / OS , numite uneori „Multics într-o cutie de chibrituri”, au extins designul Multics la un mediu de lucru grafic puternic conectat la rețea.

Sistemul de operare Stratus VOS al computerului Stratus (acum Stratus Technologies ) a fost foarte puternic influențat de Multics și atât interfața sa externă de utilizator, cât și structura internă au multe asemănări strânse cu proiectul mai vechi. Caracteristicile de înaltă fiabilitate, disponibilitate și securitate ale Multics au fost extinse în Stratus VOS pentru a sprijini o nouă linie de sisteme informatice tolerante la erori care acceptă procesarea tranzacțiilor sigure și fiabile . Stratus VOS este descendentul cel mai direct legat de Multics aflat încă în dezvoltare și utilizare activă în prezent.

Arhitectura de protecție a Multics, limitând capacitatea de cod la un nivel al sistemului de acces la resurse la altul, a fost adoptată ca bază pentru caracteristici de securitate , a ICL lui VME sistem de operare.

Vezi si

Referințe

Lecturi suplimentare

Literatura conține un număr mare de lucrări despre Multics și diverse componente ale acestuia; o listă destul de completă este disponibilă pe pagina Multics Bibliography și pe o a doua bibliografie Multics 1994 mai scurtă (format text). Cele mai importante și / sau informative sunt enumerate mai jos.

Detalii tehnice

Securitate

linkuri externe