A tantárgy adatlapja
1. A képzési program adatai
1.1 Felsőoktatási intézmény	Babeș-Bolyai Tudományegyetem	
1.2 Kar 	Matematika és Informatika Kar	
1.3  Intézet	Magyar Matematika és Informatika Intézet	
1.4 Szakterület	Informatika	
1.5 Képzési szint	Alapképzés	
1.6 Szak / Képesítés	Informatika – magyar vonal	

2. A tantárgy adatai
2.1 A tantárgy neve	Osztott operációs rendszerek	
2.2 Az előadásért felelős tanár neve	dr. Ruff Laura-Ildikó, adjunktus	
2.3 A szemináriumért felelős tanár neve	dr. Jakab Hunor, tanársegéd	
2.4 Tanulmányi év	II.	2.5 Félév	I.	2.6. Értékelés módja	Vizsga	2.7 Tantárgy típusa	Kötelező	

3. Teljes becsült idő (az oktatási tevékenység féléves óraszáma)
3.1 Heti óraszám	4	melyből: 3.2 előadás	2	3.3 szeminárium/labor	2	
3.4 Tantervben szereplő össz-óraszám	56	melyből: 3.5 előadás	28	3.6 szeminárium/labor	28	
A tanulmányi idő elosztása:	óra	
A tankönyv, a jegyzet, a szakirodalom vagy saját jegyzetek tanulmányozása	24	
Könyvtárban, elektronikus adatbázisokban vagy terepen való további tájékozódás	10	
Szemináriumok / laborok, házi feladatok, portofóliók, referátumok, esszék kidolgozása	24	
Egyéni készségfejlesztés (tutorálás)	5	
Vizsgák	6	
Más tevékenységek: ..................		
3.7 Egyéni munka össz-óraszáma	69	
3.8 A félév össz-óraszáma	125	
3.9 Kreditszám	5	

4. Előfeltételek (ha vannak)
4.1 Tantervi	•	Számítógép architektúrák	
4.2 Kompetenciabeli	•	C/C++ programozási készség, Unix alapú operációs rendszerek ismerete, shell programozás	

5. Feltételek (ha vannak)
5.1 Az előadás lebonyolításának feltételei	•	vetítőgép	
5.2 A szeminárium / labor lebonyolításának feltételei	•	saját felhasználói fiók a kar linux szerverén	

6. Elsajátítandó jellemző kompetenciák
Szakmai kompetenciák	
•	az operációs rendszerekkel kapcsolatos kérdéskörökben való jártasság: fontosabb összetevők, funkcionalitás, tervezés, különböző algoritmusok, alapelvek ismerete
•	a mai modern operációs rendszerek felépítésével kapcsolatos kérdéskörök ismerete
•	folyamatok közti kommunikációs lehetőségek ismerete/használata, többszálúsággal kapcsolatos alapelvek ismerete és ezek gyakorlati alkalmazása, szinkronizéciós eszközök ismerete/használata, szinkronizációs problémák megoldása	
Transzverzális kompetenciák 	
•	mivel az operációs rendszer vezérli gyakorlatilag a különböző felhasználói folyamatok futását, az ennek működésébe való betekintés, a háttérben zajó események mélyebb  ismerete segít a hatékonyabb programfejlesztésben.  
•	feladatmegoldó készség, kreatív gondolkodás	

7. A tantárgy célkitűzései (az elsajátítandó jellemző kompetenciák alapján)
7.1 A tantárgy általános célkitűzése	•	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 felépítésével kapcsolatos kérdésköröket	
7.2 A tantárgy sajátos célkitűzései

	•	a folyamatok közti kommunikáció különböző eszközeinek megismerése
•	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 	

8. A tantárgy tartalma
8.1 Előadás	Didaktikai módszerek	Megjegyzések	
1.  hét
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	előadás, vetítés,  magyarázat, dialógus, konkrét példákon keresztül történő szemléltetés, grafikus ábrázolás		
2. hét
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)
	előadás, vetítés, grafikus ábrázolás, magyarázat, problémafelvetés, korábbi ismeretek aktivizálása		
3-6. hét
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)
-	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
-	tipikus példafeladat (étkező filozófusok problémája)	előadás, vetítés, konkrét példákon keresztül történő szemléltetés, magyarázat, beszélgetés-vita, fakultatív önálló munka		
7. hét

Szinkronizáló eszközök a gyakorlatban
-	IPC csomag szinkronizáló eszközei
-	POSIX szinkronizáló eszközök
-	Példaprogramok	gyakorlati példák bemutatása, megbeszélése, dialógus		
8. hét

Szálak, SMP architektúra
-	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	előadás, vetítés, magyarázat, konkrét példákon keresztül történő szemléltetés, grafikus ábrázolás, problémafelvetés		
9. hét

Ü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)	előadás, vetítés, magyarázat, dialógus, konkrét példákon keresztül történő szemléltetés, grafikus ábrázolás		
10-12. hét
Memóriakezelés

-	Memóriakezeléssel kapcsolatos követelmények
-	Memóriakezelési technikák:
-	Fix particionálás 
-	azonos/változó méretű partíció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ória kezelése
-	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)
-	elhelyezés (placement)
-	lapcsere (replacement)
-	lapcsere algoritmusok (optimális, a legrégebben használt, FIFO, clock)
-	lap-pufferelés
-	rezidens halmaz kezelése
-	kiírási stratégia (cleaning policy)	vetítés, előadás, magyarázat, problémafelvetés		
13. hét

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)	előadás, vetítés, magyarázat, grafikus ábrázolás		
14. hét

Osztott rendszerek
-	kliens-szerver kapcsolat
-	osztott üzenetküldés
-	távoli eljáráshívás	előadás, vetítés, magyarázat, grafikus ábrázolás, dialógus		
Könyvészet
1.	William Stallings, Operating Systems: Internals and Design Principles, 7th ed., Prentice Hall, 2011 
2.	(www.WilliamStallings.com)
3.	A Tannenbaum, Modern Operating Systems 3rd Ed., Prentice Hall 2007
4.	A. Silberschatz, P. Galvin and G. Gagne, Operating System Concepts, John Wiley & Sons, Inc., 2002
5.	BOIAN F, VANCEA A. BOIAN R. BUFNEA D., STERCA A., COBARZAN C., COJOCAR D. Sisteme de operare Ed. Risoprint, 2006 
	
8.2 Szeminárium / Labor	Didaktikai módszerek	Megjegyzések	
1. rendszerhívások 	házi feladatok megbeszélése/ bemutatása/hibajavítás, fakultatív pluszfeladatok		
2. jelzések (signals)			
3-4. osztott memória - szinkronizálás nélkül			
5-6. szemaforok és osztott memória			
7-8. üzenetsorok			
9. POSIX/Solaris szálak (threads) - szinkronizálás nélkül			
10-11. POSIX/Solaris szálak (threads) – szinkronizálással			
12-13. Ütemezés			
14. labortevékenység lezárása			
Könyvészet	
Buzogány László, Folyamatok, http://www.cs.ubbcluj.ro/~laura/so2/dokumentacio/
Programming in C UNIX System Calls and Subroutines using C, http://www.cs.cf.ac.uk/Dave/C/

9. Az episztemikus közösségek képviselői, a szakmai egyesületek és a szakterület reprezentatív munkáltatói elvárásainak összhangba hozása a tantárgy tartalmával.
•	 A tantárgy tartalma megegyezik az egyetemi oktatásban a fontosabb egyetemeken oktatott, operációs rendszerek általános elméletével foglalkozó tantárgyak tartalmával.

10. Értékelés
Tevékenység típusa	10.1 Értékelési kritériumok	10.2 Értékelési módszerek	10.3 Aránya a végső jegyben	
10.4 Előadás 	Válasz helyessége	Rövid teszt kurzusonként (T)	25%	
	Alapfogalmak ismerete, tanult algoritmusok alkalmazásának készsége	Írásbeli vizsga (V)	20%	
10.5 Szeminárium / Labor	Program helyessége, határidő betartása, formai követelményeknek való megfelelés	Labor-házifeladatok (L)	35%	
	Labor idején megoldott, helyesen működő program, bittologatók előadás/részvétel	Pluszpontok (fakultatív pluszfeladatok, bittologatók) (PP)		
	helyesen működő program	Laborvizsga (LV)	20%	
10.6 A teljesítmény minimumkövetelményei	

•	Laborvizsgán elért 25 pont (konkrétan megadott alapfunkcionalitások implementálása)
•	Írásbeli vizsgán elért 20 pont a lehetséges 40-ből
•	Nincs 2-nél több indokolatlan, laborórákról való hiányzás 
•	Vizsgajegy ≥ 5, ahol Vizsgajegy =  (T+L+PP+V+LV)*0.05 

Kitöltés dátuma			Előadás felelőse			Szeminárium felelőse
2012.09.11.				...............................			...................................

Az intézeti jóváhagyás dátuma				Intézetigazgató	
..........................						..........................