Babeş–Bolyai Tudományegyetem Kolozsvár
Matematikai és Informatikai Kar  
 2006–2007-es  tanév,    3.  félév (informatika), 5. félév opcionális (matematika informatika)

I.	A tantárgy adatai

A tantárgy neve: Osztott operációs rendszerek 
Kód: MIC0002
Kreditszám: 6 (informatika), 4 (matematika informatika)
Hol tartják?  (előadás, laboratórium):
Mikor tarják? (előadás, laboratórium):

II.	Az oktatók adatai 
 
Előadás
Név, tudományos cím: dr. Robu Judit, adjunktus
Elérhetőség (e-mail, telefon): robu@cs.ubbcluj.ro 
Fogadóóra : az órarendtől függ
Laboratórium
Név, tudományos cím: Ruff Laura-Ildikó, tanársegéd
Elérhetőség (e-mail, telefon): laura@cs.ubbcluj.ro, 0745930952
Fogadóóra : az órarendtől függ

III.	A tantárgy leírása: 

Célok
–	megismerkedni az operációs rendszerek általános elméletével (fontosabb összetevők, funkcionalitás, tervezés, különböző algoritmusok, alapelvek)
–	megismerni a mai modern operációs rendszerek ismérveit
–	a folyamatok közti kommunikáció különböző eszközeit megismerni
–	a multitasking-ot illetve többszálúságot (multithreading)  támogató operációs rendszerekben fellépő problémák megértése, illetve az ezekkel kapcsolatos megoldási stratégiák elsajátítása

Tartalom
Bevezetés – operációs rendszerek főbb jellemzői; történelmi áttekintés
Folyamatok
Szálak
SMP architektúra
Mikrokernel
Versenyhelyzet
–	Kölcsönös kizárás
–	Holtpont
–	Éheztetetés
Ütemezés
Memóriakezelés
Ki-/bemenet kezelés
Osztott rendszerek

Kompetenciák
A tantárgy tanulmányozása során a diákok:
–	elsajátítják az operációs rendszerekkel kapcsolatos alapvető ismereteket (ezek felépítése, fontosabb alkotóelemeik, tervezési szempontok, fellépő problémák, és ezek megoldása, stb.) 
–	megismerkednek a modern operációs rendszerek jellemzőivel
–	kibővítik a folyamatokra vonatkozó ismereteiket, és különböző kommunikációs eszközök használatát sajátítják el
–	megismerkednek az erőforrásokért versengő folyamatok esetében fellépő alapvető problémákkal, és erre irányuló különböző megoldási stratégiákkal, illetve ezekkel kapcsolatos klasszikus feladatokkal
–	megismerik az operációs rendszerek fontosabb funkcióit ellátó komponensek által használt algoritmusokat

Módszerek
előadás, gyakorlat, plusz feladatok, beszélgetés

IV.	Kötelező könyvészet:

–	William Stallings, Operating Systems: Internals and Design Principles, Prentice Hall, 2001 
(http://williamstallings.com/OS/OS5e.html)
–	A. Silberschatz, P. Galvin and G. Gagne, Operating System Concepts, John Wiley & Sons, Inc., 2002
–	A Tannenbaum, Modern Operating Systems, Prentice Hall 2001

V.	Az oktatásban használt eszközök:
–	laboratóriumi gyakorlat alatt: az egyetem számítógépes hálózata
–	Interneten elérhető segédanyagok

VI.	A tevékenységek és ellenőrzések/részleges vizsgák órarendje:

Előadás:
Bevezetés
–	Operációs rendszerek fejlődésének története
–	Op. rendszer kérdéskörök
–	Modern rendszerekhez kapcsolódó fogalmak

Folyamatok
–	Folyamatok állapotai (jelentésük, állapotmodellek, mi tette szükségessé egy-egy új állapot bevezetését)
–	Állapotátmenetek
–	adatsruktúrák, melyekre az op. rendszernek szüksége van a folyamatkezeléshez 
–	Memória táblázatok
–	Ki-/bemeneti eszköz táblázatok
–	Állománytáblázatok
–	Folyamattáblázatok
–	Folyamatkezelés
–	Üzemmód váltás illetve folyamatváltás (melyik miben áll, különbség)
–	Operációs rendszer kernel-felépítése (folyamatkezelés szempontjából)
Szálak
–	A fogalom tisztázása (különbségek a folyamathoz képest)
–	Szálak használatának előnyei
–	Szálak kezelése (felhasználói- illetve kernelszintű szálak)
–	Szálak és folyamatok egymáshoz való viszonya
SMP szervezés
Mikrokernel
–	Előnyei, teljesítménye, felépítése

Versenyhelyzet
–	Alapfogalmak (kölcsönös kizárás, kritikus szakasz, holtpont, éheztetés)
–	Megoldandó problémák egymással (különböző mértékben) kölcsönhatásban levő folyamatok esetén
•	Kölcsönös kizárás
–	Kialakulásához szükséges feltételek
–	Kölcsönös kizárás megvalósítása
–	Szoftver megoldás (Dekker algoritmus, Peterson algoritmus)
–	Hardver támogatás (megszakítások letiltása, speciális utasítások –Test and Set, Exchange –)
–	Operációs rendszer támogatás (szemafor, monitor, üzenetek)
–	lásd még: tipikus példafeladatok (borbélyüzlet, termelő/fogyasztó, író/olvasó probléma)
•	Holtpont
–	Fellépése újrafelhasználható/elfogyó erőforrások esetén
–	Holtpont kialakulásának feltételei
–	Holtpont kezelés:
–	Holtpont megelőzése – deadlock prevention (a holtpont kialakulásához szükséges 4 feltétel valamelyikének megszüntetése által)
–	Holtpont kialakulásának kivédése – deadlock avoidance (folyamat kéréseinek megtagadása indulásból, erőforrás-hozzárendelés megtagadása – “bankár” algoritmus –)
–	Holtpont felismerése és feloldása
–	holtpont felismerésére szolgáló algoritmus
–	különböző megközelítések a holtpont feloldására
–	lásd még: tipikus példafeladat (étkező filozófusok problémája)

Ütemezés
–	Hosszútávú ütemezés
–	Középtávú ütemezés
–	Rövidtávú ütemezés
–	osztályozási kritériumok
–	ütemezési algoritmusok
–	FCFS, round robin, SPN, SRT, HRRN, visszacsatolásos
–	Fair share (elve)

Memóriakezelés
–	Memóriakezeléssel kapcsolatos követelmények
–	Memóriakezelési technikák:
–	Fix particionálás 
–	azonos/változó méretű particiók
–	előnye/hátránya
–	Dinamikus particionálás
–	előnye/hátránya
–	memóriablokk elhelyezése (best-fit, first-fit, next-fit algoritmus alapján)
–	“Buddy” rendszer 
–	Egyszerű lapozás
–	Egyszerű szegmentálás
•	Virtuális memóriakezelés
–	virtuális memória használatának előnye, alapfogalmak
–	lapozást támogató hardver
–	lapozás
–	szegmentálás
–	lapozás + szegmentálás
–	Operációs rendszer stratégiák
–	betöltési stratégia (fetch policy)
–	demand paging, prepaging
–	elhelyezés (placement)
–	lapcsere (replacement)
–	lapcsere algoritmusok (optimális, a legrégebben használt, FIFO, clock)
–	lap-pufferelés
–	rezidens halmaz kezelése
–	méret
–	hatáskör
–	kiírási stratégia (cleaning policy)
–	demand cleaning, precleaning
–	multiprogramozottság fokának ellenőrzése (load control)

Ki-/bemenet kezelés
–	ki-/bemeneti eszközök osztályozása
–	ki-/bemeneti technikák (programozott I/O, megszakításvezérelt I/O, DMA)
–	a ki-/bemenet kezelő funkció fejlődése
–	DMA (szerkezete, működése, szerepe, különböző konfigurációk)
–	tervezési szempontok
–	(logikai szerkezet
–	I/O pufferelés)
–	lemez teljesítménye
–	lemez ütemezése
–	ütemezési algoritmusok (FIFO, LIFO, SSTF, SCAN, CSCAN, N-step Scan, FSCAN)

Osztott rendszerek
–	Kliens/szerver rendszer
–	Üzenetközvetítés osztott rendszerekben
–	Cluster-ek

Laboratórium-témák:
–	rendszerhívások 
–	jelzések (signals) 
–	osztott memória - szinkronizálás nélkül 
–	üzenetsorok 
–	szemaforok és osztott memória 
–	POSIX/Solaris szálak (threads) - szinkronizálás nélkül 
–	POSIX/Solaris szálak (threads) - szinkronizálással 
–	memóriakiosztás szimulálása

VII.	Az értékelés módja:

A végső jegy egy elméleti (írásbeli) és egy gyakorlati  vizsga (számítógépen) átlagát jelenti (amennyiben mindkettő legalább 5-ös).

Laborokon lesznek helyben megoldandó feladatok is. Ezekkel az első 3, helyes megoldást bemutató hallgató pontokat szerezhet (azonos időben történő bemutatás esetén többen is). Hasonlóképpen pontokat lehet szerezni versenyeken való jó szerepléssel, illetve különböző tudományos vagy közhasznú tevékenységekkel (pl. bittologatók szervezése, előadások, TDK, stb.). Az így szerzett pontokat vizsgán beszámítjuk. 

VIII.	Szervezési kérdések, a különleges esetek kezelése:

Laboron a megjelenés kötelező. 2-nél több hiányzás esetén az első, 5-nél több esetén pedig a második vizsgaidőszakban sem lehet vizsgára jelentkezni. 

A laborfeladatok határidőre történő leadása esetén 8 pont jár, minden hét késéssel a pontszám feleződik. 3 hétnél nagyobb késéssel 0 pont jár az adott feladatra. Vizsgára az jelentkezhet, akinek minden feladatát elfogadtuk és elérte a lehetséges pontszám legalább felét.

Ha laborfeladatra ugyanazt a megoldást több hallgatótól is megkapjuk mindegyikük két újabb feladatot kell megoldjon az adott feladatcsoportból; ha ismétlődik a csalás csak pótszesszióban jelentkezhet vizsgára, ha minden feladatcsoportból 2-2 újabb feladatot megold. 

IX.	Ajánlott, de nem kötelező könyvészet:
–	Kis István, Kondorosi Károly, Operációs rendszerek, Műegyetemi kiadó, 1996
–	Boian F, Vancea A. Boian R. Bufnea D., Sterca A., Cobarzan C., Cojocar D., Sisteme de operare, Ed. Risoprint, 2006 
–	Boian F.M. Ferdean C.M., Boian R.F., Dragos R.C., Programare concurentă pe platforme Unix, Windows, Java. Ed. Albastră, grupul Microinformatica, Cluj, 2002
–	F. Boian, Systeme de operare interactive, Ed. Libris, 1994
–	I Ignat, A. Kacso, UNIX - Gestionarea proceselor, Microinformatica, 1995
–	Buzogány László, Folyamatok, http://cs.ubbcluj.ro/~robu/so2/folyamatok/index.htm
–	http://www.szabilinux.hu