Multics

De Viquipèdia
Dreceres ràpides: navegació, cerca
Multics
Empresa / Desenvolupador MIT, GE, Bell Labs
Família de SO Temps compartit
Estat actual Madur, històric
Tipus de codi lliure - codi obert des de 2007. Abans semi-free
Tipus de nucli Monolític
Llicència MIT License
Lloc web Multics Internet Server

Multics ( Mult iplexed I nformation and C omputing S ervice) va ser un dels primers sistemes operatius de temps compartit i va tenir una gran influència en el desenvolupament dels posteriors sistemes operatius.

Descripció[modifica | modifica el codi]

Els plans inicials i el desenvolupament de Multics va començar el 1964. Originalment era un projecte cooperatiu liderat per Fernando J. Corbató del MIT, amb General Electric i els laboratoris Bell. Els laboratoris Bell el van abandonar el 1969 i el 1970 el negoci de computació de General Electric, incloent-hi Multics, va ser adquirit per Honeywell.

Multics va ser concebut com un producte comercial per General Electric, i va assolir aquesta fita per Honeywell, però no va tenir un gran èxit. No obstant això, va tenir un gran impacte en el camp de la computació gràcies a les seves moltes idees noves i valuoses. Encara que en la seva època va rebre moltes crítiques,[1] la història ha demostrat que eren infundades.

Un gran nombre de característiques intentaven proporcionar alta disponibilitat, de manera que el servei de computació pogués igualar-se als serveis de telefonia i a la xarxa elèctrica. Per assolir aquesta fita, es va utilitzar una estructura modular tant en el programari com en el maquinari i el sistema podia créixer fàcilment afegint més recursos —poder de computació, memòria principal, emmagatzematge de disc, etc. Llistes de control d'accés sobre cada fitxer proporcionaven un mètode flexible per compartir informació a més de la privacitat requerida. Contenia diferents mecanismes estàndard per permetre als enginyers analitzar el rendiment del sistema, a més de diversos mecanismes per a l'optimització del rendiment.

Idees noves[modifica | modifica el codi]

Multics va ser un dels primers sistemes operatius que va implementar un únic nivell d'emmagatzematge per a l'accés a les dades, rebutjant la clara distinció entre els fitxers (anomenats segments en Multics) i els processos en memòria.

La memòria d'un procés consistia només en segments que estaven mapejats en el seu espai d'adreces, per llegir o escriure en ells, el procés simplement utilitzava instruccions normals de la CPU i el sistema operatiu tenia cura d'assegurar que totes les modificacions fossin guardades en disc.

A la terminologia POSIX, era com si cada fitxer fos mapejat, però en Multics no existia el concepte de memòria de procés separat del de la memòria utilitzada per mantenir mapejats sobre els fitxers, com fa Unix. Tota la memòria del sistema formava part d'algun segment, que apareixia en el sistema de fitxers; inclosa la memòria temporal del procés, la pila del nucli, etc.

(Un desavantatge pràctic, ateses les particularitats de l'arquitectura del maquinari de les màquines en què s'executava, i no del concepte bàsic, era que la mida dels segments estava limitat a 256K paraules de 36 bits, aproximadament igual a 1MB actual, i per tant s'havia utilitzar codi extra per treballar amb fitxers grans que això, anomenats fitxers multisegmento. Els dies anteriors a les bases de dades grans, i els posteriors gràfics bitmaps immensos, no era freqüent trobar-se amb aquesta limitació.)

Això ens condueix a la segona gran idea de Multics, enllaç dinàmic, mitjançant el qual un procés en execució pot demanar que altres segments s'afegeixin al seu espai d'adreces, aquests segments poden incloure codi que pot ser executat.

Amb aquesta característica disponible, les aplicacions automàticament utilitzaven l'última versió de qualsevol rutina externa que cridessin. Aquestes rutines estaven en altres segments que enllaçaven dinàmicament només quan un procés intentava executar-les. Com diferents processos pertanyents a diferents usuaris, podien utilitzar diferents regles de cerca. Diferents usuaris podien automàticament acabar utilitzant diferents versions de les rutines externes.

Igualment important, amb la configuració adequada de les característiques de seguretat de Multics, el codi en l'altre segment podia guanyar accés a les estructures de dades mantingudes en un procés diferent.

D'aquesta manera, per interaccionar amb una aplicació que s'executa en part com un dimoni (informàtica) (en un altre procés) un procés d'usuari simplement fa una crida normal a un procediment a un segment de codi amb el qual s'enllaçarà dinàmicament (un segment de codi que implementa alguna operació associada amb aquest dimoni). El codi en aquest segment pot llavors modificar les dades mantinguts i utilitzats pel dimoni. Quan l'acció necessària per començar la sol·licitud es completa, una simple instrucció de retorn del procés retorna el control del procés d'usuari al codi de l'usuari.

Cal notar que aquestes dues idees, s'utilitzen encara en la majoria dels sistemes operatius, independentment del ràpid i enorme avanç realitzat en el camp de la computació des de la dècada de 1960.

Multics també suportava una reconfiguració en línia molt agressiva, les CPU s, els bancs de memòria, unitats de disc, etc. podien ser afegides i tretes mentre el sistema continuava funcionant; entrant en servei, o eliminant-quan fos necessari.

(De fet, era una pràctica comuna en el sistema del MIT, on es va realitzar la majoria dels desenvolupaments de programari inicials, dividir el sistema; que era un sistema multiprocessador, en dos sistemes separats, a eliminiar suficient components per formar un segon sistema, deixant la resta encara executant la dels usuaris que tenien una sessió oberta. Les comprovacions sobre el programari desenvolupat podien realitzar-se en la segona màquina, quan els tests concloïen, els components del segon sistema s'afegien de nou en el sistema principal, sense haver d'apagar-lo en cap moment).

Com es suportaven diverses CPU, va ser un dels primers sistemes multiprocessador.

Multics també va ser notable pel seu innovador èmfasi en el seu disseny per obtenir seguretat informàtica, i Multics va ser possiblement el primer sistema operatiu dissenyat com un sistema segur des del seu inici. Independentment d'això, les primeres versions de Multics es van mostrar vulnerables, no una vegada, sinó de forma repetida.

Això va conduir a més treball per millorar la seguretat que va traçar les tècniques de seguretat modernes, i va fer els sistemes molt més segurs; en adoptar el maquinari de segona generació, amb suport maquinari per als anells de seguretat (un refinament multinivell del concepte de manera mestre), les intrusions es van convertir en una cosa molt estrany.

A més d'haver estat el primer sistema operatiu que va proporcionar un sistema de fitxers jeràrquic, els noms dels fitxers gairebé podien tenir una longitud i sintaxi arbitrària; donat un fitxer o directori aquest podia tenir diversos noms (típicament un llarg i un altre curt); també es suportaven enllaços simbòlics entre directoris.

Va ser el primer a utilitzar l'ara estàndard concepte de tenir una pila per procés en el nucli, amb una pila separada per a cada anell de seguretat. També va ser un dels primers escrits en un llenguatge d'alt nivell; es va utilitzar PL/I, encara que el sistema Burroughs B5000, que utilitzava ALGOL va precedir Multics.

Història del projecte[modifica | modifica el codi]

Multics es va desenvolupar inicialment per al mainframe GE-645, un sistema de 36 bits, després va ser suportat per la sèrie de màquines Honeywell 6180.

Els laboratoris Bell van deixar el projecte en 1969; algunes de les persones que havien treballat en el seu desenvolupament es van dedicar a crear el sistema Unix. Encara que d'una manera superficial, UNIX mostra la influència de Multics en moltes àrees, inclòs el nom dels comandaments. La filosofia de disseny va ser molt diferent, centrant-se a mantenir el sistema tan petit i simple com fos possible, i d'aquesta manera corregint el que es veia com una deficiència de Multics. El nom "Unix" (originalment "Unics") és un hack de "Multics". Es rumoreja que la U de UNIX significar "Uniplexat" en oposició al concepte "Multiplexat" de Multics, ressaltant la intenció dels dissenyadors de rebutjar la complexitat de Multics en favor d'una aproximació pràctica més directa.

Honeywell va comprar la divisió de computació de General Electric, va llançar una millor base maquinari, i va continuar el desenvolupament del sistema fins a 1985. Es van realitzar unes 80 instal·lacions per valor de diversos milions de dòlars, en universitats, indústria, i administració. El sistema universitari de França va comptar amb diverses instal·lacions en els inicis de la dècada de 1980. Després Honeywell va deixar de suportar Multics, els usuaris van migrar a altres sistemes (incloent-hi sistemes Unix).

L'última màquina Multics va ser apagada el 31 d'octubre de 2000, al Ministeri de Defensa de Canadà.

El codi font de Multics va ser alliberat pel MIT i es pot descarregar des de la seva pàgina.

Mirant cap enrere[modifica | modifica el codi]

És més que sorprenent descobrir que el nucli d'aquest poderós mainframe multiprocessador computing utility , tan criticat en els seus dies per ser massa gran i complex, ocupava 135 kB de codi. El primer GE-645 del MIT va tenir 512 K paraules de memòria (2 MB), de manera que el nucli només utilitzava una petita porció de la memòria principal de Multics.

Mesurat d'una altra manera, el sistema complet, incloent-hi no només el sistema operatiu, sinó també el complex compilador de PL/I, els comandaments d'usuari, i les biblioteques de subrutines, contenia uns 1.500 mòduls de codi font. Cada un amb una longitud mitjana d'unes 200 línies de codi font, i compilada per produir aproximadament 4,5 MB de codi de procediments, que encara que avui sembli petit era molt gran per als estàndards de l'època.

Els compilador és de Multics generalment optimitzen la densitat de codi abans que la velocitat d'execució, per exemple s'utilitzaven petites subrutines trucades operadors per seqüències de codi freqüents, realitzar comparacions directes amb el grandària dels objectes de codi en els sistemes més moderns no té sentit. L'alta densitat de codi era una bona opció d'optimització per a un sistema multiusuari amb una memòria principal cara, com Multics.

Vegeu també[modifica | modifica el codi]

Bibliografia[modifica | modifica el codi]

La següent literatura conté un gran nombre de papers sobre Multics i diversos components del mateix. Una llista força completa és accessible a través d'here. Els més importants i/o informatius són llistats a sota.

Detalls tècnics[modifica | modifica el codi]

Seguretat[modifica | modifica el codi]

Enllaços externs[modifica | modifica el codi]

Referències[modifica | modifica el codi]