Operációs Rendszerek 2. Harmadik előadás február 19.
Fontosabb operációs rendszerek •Fontosabb. Miért is? •Akkor miről is lesz szó? –Unix –Windows –Linux •Nem valós technikatörténet (bár az is érdekes lenne)
„Hol a helyük”? Mini Comp. (~60) UNIX (~70) MainframeMicro Comp. (~80) PCSzerver Low-endMidrangeHigh-end Mainframe Windows (~93) Linux (~91)
Van még tovább? PCSzerverMainfr. • Van, mindkét irányban (sőt) • Nagyjából out-of-scope
Unix – a kezdetek •1969, Bell labs: alig használt PDP-7 „a sarokban” –Multics projekt leállta utáni űr… –Space travel játék (Thompson) –A PDP-7 gépen nem volt fejlesztő környezet (cross compilert kellett használni) –Thompson, Ritchie és mások elkezdtek írni egyet (először a fájlrendszert, majd jött a process alrendszer és egy egyszerű shell)
A történet folytatódik •Thompson, Ritchie és Ossanna meggyőzi a BTL-t hogy vegyenek egy PDP-11 gépet szövegszerkesztésre •A Unix portolásra kerül, megszületnek az első egyszerű kiadvány szerkesztő programok •Thompson a BCPL nyelvből kiindulva kifejleszti az interpretált B nyelvet •Ennek alapján – Ritchie által – megyszületik a C nyelv. A Unix diadalútja C nélkül nem valószínű – és viszont
Egy zárt világ •A rendszer a BTL-en belül közkedveltté válik, de házon kívül nem ismerik •1973-ban kiadott (belső) verzió már tartalmazza a „cc” C fordítót •Ugyanebben az évben az egész rendszert újraírják C-ben – ez a lépés alapozza meg a későbbi sikert
Úton az ismertség felé •1973: a Unix bemutatása egy ACM konferencián (1974, első írott publikáció) •1956-os antitröszt határozat miatt az AT&T nem kereskedhetett számítástechnikai termékkel (sem) → az ACM konferenciát követő nagy számú megkeresés hatására az AT&T a rendszert kutatási és (egyetemi) oktatási célokra jogdíj nélkül átadta (forráskóddal együtt) •1975-ben már telepített Unix-ot találunk Kanadában, Izraelben és Ausztráliában is •A Berkeley egyetem az elsők köz kap Unix licencet (1974 decemberben)
A sokszínűség •A gyors terjedés mellett megkezdődnek a módosítások (forráskód elérhető) •Az eredményeket sokszor a BTL is beépíti saját fejlesztéseibe •A Berkeley-en különösen aktív fejlesztés folyik, az eredeti rendszert jelentősen jobbító programokat külön csomagban, pénzért (USD50) kezdik forgalmazni
A BSD Unix •Először itt készül virtuális memóriakezelés Unix-hoz (32 bites VAX gépre) •1979-ben megjelenik az első saját OS verzió (3BSD) – ez már teljes csomag •A DARPA támogatja a Unix továbbfejlesztését (VM és TCP/IP fejlesztés) •Fentieken túl még több jelentős újítás innen származik •1993-ban megjelenik az utolsó (4.4BSD) verzió, a fejlesztés befejeződik •A rendszert a BSDI viszi tovább, a történet rögtön egy AT&T perrel indul – 1994-től érhető el a 4.4BSD-lite
Az „eredeti” •A fejlesztés a Bell berkein belül sem áll le •1982-ben az AT&T beléphet a piacra •Időközben a Unix Support Group nevű csapat kiadja a System III verziót (1982), majd 1983-ban a sokkal agresszívebben marketingelt Syste V-t. Sok kommerciális Unix alapul valamelyik System V verzión •Jelenlei verzió az SVR4
Az üzleti rendszerek •Több cég is foglalkozott saját hardverére portolt (és kibővített) Unix forgalmazásával (ezek forrása vagy a BTL vonal, vagy a BSD volt) •Első cég (1977) Ineractive Systems, de a Microsoft (az SCO-val együttműködve) is az elsők között van •1982-ben Bill Joy kilép a Berkeley-ről és másokkal együtt megalakítja a Sun Microsystems céget. Rendszerük a SunOS a 4.2BSD-n alapul
Azok a 80-as évek •A 80-as években több gyártó (IBM, HP, DEC és mások) is előrukkol saját új gépeivel és ehhez saját Unix verziót adnak ki •Minden cég megpróbál egyre több extra szolgáltatást beépíteni a rendszerébe, ez gyors fejlődést eredményez. •Ugyanakkor a különféle Unix verziók többé-kevésbé inkompatibilisek.
Mach •A Unix születéskori erősségei – kis méret és egyszerűség – az egyre több és több szolgáltatás beleintegrálásával tovatűntek •A 80-as évek elején a pittsburgi Carnegie-Mellon egyetemen megkezdődött egy új, mikrokernel alapú operációs rendszer – a Mach – fejlesztése •A rendszer „kívülről” BSD interfésszel bírt, ugyanakkor AT&T kódtól teljesen mentes volt. •A 2.5-ös (még monolitikus kernelű) verzió több piaci rendszer (OSF/1 és NextStep) alapja lett, az első mikrokerneles verzió a 3.0 volt
A Unix háború •1987-ben az AT&T szövetkezett a Sun-nal a következő System V verzió (SVR4) kidolgozására (a Sun korábban BSD vonalat használt). Megjelenik a Solaris 2. •Ez a lépés az iparban komoly nemtetszést váltott ki, kezdetét vette a Unix háború. •Szövetségek alakultak és szűntek meg, de egy új fenyegetés – a Windows NT – mindent megváltoztatott…
A közelmúlt •A Unix név és kód a Novell-hez kerül •A kódot a Novell eladja az SCO-nak, a Unix név a Open Group kezébe kerül •Sok, a 80-as években virágzó gyártó eltűnik, a megmaradtak (Sun, IBM, HP) viszont továbbra is fejlődnek – a Unix él és virul •Linux
Szabványok •A sokféle verzió megkeserítette a fejlesztők életét •Szabványosítási törekvések kezdődtek, de szabványból is sok, különböző alakult ki (ezek nem a belső működést, hanem az interfészeket írják le) •Egyik legjelentősebb szabvány az IEEE POSIX specifikáció •A szabványos kód nem tartalmazhatja az adott platformra jellemző többlet funkciókat!
Klasszikus (pre. SVR4) kernel
Fájl alrendszer
Hierarchikus könyvtár struktúra Fájlok bájtfolyamok „minden fájl” megközelítés Eszközmeghajtó programok Karakteres Blokkos Blokkos I/O caching Program memória kárára!
Folyamat alrendszer Ütemező Memória kezelő Folyamatközi komm.
Ütemező Jellemzői: Időosztásos működésre fókuszál Prioritásos User szinten Preemptive Kernel szinten nem az! Nincs RT támogatás!
Ütemező Folyamat létrehozása: szülő-gyerek viszony! Árva és Zombie folyamatok Nincsenek szálak (threads)!
Memória kezelés Virtuális memóriakezelés Lapozás és swap Kernel által foglalt memória fix mértékű! A Buffer cache által használt memória nem elérhető!
Folyamatközi kommunikáció Folyamatok közötti szinkronizáció és kommunikáció Signal-ok Pipe és FIFO
Változás mozgatórugói Funkcionalitás –Fájlrendszer funkciók (locking, quota-k, ACL- ek) –IPC (magasabb absztrakciós szint) –Szálak –Hálózati szolgáltatások (NFS, NIS)
Változás mozgatórugói Funkcionalitás Teljesítmény, hardver fejlődése –Fájlrendszerek teljesítményének növelése –Új hardver-technológiák támogatása (RAID, SMP)
Változás mozgatórugói Funkcionalitás Teljesítmény, hardver fejlődése Minőségi elvárások, megbízhatóság –Adatvesztés rendszerösszeomlás esetén –Működés hibák során
Változás mozgatórugói Funkcionalitás Teljesítmény, hardver fejlődése Minőségi elvárások, megbízhatóság Paradigmaváltás, új alkalmazások –Kliens-szerver alkalmazások előtérbe kerülése –Real-time elvárások (pl. média szerverek)
Solaris – a Solaris előtt •1982: SunOS 1.0 – BSD 4.1 alapú, még Motorola alapú Sun gépre •Hálózati technológiák komoly fejlesztése, több széles körben elterjedt (NFS, RPC). Az implementálásuk jelentős módosítást igényelt, a SunOS 2.0 már tartalmazza VFS-t (1984) •Új VM, dinamikus linkelés (SunOS 4, 1988 – első SPARC alapú rendszer) •Multiprocesszoros rendszerek támogatása, a SunOS 4.1 esetén még aszimmetrikus módon •A szimmetrikus multiprocesszing nagyon más…
Solaris •Az AT&T szövetség hatására a Sun System V alapon teljesen új rendszerrel ál elő •1992, Solaris 2.0 – még csak uniprocesszoros (ezután a korábbi verziók: Solaris 1.x). Még ebben az évben multiprocesszoros támogatás (2.1) •1993-tól x86 platform támogatás •1996-ban már 64 utas SMP (2.5.1), ugyanekkor fájlméret max. átlépi a 2GB-t (2.6) – FS 2.2 óta nagyobb •Következő nagy lépés a Solaris 7 (nem 2.7), ami már 64 bites processzorokat is támogatja •Minden verzió hoz újításokat (RBAC, újabb ütemezők, zónák és x64 támogatás), Jelenlegi verzió a Solaris 10, ennek már komoly AMD-s installált bázisa van (Opteron)
Solaris kernel
A régi és az új
Mac OS X •Az Apple egyedi gépéhez egyedi operációs rendszer já •A Windows növekvő sikere (és technikai újításai) a nehézségekkel küszködő Apple-t is lépésre kényszeríti, belső fejlesztések és külső próbálkozások (pl. BeOS, később abortáló IBM együttműködés) •Sok részeredmény született, de az átütő siker nem jött el •1997: az Apple megszerzi a OPENSTEP rendszert, Steve Jobs technikailag sikeres, de üzletileg problémás rendszerét. Elemeket emelnek át a Mac OS-be •1997, Jobs CEO kinevezést kap, 98-ban hírek jelennek meg egy új operációs rendszerről •1999, megjelenik az OS X (szerver verzió) •Jelenleg: 10.4 Tiger, de a Leopard már közeleg
Mac OS – miért érdekes? •1987: NextCube •1988: NexStep 0.8 – 4.3 BSD és Mach 2.0 •1989: NexStep 1.0 – Mach 2.5 •1994: OpenStep Specification (SUN-nal közösen, object-oriented OS spec) •1996: OpenStep 4.0 – OpenStep kompatibilis NextStep, Mach 3.0 •1997: az Apple megveszi a Next céget…
Linux – történet Kezdet: Linux Torvalds, 1991 – x86 Internetes fejlesztőbázis, széles hardver platform támogatás Kernel: Linus, prg: FSF GNU projekt Kívülről Unix, felépítésében nem teljesen az (erősen hatnak egymásra) Erősebb is, gyengébb is!
Linux - verziók Támogatás nagy hardver és szoftver szállítóktól (IBM, HP, Oracle, SAP) Debian – free RedHat – $350…$2500/év Fedora - free SuSe - not free! Windows 2003, 10 user: ~ 1100 USD + support!
Linux - Jellemzők Moduláris felépítésű kernel Dyamic linking Stackable modules Virtuális fájlrendszer támogatás Valós idejű ütemezés
Windows - történet 1981: PC-DOS 1.0 (flat FS) 1983: DOS 2.0, XT, HDD támogatás 1984: DOS 3.0, IBM AT Nem használta a 286 képességeit 1990: Microsoft Windows 3.0
Windows - roadmap OS-2: IBM és MS közös fejlesztés, összeveszés, NT fejlesztés indul 1993: Első Windows NT, a 3.1 1996: NT 4.0 – Win 95 felület 2000: Win 2000 (desktop, server) 2001: Win XP (csak desktop) 2003: Win 2003 2006: Vista
Windows – elvárások: 1989 32 bites, preemptive, VM támogatás Többplatformos működés Jó SMP skálázhatóság Kliens-szerver környezet támogatása MS-DOS és Win 3.x alkalmazások futtatása Kormányzati POSIX elvárás Kormányzati biztonsági elvárások Unicode támogatás
Windows – Fejlesztési célok Bővíthetőség – piaci elvárások Hordozhatóság Mezbízhatóság és robosztusság Kompatibilitás Teljesítmény
Windows – Jellemzők Valós (preemptive) multitasking Kliens-szerver modell SMP és szálak támogatása Objektum alapú megközelítés Nagyrészt C nyelvű kód
Windows – Kernel Pl. logon, session manager Nem a service control manager vezérli
Windows – Kernel Felhasználóktól függetlenül működnek Spooler, task manager Szerver alkalmazások (pl. Exchange) is
Windows – Kernel Windows, Posix (régen OS/2) alkalmazások futtatásához szükséges támogató szolgáltatások
Windows – Kernel Felhasználói programok Az alrendszereket használják! API hívások-ból nem dokumentált Kernel hívások
Windows – Kernel Alap operációs rendszer szolgáltatások Memória menedzsment, folyamat és szál menedzsment Biztonság, I/O, hálózat, IPC
Windows – Kernel Alacsony szintű operációs rendszer szolgáltatások Szálak ütemezése, megszakítás és kizárás kezelés SMP szinkronizáció, alap objektumok támogatása
Windows – Kernel Hardver eszközök meghajtóprogramjai Fájlrendszerek illesztése Hálózati meghajtóprogramok
Windows – Kernel Platform sajátosságok elfedése (pl. alaplapi chipset különbségek)
Windows – Kernel GUI és grafikai funkciók Teljesítmény elvárások miatt került a kernel szintjére
Windows – Kernel