Operációs rendszerek

A tantárgy angol neve: Operating Systems

Adatlap utolsó módosítása: 2024. június 8.

Budapesti Műszaki és Gazdaságtudományi Egyetem
Villamosmérnöki és Informatikai Kar
BSc képzés, Mérnökinformatikus szak
Tantárgykód Szemeszter Követelmények Kredit Tantárgyfélév
VIMIAB03 3 3/0/1/f 5  
3. A tantárgyfelelős személy és tanszék Dr. Mészáros Tamás Csaba,
A tantárgy tanszéki weboldala http://www.mit.bme.hu/oktatas/targyak/VIMIAB03
4. A tantárgy előadója Dr. Mészáros Tamás Csaba, docens, MIT
5. A tantárgy az alábbi témakörök ismeretére épít Számítógép-architektúrák, programozási alapismeretek, algoritmus- és gráfelmélet alapjai
6. Előtanulmányi rend
Kötelező:
(TárgyEredmény( "BMEVIHIAA03" , "aláírás" , _ ) = -1
VAGY
TárgyEredmény( "BMEVIHIAA02" , "aláírás" , _ ) = -1 )

ÉS
NEM ( TárgyTeljesítve("BMEVIMIAB00")
VAGY
TárgyEredmény("BMEVIMIAB00", "FELVETEL", AktualisFelev()) > 0 ) ÉS

(Kepzes("5N-A8") VAGY
Kepzes("5NAA8"))

A fenti forma a Neptun sajátja, ezen technikai okokból nem változtattunk.

A kötelező előtanulmányi rend az adott szak honlapján és képzési programjában található.

7. A tantárgy célkitűzése A tárgy célja az operációs rendszerek feladatainak, felépítésének és működésének példákkal gazdagon illusztrált bemutatása a feladatkezelés és ütemezés, a memóriakezelés, a kommunikáció és szinkronizáció, a fájlrendszerek és a virtualizáció területén. A tantárgy és a hozzá tartozó laboratóriumi foglalkozások során komoly hangsúlyt kapnak gyakorlati ismeretek is, így a kurzus elvégzése elvezet az operációs rendszerek használatának mérnöki, készségszintű elsajátításához is. 
8. A tantárgy részletes tematikája Az előadások témakörei (zárójelben a körülbelüli óraszám):

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.

9. A tantárgy oktatásának módja (előadás, gyakorlat, laboratórium)

A kurzus során tantermi előadásokat tartunk az elméleti tananyag elsajátítására, valamint gyakorlati ismeretek átadására demonstrációk keretében.

A kurzus hét darab kétórás kötelező labort tartalmaz alapvetően három témakörben: Linux (L), Windows (W) és Virtualizáció (V). Ezek mellett évről-évre változó készletben emelt szintű, fakultatív IMSc laborokat is kínálunk az érdeklődő hallgatók számára. A teljes laborkészletből a résztvevők önállóan állíthatják össze a saját laborbeosztásukat.

Egyes előadásokhoz fakultatív házi feladatok is kapcsolódnak, amelyek a tananyag jobb megértését segítik. Ezek jellemzően programozási feladatok, amelyeket az adott előadás utáni időszakban lehet megoldani és beadni értékelése.

Nagyobb anyagrészek után fakultatív Moodle teszteket teszünk közzé, amelyek az elméleti részek elsajátításának önálló ellenőrzésére szolgálnak.

10. Követelmények

A szorgalmi időszakban:

(1) Egy írásbeli zárthelyi legalább megfelelt szintű teljesítése, ami az első részének min. 60%-os és a teljes zárthelyi min. 40%-os teljesítését jelenti.

(2) Legalább öt laboratóriumi foglalkozás sikeres teljesítése.

A félév során kiadott fakultatív feladatok és Moodle-tesztek megoldása nem feltétele a félévközi jegy megszerzésének.

A félévközi jegy meghatározása a zárthelyin elért pontszám, valamint fakultatív feladatok, Moodle-tesztek és haladó szintű laborfeladatok sikeres megoldásával szerzett pluszpontok alapján történik. A jeles osztályzat a pluszpontok nélkül is elérhető.

11. Pótlási lehetőségek

A zárthelyi egy alkalommal pótolható.

A laborfoglalkozások nem pótolhatók, de a teljes készletből csak öt labor teljesítése kötelező.

A fakultatív házi feladatok határidőn túli beadására és javítására nincs lehetőség.

12. Konzultációs lehetőségek A zárthelyi és annak pótlása előtt, valamint a fakultatív házi feladatok megoldásához konzultációs lehetőséget biztosítunk.
13. Jegyzet, tankönyv, felhasználható irodalom

Mészáros Tamás: Az operációs rendszerek alapjai (egyetemi jegyzet, elérhető a kari Moodle-ben).

Előadás-videók, demonstrációs anyagok a kari Moodle rendszerében.

Kóczy-Kondorosi (szerk.): Operációs rendszerek mérnöki megközelítésben.

Silberschatz-Galvin-Gagne: Operating System Concepts with Java.

Tanenbaum-Woodhull: Operációs rendszerek, tervezés és implementáció.

Russinovich-Solomon-Ionescu: Windows internals Part 1-2.

14. A tantárgy elvégzéséhez átlagosan szükséges tanulmányi munka
Kontakt óra56
Félévközi készülés órákra28
Felkészülés zárthelyire40
Házi feladat elkészítése0
Kijelölt írásos tananyag elsajátítása26
Vizsgafelkészülés0
Összesen150
15. A tantárgy tematikáját kidolgozta

Dr. Mészáros Tamás Csaba, docens, BME MIT
Eredics Péter, tanársegéd, BME MIT
Dr. Hullám Gábor, docens, BME MIT
Dr. Micskei Zoltán, docens, BME MIT

IMSc tematika és módszer

Az IMSc program hallgatói számára emelt szintű fakultatív házi és laborfeladatok megoldását kínáljuk.

IMSc pontozás A tantárgyból maximum 25 IMSc pont szerezhető az alábbiak szerint:

Fakultatív házi feladatok emelt szintű megoldásáért összesen maximum 15 IMSc pont szerezhető.

A laborok emelt szintű teljesítéséért összesen maximum 15 IMSc pont kapható.

Az IMSc pontok megszerzése az IMSc programban nem résztvevő hallgatók számára is biztosított.