Multics
Vyvíjí | MIT, GE, Bell Labs |
---|---|
Rodina OS | Předchůdce Unixu |
Podporované platformy | mainframy GE-645 , Honeywell 6180 |
Typ jádra | Monolitické jádro |
Programovací jazyk | PL/1, Jazyk symbolických adres |
Výchozí uživatelské rozhraní | Příkazový řádek |
Licence | Původně proprietární, od roku 2007 pod MIT licencí |
Stav | Historický |
Multics (anglicky Multiplexed Information and Computing Service) byl inovativním předchůdcem dnešních operačních systémů, které používají multitasking. Projekt byl zahájen v roce 1964 a poslední známá instalace Multicsu ukončila činnost 31. října 2000 v Kanadském úřadu národní obrany. Multics je přímým historickým předchůdcem Unixu a je napsán v programovacím jazyce PL/1 a jazyce symbolických adres.
Přehled
Hlavní nápad a vývoj Multicsu začal v roce 1964 v Cambridge, Massachusetts. Původně to byl kooperativní projekt vedený MIT (Project MAC s Fernandem Corbatóem) společně s General Electric a Bell Labs. Bell Labs odstoupilo v roce 1969, a v roce 1970 byl počítačový obchod GE převzat společností Honeywell.
Multics byl koncipován jako komerční produkt pro GE, poté pro Honeywell, ale nebyl velmi úspěšný. Vzhledem k jeho mnoha novým a cenným nápadům, měl Multics významný vliv v oblasti počítačů, ačkoli byl vystavem posměchům tehdejších kritiků.[1]
Multics měl řadu funkcí, jejichž cílem bylo zajistit vysokou dostupnost tak, že by mohl podporovat výpočetní nástroj podobný telefonu. Pro dosažení tohoto cíle byla použita modulární hardwarová struktura a softwarová architektura. Systém mohl růst pouhým přidáním další výpočetní techniky, hlavní paměti, úložiště, atd.. Oddělené seznamy řízení přístupu pro každý soubor dodávaly flexibilní sdílení informací, ale také kompletní soukromí v případě potřeby. Multics měl řadu standardních mechanismů, které umožňovaly technikům analyzovat výkon systému, stejně jako řadu adaptačních mechanismů pro optimalizaci výkonu.
Nové myšlenky
Multics implementoval jednoúrovňové úložiště pro přístup k datům, které odmazalo jasné rozdělení mezi soubory (V Multicsu byly nazývány segmenty) a výpočetní pamětí. Paměť procesu se skládala výhradně ze segmentů, které byly namapovány do jejich adresního prostoru. Pro psaní nebo zápis do těchto oblastí byly jednoduše používány instrukce procesoru a operační systém se staral o kontrolu, zda všechny úpravy byly zapsány na disk. V názvosloví standardu POSIX to znamenalo, jako kdyby byl každý soubor mmap(); nicméně v Multicsu neexistoval žádný koncept procesní paměti, která by byla oddělena od paměti používané pro mapované soubory jako má systém Unix. Všechna paměť v systému byla částí nějakého segmentu, který se nacházel v souborovém systému. V tomto návrhu bylo zahrnuto i dočasné odložení paměti procesu, zásobníku kernelu apod..
Jednou z nevýhod bylo, že velikost segmentů byla omezena na 256 kilowords, což dává zhruba velikost 1 MiB. To bylo způsobeno zejména hardwarovou architekturou počítačů, na kterých Multics běžel. Ty měly 36bitovou velikost slova (nepoužívaly 8bitový byte). Pro práci s většími soubory, nazývanými vícesegmentové, musel být použit speciální kód. V dobách, kdy jeden MiB paměti byl celkem drahý a v dobách před rozsáhlými databázemi a později velkými bitmapovými grafikami, byl tento limit byl zřídkakdy překročen.
Další významnou myšlenkou Multicsu byly dynamické odkazování. Běžící proces mohl požádat od přidání jiných segmentů do svého adresního prostoru. Tyto segmenty mohly obsahovat spustitelný kód. Toto umožnilo aplikacím automaticky používat nejnovější verzi jakéhokoli vnější rutiny, neboť byly drženy v ostatních segmentech, které byly dynamicky propojených pouze tehdy, když se je proces nejprve pokusil spustit. Protože různé procesy mohly používat různá pravidla pro vyhledávání, různí uživatelé mohli používat různé verze externích rutin automaticky. Stejně tak důležité je, že se správným nastavením bezpečnosti, mohl kód v jiném segmentu získat přístup k datovým strukturám vedeným v jiném procesu.
Takto, pro interakci s aplikace běžící částečně jako daemon (v jiném procesu), mohl uživatelský proces jednoduše provádět volání procedury do segmentu kódu, ke kterému byl dynamicky propojen (segment kódu, který provádí nějakou operaci spojenou s daemonem). Kód v tomto segmentu pak mohl změnit data udržována a používána v daemonu. Když byla dokončena akce nezbytná k zahájení požadavku, jednoduchá procedura vrátila procesu uživatele návratovou hodnotu.
Jednoúrovňové úložiště a dynamické odkazování nejsou dosud využívány na maximum ani v dalších běžně používaných operačních systémem; a to navzdory rychlému a enormní pokroku v oblasti počítačů od roku 1960. Začínají být široce přijímané a jsou k dispozici v různých formách.
Multics také podporuje extrémně agresivní Hot swapping: CPU, paměťové banky, diskové jednotky atd. mohly být přidány a odstraněny, zatímco systém je stále v provozu. V systému MIT, kde započal vývoj softwaru, bylo běžnou praxí rozdělit víceprocesorový systém do dvou samostatných systémů v době mimo pracovní hodiny postupným odstraněním dostatku komponent pro vznik druhého funkčního systému, přičemž zbytek stále fungoval pro původně přihlášené uživatele. Testování vývoje systémového softwaru mohlo být provedeno na druhém stroji, pak byly komponenty druhého systému vráceny zpět do hlavního uživatelského systému, aniž by se musel vypnout. Multics podporoval více procesorů; byl to tedy jeden z prvních víceprocesorových systémů.
Multics byl první větší operační systém od počátku navržený jako bezpečný systém. Navzdory tomu, rané verze Multicsu byly opakovaně prolomeny. To vedlo k další práci, která dělala systém mnohem bezpečnější a stala se předobrazem moderního bezpečnostního inženýrství. Prolomení se staly vzácnými, jakmile byl přidán hardware druhé generace; ten podporoval privilegovaný režim.
Multics byl první operační systém, který poskytoval hierarchický systém souborů, kde názvy souborů mohly být téměř libovolné délky a syntaxe. Daný soubor nebo adresář mohl mít více názvů (typicky dlouhá a krátká forma) a existovala také podpora symbolických odkazů mezi adresáři. Multics byl také prvním systémem, který podporoval příkazový procesor, který byl implementován jako běžný uživatelský kód – tento nápad byl později použit pro Unix shell.
Historie projektu
Multics byl původně vyvinutý pro GE-645 mainframe, 36bitový systém; později, byl podporován na strojích řady Honeywell 6180. "S Multicsdm se snažili mít mnohem všestrannější a flexibilnější operační systém, který pravidelně selhával," řekl Dr. Peter H. Salus, autor kompletní historie Unixu dávných dob. Tento postoj byl však široce zdiskreditován počítačovou komunitou, protože mnoho technických novinek projektu Multicsu si našlo cestu do moderních komerční výpočetních systémů.
Bell Labs odstoupil od projektu v roce 1969; někteří z lidí, kteří pracovali na tomto projektu, se nakonec podíleli na vytvoření systému Unix. Vývoj Multicsu pokračoval ve spolupráci MIT a General Electric.
V roce 1970, koupila společnost Honeywell počítačovou divizi General Electric, vydala lepší hardwarovou základnu, a pokračovala ve vývoj systému až do roku 1985. Bylo nainstalováno zhruba 80 vysoce finančně nákladných výpočetních středisek na univerzitách, v průmyslu a na vládních místech. Poté, co Honeywell přestal podporovat Multics, uživatelé začali používat jiné systémy, včetně Unixu.
V roce 1985 Multics dostal certifikát pro úroveň B2 bezpečného operačního systému využívajícího Trusted Computer System Evaluation Criteria od National Computer Security Center (NCSC), divize NSA. Byl to první operační systém na této úrovni.
Multics byl distribuován mezi lety 1975 a 2000 společností Groupe Bull v Evropě, a společností Bull HN Information Systems Inc. ve Spojených státech. V roce 2006, Bull SAS byly dostupné open source Multics verze MR10.2, MR11.0, MR12.0, MR12.1, MR12.2, MR12.3, MR12.4 & MR12.5.
Poslední známá instalace Multicsu běžící nativně na hardwaru společnosti Honeywell byla ukončena dne 30. října 2000 na kanadském ministerstvu národní obrany v Halifaxu v Novém Skotsku v Kanadě.
Reference
Související články
Externí odkazy
- Obrázky, zvuky či videa k tématu Multics na Wikimedia Commons