# Multics

Multics (Multiplexed Information and Computing Service) va ser un dels primers sistemes operatius de temps compartit basat en el concepte de memòria de nivell únic. Va tenir una gran influència en el desenvolupament dels posteriors sistemes operatius.

## Descripció

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, 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

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, era que la mida dels segments estava limitat a 256K paraules de 36 bits, aproximadament igual a 1MB actual. Calia afegir codi específic per treballar amb fitxers més grans que això, anomenats fitxers multisegment. Abans de l'ús de grans bases de dades o de gràfics de mapa de bits, no era freqüent trobar-se amb aquesta limitació.
La segona gran idea de Multics va ser l'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, 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 mestra), 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

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 del Canadà.
El codi font de Multics va ser alliberat pel MIT i es pot descarregar des de la seva pàgina.

## Mirant cap enrere

É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 compiladors 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é

* GCOS
* Fernando J. Corbató, líder del projecte mentre el MIT va estar involucrat

## Referències

* ↑ Dennis M. Ritchie, "The Evolution of the Unix Time-sharing System", Communications of the ACM, Vol. 17, 1984, pp. 365-375.
* ↑ Dan Murphy. «Origins and Development of TOPS-20», 1996.
* ↑ Gregory, Nathan. The Tym Before. Lulu.com, maig 2018, p. 66. ISBN 9781387824755 [Consulta: Mar 29, 2020].
* ↑ «Myths about Multics».
* ↑ Schell, Roger R. (en anglès), 1971-06.
* ↑ Saltzer, Jerome H. (February 1974). «Protection and the Control of Information Sharing in Multics». Introduction to Multics", MAC TR-123. Cambridge, MA: Massachusetts Institute of Technology and Honeywell Information Systems Inc. p. 2–41.
* ↑ Tom Van Vleck. «How the Air Force cracked Multics Security», 2002.
* ↑ «Multics Glossary -F-». www.multicians.org. [Consulta: April 11, 2018].
* ↑ R. C. Daley and P. G. Neumann, "A general-purpose file system for secondary storage", AFIPS '65 (Fall, part I) Proceedings of the November 30 – December 1, 1965
* ↑ «A Random Word Generator for Pronounceable Passwords». Bedford, MA: Electronic Systems Division, Air Force Systems Command, USAF, 01-11-1975. Arxivat de l'original el April 8, 2022. [Consulta: 8 març 2021].

## Bibliografia

La següent literatura conté un gran nombre de papers sobre Multics i diversos components d'aquest. Una llista força completa és accessible a través d'here. Els més importants i/o informatius són llistats a sota.
* F. J. Corbató, V. A. Vyssotsky Introduction and Overview of the Multics System (AFIPS 1965) is a good introduction to the system ..
* F. J. Corbató, C. T. Clingen, J. H. Saltzer, Multics - The First Seven Years (AFIPS, 1972) is an excellent review, after a considerable period of use and improvement.

### Detalls tècnics

* Jerome H. Saltzer, 2fLCS-TR-123? Abstract = saltzer Introduction to Multics (MIT Project MAC, 1974) una extensa introducció al sistema, dirigida cap usuaris del sistema.
* Elliott I. Organick, The Multics System: An Examination of Its Structure (MIT Press, 1972) el procés estàndard del sistema, tot i que documenta una de les primeres versions, incloent-hi algunes que mai van veure la llum.
* V. A. Vyssotsky, F. J. Corbató, R. M. Graham, Structure of the Multics Supervisor (AFIPS 1965) descriu l'estructura interna bàsica del nucli de Multics.
* Jerome H. Saltzer, Traffic Control in a Multiplexer Computer System Arxivat 2001-11-27 a Wayback Machine. (MIT Project MAC, June 1966) és la descripció original d'intercanvi de piles en el nucli (switching kernel Stacks); aquest treball s'ha convertit en un article clàssic en computació.
* R. C. Daley, P. G. Neumann, A General Purpose File System for Secondary Storage (AFIPS, 1965) descriu és sistema de fitxers, incloent-hi el control d'accés i mecanismes de suport.
* A. Bensoussan, C. T. Clingen, R. C. Daley, The Multics Virtual Memory: Concepts and Design , (ACM sosp, 1969) descriu el sistema de memòria de Multics de forma bastant detallada.
* Paul Green, Multics Virtual Memory - Tutorial and Reflections Arxivat 2001-03-05 a Wayback Machine. revisió profunda del sistema d'emmagatzematge de Multics.
* Roger R. Schell, Dynamic Reconfiguration in a Modular Computer System (MIT Project MAC, 1971) descriu el mecanisme de reconfiguració.

### Seguretat

* Paul A. Karger, Roger R. Schell, Multics Security Evaluation: Vulnerability Analysis (Air Force Electronic Systems Division, 1974) descrius the classic attacks on Multics security by a "tiger team ".
* Jerome H. Saltzer, Michael D. Schroeder, Protection of Information in Computer Systems (Proceedings of the IEEE, September 1975) descrius the fundamentals behind the first round of security upgrades; another classic paper.
* M. D. Schroeder, D. D. Clark, J. H. Saltzer, D. H. Wells. 2fLCS-TR-196? Abstract = saltzer Final Report of the Multics nucli Design Project (MIT LCS, 1978) descrius the security upgrades added to produeix an even more improved version.
* Paul A. Karger, Roger R. Schell, thirty Years Later: Lessons from the Multics Security Evaluation (IBM, 2002) is an interesting Retrospective which comparis actual deployed security in today's hostil environment with what was demonstrated de ser possible decades ago. It concludes that Multics offered considerably Stronger security than most systems commercially available in 2002.

## Enllaços externs

* http://www.multicians.org/ is a great site with a lot of material
* Multics at Universitaet Mainz