Multics | |
---|---|
Dezvoltator | MIT [2] [3] , General Electric [2] [3] și Bell Labs [2] [3] [4] |
Prima editie | 1965 [5] |
ultima versiune | |
Limbi acceptate | Engleză |
Platforme acceptate | Seria GE 645 [d] și Honeywell 6000 [d] |
Licență | Licență MIT |
Depozitul de cod sursă | web.mit.edu/multics-hist… |
Următorul | UNIX |
site web | multicians.org _ |
Fișiere media la Wikimedia Commons |
Multics ( MPA : [ m ʌ l t ɪ k s ]; prescurtare de la Multiplexed Information and Computing Service [6] ) este un sistem de operare timpuriu de partajare a timpului bazat pe conceptul de memorie cu un singur nivel.
Dezvoltarea sistemului de operare Multics a început în 1964 și sa bazat pe munca acumulată în timpul creării sistemului de operare BESYS la Bell Labs , al cărui manager de proiect a fost Viktor Vysotsky . Inițial, Massachusetts Institute of Technology (MIT), precum și General Electric (GE) și Bell Labs în sine , au fost implicați în proiectul de dezvoltare Multics . Bell Labs s-a retras din proiect în 1969 , iar în 1970 afacerea cu calculatoare a General Electric (împreună cu Multics) a fost preluată de Honeywell , care a vândut-o lui Bull . Multics a fost conceput de General Electric ca un produs comercial și a devenit astfel sub conducerea Honeywell, deși nu a găsit niciodată succes pe piața computerelor.
Sistemul Multics a avut un impact foarte mare asupra industriei computerelor datorită numeroaselor idei inovatoare și valoroase încorporate în el. Deși sistemul a fost supus numeroaselor batjocuri din partea criticilor [7] , a arătat totuși că conceptele încorporate în el au dreptul la viață pe termen lung în lumea sistemelor de operare.
Sistemul Multics a avut multe caracteristici care i-au asigurat fiabilitatea și performanța ridicată. De exemplu, pe lângă suportul pentru modularitatea software-ului, sistemul s-a concentrat și pe suportul modular al dispozitivelor electronice utilizate în funcționarea sa, ceea ce a făcut posibilă creșterea capacităților de calcul ale sistemului prin simpla înlocuire a modulelor sale: procesor central, memorie, spațiu pe disc, etc. Separat pentru fiecare utilizator Listele de acces la fișiere au oferit un mecanism extrem de flexibil pentru partajarea informațiilor în sistem, garantând totodată confidențialitatea completă a informațiilor stocate și utilizate de utilizatori. Sistemul Multics avea și o serie de mecanisme standard care le-au permis inginerilor să analizeze puterea de calcul a sistemului, precum și un set de mecanisme care asigurau optimizarea sistemului de operare în sine.
Multics a fost unul dintre primele sisteme de operare care a implementat un model plat de stocare a datelor, separând clar conceptele de fișiere (numite segmente în sistemul Multics ) și memoria proceselor de calcul . Memoria proceselor de calcul era formată din segmente, fiecare având propriul spațiu de adrese . Pentru a citi sau a scrie pe segmente, procesul de calcul a folosit instrucțiunile procesorului central al sistemului , iar sistemul de operare s-a ocupat de salvarea datelor modificate pe dispozitivul de memorie extern al computerului.
Astfel, în Multics a fost proiectat și implementat un sistem de fișiere complet centralizat, în care fișierele aflate fizic pe diferite dispozitive fizice de memorie externă sunt combinate logic într-o arhivă centralizată sau într-o structură ierarhică arborescentă, ale cărei noduri intermediare sunt numite directoare și frunzele conțin fișiere.
De asemenea, Multics a proiectat și implementat o memorie virtuală mare cu pagini de segmente care a permis utilizarea fișierelor de mapare la segmente de memorie virtuală. Cu alte cuvinte, atunci când un fișier a fost deschis în memoria virtuală a procesului corespunzător, a fost format un segment în care fișierul situat în memoria externă a fost complet afișat (în sistemul de fișiere al sistemului de operare Multics, fișierele cu o structură de paginare erau acceptate la nivel de bază.Organizaţiile mai complexe erau un supliment). Lucrările ulterioare cu fișierul s-au bazat pe mecanismul general de gestionare a memoriei virtuale.
Unul dintre principalele inconveniente ale acestei abordări (în principal din cauza diferențelor dintre arhitecturile electronice ale computerelor pe care a funcționat sistemul) a fost limitarea dimensiunii segmentului la 256 * 1024 cuvinte pe 32 de biți, care este egal cu 1 Megaoctet. Prin urmare, pentru a lucra cu fișiere mai mari decât limita stabilită, a trebuit să se folosească cod suplimentar în programele executabile. Fișierele în sine, mai mari de 256 * 1024 cuvinte pe 32 de biți, au fost reprezentate de sistem ca o serie de segmente conectate.
Înainte de apariția bazelor de date mari și a datelor grafice uriașe, această limită de dimensiune a fișierului a fost rareori încălcată.
Sistemul Multics a fost primul care a implementat următoarea idee inovatoare - legarea dinamică (linking dinamic) a unui program executabil cu biblioteci de coduri. Cu o legătură dinamică, un proces executabil ar putea cere sistemului să atașeze segmente suplimentare la propriul spațiu de adrese, și anume segmente care conțin cod util pentru programul executabil.
În acest fel, programele ar putea folosi automat biblioteci de coduri externe stocate în segmente separate, creând în același timp legături dinamice către funcțiile stocate în aceste biblioteci. O legătură dinamică cu cod executabil extern a fost creată o singură dată, în timpul primului apel al unei funcții din bibliotecă, și putea fi reutilizată ulterior. Deoarece fiecare utilizator din sistem corespundea unor procese separate, diferite biblioteci externe puteau fi conectate la același program, în funcție de nevoile utilizatorului.
La fel de important a fost și faptul că, cu setările de securitate corecte în Multics, codul dintr-un segment putea accesa structuri de date inițializate într-un proces complet diferit. Pentru o astfel de interacțiune între utilizator și procesele demon individuale (sau pur și simplu demoni), procesul utilizatorului a trebuit să conecteze dinamic segmentul de cod asociat cu acest proces și să apeleze metodele situate acolo. Codul din segmentul conectat ar putea funcționa direct cu structurile de date utilizate în demon. Când codul apelat din segmentul conectat s-a terminat de executat, execuția a revenit la procesul utilizatorului prin procedura normală de returnare din metoda apelată.
Cele două idei de mai sus nu au fost încă pe deplin implementate în cele mai comune sisteme de operare de astăzi, în ciuda dezvoltării mari a tehnologiei informatice care a început în anii 1960 ; deși în implementarea lor actuală aceste idei formează ceea ce numim legătura dinamică în sistemele informatice.
Sistemul Multics a suportat o reconfigurare foarte agresivă din mers a întregului sistem, permițându-vă să conectați, să deconectați și să configurați CPU-uri, blocuri de memorie, hard disk-uri și alte dispozitive fără a opri întregul sistem. De exemplu, era o practică obișnuită la MIT în timpul întreținerii Multics de a împărți un sistem – care era multiprocesor – în două, configurând treptat dispozitivele de calcul pentru a crea două sisteme independente. Unul dintre sistemele rezultate a continuat să deservească toți utilizatorii conectați, în timp ce celălalt a permis întreținerea, instalarea de noi dispozitive sau actualizările de software. Când toate activitățile necesare au fost finalizate, sistemul a fost din nou asamblat într-un singur întreg fără nicio repornire.
Multics ar putea rula pe computere cu multiprocesor, fiind în esență unul dintre cele mai vechi sisteme de operare cu multiprocesor.
Multics a fost, de asemenea, unul dintre primele sisteme care s-a concentrat pe securitatea interacțiunilor dintre programe și utilizatori. Mai mult, este posibil ca Multics să fi fost primul sistem de operare conceput de la început și implementat ca fiind sigur, în ciuda faptului că versiunile timpurii ale sistemului Multics au fost încă piratate în mod repetat. Hackurile de sistem au dus la modificări de securitate care au definit în cele din urmă abordări pe scară largă ale arhitecturii de securitate în sistemele de operare și au făcut Multics în sine mai sigur. Odată ce echipamentul electronic de a doua generație cu suport încorporat pentru privilegiile utilizatorului (determinarea drepturilor utilizatorului de a accesa date și programe) a fost instalat în sistem, hackurile în sistemul Multics au devenit foarte rare.
Multics a fost unul dintre primii care au implementat un sistem de fișiere ierarhic. Numele fișierelor pot avea o lungime aproape arbitrară și pot conține orice caracter. Un fișier sau un director poate avea mai multe nume (scurte și lungi); legăturile simbolice ( symlink ) între directoare erau de asemenea disponibile pentru utilizare .
De asemenea, Multics a fost pionier în abordarea (acum standard) de utilizare a stivelor pentru fiecare proces de calcul din nucleul sistemului , cu o stivă separată pentru fiecare strat de securitate din jurul nucleului.
Multics a fost, de asemenea, unul dintre primele sisteme de operare scrise în limbajul de nivel înalt PL/I (primul astfel de sistem a fost MCP pentru computerele Burroughs B5000 , care foloseau dialectul Algol ).
Multics a fost dezvoltat inițial pentru mainframe-ul GE-645 pe 36 de biți , iar mai târziu pentru aparatele din seria Honeywell 6180 .
Bell Labs sa retras din proiect în 1969 . Câțiva dintre cei care au dezvoltat sistemul Multics la acea companie au trecut la construirea sistemului UNIX . Sistemul UNIX creat mai târziu a arătat o asemănare superficială cu sistemul Multics, inclusiv în numele comenzilor utilizate. Cu toate acestea, filozofia de proiectare UNIX a fost complet diferită, concentrată pe a face sistemul cât mai mic posibil și cât mai simplu posibil, ceea ce era principala sa diferență față de sistemul Multics.
Numele „ UNIX ” (inițial „Unics”) a fost derivat din „Multics”. U din numele UNIX a reprezentat „Uniplexed” („monosilabic”), spre deosebire de cuvântul „Multiplexed” („complex”), care a stat la baza denumirii sistemului Multics, pentru a sublinia încercarea de creatorii UNIX să se îndepărteze de complexitățile sistemului Multics pentru a dezvolta o abordare mai simplă și mai funcțională.
Honeywell a cumpărat divizia de calculatoare a GE și a continuat dezvoltarea sistemului Multics până în 1985 . Aproximativ 80 de milioane de unități au fost livrate centrelor de date universitare, industriale și guvernamentale.
Tot la începutul anilor 1980 în Franța, calculatoare cu sistemul Multics au fost instalate la mai multe universități.
După ce Honeywell a încetat să accepte Multics, utilizatorii au migrat către alte sisteme, inclusiv sisteme UNIX.
Ultima mașină cu Multics a fost oprită pe 31 octombrie 2000 la Departamentul de Apărare al Canadei.
În 2007, codul sursă și documentația pentru Multics au fost donate de BULL Institutului de Tehnologie din Massachusetts și publicate pe site-ul MIT.
În 2006, Bull HN a lansat codul sursă pentru MR12.5, versiunea finală din 1992 a Multics, către MIT [8] . Cea mai mare parte a sistemului este acum disponibilă ca software gratuit, cu excepția unor părți suplimentare, cum ar fi TCP/IP [9] .
În 2014, Multics a fost lansat cu succes pe hardware modern folosind un emulator [10] . Versiunea 1.0 a emulatorului este disponibilă din 2017 [11] . Lansarea 12.6f a Multics este însoțită de lansarea emulatorului 1.0 și adaugă câteva funcții noi, inclusiv un sistem I/O îmbunătățit, precum și capacitatea de a edita ieșirea video [12] .
Cea mai recentă versiune în acest moment MR12.7 a fost lansată pe 30 iulie 2021 și este disponibilă în depozitul GitHub [13] [14] .
Următoarea este o listă de programe și comenzi pentru sarcinile de bază ale computerului care sunt acceptate de Multics [15] [16] [17] CLI .
Miezul sistemului Multics, care se afla în mod constant în memoria computerului și, în acei primi ani, era adesea ridiculizat pentru dimensiunea și complexitatea sa, ocupa doar 135 de kiloocteți de cod.
Primele computere GE-645 aveau o dimensiune de memorie de 512 * 1024 cuvinte pe 32 de biți (2 megaocteți), astfel încât nucleul sistemului nu ocupa mult spațiu.
Întregul sistem de operare, inclusiv compilatorul PL/I sofisticat, comenzile utilizatorului și bibliotecile suplimentare, a constat din aproximativ 1.500 de fișiere sursă, fiecare conținând aproximativ 200 de linii de cod. Într-o formă compilată, tot acest cod ocupa aproximativ 4,5 megaocteți, ceea ce era o dimensiune uriașă în acele zile.
Compilatoarele Multics au optimizat codul în principal pentru dimensiune, mai degrabă decât pentru eficiența CPU, ceea ce a fost justificat de dorința de a economisi memorie într-un sistem multiutilizator.
Sisteme de operare | |||||
---|---|---|---|---|---|
Pentru servere sau stații de lucru |
| ||||
Încorporat | |||||
Alte |