Operációs rendszerek
VIMIAB03 | Mérnökinformatikus BSc | Félév: 3 | Kredit: 5
A tantárgy célkitűzése

Mészáros Tamás
docens
tárgyfelelős
A tárgy oktatói

Alekszejenkó Levente
tudományos segédmunkatárs

Bruncsics Bence
tudományos segédmunkatárs

Eredics Péter
tanársegéd

Fetter László
doktorandusz

Mészáros Tamás
docens

Pogány Domonkos
doktorandusz

Sándor Dániel
doktorandusz

Vetró Mihály
doktorandusz
A tantárgy részletes tematikája
Bevezetés (2): az operációs rendszer fogalma, célja, osztályozása, vázlatos felépítése; fejlődésének mérföldkövei; gyártók és termékek piaci részesedése; Windows és Unix változatok; beágyazott operációs rendszerek; a kernel feladatai és főbb részei; nyílt rendszerek és szabványosítás; ipari trendek, fejlesztési irányok.
Felépítés és alapműködés (4): a kernel felépítésének alapelvei, modelljei; monolitikus és mikrokernel; réteges és moduláris szerkezet; a mai (monolitikus) kernelek problémái; mikrokernelek felépítése és újgenerációs mikrokernelek; az OS elindulása, a Linux/Windows kernel inicializáció főbb lépései, a felhasználói működés beindulása, szolgáltatások és kritikus rendszerfolyamatok; Unix futási szintek, sysinit és systemd; a rendszerhívások működési mechanizmusa, virtuális rendszerhívások.
Feladatkezelés (3): a felhasználói feladatok jellege (CPU-intenzív, I/O-intenzív, memória-intenzív, valósidejű); feladatok végrehajtásával kapcsolatos elvárások, mérőszámok (várakozási idő, körülfordulási idő, válaszidő, CPU-kihasználtság, átbocsájtó képesség, rezsiköltség, jósolhatóság, determinisztikusság); az optimális feladat-végrehajtó rendszer és megvalósítási nehézségeinek okai; a feladatkezelés alapfogalmai: taszk, folyamat és szál; a feladat-taszk összerendelés; az absztrakt virtuális gép fogalma; folyamatok és szálak összehasonlítása: tulajdonságok, előnyök, hátrányok, teljesítmény; taszkok adatai; taszkok állapotai és állapotátmenetei; taszkok létrehozása; taszk- és kontextusváltás.
Felhasználói felületek (2): a felhasználói felület feladatai, típusai; külső és belső parancsok; a karakteres és grafikus felületek részei: parancsértelmező (shell), ablakozó rendszer, ablakkezelő, kijelzőszerver; a parancsértelmező programozása; tipikus kijelzőszerverek és ablakkezelők; munkamenet-kezelés, újszerű interfészek, virtuális és kiterjesztett valóság, természetes nyelvű interfészek, agy-számítógép interfészek.
Ütemezés (7): az ütemezés feladata, időskálái; egyszerű ütemezési algoritmusok (FCFS, RR, SJF, SRTF, PRIO) adatstruktúrái, működése, algoritmikus komplexitásuk, értékelésük; konvoj hatás és kezelése; kiéheztetés és öregítés; a prioritásinverzió és kezelése; statikus és dinamikus többszintű ütemezés, többszintű visszacsatolt sorok (MFQ) ütemező, a tradicionális Unix ütemező részletes működése és értékelése; a többprocesszoros ütemezés alapjai (CPU-affinitás, erőforrás-allokáció és terheléselosztás), heterogén többprocesszoros rendszerek alapproblémái; ütemezők a gyakorlatban: számítási példák, Windows, UNIX, Linux CFS.
Virtuális memóriakezelés (4): a memóriakezelés feladatai, virtuális tárkezelés; címleképezés, lapszervezés, cserehely (swap) és tárcsere (swapping); laphiba és szoftveres címleképezés; kerettábla, laptábla, diszk blokk leíró és swap térkép; az adatszerkezetek kapcsolatai és működése; fill-on-demand; copy-on-write; lapozási stratégiák: igény szerinti és előretekintő; vergődés; lapcsere algoritmusok: FIFO, második esély, legrégebben nem használt, legkevésbé használt; mostanában nem használt; lapok tárba fagyasztása; a laplopó taszk.
Kommunikáció (4): kommunikáció közös memórián keresztül: a PRAM modell, szálak közötti adatcsere, közös memória és memóriába ágyazott fájlelérés; üzenetváltásos kommunikáció: címzési módok, szinkron és aszinkron átvitel, az adatátvitel lehetséges szemantikái; direkt és indirekt kommunikációs megoldások, az adatátviteli sebességet és a késleltetés meghatározó tényezők és az L4 mikrokernel üzenettovábbítási technikái; hálózati (socket) kommunikáció; távoli eljáráshívás (RPC), interfészleíró nyelv, rpcgen, portmapper és a kommunikációs rendszer felépítése; gyakorlati példák: Unix jelzések, csővezetékek, üzenetsorok, osztott memória és egyszerű webszerver készítése C nyelven.
Szinkronizáció (3): taszkok versengése és együttműködése; klasszikus szinkronizációs problémák: író-olvasó, többszörös olvasók, termelő-fogyasztó (korlátos raktárral); a szinkronizáció és alapvető formái; kölcsönös kizárás és kritikus szakasz; atomi memóriaműveletek: test-and-set-lock (TSL) és compare-and-swap (CAS); zárolási eszközök: lock bit, mutex, szemafor, spinlock, ReaderWriterLock és RecursiveLock; a szemafor műveletei és megvalósításuk TSL segítségével; a kritikus szakasz megvalósítása TSL és szemafor alkalmazásával; erőforrás-foglalási gráf; a holtpont és kialakulásának feltétele; holtpont kezelése: strucc algoritmus, detektálás, feloldás, megelőzés és elkerülés; a biztonságos állapot fogalma és ellenőrzése; a prioritás inverzió és kezelése; kiéheztetés foglalással és várakoztatással; a szinkronizáció okozta teljesítményromlás; optimista zárolás; zárolás- és várakozásmentes szinkronizáció.
Fájl- és tárolórendszerek (4): fájl, könyvtár, kötet, meghajtó, fájlrendszer és partíció fogalma; könyvtárstruktúrák gráf felépítése példákkal (Windows 10, Linux és Android), elérési út, szimbolikus és rögzített linkek; fájlok tulajdonságai, POSIX hozzáférési-jogosultságok, ACL és setuid, setgid, sticky bit; fájlrendszerek adminisztrációja: formázás, csatlakoztatás, ellenőrzés, hangolás; elterjedt fájlrendszerek; biztonsági mentések; fájlrendszerek programozói interfésze, soros és közvetlen elérés, fájlleíró és nyitott fájl objektum; ajánlott és kötelező zárolás; fájlok memóriába ágyazott megosztott elérése; nem blokkoló és aszinkron műveletek; adatok elhelyezése a háttértáron, szuperblokk, metaadatok, allokációs táblák, üres helyek menedzselése; diszkpufferelés; naplózó fájlrendszerek; virtuális fájlrendszer interfész; fizikai tárolórendszerek: HDD és SSD; I/O ütemezés; tárolórendszer-virtualizáció: LVM, RAID, hálózati és elosztott fájlrendszerek, NFS és Ceph.
Virtualizáció (2): a virtualizáció fogalma, alkalmazási területei; a virtuális gépek osztályozása; hardver virtualizáció: hosted és bare metal megoldások; CPU virtualizáció: emuláció, trap and emulate, binary translation, para- és hardveres virtualizáció; memória virtualizáció: árnyék laptáblák, para- és hardveres virtualizáció; I/O virtualizáció: szoftveres, paravirtualizáció és hardvertámogatott megoldás; virtualizációs rendszerek áttekintése: gyártók és termékek; felhőalapú rendszerek: IaaS, PaaS, SaaS; konténervirtualizáció (Docker).
A laborok tematikája:
L1. Linux bevezető: telepítés, szolgáltatások beállítása, egyszerű webszerver konfigurálása.
L2. Linux asztali operációs rendszerek telepítése és vizsgálata.
L3. PHP és MySQL alapú komplex szolgáltatások (webshop, felhőtárhely) beüzemelése Linux szerveren.
W1. Windows alapok: felhasználók és folyamatok kezelése, munkamenetek, alkalmazásbolt, fájlrendszerek kezelése, szolgáltatásmenedzsment.
W2. Windows menedzsment: naplózás, menedzsment konzol, teljesítmény-monitorozás, memóriafigyelés, biztonsági házirend.
W3. Windows szerver beüzemelése.
V1. A virtualizáció alapjai labor: Vmware, VirtualBox, KVM- és felhőalapú (VPS) virtualizációs rendszerek alapismeretei gyakorlati példákon keresztül.
V2. Konténervirtualizáció: docker konténerek létrehozása, telepítése és használata, egy konténeralapú szolgáltatási környezet kialakítása.
V3. Privát felhő létrehozása: vállalati saját felhőalapú szolgáltatások kiépítése nyílt forráskódú szoftverek segítségével.