<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="hu">
	<id>https://vik.wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bolla+D%C3%A1vid</id>
	<title>VIK Wiki - Felhasználó közreműködései [hu]</title>
	<link rel="self" type="application/atom+xml" href="https://vik.wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bolla+D%C3%A1vid"/>
	<link rel="alternate" type="text/html" href="https://vik.wiki/Speci%C3%A1lis:Szerkeszt%C5%91_k%C3%B6zrem%C5%B1k%C3%B6d%C3%A9sei/Bolla_D%C3%A1vid"/>
	<updated>2026-05-05T23:55:44Z</updated>
	<subtitle>Felhasználó közreműködései</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://vik.wiki/index.php?title=Rendszermodellez%C3%A9s_(r%C3%A9gi)&amp;diff=187229</id>
		<title>Rendszermodellezés (régi)</title>
		<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=Rendszermodellez%C3%A9s_(r%C3%A9gi)&amp;diff=187229"/>
		<updated>2015-12-01T22:17:48Z</updated>

		<summary type="html">&lt;p&gt;Bolla Dávid: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tantárgy|nev=Rendszermodellezés|tárgykód=VIMIA405|régitárgykód=VIMIA401|kredit=5|felev=7|nagyzh=1|kereszt=változó|kiszh=0|vizsga=nincs|hf=2 db|szak=info|tad=https://www.vik.bme.hu/kepzes/targyak/VIMIA401/|targyhonlap=https://www.inf.mit.bme.hu/edu/courses/remo/|levlista=remoATsch.bme.hu }}&lt;br /&gt;
&lt;br /&gt;
{{Régi tárgy|Rendszermodellezés}}&lt;br /&gt;
&lt;br /&gt;
== Követelmények ==&lt;br /&gt;
&lt;br /&gt;
A tárgy átalakult. Már félévközis.&lt;br /&gt;
&lt;br /&gt;
* Egy darab HF (2 részből áll - 2 leadási határidővel) - bármelyiket nem adod be időben pótolhatod, cserébe nincs konzulens + egy darab ZH&lt;br /&gt;
* Heti 2 előadás van, kötelező jelenléti ív nincs.&lt;br /&gt;
* A gyakorlatok a 3. héttől a 10. hétig tartanak, kötelező jelenléti ív nincs.&lt;br /&gt;
* Ajánlott rövidítések: &#039;&#039;&#039;ReMo&#039;&#039;&#039;&lt;br /&gt;
== Segédanyagok ==&lt;br /&gt;
&lt;br /&gt;
*[[Média: ReMo röviden.pdf|Összefoglaló a diák alapján]]&lt;br /&gt;
*[https://docs.google.com/document/d/1_1W1hkHEn2ixJykilgPm99XxWJatmq7hu57ktJw2Wss/edit Gyak feladatok szerkeszthető doksi]&lt;br /&gt;
*[https://docs.google.com/document/d/1Mf_n4LuLEN5Efx7S_LDPrS26AiPdhkonmtlSAlKuL_8/edit ZH és gyak feladatok vegyesen]&lt;br /&gt;
&lt;br /&gt;
== Gyakorlatok ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. gyakorlat: [https://inf.mit.bme.hu/edu/courses/materials/rendszermodellez%C3%A9s/2014-%C5%91sz/1-gyakorlat-modellez%C3%A9s-alapok modellezés alapok]&lt;br /&gt;
&lt;br /&gt;
2. gyakorlat: [https://inf.mit.bme.hu/edu/courses/materials/rendszermodellez%C3%A9s/2014-%C5%91sz/2-gyakorlat-%C3%A1llapot-alap%C3%BA-modellez%C3%A9s állapot alapú modellezés]&lt;br /&gt;
&lt;br /&gt;
3. gyakorlat: [https://inf.mit.bme.hu/edu/courses/materials/rendszermodellez%C3%A9s/2014-%C5%91sz/3-gyakorlat-felt%C3%A1r%C3%B3-adatelemz%C3%A9s feltáró adatelemzés]&lt;br /&gt;
&lt;br /&gt;
4. gyakorlat: [https://inf.mit.bme.hu/edu/courses/materials/rendszermodellez%C3%A9s/2014-%C5%91sz/4-gyakorlat-teljes%C3%ADtm%C3%A9nyelemz%C3%A9s teljesítményelemzés]&lt;br /&gt;
&lt;br /&gt;
5. gyakorlat: [https://inf.mit.bme.hu/edu/courses/materials/rendszermodellez%C3%A9s/2014-%C5%91sz/5-gyakorlat-k%C3%ADs%C3%A9rlettervez%C3%A9s-%C3%A9s-adatfolyamh%C3%A1l%C3%B3k kísérlettervezés és adatfolyamhálók]&lt;br /&gt;
&lt;br /&gt;
6. gyakorlat: [https://inf.mit.bme.hu/edu/courses/materials/rendszermodellez%C3%A9s/2014-%C5%91sz/6-gyarkorlat-hibamodellez%C3%A9s hibamodellezés]&lt;br /&gt;
&lt;br /&gt;
Van táltos gyakorlat is, Dr. Pataricza András tartja.&lt;br /&gt;
&lt;br /&gt;
== Házi ==&lt;br /&gt;
Egy &amp;quot;e-Business&amp;quot; rendszer modellezése az IBM WebSphere programmal.&lt;br /&gt;
A házi feladatot a MIT tanszék VCL cloudban kell megoldani. Érdemes időben nekilátni, mert a beadás környékén a rendszer túlterhelődhet.&lt;br /&gt;
Pontos házi feladat feltételek [https://www.inf.mit.bme.hu/edu/courses/remo/hazi-feltetelek itt megtalálhatóak]&lt;br /&gt;
Házi feladat tanácsok pedig [https://www.inf.mit.bme.hu/edu/courses/remo/hazi-tanacsok itt találhatóak]&lt;br /&gt;
&lt;br /&gt;
=== 1. Házi ===&lt;br /&gt;
Kezdeti modell (6. hét)&lt;br /&gt;
* Kiadott feladat/Önálló ötlet alapján egy üzleti folyamat specifikációja&lt;br /&gt;
* Folyamattal kapcsolatos minimális követelmények a weboldalon&lt;br /&gt;
* Erőforrások+elemzésszempontjai&lt;br /&gt;
* Elkészített folyamatmodell + erőforráshozzárendelés&lt;br /&gt;
&lt;br /&gt;
=== 2. Házi ===&lt;br /&gt;
Végleges modell (13. hét)&lt;br /&gt;
* Analízisvégrehajtása&lt;br /&gt;
* Eredmények értékelése jegyzőkönyvben&lt;br /&gt;
* Szóbeli védés a 14. héten&lt;br /&gt;
&lt;br /&gt;
=== Szorgalmi házi ===&lt;br /&gt;
&lt;br /&gt;
Kétféle szorgalmi házi is létezik, [https://www.inf.mit.bme.hu/edu/courses/materials/rendszermodellezés/2012-ősz/szorgalmi-feladat-ki%C3%ADrás itt megtalálható a pontos leírása]&lt;br /&gt;
&lt;br /&gt;
== ZH ==&lt;br /&gt;
Egy darab ZH van a kb. október végen. Elméleti kérdésekből, illetve két gyakorlati feladatból áll.&lt;br /&gt;
&lt;br /&gt;
=== Elméleti kérdések ===&lt;br /&gt;
Pár mondatban megválaszolható kérdések, ha jól emlékszem 5-6 darab volt belőle. Ezekhez hasonlóak:&lt;br /&gt;
* Little törvény mit mond ki és mikor érvényes&lt;br /&gt;
* nyílt/zárt világ modell fogalma&lt;br /&gt;
* taxonómia/ontológia fogalma&lt;br /&gt;
* lineáris/exponenciális regresszió fogalma, példák&lt;br /&gt;
* benchmark, fajtái&lt;br /&gt;
&lt;br /&gt;
=== Feladatok ===&lt;br /&gt;
Gyakorlaton megoldott példák szoktak szerepelni:&lt;br /&gt;
* Ontológia készítése. (1. gyakorlathoz hasonlóak)&lt;br /&gt;
* Diagramok felismerése, azok értelmezése. (2. gyakorlathoz hasonlóak)&lt;br /&gt;
* Teljesítménymodellezési számolós feladatok (3. gyakorlathoz hasonlóak)&lt;br /&gt;
* Kísérlettervezési számolós feladatok (4. gyakorlathoz hasonlóak)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vizsga ==&lt;br /&gt;
Őszi félévben decemberben két vizsga van és januárban is kettő. A decemberi első vizsga élővizsga, bárki mehet rá. (Elsősorban a záróvizsgások érdekében van így)&lt;br /&gt;
A vizsga elméleti kérdésekből, illetve három gyakorlati feladatból áll.&lt;br /&gt;
&lt;br /&gt;
=== Elméleti kérdések ===&lt;br /&gt;
Pár mondatban megválaszolható kérdések, ha jól emlékszem 6-7 darab volt belőle. A ZH-n szereplő kérdések is elöfordulhatnak, illetve a ZH utáni anyagból is természetesen.&lt;br /&gt;
&lt;br /&gt;
=== Feladatok ===&lt;br /&gt;
Gyakorlaton megoldott példák szoktak szerepelni:&lt;br /&gt;
* Ontológia készítése. (1. gyakorlathoz hasonlóak)&lt;br /&gt;
* Diagramok felismerése, azok értelmezése. (2. gyakorlathoz hasonlóak)&lt;br /&gt;
* Teljesítménymodellezési számolós feladatok (4. gyakorlathoz hasonlóak)&lt;br /&gt;
* Kísérlettervezési számolós feladatok (5. gyakorlathoz hasonlóak)&lt;br /&gt;
* Adatfolyamhálók rajzolása (5. gyakorlathoz hasonlóak)&lt;br /&gt;
* Szolgáltatásbiztonság számolós feladatok (6. gyakorlathoz hasonlóak)&lt;br /&gt;
&lt;br /&gt;
== Hasznos linkek ==&lt;br /&gt;
* Meghibásodási adatok egyenesen a tanszéktől: https://wiki.inf.mit.bme.hu/twiki/pub/InfInf/RelModel/meghibasodasi_adatok.pdf&lt;br /&gt;
&lt;br /&gt;
== Tippek ==&lt;br /&gt;
&lt;br /&gt;
Előadásokra érdemes bemenni, de anélkül is megtanulható, csak nem érted meg annyira az anyagot csak a diákból. Gyakorlatokra nagyon érdemes bemenni, mert az ott megoldott példákhoz hasonló feladatok lesznek ZH-n és vizsgán. Házi kiadó órára mindenképp érdemes bemenni, ott mutatják be az IBM WebSphere szoftver használatát, illetve ott kapjuk meg a szoftver image-et.&lt;br /&gt;
&lt;br /&gt;
== Kedvcsináló ==&lt;br /&gt;
&lt;br /&gt;
Szerintem a legjobb/korrektebb/könnyebb tárgy a három elágazó közül. Ha informatikai technológiák szakirányon vagy, akkor pedig van is átfedés szakirányos tárggyal, így pláne nem nehéz. A zh-ra érdemes felkészülni mert 4-es zh-val szorgalmi feladatot lehet írni, a szorgalmi feladat pedig egyáltalán nem vészes, ellenben megajánlott ötöst ér.&lt;br /&gt;
&lt;br /&gt;
--[[Szerkesztő:Ferrero|Szabó Csaba]] ([[Szerkesztővita:Ferrero|vita]]) 2013. január 3., 19:15 (CET)&lt;br /&gt;
&lt;br /&gt;
{{Lábléc_-_Mérnök_informatikus_alapszak}}&lt;/div&gt;</summary>
		<author><name>Bolla Dávid</name></author>
	</entry>
	<entry>
		<id>https://vik.wiki/index.php?title=Rendszermodellez%C3%A9s_(r%C3%A9gi)&amp;diff=187191</id>
		<title>Rendszermodellezés (régi)</title>
		<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=Rendszermodellez%C3%A9s_(r%C3%A9gi)&amp;diff=187191"/>
		<updated>2015-11-23T09:54:01Z</updated>

		<summary type="html">&lt;p&gt;Bolla Dávid: /* Szorgalmi házi */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tantárgy|nev=Rendszermodellezés|tárgykód=VIMIA405|régitárgykód=VIMIA401|kredit=5|felev=7|nagyzh=1|kereszt=változó|kiszh=0|vizsga=nincs|hf=2 db|szak=info|tad=https://www.vik.bme.hu/kepzes/targyak/VIMIA401/|targyhonlap=https://www.inf.mit.bme.hu/edu/courses/remo/|levlista=remoATsch.bme.hu }}&lt;br /&gt;
&lt;br /&gt;
{{Régi tárgy|Rendszermodellezés}}&lt;br /&gt;
&lt;br /&gt;
== Követelmények ==&lt;br /&gt;
&lt;br /&gt;
A tárgy átalakult. Már félévközis.&lt;br /&gt;
&lt;br /&gt;
* Egy darab HF (2 részből áll - 2 leadási határidővel) - bármelyiket nem adod be időben pótolhatod, cserébe nincs konzulens + egy darab ZH&lt;br /&gt;
* Heti 2 előadás van, kötelező jelenléti ív nincs.&lt;br /&gt;
* A gyakorlatok a 3. héttől a 10. hétig tartanak, kötelező jelenléti ív nincs.&lt;br /&gt;
* Ajánlott rövidítések: &#039;&#039;&#039;ReMo&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Gyakorlatok ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. gyakorlat: [https://inf.mit.bme.hu/edu/courses/materials/rendszermodellez%C3%A9s/2014-%C5%91sz/1-gyakorlat-modellez%C3%A9s-alapok modellezés alapok]&lt;br /&gt;
&lt;br /&gt;
2. gyakorlat: [https://inf.mit.bme.hu/edu/courses/materials/rendszermodellez%C3%A9s/2014-%C5%91sz/2-gyakorlat-%C3%A1llapot-alap%C3%BA-modellez%C3%A9s állapot alapú modellezés]&lt;br /&gt;
&lt;br /&gt;
3. gyakorlat: [https://inf.mit.bme.hu/edu/courses/materials/rendszermodellez%C3%A9s/2014-%C5%91sz/3-gyakorlat-felt%C3%A1r%C3%B3-adatelemz%C3%A9s feltáró adatelemzés]&lt;br /&gt;
&lt;br /&gt;
4. gyakorlat: [https://inf.mit.bme.hu/edu/courses/materials/rendszermodellez%C3%A9s/2014-%C5%91sz/4-gyakorlat-teljes%C3%ADtm%C3%A9nyelemz%C3%A9s teljesítményelemzés]&lt;br /&gt;
&lt;br /&gt;
5. gyakorlat: [https://inf.mit.bme.hu/edu/courses/materials/rendszermodellez%C3%A9s/2014-%C5%91sz/5-gyakorlat-k%C3%ADs%C3%A9rlettervez%C3%A9s-%C3%A9s-adatfolyamh%C3%A1l%C3%B3k kísérlettervezés és adatfolyamhálók]&lt;br /&gt;
&lt;br /&gt;
6. gyakorlat: [https://inf.mit.bme.hu/edu/courses/materials/rendszermodellez%C3%A9s/2014-%C5%91sz/6-gyarkorlat-hibamodellez%C3%A9s hibamodellezés]&lt;br /&gt;
&lt;br /&gt;
Van táltos gyakorlat is, Dr. Pataricza András tartja.&lt;br /&gt;
&lt;br /&gt;
== Házi ==&lt;br /&gt;
Egy &amp;quot;e-Business&amp;quot; rendszer modellezése az IBM WebSphere programmal.&lt;br /&gt;
A házi feladatot a MIT tanszék VCL cloudban kell megoldani. Érdemes időben nekilátni, mert a beadás környékén a rendszer túlterhelődhet.&lt;br /&gt;
Pontos házi feladat feltételek [https://www.inf.mit.bme.hu/edu/courses/remo/hazi-feltetelek itt megtalálhatóak]&lt;br /&gt;
Házi feladat tanácsok pedig [https://www.inf.mit.bme.hu/edu/courses/remo/hazi-tanacsok itt találhatóak]&lt;br /&gt;
&lt;br /&gt;
=== 1. Házi ===&lt;br /&gt;
Kezdeti modell (6. hét)&lt;br /&gt;
* Kiadott feladat/Önálló ötlet alapján egy üzleti folyamat specifikációja&lt;br /&gt;
* Folyamattal kapcsolatos minimális követelmények a weboldalon&lt;br /&gt;
* Erőforrások+elemzésszempontjai&lt;br /&gt;
* Elkészített folyamatmodell + erőforráshozzárendelés&lt;br /&gt;
&lt;br /&gt;
=== 2. Házi ===&lt;br /&gt;
Végleges modell (13. hét)&lt;br /&gt;
* Analízisvégrehajtása&lt;br /&gt;
* Eredmények értékelése jegyzőkönyvben&lt;br /&gt;
* Szóbeli védés a 14. héten&lt;br /&gt;
&lt;br /&gt;
=== Szorgalmi házi ===&lt;br /&gt;
&lt;br /&gt;
Eltörölték.&lt;br /&gt;
&lt;br /&gt;
== ZH ==&lt;br /&gt;
Egy darab ZH van a kb. október végen. Elméleti kérdésekből, illetve két gyakorlati feladatból áll.&lt;br /&gt;
&lt;br /&gt;
=== Elméleti kérdések ===&lt;br /&gt;
Pár mondatban megválaszolható kérdések, ha jól emlékszem 5-6 darab volt belőle. Ezekhez hasonlóak:&lt;br /&gt;
* Little törvény mit mond ki és mikor érvényes&lt;br /&gt;
* nyílt/zárt világ modell fogalma&lt;br /&gt;
* taxonómia/ontológia fogalma&lt;br /&gt;
* lineáris/exponenciális regresszió fogalma, példák&lt;br /&gt;
* benchmark, fajtái&lt;br /&gt;
&lt;br /&gt;
=== Feladatok ===&lt;br /&gt;
Gyakorlaton megoldott példák szoktak szerepelni:&lt;br /&gt;
* Ontológia készítése. (1. gyakorlathoz hasonlóak)&lt;br /&gt;
* Diagramok felismerése, azok értelmezése. (2. gyakorlathoz hasonlóak)&lt;br /&gt;
* Teljesítménymodellezési számolós feladatok (3. gyakorlathoz hasonlóak)&lt;br /&gt;
* Kísérlettervezési számolós feladatok (4. gyakorlathoz hasonlóak)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vizsga ==&lt;br /&gt;
Őszi félévben decemberben két vizsga van és januárban is kettő. A decemberi első vizsga élővizsga, bárki mehet rá. (Elsősorban a záróvizsgások érdekében van így)&lt;br /&gt;
A vizsga elméleti kérdésekből, illetve három gyakorlati feladatból áll.&lt;br /&gt;
&lt;br /&gt;
=== Elméleti kérdések ===&lt;br /&gt;
Pár mondatban megválaszolható kérdések, ha jól emlékszem 6-7 darab volt belőle. A ZH-n szereplő kérdések is elöfordulhatnak, illetve a ZH utáni anyagból is természetesen.&lt;br /&gt;
&lt;br /&gt;
=== Feladatok ===&lt;br /&gt;
Gyakorlaton megoldott példák szoktak szerepelni:&lt;br /&gt;
* Ontológia készítése. (1. gyakorlathoz hasonlóak)&lt;br /&gt;
* Diagramok felismerése, azok értelmezése. (2. gyakorlathoz hasonlóak)&lt;br /&gt;
* Teljesítménymodellezési számolós feladatok (4. gyakorlathoz hasonlóak)&lt;br /&gt;
* Kísérlettervezési számolós feladatok (5. gyakorlathoz hasonlóak)&lt;br /&gt;
* Adatfolyamhálók rajzolása (5. gyakorlathoz hasonlóak)&lt;br /&gt;
* Szolgáltatásbiztonság számolós feladatok (6. gyakorlathoz hasonlóak)&lt;br /&gt;
&lt;br /&gt;
== Hasznos linkek ==&lt;br /&gt;
* Meghibásodási adatok egyenesen a tanszéktől: https://wiki.inf.mit.bme.hu/twiki/pub/InfInf/RelModel/meghibasodasi_adatok.pdf&lt;br /&gt;
&lt;br /&gt;
== Tippek ==&lt;br /&gt;
&lt;br /&gt;
Előadásokra érdemes bemenni, de anélkül is megtanulható, csak nem érted meg annyira az anyagot csak a diákból. Gyakorlatokra nagyon érdemes bemenni, mert az ott megoldott példákhoz hasonló feladatok lesznek ZH-n és vizsgán. Házi kiadó órára mindenképp érdemes bemenni, ott mutatják be az IBM WebSphere szoftver használatát, illetve ott kapjuk meg a szoftver image-et.&lt;br /&gt;
&lt;br /&gt;
== Kedvcsináló ==&lt;br /&gt;
&lt;br /&gt;
Szerintem a legjobb/korrektebb/könnyebb tárgy a három elágazó közül. Ha informatikai technológiák szakirányon vagy, akkor pedig van is átfedés szakirányos tárggyal, így pláne nem nehéz. A zh-ra érdemes felkészülni mert 4-es zh-val szorgalmi feladatot lehet írni, a szorgalmi feladat pedig egyáltalán nem vészes, ellenben megajánlott ötöst ér.&lt;br /&gt;
&lt;br /&gt;
--[[Szerkesztő:Ferrero|Szabó Csaba]] ([[Szerkesztővita:Ferrero|vita]]) 2013. január 3., 19:15 (CET)&lt;br /&gt;
&lt;br /&gt;
{{Lábléc_-_Mérnök_informatikus_alapszak}}&lt;/div&gt;</summary>
		<author><name>Bolla Dávid</name></author>
	</entry>
	<entry>
		<id>https://vik.wiki/index.php?title=Rendszermodellez%C3%A9s_(r%C3%A9gi)&amp;diff=187190</id>
		<title>Rendszermodellezés (régi)</title>
		<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=Rendszermodellez%C3%A9s_(r%C3%A9gi)&amp;diff=187190"/>
		<updated>2015-11-23T09:52:51Z</updated>

		<summary type="html">&lt;p&gt;Bolla Dávid: /* Követelmények */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tantárgy|nev=Rendszermodellezés|tárgykód=VIMIA405|régitárgykód=VIMIA401|kredit=5|felev=7|nagyzh=1|kereszt=változó|kiszh=0|vizsga=nincs|hf=2 db|szak=info|tad=https://www.vik.bme.hu/kepzes/targyak/VIMIA401/|targyhonlap=https://www.inf.mit.bme.hu/edu/courses/remo/|levlista=remoATsch.bme.hu }}&lt;br /&gt;
&lt;br /&gt;
{{Régi tárgy|Rendszermodellezés}}&lt;br /&gt;
&lt;br /&gt;
== Követelmények ==&lt;br /&gt;
&lt;br /&gt;
A tárgy átalakult. Már félévközis.&lt;br /&gt;
&lt;br /&gt;
* Egy darab HF (2 részből áll - 2 leadási határidővel) - bármelyiket nem adod be időben pótolhatod, cserébe nincs konzulens + egy darab ZH&lt;br /&gt;
* Heti 2 előadás van, kötelező jelenléti ív nincs.&lt;br /&gt;
* A gyakorlatok a 3. héttől a 10. hétig tartanak, kötelező jelenléti ív nincs.&lt;br /&gt;
* Ajánlott rövidítések: &#039;&#039;&#039;ReMo&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Gyakorlatok ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. gyakorlat: [https://inf.mit.bme.hu/edu/courses/materials/rendszermodellez%C3%A9s/2014-%C5%91sz/1-gyakorlat-modellez%C3%A9s-alapok modellezés alapok]&lt;br /&gt;
&lt;br /&gt;
2. gyakorlat: [https://inf.mit.bme.hu/edu/courses/materials/rendszermodellez%C3%A9s/2014-%C5%91sz/2-gyakorlat-%C3%A1llapot-alap%C3%BA-modellez%C3%A9s állapot alapú modellezés]&lt;br /&gt;
&lt;br /&gt;
3. gyakorlat: [https://inf.mit.bme.hu/edu/courses/materials/rendszermodellez%C3%A9s/2014-%C5%91sz/3-gyakorlat-felt%C3%A1r%C3%B3-adatelemz%C3%A9s feltáró adatelemzés]&lt;br /&gt;
&lt;br /&gt;
4. gyakorlat: [https://inf.mit.bme.hu/edu/courses/materials/rendszermodellez%C3%A9s/2014-%C5%91sz/4-gyakorlat-teljes%C3%ADtm%C3%A9nyelemz%C3%A9s teljesítményelemzés]&lt;br /&gt;
&lt;br /&gt;
5. gyakorlat: [https://inf.mit.bme.hu/edu/courses/materials/rendszermodellez%C3%A9s/2014-%C5%91sz/5-gyakorlat-k%C3%ADs%C3%A9rlettervez%C3%A9s-%C3%A9s-adatfolyamh%C3%A1l%C3%B3k kísérlettervezés és adatfolyamhálók]&lt;br /&gt;
&lt;br /&gt;
6. gyakorlat: [https://inf.mit.bme.hu/edu/courses/materials/rendszermodellez%C3%A9s/2014-%C5%91sz/6-gyarkorlat-hibamodellez%C3%A9s hibamodellezés]&lt;br /&gt;
&lt;br /&gt;
Van táltos gyakorlat is, Dr. Pataricza András tartja.&lt;br /&gt;
&lt;br /&gt;
== Házi ==&lt;br /&gt;
Egy &amp;quot;e-Business&amp;quot; rendszer modellezése az IBM WebSphere programmal.&lt;br /&gt;
A házi feladatot a MIT tanszék VCL cloudban kell megoldani. Érdemes időben nekilátni, mert a beadás környékén a rendszer túlterhelődhet.&lt;br /&gt;
Pontos házi feladat feltételek [https://www.inf.mit.bme.hu/edu/courses/remo/hazi-feltetelek itt megtalálhatóak]&lt;br /&gt;
Házi feladat tanácsok pedig [https://www.inf.mit.bme.hu/edu/courses/remo/hazi-tanacsok itt találhatóak]&lt;br /&gt;
&lt;br /&gt;
=== 1. Házi ===&lt;br /&gt;
Kezdeti modell (6. hét)&lt;br /&gt;
* Kiadott feladat/Önálló ötlet alapján egy üzleti folyamat specifikációja&lt;br /&gt;
* Folyamattal kapcsolatos minimális követelmények a weboldalon&lt;br /&gt;
* Erőforrások+elemzésszempontjai&lt;br /&gt;
* Elkészített folyamatmodell + erőforráshozzárendelés&lt;br /&gt;
&lt;br /&gt;
=== 2. Házi ===&lt;br /&gt;
Végleges modell (13. hét)&lt;br /&gt;
* Analízisvégrehajtása&lt;br /&gt;
* Eredmények értékelése jegyzőkönyvben&lt;br /&gt;
* Szóbeli védés a 14. héten&lt;br /&gt;
&lt;br /&gt;
=== Szorgalmi házi ===&lt;br /&gt;
Kétféle szorgalmi házi is létezik, [https://www.inf.mit.bme.hu/edu/courses/materials/rendszermodellezés/2012-ősz/szorgalmi-feladat-ki%C3%ADrás itt megtalálható a pontos leírása]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ZH ==&lt;br /&gt;
Egy darab ZH van a kb. október végen. Elméleti kérdésekből, illetve két gyakorlati feladatból áll.&lt;br /&gt;
&lt;br /&gt;
=== Elméleti kérdések ===&lt;br /&gt;
Pár mondatban megválaszolható kérdések, ha jól emlékszem 5-6 darab volt belőle. Ezekhez hasonlóak:&lt;br /&gt;
* Little törvény mit mond ki és mikor érvényes&lt;br /&gt;
* nyílt/zárt világ modell fogalma&lt;br /&gt;
* taxonómia/ontológia fogalma&lt;br /&gt;
* lineáris/exponenciális regresszió fogalma, példák&lt;br /&gt;
* benchmark, fajtái&lt;br /&gt;
&lt;br /&gt;
=== Feladatok ===&lt;br /&gt;
Gyakorlaton megoldott példák szoktak szerepelni:&lt;br /&gt;
* Ontológia készítése. (1. gyakorlathoz hasonlóak)&lt;br /&gt;
* Diagramok felismerése, azok értelmezése. (2. gyakorlathoz hasonlóak)&lt;br /&gt;
* Teljesítménymodellezési számolós feladatok (3. gyakorlathoz hasonlóak)&lt;br /&gt;
* Kísérlettervezési számolós feladatok (4. gyakorlathoz hasonlóak)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vizsga ==&lt;br /&gt;
Őszi félévben decemberben két vizsga van és januárban is kettő. A decemberi első vizsga élővizsga, bárki mehet rá. (Elsősorban a záróvizsgások érdekében van így)&lt;br /&gt;
A vizsga elméleti kérdésekből, illetve három gyakorlati feladatból áll.&lt;br /&gt;
&lt;br /&gt;
=== Elméleti kérdések ===&lt;br /&gt;
Pár mondatban megválaszolható kérdések, ha jól emlékszem 6-7 darab volt belőle. A ZH-n szereplő kérdések is elöfordulhatnak, illetve a ZH utáni anyagból is természetesen.&lt;br /&gt;
&lt;br /&gt;
=== Feladatok ===&lt;br /&gt;
Gyakorlaton megoldott példák szoktak szerepelni:&lt;br /&gt;
* Ontológia készítése. (1. gyakorlathoz hasonlóak)&lt;br /&gt;
* Diagramok felismerése, azok értelmezése. (2. gyakorlathoz hasonlóak)&lt;br /&gt;
* Teljesítménymodellezési számolós feladatok (4. gyakorlathoz hasonlóak)&lt;br /&gt;
* Kísérlettervezési számolós feladatok (5. gyakorlathoz hasonlóak)&lt;br /&gt;
* Adatfolyamhálók rajzolása (5. gyakorlathoz hasonlóak)&lt;br /&gt;
* Szolgáltatásbiztonság számolós feladatok (6. gyakorlathoz hasonlóak)&lt;br /&gt;
&lt;br /&gt;
== Hasznos linkek ==&lt;br /&gt;
* Meghibásodási adatok egyenesen a tanszéktől: https://wiki.inf.mit.bme.hu/twiki/pub/InfInf/RelModel/meghibasodasi_adatok.pdf&lt;br /&gt;
&lt;br /&gt;
== Tippek ==&lt;br /&gt;
&lt;br /&gt;
Előadásokra érdemes bemenni, de anélkül is megtanulható, csak nem érted meg annyira az anyagot csak a diákból. Gyakorlatokra nagyon érdemes bemenni, mert az ott megoldott példákhoz hasonló feladatok lesznek ZH-n és vizsgán. Házi kiadó órára mindenképp érdemes bemenni, ott mutatják be az IBM WebSphere szoftver használatát, illetve ott kapjuk meg a szoftver image-et.&lt;br /&gt;
&lt;br /&gt;
== Kedvcsináló ==&lt;br /&gt;
&lt;br /&gt;
Szerintem a legjobb/korrektebb/könnyebb tárgy a három elágazó közül. Ha informatikai technológiák szakirányon vagy, akkor pedig van is átfedés szakirányos tárggyal, így pláne nem nehéz. A zh-ra érdemes felkészülni mert 4-es zh-val szorgalmi feladatot lehet írni, a szorgalmi feladat pedig egyáltalán nem vészes, ellenben megajánlott ötöst ér.&lt;br /&gt;
&lt;br /&gt;
--[[Szerkesztő:Ferrero|Szabó Csaba]] ([[Szerkesztővita:Ferrero|vita]]) 2013. január 3., 19:15 (CET)&lt;br /&gt;
&lt;br /&gt;
{{Lábléc_-_Mérnök_informatikus_alapszak}}&lt;/div&gt;</summary>
		<author><name>Bolla Dávid</name></author>
	</entry>
	<entry>
		<id>https://vik.wiki/index.php?title=Oper%C3%A1ci%C3%B3s_rendszerek_kidolgozott_beugr%C3%B3k%C3%A9rd%C3%A9sek_vizsg%C3%A1ra_ABC-sorrendben&amp;diff=186255</id>
		<title>Operációs rendszerek kidolgozott beugrókérdések vizsgára ABC-sorrendben</title>
		<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=Oper%C3%A1ci%C3%B3s_rendszerek_kidolgozott_beugr%C3%B3k%C3%A9rd%C3%A9sek_vizsg%C3%A1ra_ABC-sorrendben&amp;diff=186255"/>
		<updated>2015-06-10T11:14:42Z</updated>

		<summary type="html">&lt;p&gt;Bolla Dávid: /* Felhasználó- és csoportazonosító: Mi alapján azonosítja a Windows a felhasználókat és a csoportokat? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Bevezető==&lt;br /&gt;
Korábbi Wiki-n és InfoSite-on szereplő kidolgozott és kidolgozatlan anyagok, számtalan forrásból összeszedve - előadásdiákból, video.bme.hu-n lévő felvett anyagokból, Wikipédiás és egyéb, Google segítségével fellelhető anyagokból kiegészítve.&lt;br /&gt;
Hibák előfordulhatnak! TODO-val azokat a részeket jelöltem, amik átnézendők, rendbe szedendők, hiányosak, stb., ezeket is kérlek javítsátok, ha tudjátok! Köszi!&lt;br /&gt;
Ami fontos: ABC-sorrendbe rendezve szerepelnek a kérdések, így könnyebben megtalálható, tartsuk is meg ezt a tendenciát!&lt;br /&gt;
Remélem hasznát veszitek! -- [[PeteHaro|Pete]] - 2011.06.19.&lt;br /&gt;
Valamilyen szintű kategorizálást is beleraktam. A kérdések elejére odaírtam magának a kérdésnek a lényegét is, hogy könnyebben megtalálhatóak legyenek az azonos kérdéskörbe tartozóak.&lt;br /&gt;
&lt;br /&gt;
==Beugrókérdések megoldással==&lt;br /&gt;
===Általános jellegű OS-ekkel kapcsolatos kérdések===&lt;br /&gt;
&lt;br /&gt;
====Indulás: Hasonlítsa össze az általános célú (asztali) és a beágyazott operációs rendszereket az indulás szempontjából!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A beágyazottnál először indul az alkalmazás, és az indítja az operációs rendszert, az asztalinál az operációs rendszer indítja az alkalmazásokat.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Inkrementális mentés: Mit jelent az inkrementális mentés?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Csak a változtatásokat mentjük az előző mentéshez képest -&amp;gt; kisebb helyet foglal, hamarabb végez a mentés.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kemény valós idejű rendszer: Adja meg a kemény valós idejű (hard real-time) rendszer definícióját!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A rendszer adott eseményekre  adott időn belül 1 valószínűséggel válaszol (egyébként hibás, hiába funkcionálisan jó a válasz). A rendszer NEM késhet!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Lazán csatolt rendszer: Milyen szinkronizációs kényszereket jelent, ha egy lazán csatolt rendszer kommunikációja során véges kapacitású csatornát alkalmazunk?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
ha a küldő folyamat túl gyorsan küldözget, akkor a csatorna megtelik, úgyhogy túlcsordulás lesz, ami miatt a küldőnek várnia kell mielőtt újra küld.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rendszerhívások: Milyen előnnyel jár a rendszerhívások valamilyen magas szintű programnyelvvel történő megadása?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Az API elrejti a rendszerhívások részleteit, bonyolultságát a programozó elől, lényegében egy wrapper réteggel fedi be a rendszerhívásokat.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====RPC: Milyen részekből áll az RPC technológia?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* RPC: Remote Procedure Call, távoli eljáráshívás. Magas szintű folyamatok közti kommunikációt tesz lehetővé. Részei:&lt;br /&gt;
*  a hívható eljárások és típusaik (interfész) leírása&lt;br /&gt;
* programgenerátor - rpcgen: a leírásból C programkódot generáló program&lt;br /&gt;
* kommunikációs infrastruktúra - portmapper: a programazonosítók és a hálózati portok összerendelése&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Statikus/dinamikus OS: Mikor nevezünk statikusnak, illetve dinamikusnak egy operációs rendszert?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
statikus: azok a rendszerek, amelyeknek muködése során - a felépülés és inicializálás kezdeti szakaszától eltekintve - nem jönnek létre és nem szűnnek meg folyamatok. dinamikus: működés közben bármikor születhetnek illetve megszünhetnek folyamatok.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Szorosan csatolt rendszerek: Milyen rendszereket nevezünk &amp;quot;szorosan csatolt&amp;quot; rendszereknek?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Ahol több CPU közös óra és közös memória segítségével működik együtt. Általában egyetlen operációs rendszer van, de az bonyolult. (Megjegyzés: az architektúrákból megtanult &amp;quot;közös erőforrást használnak&amp;quot; definícióra csak fél pontot adtak.)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Erőforrás-hozzáférés===&lt;br /&gt;
&lt;br /&gt;
====Elosztott rendszerek: Elosztott rendszerekben milyen konzisztencia kérdésekkel kell foglalkozni?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* frissítés konzisztencia&lt;br /&gt;
* másolat konzisztencia&lt;br /&gt;
* cache konzisztencia&lt;br /&gt;
* hiba konzisztencia&lt;br /&gt;
* óra konzisztencia&lt;br /&gt;
* felhasználói interfész konzisztencia&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Erőforrás-gazdálkodás: Mi a különbség a hierarchikus és a globális erőforrás-gazdálkodás között?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
hierarchikus: a gyermek folyamatok csak a szülő erőforrásaiból részesülhetnek, és nem létezhetnek önállóan, csak amíg a szülőjük is létezik. globális: a rendszer valamennyi folyamata létrejötte után egyenrangú, önálló szereplő, és versenyezhet a teljes erőforráskészletből való részesedésért.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Éhezés: Mi az az éhezés?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A folyamatnak megvan mindene, ami a futásához kellene (ezért nem holtpont), de az erőforrásokat, amiket használni akar, más folyamatok kapják meg (ezért nem tud futni).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Graceful degradation: Mit jelent a &amp;quot;graceful degradation&amp;quot; fogalma? ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Fokozatos leromlás/összeomlás: Ha a rendszer terhelése eléri az ún. könyökkapacitást, akkor utána viselkedése megváltozik, a tovább növekvő terhelésre már egyre rosszabb működéssel reagál (overhead). Elvárható, hogy ezt fokozatosan tegye (ne omoljon össze).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kölcsönös kizárás====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Annak biztosítása, hogy a közös erőforrást egy időben csak annyi magában szekvenciális feladat használja, amely mellett a helyes működése garantálható.&lt;br /&gt;
A kölcsönös kizárást meg kell oldanunk a programban. Többnyire a használt erőforrást lock-oljuk (elzárjuk): nem engedjük hozzáférni a többi részfeladatot.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kritikus szakasz: Mit jelent a kritikus szakasz?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A magában szekvenciális feladatok azon kódrészletei, amely során a kölcsönös kizárást egy bizonyos közös erőforrásra biztosítjuk. A kritikus szakasz a kérdéses közös erőforráshoz tartozik. A kritikus szakaszt a hozzá tartozó erőforrásra atomi műveletként (nem megszakítható módon) kell végrehajtanunk.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Monitor: Mi a monitor alkalmazásának lényege? (Kölcsönös kizárás)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A lockolás nem szétszórva történik a programban, hanem egyetlen, a közös erőforráshoz szorosan tartozó programrészletben.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prioritás öröklés: Mi a prioritás öröklés (Priority Inheritance, Pl) protokoll lényege? (prioritás inverzió témakör)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Az alacsony prioritású feladat megörökli az általa kölcsönös kizárással feltartott feladat prioritását a kritikus szakaszából való kilépéséig. Csak részben oldja meg a prioritás inverzió problémáját.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Test-and-set: Hogyan lehet Test_and_Set utasítással kritikus szakaszba lépést (entry) és kilépés (exit) megvalósítani?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Belépésnél csökkentjük a value értékét ezzel jelezve hogy használni akarjuk a kritikus szakaszt&lt;br /&gt;
* Kilépésnél növeljük a value értékét&lt;br /&gt;
Egy változót kijelölünk &amp;quot;lock object&amp;quot;-nek; ha ennek a tartalma 0, nincs senki a kritikus szakaszban. A kritikus szakasz elején egy ciklusban test-and-set-et hajtunk végre rá (az utasítást a ciklus feltételébe téve); ha valaki van a szakaszban már, a ciklusban fogunk keringeni, amíg ki nem lép belőle a másik. Amikor kilépett, a test-and-set következő végrehajtása beállítja a változót, és továbbengedi az egyik várakozó ciklust. A szakaszból kilépéskor pedig simán (nem test-and-set-tel) 0-ba állítjuk.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Test-and-set: Hogyan működik a test_and_set?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Visszaadja egy bit értékét, és ha 0 volt, 1-re állítja. Mindezt oszthatatlanul, vagyis ha 0 volt ott, és többen egyszerre hívtak rá test-and-set-et, akkor az egyiké teljesen lefut, 1-be állítja és nullát ad vissza, mielőtt a többi elkezdene futni (így ők mind 1-et fognak visszaadni)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Újrahívhatóság: Mit jelent az újrahívhatóság (reentrancy) fogalma?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A közös erőforrás problémájának egyfajta kiterjesztett esete egy függvényen/objektumon belül, mely akkor léphet fel, amennyiben ezt a függvényt/metódust egyszerre többen is meghívhatják. Előfordulhat akkor, ha ugyanazt a függvényt hívjuk egy taszkból és egy megszakítás-rutinból is, vagy ha preemptív ütemezés esetén ugyanazt a függvényt hívjuk két taszkból is.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Holtpont===&lt;br /&gt;
&lt;br /&gt;
====Definíció: Adja meg a holtpont definícióját!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Egy rendszer folyamatainak egy H halmaza holtponton van, ha a H halmazba tartozó valamennyi folyamat olyan eseményre vár, amelyet csak egy másik, H halmazba tartozó folyamat tudna előidézni. Másként: A közös erőforrások hibás beállítása vagy használata miatt a rendszerben a részfeladatok egymásra várnak &amp;amp;#187; nincs futásra kész folyamat; &amp;amp;#187; nem jöhet létre belső esemény; &amp;amp;#187; A rendszer nem tud előrelépni.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Foglalva várakozás: Holtpont megelőzése (prevention) esetén milyen módszerrel lehet a foglalva várakozás előfordulását kizárni?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Az erőforrást birtokló feladat kér újabb erőforrást.&lt;br /&gt;
* Minden szükséges erőforrást egyben kell lefoglalni, egyetlen rendszerhívással.&lt;br /&gt;
* Alkalmazástól függ a használhatósága.&lt;br /&gt;
* Erőforrás-kihasználás romlik.&lt;br /&gt;
*  A foglalva várakozás elkerülhető, ha minden folyamat betartja azt a szabályt, hogy az egyidejűleg szükséges valamennyi erőforrását egyetlen rendszerhívással kéri el. A szabály betartásával megelőzhető a holtpont, de ára az erőforrás-kihasználás jelentős romlása.&lt;br /&gt;
*  Ha a folyamatokat kötelezzük arra, hogy minden erőforrásukat egyszerre kérjék el. Ha meg akarjuk engedni a rákérést, akkor menthető állapotú erőforrások esetén megtehetjük, hogy a várakozó folyamatoktól elvesszük az erőforrásaikat.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kezelése: Az operációs rendszer milyen általános eljárásokat használhat a holtpont kezelésére?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* strucc algoritmus (nem vesz róla tudomást)&lt;br /&gt;
* holtpont feloldása - melyik holtpontban érintett folyamatot számoljuk fel?&lt;br /&gt;
* menthető állapotú erőforrások elvétele,&lt;br /&gt;
* minél kevesebb folyamat felszámolása,&lt;br /&gt;
* folyamatok prioritása,&lt;br /&gt;
* már elvégzett munka,&lt;br /&gt;
* folyamatok visszaállíthatóságának biztosítása&lt;br /&gt;
* holtpont megelőzése&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kialakulás szükséges feltételei: Sorolja fel a holtpont kialakulásának szükséges feltételeit!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Kölcsönös kizárás: Vannak olyan erőforrások a rendszerben, melyeket a folyamatok csak kizárólagosan használhatnak.&lt;br /&gt;
* Foglalva várakozás: legyen olyan folyamat mely lefoglalva tart erőforrásokat, miközben más erőforrásokra várakozik.&lt;br /&gt;
* Nincs erőszakos erőforrás-elvétel: a folyamatok addig birtokolják az erőforrást, míg saját jószántukból fel nem szabadítják azokat.&lt;br /&gt;
* Körkörös várakozás: Létezik a rendszerben egy olyan folyamatsorozat, melyben minden folyamat az utána következő folyamat által foglalt erőforrásra vár, a sorozat utolsó tagja pedig a sorozat első tagjára.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Megelőzés, elkerülés: Mi a különbség a holtpont megelőzése (prevention) és holtpont elkerülése (avoidance) között?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* megelőzése: olyan rendszert tervezünk, ahol nem teljesülnek a holtpont feltételei, így elvileg sem lehet holtpont.&lt;br /&gt;
* elkerülése (pl. bankár algoritmus): A rendszer minden erőforrásigény kielégítése előtt mérlegeli, hogy nem vezet-e holtpontveszélyre a kérés teljesítése, más szóval fennmarad-e a biztonságos állapot.&lt;br /&gt;
&lt;br /&gt;
* ( Kölcsönös kizárás minimálisra csökkentése: lehetőleg többpéldányos erőforrásokat alkalmazunk, ahol ez nem lehetséges, ott a hozzáférést megpróbáljuk oszthatatlan műveletté tenni.&lt;br /&gt;
* Foglalva várakoztatás megszüntetése: Ha minden folyamat betartja a szabályt, miszerint az egyidejűleg szükséges valamennyi erőforrását egyetlen rendszerhívással kéri el, akkor elkerülhető a foglalva várakoztatás. Ennek ára van: az erőforrás-kihasználtság romlása.&lt;br /&gt;
* Nincs erőszakos erőforrás-elvétel kiküszöbölése: Ha menthető állapotú erőforrásaink vannak, akkor megtehetjük, hogy elvesszük egy adott folyamat erőforrását és egy másiknak adjuk, majd annak lefutása után visszaadjuk a régi állapotában az erőforrást az első folyamatnak.&lt;br /&gt;
* Körkörös várakozás megakadályozása: A folyamatok megegyeznek az erőforrások sorszámozásában, minden folyamat csak nagyobb sorszámú erőforrást igényelhet azoknál az erőforrásoknál melyeket birtokol. Ekkor biztosan nem alakulhat ki kör.)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Fájlrendszerek===&lt;br /&gt;
&lt;br /&gt;
====Fájl: Mi a fájl az operációs rendszer szempontjából? (háttértár-kezelés)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* a fájl a permanens táron az adattárolás logikai egysége, az operációs rendszer feladata a logikai egységek (fájlok) leképzése valódi fizikai egységekre, ez az OS-ben egy többszintü réteges rendszer&lt;br /&gt;
* Absztrakt adattípus (objektum, fájl mutató).&lt;br /&gt;
* Adat, név (name - elnev. konvenciók), típus (type - kezelés módja) tulajdonságok (attributes). Tulajdonosok, jogosultságok. Hozzáférési időpontok&lt;br /&gt;
* Kölcsönös kizárás (file locking)&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Háttértáron lévő lapok: Milyen részidőkből áll össze a háttértáron levő lapokhoz való tényleges hozzáférési idő? Kis vagy nagy lapok használata esetén kapunk &amp;quot;jobb&amp;quot; byte hozzáférést?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* adatátviteli sebesség + fejmozgás sebessége + lemezek forgási sebessége&lt;br /&gt;
* nagy lapok esetén ( mert így közvetlenül egymás után helyezkednek el az összetartőző adatok így nem kell a fejnek &amp;quot;ugrálnia&amp;quot; )&lt;br /&gt;
* Először a laptáblából kell kikeresni a lap bejegyzését, és konstatálni, hogy nincs hozzá fizikai lap rendelve. Majd, ki kell választani egy szabad fizikai lapot (ha nincs, ki kell vinni egyet háttértárra), a szabad helyre beolvasni a lapot, majd újraindítani a laphibát okozó utasítást. Ezek közül a háttértárról olvasás nagyságrendekkel lassabb a többinél, ezért lényegében ez határozza meg a teljes hozzáférési időt.&lt;br /&gt;
* Ha csak a háttértáron lévő lapokat nézzük, akkor, mivel kisebb lapot gyorsabban lehet beolvasni, ezért kisebb lapoknál gyorsabb a hozzáférés. Ha egy folyamat teljes munkahalmazát nézzük, akkor viszont a kisebb lapok több adminisztrációs költséggel járnak (gyakrabban kell háttértárhoz fordulni), és átlagban a nagyobb lapok adnak jobb eredményt.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Indexelt tárolás: Sorolja fel az indexelt tárolás (indexed allocation) előnyeit és hátrányait! (Fájlrendszer-leképzés)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Szekvenciális és indexelt elérésre is alkalmas.&lt;br /&gt;
* Sérülékeny (az index blokkok sérülése a fájlt elérhetetlenné teszi).&lt;br /&gt;
* Az index blokkokat viszont könnyű többszörözni (replikálni).&lt;br /&gt;
* Sok fejmozgást okoz (seek), a blokkok el vannak szórva a diszken.&lt;br /&gt;
* Itt is lehet a láncolt listás töredezettség mentesítéshez hasonló algoritmusokat használni a fejmozgás minimalizálására.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====RAID: Sorolja fel a RAID technika leglényegesebb elemeit!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Használjunk több merevlemezt egyszerre.&lt;br /&gt;
* Több redundáns alkalmazása növeli a megbízhatóságot.&lt;br /&gt;
* Több párhuzamos használata növeli a sebességet.&lt;br /&gt;
* Hozzunk létre egy virtuális diszket a fizikai diszkekből.&lt;br /&gt;
* Redundant Array of Inexpensive Disks: több lemez összekapcsolása.&lt;br /&gt;
* A RAID-0 esetében két lemezre vannak szétosztva az adatok, így egyetlen fájlt kétszer akkora sebességgel lehet írni (a két felét parhuzamosan).&lt;br /&gt;
* A RAID-1 esetében ugyanazt az adatot tároljuk le a két lemezen, így gyorsabb nem lesz, de az egyik lemez hibája esetén visszanyerhetőek az adatok.&lt;br /&gt;
* Megjegyzés: ez csak példa, több lemezzel is lehet csinálni, a sebesség/tárhely/hibatűrés között különböző kompromisszumokat elérve.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====RAID0 vs. RAID1: Hasonlítsa össze két azonos diszkből álló RAID0 és RAID1 tömb tulajdonságait! Hogyan alakul a hozzáférési idő, az adatátviteli sebesség és a megbízhatóság egyetlen diszkhez képest a két esetben?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
RAID 0-1 szabványok általában SW implementációval és kevés (2db) diszkkel&lt;br /&gt;
* RAID 0 (striped disks):&lt;br /&gt;
** Több diszk párhuzamos használata;&lt;br /&gt;
** file részei N diszkre kerülnek;&lt;br /&gt;
** Az egyes részek egymástól függetlenül elérhetők&lt;br /&gt;
** A diszkek tárolókapacitása összeadódik&lt;br /&gt;
** N azonos diszk esetén a RAID 0 virtuális diszk olvasásai és írási adatátviteli sebessége maximum N-szeres közelébe nő.&lt;br /&gt;
** A hozzáférési idő közel eléri egy diszk hozzáférési idejét.&lt;br /&gt;
** Bármelyik diszk meghibásodása esetén az adat elveszik&lt;br /&gt;
* RAID 1 (mirroring):&lt;br /&gt;
** Több diszk redundáns használata.&lt;br /&gt;
** A file minden része minden (N) diszkre kikerül.&lt;br /&gt;
** Azonos diszkeket feltételezve a tárolóterület egy diszk tárolóterületével azonos.&lt;br /&gt;
** Az adatátviteli sebesség lassabb, mint egy diszk sebessége.&lt;br /&gt;
** A hozzáférési idő nő.&lt;br /&gt;
** Speciális esetben az olvasási sebesség N-szeresre nőhet, feltételezve a diszk meghibásodásának más módon történő észlelését (nem kell az azonosságot ellenőrizni többségi szavazással).&lt;br /&gt;
** Egy működőképes diszk esetén az adat elérhető.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====RAID5: Adja meg az M (M pozitív egész szám) diszket tartalmazó RAID5 tömb tulajdonságait! (hibatűrés és sebesség)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* RAID 5 (block interleaved distributed parity).&lt;br /&gt;
* Több diszk redundáns és párhuzamos használata&lt;br /&gt;
* Adat és paritás elosztása N+1 diszkre.&lt;br /&gt;
** A sebesség tekintetében közel áll az N diszket használó RAID 0-hoz (HW támogatás esetén).&lt;br /&gt;
** 1 diszk meghibásodása esetén az adat elérhető.&lt;br /&gt;
** 2 vagy több diszk meghibásodása esetén az adat elveszik.&lt;br /&gt;
** Az adat nem feltétlenül állítható helyre. (Csendes/néma hibák (silent error). A 2. meghibásodás észlelése a tömb újraépítése során)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====RAID5: Miért előnyös és miért hátrányos RAID5 használata?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* + N azonos diszk esetén az olvasási és írási adatátviteli sebessége maximum N-szeres közelébe nő.&lt;br /&gt;
* + 1 diszk meghibásodása esetén az adat elérhető.&lt;br /&gt;
* - 2 vagy több diszk meghibásodása esetén az adat elveszik.&lt;br /&gt;
* - Az adat nem feltétlenül állítható helyre. (Csendes/néma hibák (silent error).&lt;br /&gt;
* -Bonyolultabb, mint a Raid 0/1, ezért hardveresen valósítják meg, ami viszont drága&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====RAID6: Adja meg a 8 darab 1 Tbyte-os HDD-ből álló RAID6 tömb tárolókapacitását!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
6 TB. (Adat és paritás elosztása N+2 diszkre. A kapacitása N diszk tároló kapacitásával egyenlő.)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====RAID6: N db azonos diszkből álló RAID6 tömb esetén a tömb tárolókapacitása és sebessége (nagy fájlok írása/olvasása során elérhető adatátviteli sebesség) hogyan viszonyul az egyetlen diszk azonos adataihoz?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* RAID 6 (block interleaved dual distributed parity)&lt;br /&gt;
* Több diszk redundáns és párhuzamos használata.&lt;br /&gt;
* Adat és paritás elosztása N+2 diszkre.&lt;br /&gt;
** A sebesség tekintetében közel áll az N diszket használó RAID 0-hoz (HW támogatás esetén).&lt;br /&gt;
** 2 diszk meghibásodása esetén az adat elérhető.&lt;br /&gt;
** 3 vagy több diszk meghibásodása esetén az adat elveszik.&lt;br /&gt;
** Az adat nagyobb valószínűséggel állítható helyre a RAID 5-höz képest&lt;br /&gt;
* Minimum négy lemezre van szükség a RAID 6 működéséhez. The capacity of the array is (N-2) times the size of the smallest member disk for the array of N disks.&lt;br /&gt;
* Az olvasási sebesség (N-2)-szerese egy lemez olvasási sebességének - two disks in the row hold a parity which is useless to read. Such read speed values are roughly the same as in RAID 5.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Tárolás egysége: Mi a logikai és mi a fizikai tárolás egysége a permanens táron?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* logikai egység: fájl (file)&lt;br /&gt;
* fizikai egység: adatblokkok (cilinder, sáv és szektor együtt azonosítja az írható/olvasható adatblokkot; OS képzi le a logikaiakat fizikaiakra)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Folyamatok, szálak===&lt;br /&gt;
&lt;br /&gt;
====Bernstein feltétele: Mikor lehet két tevékenységet (utasítássorozatot) párhuzamosan végrehajtani (Bernstein)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Bernstein feltétele:&lt;br /&gt;
* Legyen &amp;lt;math&amp;gt; P_i &amp;lt;/math&amp;gt; és &amp;lt;math&amp;gt; P_j &amp;lt;/math&amp;gt; két darabja egy programnak.&lt;br /&gt;
* A &amp;lt;math&amp;gt; P_i &amp;lt;/math&amp;gt; összes bemeneti változója &amp;lt;math&amp;gt; I_i &amp;lt;/math&amp;gt;, és az összes kimeneti változója &amp;lt;math&amp;gt; O_i &amp;lt;/math&amp;gt;, ugyanez &amp;lt;math&amp;gt; P_j &amp;lt;/math&amp;gt; -re &amp;lt;math&amp;gt; I_j &amp;lt;/math&amp;gt; és &amp;lt;math&amp;gt; O_j &amp;lt;/math&amp;gt;.&lt;br /&gt;
* A két program párhuzamosan végrehajtható (vagyis független), ha: &amp;lt;math&amp;gt; I_j \bigcap O_i = 0 &amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt; I_i \bigcap O_j = 0 &amp;lt;/math&amp;gt; és &amp;lt;math&amp;gt; O_i \bigcap O_j = 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Feladatok (task) együttműködése: Hasonlítsa össze a közös memórián illetve az üzenetváltáson alapuló folyamatok közti együttműködést!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Közös memórián keresztül történő adatcsere esetén az együttműködő folyamatok mindegyike saját címtartományában lát egy közös memóriát. A közös memória elérését valamilyen adatátviteli rendszer teszi lehetővé. Üzenetváltásos adatcsere esetén a folyamatoknak nincs közös memóriája. Az adatátviteli rendszer most a logikai processzorokat kapcsolja össze. Rajta keresztül a folyamatok üzeneteket tudnak küldeni, illetve fogadni. Az üzenetküldésre a folyamatok logikai processzorainak utasításkészletében megfelelő utasítások állnak rendelkezésre. Ezek a Küld (Send) és a Fogad (Receive) műveletek.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Folyamat: Definiálja a &amp;quot;folyamat&amp;quot; (process) fogalmát!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Egy program futás alatt álló példánya a folyamat.&lt;br /&gt;
* saját kód, adat, halom, verem&lt;br /&gt;
* A folyamatok nem férnek hozzá egymás lapjaihoz (védettek más folyamatoktól)&lt;br /&gt;
&lt;br /&gt;
* végrehajtás alatt álló program (program maga a végrehajtható kód), amely folyamat virtuális címterébe van leképezve&lt;br /&gt;
* folyamat egy szála az, ami éppen fut egy CPU-n, és nem maga a folyamat&lt;br /&gt;
* minden folyamathoz tartozik legalább egy szál, ami elinduláskor elkezdi futtatni a program main metódusát&lt;br /&gt;
* privát virtuális címtér (virtuális memóriacímek készlete, amiket a folyamat használhat)&lt;br /&gt;
* tartozik hozzá egy egyedi folyamatazonosító (process ID)&lt;br /&gt;
* rendszererőforrások listája, melyekhez a folyamat összes szála hozzáfér&lt;br /&gt;
* a folyamat virtuálisan összefüggő memóriát lát (virtuális memória) (valójában az összefüggő memóriaterület ritka)&lt;br /&gt;
* háttértárolóra is kiírható (swapping)&lt;br /&gt;
* A folyamat által látott logikai címtartomány, és a ténylegesen használt fizikai címtartományok teljesen elkülönülnek&lt;br /&gt;
* Folyamatok megoszthatnak memóriaterületeket olvasás- vagy akár írás- és olvasás-hozzáféréssel (Az ilyen memória területek több folyamat virtuális címtartományába vannak belapozva)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Folyamatok közötti kommunikáció: Soroljon fel legalább 4 IPC (Inter-process communication) megoldást!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Jelzés&#039;&#039;&#039;: rendszerüzenetek küldése és fogadása a folyamatok között, jellemzően utasítások továbbítása egyik folyamattól a másiknak&lt;br /&gt;
* &#039;&#039;&#039;Üzenetsor&#039;&#039;&#039;: aszinkron kommunikációs forma, mely során a küldő és fogadó közvetlen interakciója nem szükséges, az üzenetek addig tárolódnak a sorban amíg a címzett fel nem dolgozza azokat vagy a sor meg nem telik&lt;br /&gt;
* &#039;&#039;&#039;Szemafor&#039;&#039;&#039;: absztrakt struktúra amely a folyamatok közötti közös erőforrásokért való hozzáférést vezérli&lt;br /&gt;
* &#039;&#039;&#039;Közös memória&#039;&#039;&#039;: ugyan az a memóriaterület kerül kiosztásra több különböző folyamatnak, írási és olvasási joggal egyaránt&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Forrás&#039;&#039;: http://en.wikipedia.org/wiki/Inter-process_communication&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Folyamatok vs. szálak: Mi az eltérés a folyamatok illetve a szálak között, és milyen előnnyel jár a szálak alkalmazása?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A szálak lényegében párhuzamos végrehajtású, közös memóriát használó programrészek a folyamaton belül (egy program végrehajtása több szálon futhat). A szálaknak saját logikai processzoruk van, azonban memóriáik nincsenek elkülönítve, közös logikai memóriát használnak, azaz a kódon és a változókon osztoznak. Emiatt az operációs rendszer lényegesen gyorsabban tud végrehajtani egy átkapcsolást a szálak között, mint a folyamatok között.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Java-szálak: Milyen módokon képezheti le a JAVA virtuális gép a JAVA natív szálakat a hoszt operációs rendszer folyamataira/szálaira?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A JAVA virtuális gép egy folyamat a hoszt operációs rendszeren belül. A JAVA szálak feleltethetők meg a hoszt operációs rendszer szálainak, ez többnyire one-to-one (JAVA szál egyben OS szál is) napjainkban. (https://wiki.sch.bme.hu/pub/Infoalap/OpRe/20100507_ZH_megoldas.pdf)  &lt;br /&gt;
Kovácsházy Tamás válasza:&lt;br /&gt;
7. fólia, 11. fólia:&lt;br /&gt;
JAVA (VM a folyamat, VM-en belül szál):&lt;br /&gt;
* Thread osztályból származtatva&lt;br /&gt;
* Runnable interface megvalósítása&lt;br /&gt;
* A JAVA platform-specifikusan valósítja meg a szálat:&lt;br /&gt;
* Natív OS specifikus szál (one-to-one, tipikus).&lt;br /&gt;
* JAVA specifikus szálak (many-to-one) egy natív OS szálra vagy folyamatra leképezve.&lt;br /&gt;
* many-to-many leképzés (erőforrás szempontok miatt, egyre ritkább).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====PRAM: Mi történik a PRAM modellben írás-írás ütközés esetén?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Az írás-írás ütközésekor valamelyik művelet hatása érvényesül, a két beírni szándékozott érték valamelyike írja felül a rekesz tartalmát (versenyhelyzet), harmadik érték nem alakulhat ki.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Processzor-affinitás: Mit állítunk be, ha egy szálnak beállítjuk a processzor affinitását, és miért lehet arra szükség?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* processzoraffinitás: minden szál rendelkezik egy maszkkal, amely kijelöli, hogy a szál mely processzorokon képes futni&lt;br /&gt;
* szerepe: ez alapján dől el, hogy a szál mely processzoron fog futni&lt;br /&gt;
* ütemezésnél: multiprocesszoros esetben a processzor kiválasztása a processzor-affinitás alapján történik&lt;br /&gt;
* A feladat más processzorra, vagy processzormagra kerülése csökkenti a végrehajtás sebességét (pl. cache-elésnél) &amp;gt;&amp;gt; Cél: A feladatot ugyanazon a végrehajtó egységen tartani - Laza vagy kemény processzor affinitás (soft or hard processor affinity).&lt;br /&gt;
** Laza: Nincs garancia, de törekszik rá az OS (többnyire alapeset)&lt;br /&gt;
** Kemény: Biztosan ugyanazon a CPU-n marad (rendszerhívással)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Szál: Definiálja a &amp;quot;szál&amp;quot; (thread) fogalmát!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* párhuzamos végrehajtású, közös memóriát használó programrészek a folyamaton belül (egy program végrehajtása több szálon futhat). A szálaknak saját logikai processzoruk és saját vermük van, azonban memóriáik nincsenek elkülönítve, közös logikai memóriát használnak, azaz a kódon és a változókon osztoznak, vagyis egymás adatait olvashatják és írhatják. Emiatt az operációs rendszer lényegesen gyorsabban tud végrehajtani egy átkapcsolást a szálak között, mint a folyamatok között.&lt;br /&gt;
* A folyamat egy szála az, ami éppen fut egy CPU-n (ami ütemezésre kerül), és nem maga a folyamat.&lt;br /&gt;
* Minden folyamathoz tartozik legalább egy szál, ami elinduláskor elkezdi futtatni a program main metódusát (szál nélkül a folyamat programja nem futhat).&lt;br /&gt;
* szálak még véletlenül sem hivatkozhatnak más folyamatok címterére, hacsak a másik folyamat nem teszi elérhetővé privát virtuális címterének egy részét megosztott memóriaszakaszként (file mapping object a Windows API-ban), vagy - Windows-nál - hacsak egyik folyamatnak nincs joga megnyitni más folyamatot, hogy olyan folyamatok közti memóriafüggvényeket használjon, mint a ReadProcessMemory vagy WriteProcessMemory&lt;br /&gt;
* A szál önmagában szekvenciális kód, a végrehajtás legkisebb egysége. Egy adott folyamat szálainak közös az adat- és kódszegmensük, a halmuk (heap), és az egyéb erőforrásokat is közösen használják, de saját virtuális CPU-t látnak, és saját veremmel rendelkeznek.&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Védelmi tartományok: Mi a különbség a statikus és a dinamikus védelmi tartományok között?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
	 Statikus védelmi tartományok esetén az egy folyamathoz tartozó védelmi tartomány a folyamat végrehajtása során nem változik, míg dinamikus védelmi tartományok esetén igen.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Virtuális gép: Mi a virtuális gép koncepció lényege?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* A programok elől az operációs rendszer elfedi a hardver implementációs részleteit, és kibővíti azt plusz funkciókkal.&lt;br /&gt;
* Az op.rendszer egy olyan réteget képez a hardver fölött, mely elrejti annak körülményességét és bonyolultságát a programozó elől és kibővíti a hardver szolgáltatását. A felhasználó így egy sokkal kellemesebb virtuális gépet (virtual machine, extended machine) lát.&lt;br /&gt;
* Az operációs rendszer egy kényelmesen kezelhető virtuális gépet jelenít meg a felhasználói és a programozói felületen.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Jogosultságok===&lt;br /&gt;
&lt;br /&gt;
====Belső biztonság: Mi a belső biztonság?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Belső biztonság = védelem. Védelemnek nevezzük az eljárásoknak és módszereknek azon rendszerét, amely lehetőséget teremt a számítógép erőforrásainak programok, folyamatok illetve felhasználók által történő elérésének szabályozására.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Engedélyezés: Definiálja az engedélyezés (authorization) fogalmát!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* jogosultság ellenőrzése: milyen adatokat és szolgáltatásokat érhet el ez a személy?&lt;br /&gt;
* Hozzáférés-szabályozási listák (Access Control List, ACL)&lt;br /&gt;
* Alapelv: mindig csoportnak osztunk jogot&lt;br /&gt;
* Pl. biztonsági házirend, fájl ACL&lt;br /&gt;
&lt;br /&gt;
TODO!!!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Jogosultság + engedélyezési sémák: Mi a jogosultság fogalma, mi a kapcsolata az engedélyezési sémák többi alapfogalmával?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* A jogosultság egy reláció a szereplők és védett objektumok között.&lt;br /&gt;
* engedélyezés ált. sémáinál: szereplő&amp;gt;&amp;gt;&amp;gt;szereplőt leíró adatszerkezet&amp;gt;&amp;gt;&amp;gt;biztonsági szabályzat (policy), JOGOSULTSÁG&amp;gt;&amp;gt;&amp;gt;védett objektumok TODO&lt;br /&gt;
* Jogosultságkezelés alapjai: A rendszer működése során&lt;br /&gt;
** A szereplők műveleteket kezdeményeznek&lt;br /&gt;
** A műveletek kontextusa tartalmazza a szereplő azonosítóját, a célobjektumot és az elvégzendő művelet fajtáját&lt;br /&gt;
** A jogosultsági döntő komponens kiértékeli kontextust és engedélyezi vagy megtiltja a műveletet&lt;br /&gt;
** A jogosultsági végrehajtó komponens biztosítja, hogy a döntő által hozott döntés érvényre jusson&lt;br /&gt;
* NT: SMR (Secure Reference Monitor) - objektumok elérési jogosultságainak ellenőrzése&lt;br /&gt;
* NT: Az LSA a SAM segítségével azonosítja a felhasználót és jogosultságait. Ha a felhasználó jogosult bejelentkezni, a logon elindítja a számára kijelölt shellt&lt;br /&gt;
* UNIX: hozzáférési jogosultságok (owner, group, others, read, write, execute)&lt;br /&gt;
* Engedélyezés általános sémái: &amp;gt;&amp;gt;Szerep alapú hozzáférés-vezérlés &amp;gt;&amp;gt;Hozzáférési jogosultság listák&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Külső biztonság: Mit takar a külső biztonság fogalma?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Annak mértéke, hogy mennyire lehetünk biztosak a számítógépes rendszer, illetve a rendszerben tárolt adatok sérthetetlenségében.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Művelet kontextusa: Engedélyezési rendszerekben mit tartalmaz egy művelet kontextusa? (Felhasználó- és jogosultságkezelés)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A műveletek kontextusa tartalmazza a szereplő azonosítóját, a célobjektumot és az elvégzendő művelet fajtáját.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hibakeresés===&lt;br /&gt;
&lt;br /&gt;
====DTrace: Mi a Solaris DTrace megoldás célja?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
dinamikus hibakereső rendszer, nyomkövető eszköz, amivel a rendszer és a programok működését futási időben lehet megfigyelni.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Memória===&lt;br /&gt;
&lt;br /&gt;
====32 bit: 32 bites kliens Windows operációs rendszer maximum mennyi fizikai memóriát kezelhet, és miért?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Legfeljebb 4 GB-ot (bár néha kevesebbet lát az OS, mert a memóriatartomány felső részére I/O eszközöket szoktak berakni, ld. pl. videókártya-memória...): &#039;&#039;&amp;quot;kliens Windowsok nem használják a gépben lévő PAE támogatást, mert az a tapasztalat, hogy a kliensekben lévő eszközök meghajtói nem kezelik le rendesen a 4 GB-nál több fizikai memóriát&amp;quot;&#039;&#039;. &lt;br /&gt;
(https://wiki.sch.bme.hu/pub/Infoalap/OpRe/02-opre-windows-memoria.pptx)&lt;br /&gt;
(nem támogatják a PAE-t eleve, csak patch-csel)&lt;br /&gt;
(_&amp;quot;However, &amp;quot;client&amp;quot; versions of 32-bit Windows (Windows XP SP1 and later, Windows Vista, Windows 7) limit physical address space to the first 4 GB for driver compatibility and licensing reasons, even though these versions do run in PAE mode if NX support is enabled.&amp;quot;_ - http://en.wikipedia.org/wiki/Physical_Address_Extension)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====32 bit: 32 bites szerver Windows képes-e 4 GB-nál több fizikai memória kezelésére? Válaszát indokolja!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Igen, PAE (Physical Address Extension) támogatás segítségével (ezzel lehet 32 bites címbuszú CPU-val is 64 GB memóriát kezelni a maximális 4 GB helyett).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====32 bit: 32 bites Windows használata esetén egy felhasználói folyamat maximum mekkora virtuális címteret használhat?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Alapból 2GB felhasználói módú címterületet használhat, ez a /3GB kapcsolóval 3 GB felhasználói címterületre bővíthető.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====32 bit: 32 bites Windows szerver operációs rendszerek képesek-e 4 GB-nál több fizikai memória kezelésére? Indokolja válaszát!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Igen, PAE (Physical Address Extension) támogatás segítségével.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====32 bit: 32 bites x86-os (Windows) esetén mekkora a felhasználói és a rendszer mód címtartomány mérete?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Alapból 2GB felhasználói módú és 2GB kernel címterület van, ezt a /3GB kapcsolóval 3GB felhasználói és 1GB kernelre lehet módosítani.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Bélády-anomália: Mit nevezünk Bélády-anomáliának?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
	 FIFO algoritmusnál egyes esetekben, ha a munkahalmaz méretét növeljük, a várakozásokkal ellentétben a laphibák száma is nő.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Címfordítás: Hogyan történnek a címfordítások, ha az OS szegmens- és lapszervezést is használ a memóriánál?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
CPU --&amp;gt; Segmentation unit --&amp;gt; Paging unit --&amp;gt; Physical memory&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Címfordítás: Milyen címtranszformációk történnek együttes szegmens- és lapszervezésű memória használata során?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* CPU &amp;gt;&amp;gt;&amp;gt;[Logical Address]&amp;gt;&amp;gt;&amp;gt; &#039;&#039;&#039;Segmentation Unit&#039;&#039;&#039; &amp;gt;&amp;gt;&amp;gt;[Linear Address]&amp;gt;&amp;gt;&amp;gt; &#039;&#039;&#039;Paging Unit&#039;&#039;&#039; &amp;gt;&amp;gt;&amp;gt;[Physical Address]&amp;gt;&amp;gt;&amp;gt; Physical Memory (http://portal.mit.bme.hu/?l=oktatas%2Ftargyak%2Fvimia219%2Fjegyzet%2F2011%2Fslides_17_memory.pdf)&lt;br /&gt;
* https://wiki.sch.bme.hu/pub/Infoalap/OpRe/oprewiki1.pdf, 48. oldaltól.&lt;br /&gt;
* Változó méretű szegmensek fix méretű lapokat tartalmaznak. Kicsi mind a belső, mind a külső tördelődés. A cím felépítése: (szegmens szám, lapszám, lapon belüli eltolás)&lt;br /&gt;
* Hasonlít a szegmensszervezéshez és a kétszintű lapszervezéshez: A memóriában szegmensek vannak ugyan, de ezek lapokból épülnek föl. Van szegmenstábla, és minden bejegyzéséhez tartozik egy laptábla is. Külső töredeződés nincs, belső töredeződés minimális (szegmensenként átlag fél lap); ez a kombinált módszer egyesíti a két módszer előnyeit&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Lapszervezés, keret tábla: Lapszervezés esetén mit tartunk nyilván a keret táblában (frame table)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Az üres kereteket (frames).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Logikai vs. fizikai memória: Mi a különbség a logikai és a fizikai memória között?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A logikai memória a fizikai tár leképezve, ráadásul a leképezés a végrehajtás során változhat is.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====MMU: Mi a processzor Memory Management Unit (MMU) komponensének a feladata?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
	 * Speciális HW a CPU-ban&lt;br /&gt;
* Memória állapotának nyilvántartása&lt;br /&gt;
** Tulajdonos folyamat azonosítója&lt;br /&gt;
** Hozzáférési jogosultságok (ACL)&lt;br /&gt;
** cache-elhetőség, ha van cache (pl. DMA)&lt;br /&gt;
* Virtuális memória leképzése fizikai memóriára&lt;br /&gt;
** Pl. Translation Lookaside Buffer (TLB)&lt;br /&gt;
** Kontextusváltásnál ezt is kezelni kell (ha van)&lt;br /&gt;
** Pagefile vagy SWAP (HDD)&lt;br /&gt;
* Memóriavédelem&lt;br /&gt;
** Tiltott memória hozzáférés megakadályozása vagy legalább jelzése (ACL alapján)&lt;br /&gt;
** General Protection Fault (GPF) a Windows-ban&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Modified/dirty bit, referenced/used bit: Mi a modified/dirty bit és a referenced/used bit szerepe? (Virtuális memóriakezelés)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* laptáblában:&lt;br /&gt;
* Módosítás nyilvántartása (modified/dirty bit): minden memórialaphoz tartozik egy HW által kezelt bit (pl. a laptáblában) - betöltéskor törlik, módosításkor beállítják. Ha a dirty bit 1, akkor erre a lapra történt írási művelet, mióta a ﬁzikai memóriába került. Ezt a bitet a CPU tartja karban (automatikusan), ezzel az operációs rendszer munkáját segítve. 0 érték esetén a lapokat nem kell a diszkre kiírni, ha kiszorulnak a ﬁzikai memóriából (hiszen a tartalmuk a ﬁzikai memóriába helyezés óta változatlan, a diszk-en tárolt változat tehát továbbra is aktuális).&lt;br /&gt;
&lt;br /&gt;
* Hivatkozások nyilvántartása (referenced/used bit): Ha a refernced bit 1, akkor volt &amp;quot;mostanában&amp;quot; hivatkozás erre a lapra. Ezt is a CPU tartja karban. Ez a bit segít az operációs rendszernek, amikor el kell döntenie, hogy melyik lapot dobja ki a ﬁzikai memóriából, ha egy új lapnak nincs helye. A referenced=0 lapokból fog válogatni.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Page locking: Mit jelent és miért van szükség arra, hogy a virtuális tárkezelésnél egyes lapokat ideiglenesen a tárba lehessen &amp;quot;fagyasztani&amp;quot; (page locking)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Azt jelenti, hogy a lapcsere algoritmus nem lapozhatja ki a háttértárra az adott lapot. Ok: periféria-művelet van az adott lappal kapcsolatban.&lt;br /&gt;
* Azt jelenti, hogy bizonyos lapokat a memóriában tartunk, mert I/O műveletek hivatkozhatnak rá, és ilyenkor a memóriában kell lenniük, mert az I/O műveletek fizikai memóriacímeket használnak.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Referenced/used bit: Mi a referenced/used bit szerepe? (Virtuális memóriakezelés)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Bizonyos algoritmusok igénylik a lapra történő hivatkozások figyelését is, ami ugyancsak hardvertámogatással hatékony. A laptáblában erre a célra is fenntarthatunk egy bitet. Ezt a hivatkozott bitet (referenced bit, used bit, R bit) a címképző hardver állítja be minden esetben, amikor az adott lapon belüli címre történik hivatkozás. A bitet az operációs rendszer törli adott időnként, vagy eseményhez (például laphiba) kötötten.&lt;br /&gt;
* Hivatkozások nyilvántartása (referenced/used bit): OS adott időnként és/vagy adott eseményekre törli - használat esetén beállítják.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====TLB: Mi az a Translation Lookaside Buffer, fizikai címcsatolásnál mi a szerepe?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A virtuális címet fizikai címre a laptábla segítségével lehet fordítani; de ez lassú, plusz egy memória-hozzáférést jelent. Ezért a lapkezdőcímek egy részét egy asszociatív cache-ben eltárolják, ez a TLB. Címfordításkor párhuzamosan indul a keresés a laptáblában és a TLB-ben, ha az egyikben megtalálta, akkor kész.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====TLB: Mire szolgál a Translation Lookaside Buffer és mi a szerepe a fizikai cím kiszámításánál (virtuális címképzés)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A virtuális címet fizikai címre a laptábla segítségével lehet fordítani; de ez lassú, plusz egy memória-hozzáférést jelent. Ezért a lapkezdőcímek egy részét egy asszociatív cache-ben eltárolják, ez a TLB. Címfordításkor párhuzamosan indul a keresés a laptáblában és a TLB-ben, ha az egyikben megtalálta, akkor kész.&lt;br /&gt;
&lt;br /&gt;
(Szerintem előbb a TLB-ben keresi, aztán ha ott nincs, csak utána nézi a laptáblát.)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Tördelődés (külső vs. belső): Mi a különbség a külső és belső tördelődés között? (Memória foglalás)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
	A tördelődött memóriaterületet külső tördelődés esetén az operációs rendszer szabadon hagyja, míg belső tördelődés esetén pedig odaadja egy olyan folyamatnak, aminek nincs igazából rá szüksége.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Vergődés: Adja meg a vergődés (trashing) definícióját!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A gyakori laphibák okozta teljesítménycsökkenést vergődésnek (thrashing) nevezzük. Az ellene való védekezés a munkahalmaz méretének jó megválasztása. Célszerű egy folyamatnak annyi lapot adni, amennyi szükséges az egyensúlyhoz, azaz ahány lapra hivatkozik a laphiba kiszolgálás ideje alatt (ugyanakkor nem sokkal többet, mert ekkor leromlik a multiprogramozás foka).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Vergődés: Mi az a vergődés, és hogyan védekezzünk ellene?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Ha több memóriára lenne szüksége a folyamatoknak, mint amennyi rendelkezésre áll, ezért túl gyakran keletkezik laphiba, és a processzor idejének nagy része haszontalan lapcserékkel telik.&lt;br /&gt;
* Védekezni ellene például azzal lehet, ha a laphiba-gyakoriság függvényében az ütemező változtatja a multiprogramozás fokát: ha kevés a memória, folyamatokat függeszt fel, és swappel ki; ha van elég, akkor épp ellenkezőleg.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===uc/OS-II===&lt;br /&gt;
&lt;br /&gt;
====Prioritás: A uC/OS-II-ben hány taszk tartózkodhat egy prioritási szinten és miért?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
1, mert így gyorsan eldönthető, hogy melyik a legmagasabb prioritású, futásra kész taszk.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prioritás: Egy prioritási szinten hány szál futtatását teszi lehetővé a uC/OS-II, miért?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
1, mert így gyorsan eldönthető, hogy melyik a legmagasabb prioritású, futásra kész taszk. Egy taszk = egy szál.&lt;br /&gt;
&lt;br /&gt;
(Magyarázat: egy taszk = egy szál; lásd http://video.bme.hu/media/video/Operacios_Rendszerek_08ea_20110301.wmv, 01:09:18 környékén&lt;br /&gt;
Röviden: a beágyazott rendszerek, kis OS-ek esetén (uC/OS-II, FreeRTOS, stb.) lényegében csakis szálakban gondolkozunk. Nincs MMU, csak egyetlen összefüggő fizikai memória van, nincs virtuális memória koncepció, a processzoron futó teljes alkalmazás (az egyetlen alkalmazás) egy nagy folyamat - nincs más folyamat! Ezenbelül tudunk threadeket futtatni. Single Address Space.)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Ütemezés===&lt;br /&gt;
&lt;br /&gt;
====Átbocsátó képesség: Adja meg az átbocsátó képesség definícióját és mértékegységét!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
*  (throughput) Mértékegység: munka/s, vagy 1/s&lt;br /&gt;
* Adott időegység alatt elvégzett feladatok száma. &amp;lt;math&amp;gt;\frac{\sum \textrm{elvegzett munkak}}{\textrm{ido}}&amp;lt;/math&amp;gt;&lt;br /&gt;
* A rendszerfeladatokat nem számoljuk.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Hosszú távú ütemezés: Adja meg a hosszú távú ütemezés célját!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Tipikusan a BATCH rendszerekben van jelen, és uj jobok végrehajtasának megkezdéseről (új folyamatok indítasárol) dönt. Az elvégzesre váro munkák közül a választas szempontja, hogy a rendszerben a CPU-intenzív es I/O-intenzív folyamatok aránya optimális legyen (optimalis job-mix fenntartasa).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Hosszú távú ütemezés: Definiálja a hosszú távú ütemezés fogalmát!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A hosszútávú ütemező feladata az elindított feladatok rendszerbe, illetve a &amp;quot;futásra kész&amp;quot; várakozási sorba való beengedését szabályozni. Igyekszik a CPU-t és a perifériákat terhelő folyamatokat egyensúlyban tartani. Batch rendszerekre jellemző; a PC-k oprendszere általában azonnal indítja a folyamatokat, mikor azt a felhasználó kéri.&lt;br /&gt;
* feladata: A háttértáron várakozó feladatok közül kiválasztja azt, amelyiket el kell indítani.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Konvoj hatás: Mi a konvoj hatás, és a tanult ütemező algoritmusok közül melyekben jelentkezhet?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* igen nagy lehet az átlagos várakozási idő, mivel egy-egy hosszú CPU-löketű folyamat feltartja a mögötte várakozókat&lt;br /&gt;
* FCFS-nél (First-come, first-served) tapasztalható (pl. SJF (Shortest Job First) és RR algoritmus küszöböli ki)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Középtávú ütemezés: Adja meg a középtávú ütemezés célját!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Swapping, azaz a program a fizikai memória és a háttértár közti mozgatása.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Középtávú ütemezés: Mi a középtávú ütemező feladata?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Swapping, azaz a program a fizikai memória és a háttértár közti mozgatása.&lt;br /&gt;
&lt;br /&gt;
Szerintem inkább ez:&lt;br /&gt;
A rendszerben lévő feladatok memóriájának egyes éppen nem használt részeinek kiírása háttértárra.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Körülfordulási idő: Mi az a körülfordulási idő?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* TAT (Turnaround Time) -&amp;gt; Egy feladatra vonatkozóan a rendszerbe helyezéstől a teljesítésig eltelt idő.&lt;br /&gt;
* Mértékegység: s,&lt;br /&gt;
* t_(CPU,végrehajtási idő)+t_várakozás (Magában foglalja a ténylegesen munkával töltött időt és a várakozást is.)&lt;br /&gt;
* felhasználó minél előbb szeretné látni a végeredményt &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Megszakítás: Az éppen futó taszkot megszakítja egy IT. Preemptív OS esetén mindig a megszakított taszk fogja-e visszakapni a futási jogot? Miért?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Nem feltétlenül; például a preemptálás maga is úgy működik, hogy egy időzítő a szál quantumjának lejártakor megszakítást generál; ilyenkor értelemszerűen az ütemező általában nem ugyanazt a folyamatot választja ki futásra.&lt;br /&gt;
* Másik: Nem, mert akitől elvették a futás jogát az futásra kész állapotba fog kerülni és az ütemező dönti el, hogy melyik folyamat fogja megint megkapni a futást.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Megszakítás: Egy futó taszkra IT érkezik. Preemptív OS esetén az interrupt után mindenképpen &#039;ide&#039; térünk vissza?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Nem feltétlenül; például a preemptálás maga is úgy működik, hogy egy időzítő a szál quantumjának lejártakor megszakítást generál; ilyenkor értelemszerűen az ütemező általában nem ugyanazt a folyamatot választja ki futásra.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Preemptív ütemező: Mikor nevezünk egy ütemezőt preemptívnek? ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Ha az OS elveheti a futásjogot (a CPU-t) egy folyamattól/futó feladattól (interrupt).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rövid távú ütemezés: Mi a rövidtávú ütemezés, mikor jár környezetváltással?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Rövidtávú ütemezés: futó folyamat kiválasztása a futásra kész feladatok közül&lt;br /&gt;
* Ha a futó folyamatnak lejár az időszelete (csak preemptívnél), önként lemond a processzorról (együttműködő folyamatok), blokkoló rendszerhívást hajt végre (pl. I/O művelet), egy másik szál futásra kész állapotba kerül (bekövetkezik, amire várt, vagy újonnan elindítanak egy szálat), egy szál prioritása megváltozik, esetleg egy szál processzor-affinitása megváltozik.&lt;br /&gt;
* Környezetváltással akkor jár, ha másik szál választódik ki futásra, mint ami eddig futott. Pl. Windows NT alatt, ha a legmagasabb prioritási szinten pontosan egy folyamat van, akkor megtörténhet, hogy ugyanaz a szál fut tovább, és nem történik környezetváltás.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rövid távú ütemezés: Mikor fut a rövidtávú ütemező és mikor jár környezetváltással?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Ütemezés következhet be, ha&lt;br /&gt;
** a futó folyamat befejeződik,&lt;br /&gt;
** egy folyamat felébred, futásra késszé válik,&lt;br /&gt;
** a futó folyamat várakozni kényszerül (valamilyen esemény bekövetkezésére), illetve,&lt;br /&gt;
** a futó folyamat önként lemond a futás jogáról vagy pedig elveszik tőle.&lt;br /&gt;
* Az első és a harmadik esetben az ütemezés mindig környezetváltással jár, hiszen a következő futó folyamat egészen biztosan nem a korábban futott lesz. A másik két esetben előfordulhat, hogy az ütemezőnek nem kell másik folyamatot kiválasztania.&lt;br /&gt;
* Ha a futó folyamatnak lejár az időszelete (csak preemptívnél), önként lemond a processzorról (együttműködő folyamatok), blokkoló rendszerhívást hajt végre (pl. I/O művelet), egy másik szál futásra kész állapotba kerül (bekövetkezik, amire várt, vagy újonnan elindítanak egy szálat), egy szál prioritása megváltozik, esetleg egy szál processzor-affinitása megváltozik.&lt;br /&gt;
* Környezetváltással akkor jár, ha másik szál választódik ki futásra, mint ami eddig futott. Pl. Windows NT alatt, ha a legmagasabb prioritási szinten pontosan egy folyamat van, akkor megtörténhet, hogy ugyanaz a szál fut tovább, és nem történik környezetváltás.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Terhelés-végrehajtó egységek közötti megosztás: Sorolja fel a terhelés-végrehajtó egységek közötti megosztásának megoldásait! (Többprocesszoros rendszerek)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Master and slaves (egy CPU osztja ki a feladatokat)&lt;br /&gt;
* Self-scheduling / peering (minden CPU ütemez)&lt;br /&gt;
* Globális futásra kész sor&lt;br /&gt;
* Processzoronkénti futásra kész sor&lt;br /&gt;
**  Push alapú: OS kernel folyamat mozgatja a sorok között a feladatokat.&lt;br /&gt;
**  Pull alapú: Az idle állapotban (idle feladatot végrehajtó) CPU próbál a többi sorából feladatot kapni.&lt;br /&gt;
* Kettő kombinációja&lt;br /&gt;
** Összefüggő, párhuzamosan futtatható feladatok optimalizálása (pl. Gang scheduler)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Virtualizáció===&lt;br /&gt;
&lt;br /&gt;
====Hardveres virtualizáció: Mit jelent az, ha egy x86-os processzor hardveres virtualizáció támogatással rendelkezik?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A CPU utasításkészletének és üzemmódjainak olyan kiegészítése, amely lehetővé teszi a vendég operációs&lt;br /&gt;
rendszer kódjának módosítás nélküli futtatását. [?]&lt;br /&gt;
&lt;br /&gt;
(Speciális utasításokkal látják el a processzort, amit szoftveresen akár több 100 utasításon keresztül lehetne csak megoldani. ROSSZ(MZ))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Elrejti a gep fizikai tulajdonsagait a felhasznalok elol.&lt;br /&gt;
&lt;br /&gt;
Miert erdemes virtualizalni?&lt;br /&gt;
&lt;br /&gt;
-Lehet futtatni a gazda OS el nem kompatibilis alkalmazast.&lt;br /&gt;
&lt;br /&gt;
-Lehet biztonsaggal rendszergazda jogot adni mindennek, mert ugy se tud a gazda os-be kart tenni.&lt;br /&gt;
&lt;br /&gt;
-Konnyen at lehet masolni a virtualis gepet egy masik gepre.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Hosted vs. bare-metal: Miben különbözik egy hosted egy bare-metal típusú virtualizációs megoldástól?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
  Bare-metal esetén a VMM kezeli a HW erőforrásokat, míg hosted típusú esetén ezt a host OS végzi. &lt;br /&gt;
&lt;br /&gt;
videó:&lt;br /&gt;
http://video.bme.hu/media/video/Operacios_Rendszerek_20ea_20110418.wmv&lt;br /&gt;
00:16:45 körül&lt;br /&gt;
&lt;br /&gt;
Kétféle megközelítés:&lt;br /&gt;
&lt;br /&gt;
# Hosted: az operációs rendszerre telepítek egy virtualizációs szoftvert, ez beépül az operációs rendszerbe tipikusan kernel modulként, innentől a virtualizációs szoftver teszi lehetővé, hogy virtuális gépeket futtassak. Tipikusan a desktop megoldások (VMware Player, VirtualBox, Virtual PC, stb.)&lt;br /&gt;
# Bare-metal: a virtualizációs szoftver valós OS-szerű funkciókat valósít meg. Lényegében egy minimális funkciókészlettel rendelkező OS. A hardvert nem egy általános célú operációs rendszer kezeli, hanem a virtualizációs szoftver feladata az, hogy a hardver-erőforrásokkal gazdálkodjon, ő dönt az ütemezésről, ő dönt a memória-hozzáférésekről. Tipikusan szokott hozzá tartozni egy menedzsment operációs rendszer, egy menedzsment konzol, ami a távoli hozzáférést, virtuális gépek elindítását lehetővé teszi, és ott is ott tudom futtatni a vendég operációs rendszereket. Tipikusan szervermegoldások (VMware ESX Server, Xen Enterprise, MS Hyper-V).&lt;br /&gt;
&lt;br /&gt;
Fontos különbség: ki dönt a CPU-erőforrásról?&lt;br /&gt;
# van az OS-nek egy ütemezője, ő dönt arról, mikor, ki kapja meg a CPU-t. Dönthet úgy, hogy az időszeletet az alkalmazás kapja meg, a köv. időszeletet a virtualizációs szoftver/modul, ő magán belül pedig eldöntheti, melyik virtuális gépnek osztja a processzort, de alapvetően a host OS dönt arról, mi dönt az erőforrásról.&lt;br /&gt;
# arról, hogy ki kapja a CPU-t, a közvetlenül a hardver réteg felett lévő virtualizációs szoftver dönti el. Dönthet úgy, hogy a menedzsment OS kapja, dönthet úgy, hogy valamelyik virtuális gép kapja meg.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Paravirtualizáció: Mit jelent az, hogy egy virtualizációs megoldás paravirtualizációt használ a CPU virtualizálásához?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Módosítjuk a vendég OS forráskódját, hogy ne is akarjon &amp;quot;problémás&amp;quot; utasításokat hívni, hanem azok helyett azoknak megfelelő függvényeket hívjon a hypervisorban. (Ezzel egyszerűsödik a hypervisor implementálása, viszont csak úgy működik a módszer, ha módosítják a vendég OS forrását.)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Trap-and-emulate: Trap &amp;amp; emulate virtualizációs módszer használata esetén mi történik a vendég gép által kiadott nem privilegizált utasítással?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* nem privilegizált utasítások közvetlenül a valós CPU-n hajtódnak végre (no VMM intervention)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===UNIX===&lt;br /&gt;
&lt;br /&gt;
====Adminisztratív adatok: hol helyezzük el azokat az adminisztratív adatokat, amelyekre mindig szükség van, akkor is, ha a folyamatnak egyetlen lapja sincs a memóriában?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A proc struktúrában.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Adminisztratív adatok: UNIX-ban a folyamatokkal kapcsolatos adminisztratív adatok hogyan épülnek fel?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
TODO: rövidíteni.&lt;br /&gt;
&lt;br /&gt;
# adatok, melyek elsősorban akkor szükségesek, amikor a folyamat ténylegesen fut - bent van egy v. több lapja a memóriában, éppen ezekkel kapcsolatos utasításokat hajtunk végre. &amp;gt;&amp;gt; az u-területen található kontextusadatok. A folyamat címtér része. A folyamat nem férhet hozzá, de a folyamat saját címterében találhatók. Amikor a folyamatnak egyetlen lapja sincs a memóriában, hanem minden a háttértáron található, a folyamat nem fut, akkor az itt található adatokhoz a kernel sem tud hozzáférni, mivel ide csak azok az adatok kerülnek, melyek a folyamat futásakor kellenek! Pl. hozzáférés-szabályozási adatok: a folyamat szeretne valamilyen tevékenységet végrehajtani, szabad-e neki vagy sem? Másik példa: rendszerhívások állapotai: végrehajt egy rendszerhívást, amiben éppen tartózkodik, ezzel kapcsolatos állapotadatok, stb. Vagy: nyitott fájl adatok, fájlkezeléssel kapcsolatos adatok. UNIX-ban a fájlkezelést nagyon általánosan kell érteni. Minden, ami a fájlrendszer-interfészen keresztül zajlik, ahhoz tartozik egy nyitott fájl objektum, ami ennek adminisztrálására szolgál, ezek is az u-területen találhatók. Ezenkívül: számlázási, statisztikai adatok.&lt;br /&gt;
&lt;br /&gt;
# adatok, melyek elsősorban a folyamatok kezeléséhez szükségesek (amire a kernelnek bármikor szüksége lehet). Pl. folyamat alapvető azonosító adatai. Folyamat PID-je, szülőazonosító, stb. Folyamat ütemezésével kapcsolatos adatok, mi a folyamat aktuális futási állapota, mennyi a prioritása, prioritás kiszámolásához szükséges adatai, stb. Memóriakezelési adatok: folyamat memórialapjai bent vannak a memóriában, vagy épp kint vannak a háttértáron. Az u-terület címe, stb. &amp;gt;&amp;gt;&amp;gt; proc struktúra adatai: a process tábla egy eleme (ez a klasszikus rendszereknél ténylegesen egy tábla volt, ma bonyolultabb, pl. láncolt listás megvalósítás). A kernel címterének része. A kernel bármikor elérheti őket.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Adminisztratív adatok: Milyen adatstruktúrá(k)ban és milyen címter(ek)ben található(k) a folyamatok adminisztratív adata(i)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A folyamat futása során szükséges adatok az u-területen, mely a folyamat címterének része, illetve a folyamatok kezeléséhez szükséges adatok a proc struktúrában, mely a kernel címtér része.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Adminisztratív adatok: Sorolja fel a UNIX folyamatok legalább 4 alapvető adminisztratív adatát!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* PID (Process ID): egyedi, a folyamatot azonosító szám (PPID: szülő folyamat azonosítója)&lt;br /&gt;
* A folyamat állapota (fut, alszik, stb.; ütemezési információk (prioritás, CPU használat, nice érték) )&lt;br /&gt;
* Hitelesítők (UID, GID: a kapcsolódó felhasználó adatai)&lt;br /&gt;
* Memória-kezelési adatok (címleképezési térkép)&lt;br /&gt;
* Kommunikációs adatok (fájlleírók, jelzés információk)&lt;br /&gt;
* Statisztikák (erőforrás használat (számlázáshoz) )&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Alvási prioritás: UNIX alvási prioritásának ütemezését mi végzi?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Az alvási prioritást is az ütemező határozza meg, az alapján, hogy mire várakozik a folyamat, vagyis miért hajtott végre sleep() rendszerhívást. Kernel módban az ütemező nem veheti el a futási jogot, ezért amíg nem hajt végre sleep() hívást, addig nincs is szükség a prioritásának meghatározására.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Android: Az Androidban mikor és miért (adjon jellegzetes példát) terminálható egy alkalmazás?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Az alkalmazás erőforráshiány miatt bármikor terminálható, ezt az operációs rendszer automatikusan meg is teszi. Példa: ha nincs elég memória.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Belső szerkezeti elemek: Sorolja fel a UNIX operációs rendszer főbb belső szerkezeti elemeit!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* betöltő&lt;br /&gt;
* virtuálismemória-kezelő&lt;br /&gt;
* állományrendszer&lt;br /&gt;
* blokkos berendezés-meghajtó kapcsoló (+ a hozzá kapcsolódó eszközmeghajtók, pl.: lemezegység, szalagos meghajtó)&lt;br /&gt;
* karakteres berendezés-meghajtó kapcsoló (+ a hozzá kapcsolódó eszközmeghajtók, pl.: hálózat, nyomtató)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Csővezeték (pipe): Írjon le egy olyan konkrét UNIX shell parancssort, amely csővezetéket alkalmaz!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
ls -la | more&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====exec(): Mire szolgál a UNIX exec() rendszerhívás?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
exec(): új programkód betöltése egy folyamat címterébe&lt;br /&gt;
Azaz a fork() paranccsal létrehozunk egy új folyamatot, exec() paranccsal pedig betöltjük a folyamatba a kódot.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fájl-attribútumok: Sorolja fel a fontosabb UNIX fájl-attribútumokat!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Típus&lt;br /&gt;
* Linkek&lt;br /&gt;
* Eszköz, inode, méret...&lt;br /&gt;
* Időbélyegek&lt;br /&gt;
* Azonosítási és hozzáférés-szabályozási adatok&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fájlrendszeri bejegyzések: Sorolja fel a UNIX fájlrendszeri bejegyzések alapvető tulajdonságait (legalább hármat, ls -l oszlopok)!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* pl.: drwxr-xr-x 2 root root 4096 dec 22 12.27 txt&lt;br /&gt;
* sorrendben: I. UNIX-fájltípusok (pl. közönséges fájl (-), katalógus (d), szimbolikus link (l), stb.), II. hozzáférési jogosultságok (3*3-as bontásban - 1. hármas csoport a tulajdonos, a 2. a csoport, a 3. a többiek jogosultságait;  &#039;r&#039; az olvasás (read), a &#039;w&#039; az írás (write), az &#039;x&#039; pedig a végrehajtás (execute) jele), III. jogosultságok után egy szám áll (ez könyvtárak esetén azt mondja meg, hogy az adott könyvtár hány elemet tartalmaz, fájlok esetén azt tudhatjuk meg, hogy az adott fájlra hány hardlink mutat), IV. tulajdonos, V. méret (bájtokban), VI. utolsó módosítás dátuma, VII. fájl neve&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Felfüggesztett állapotok: Mik azok a felfüggesztett állapotok, mi a szerepük a UNIX-ban?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
felfüggesztve futásra kész, felfüggesztve alszik állapot A UNIX-ban egyfajta hosszú távú, felhasználói ütemezést jelentenek - a felhasználónak lehetősége van arra, hogy bizonyos folyamatokat a többi állapotból kiemeljen. Pl. Ctrl+Z billentyűkombinációval felfüggesztem a folyamatok futását. Innen valamikor visszahelyezzük futó állapotba.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Felhasználói mód, kernel kontextus: UNIX esetén milyen tevékenység zajlik felhasználói módban, kernel kontextusban?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Semmilyen!! &lt;br /&gt;
Megj.: Kernel kontextusban, felhasználói módban a program saját utasításait hajtjuk végre, a program saját adataival dolgozunk. Ennél fogva itt nincs értelme beszélni semmiről, mert a folyamat a kernel kontextusában nem hajthat végre semmit.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Felhasználói módból kernel módba váltás: Hogyan vált egy UNIX folyamat felhasználói (user) módból kernel módba?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Rendszerhívásokon keresztül.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Felhasználói módú prioritás: Sorolja fel milyen tényezők határozzák meg egy UNIX folyamat felhasználói módú prioritását (tradicionális UNIX ütemező esetén)!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Korábbi CPU-használat&lt;br /&gt;
* Futásra kész folyamatok száma (p_cpu &amp;quot;öregítésével&amp;quot;)&lt;br /&gt;
* nice érték (nice és renice parancsok)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Folyamatok állapotai: Milyen állapotai vannak a UNIX-folyamatoknak?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
# kiinduló állapot&lt;br /&gt;
# futásra kész&lt;br /&gt;
# kernel módban futó állapot&lt;br /&gt;
# felhasználói módban futó állapot&lt;br /&gt;
# alvó állapot&lt;br /&gt;
# zombi állapot&lt;br /&gt;
# felfüggesztve alszik&lt;br /&gt;
# felfüggesztve futásra kész&lt;br /&gt;
&lt;br /&gt;
 Ctrl+Z-vel felfüggesztett állapotba helyezem a folyamatot.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Folyamatok közötti kommunikáció: Soroljon fel legalább 4 UNIX folyamatok között kommunikációs megoldást!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* System V IPC: szemafor, osztott memória, üzenetsor&lt;br /&gt;
* Csővezeték és nevesített csővezeték&lt;br /&gt;
* Jelzések&lt;br /&gt;
* RPC&lt;br /&gt;
* Folyamat-nyomkövetés&lt;br /&gt;
* Szemaforok&lt;br /&gt;
* Üzenetsorok&lt;br /&gt;
* Osztott memória&lt;br /&gt;
* Hálózati, socketeken keresztüli kommunikáció&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Folyamatok közötti kommunikáció: Soroljon fel UNIX folyamatok közötti adatátviteli eszközöket (legalább hármat)!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* System V IPC: - szemaforok, - üzenetsorok, - osztott memória&lt;br /&gt;
* Jelzések: - aszinkron események keltése és kezelése&lt;br /&gt;
* Csővezetékek, nevesített csővezetékek: - FIFO kommunikáció a &amp;quot;rokonságban&amp;quot;&lt;br /&gt;
* Szemaforok: - a korábban megismert szinkronizációs megoldások&lt;br /&gt;
* Üzenetsorok: - diszkrét, típusos üzenetek folyamatok között&lt;br /&gt;
* Osztott memória: - azonos fizikai memóriaterület használata több folyamatban&lt;br /&gt;
* &amp;quot;hálózati&amp;quot; (socket) kommunikáció: - címzéssel és protokollokkal támogatott kommunikáció&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====fork(): Mire szolgál a fork() rendszerhívás?====&lt;br /&gt;
TODO: rövidíteni.&lt;br /&gt;
&lt;br /&gt;
Új folyamat létrehozására. A fork() hívásakor az aktuális folyamat, amely kiadta a rendszerhívást, megduplázódik (minden adata, verme, memórialapja, stb.), onnantól két példányban fog továbbélni, amelyek egymással szinte tökéletesen megegyeznek, kvázi klónozva van a folyamat, néhány apró különbség van csupán. De valójában a memóriaszervezés ügyes trükkje: semmit nem csinál azonkívül, hogy bizonyos adminisztratív adatokat megdupláz, ténylegesen nem másol semmit (memórialapokat)! Az így megduplázott folyamat memórialapjaihoz hozzárendel még egy folyamatot, és megjegyzi azt, hogy amíg ezek a folyamatok békésen tudnak egymás mellett dolgozni, addig dolgozzanak ugyanazon, de ha konfliktus van, akkor majd lemásoljuk ezeket a memórialapokat. &lt;br /&gt;
&lt;br /&gt;
Ha a fork() hívás 0-val tér vissza: a gyerek folyamat kódja fut tovább. Ha egy negatív számmal tér vissza, fork() hiba történt, nem tudtuk létrehozni az új folyamatot, le kell kezelni. Ha pozitív számot adott vissza, akkor az eredményben a gyerekfolyamat azonosítója található, itt a szülőfolyamat fut tovább.&lt;br /&gt;
 &lt;br /&gt;
Gyerek folyamat fut: az exec() az aktuális folyamat helyére betölt egy másik binárist. Az exec()-et meghívó folyamatnak az exec() kitörli a saját kontextusát, stb., betölt egy új programkódot, amit elkezd végrehajtani. (Kvázi mintha elindítana egy új folyamatot, de a folyamat már fut.) Ha nem sikerült betölteni a binárist (pl. nincs ilyen fájl), akkor hiba, visszatér az exec() is, egyébként nem: az új programkód utasításait hajtjuk végre.&lt;br /&gt;
Tehát folyamat létrehozása UNIX-ban két lépésben:&lt;br /&gt;
# fork() rendszerhívás = folyamatduplázás, majd&lt;br /&gt;
# a gyerekfolyamat helyére az új programkód betöltése exec() hívással.&lt;br /&gt;
Modern UNIX-okban fork() már nem igazán (más rendszerhívásokat használ).&lt;br /&gt;
&lt;br /&gt;
====fork(): Miért van szükség a fork() rendszerhívásnál a folyamat megduplázására?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Futási/végrehajtási mód: Mi az a futási mód?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
http://video.bme.hu/media/video/Operacios_Rendszerek_09ea_20110307.wmv, 00:17:00 környéke alapján&lt;br /&gt;
TODO - rövidíteni&lt;br /&gt;
A folyamatok a kerneltől teljesen különválasztva működnek (rendszerhívás interfészen keresztül kommunikálnak a kernellel). A végrehajtási mód azt határozza meg, hogy a kernel vagy a folyamat feladatait hajtja végre az OS.&lt;br /&gt;
Két mód: kernel (&amp;quot;privilegizált, védett&amp;quot;) mód, valamint felhasználói (&amp;quot;szabad&amp;quot;) mód.&lt;br /&gt;
Kernel módban a védett (kernel) tevékenységeket, felhasználói módban a folyamat programkódját hajtja végre az OS.&lt;br /&gt;
Példa: egy webböngésző a tevékenysége egy részében a saját feladatát hajtja végre, pl. HTML-kódot értelmez és jelenít meg, valamint vannak olyan tevékenységek, amelyek ahhoz kellenek, hogy ezt a feladatát végrehajtsa: hálózati kommunikáció, fájlrendszer-műveletek, stb. - ezek kernel tevékenységek.&lt;br /&gt;
Kernel módban privilegizált utasítások hajtódnak végre, pl. egy eszközt kezelünk, vagy hozzányúlunk a háttértárhoz, onnan valamit beolvasunk, oda valamit kiírunk. Ilyen utasításokat egy felhasználói módban futó folyamat nem hajthat végre, hiszen ha közvetlenül hozzáférne a hardverekhez, akkor akár adott esetben a teljes rendszer működését felboríthatná.&lt;br /&gt;
Felhasználói módból kernel módba átlépéskor átlépünk egy védett módba, így olyan feladatokat is végrehajthatunk, amit egyébként tilos.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====inode: Mi a UNIX inode?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* A fizikai állományokhoz tartozó leíró, azonosító&lt;br /&gt;
* minden file-hoz tartozik egy inode állomány amiben a file minden tulajdonsága megtalálható (azonosító,leíró)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kernel mód, folyamat kontextus: Milyen tevékenység zajlik kernel módban, folyamat kontextusban?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Kivételek, rendszerhívások kezelése, rendszerhívások végrehajtása.  &lt;br /&gt;
Amikor a folyamat végrehajt egy rendszerhívást, a felhasználói módból átlép kernel módba, hiszen a rendszerhívás belsejében olyan tevékenységeket szeretne végrehajtani (beolvasni vmit egy fizikai eszközről, hálózatról, más folyamattal kommunikálni, elindítani másik folyamatot, stb.), amelyhez kernel utasítások végrehajtása tartozik.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kernel mód, kernel kontextus: Milyen tevékenység zajlik kernel módban, kernel kontextusban?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Rendszerfeladatok, megszakítások kezelése. Kernelfolyamatok.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kernel módú prioritás: Mi határozza meg a UNIX folyamatok kernel módú prioritását a tradicionális UNIX ütemezésben?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A kernel módban futó folyamat prioritása statikus, nem függ attól, hogy a folyamat mennyit használta a CPUt, vagyis mennyi ideig futott. A prioritás attól függ, hogy a folyamat milyen ok miatt hajtott végre sleep rendszerhívást, vagyis, hogy milyen eseményre várakozik. Emiatt a kernel prioritást szokták alvási prioritásnak is nevezni.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kernelszolgáltatások elérése: Milyen interfészen keresztül érhetők el a UNIX kernel szolgáltatásai?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* System Call Interface&lt;br /&gt;
* Az alkalmazások a rendszerkönyvtárakat hívják meg, amelyek szükség szerint meghívják az operációs rendszer szolgáltatásait ??&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kontextus: Mi az a kontextus?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
http://video.bme.hu/media/video/Operacios_Rendszerek_09ea_20110307.wmv alapján.&lt;br /&gt;
TODO: rövidíteni.&lt;br /&gt;
Az a környezet, amiben végrehajtjuk az utasításokat. Ez is különbözik a kernelek és folyamatok esetén: folyamat kontextusban azokkal az adatokkal és utasításokkal dolgozunk, amelyek alapvetően a folyamat célját szolgálják, kernel (rendszer vagy megszakítás) kontextusban pedig kernel feladatokat hajtunk végre, és az ezekhez a feladatokhoz szükséges adatokkal dolgozunk.&lt;br /&gt;
Kernel kontextus: érkezik egy hardveres megszakítás, ennek kezelése itt zajlik.&lt;br /&gt;
Folyamat kontextus: a folyamattal kapcsolatban hajtunk végre tevékenységeket.&lt;br /&gt;
Nem uaz, mint a végrehajtási mód, mert lehetséges az, hogy bizonyos tevékenységeket kernel módban hajtunk végre, de folyamat kontextusban. Amikor hozzá kell férnünk egy folyamat futási adataihoz, veremhez, virtuális memóriájához, stb., a programnak az adminisztratív adatait kezeljük, ezek folyamat kontextusban találhatóak.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Környezeti adatok: Mik azok a környezeti adatok egy UNIX-folyamatnál?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A folyamat indításakor megörökölt tulajdonságok. Tulajdonság-érték párok. Pl. a felhasználó bejelentkezik; mi az ő neve. A felhasználó milyen terminált használ, annak milyen képességei vannak. Mi a felhasználó shellje. Az épp futó folyamat néhány tulajdonsága. Olyan tulajdonság, amely egyes folyamatok számára értéket jelentenek. A felhasználók ezeket a set, setenv, export parancsokkal tudják ezeket állítani (és le is kérdezhetik őket). Megörökli az őt elindító folyamat környezetét (hogy melyiket kell épp használni, UNIX-variánstól függ). Amikor a felhasználó bejelentkezik, akkor a környezeti változók beállítódnak, a folyamatok induláskor ezeket a beállításokat megöröklik.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====libc: A libc-nek mi a feladata rendszerhívások kezelésében?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A felhasználói mód és kernel mód közötti átmenet lebonyolítása.  &lt;br /&gt;
A folyamat csak meghív egy open(), read(), write(), stb. függvényt, valójában a háttérben bonyolultabb tevékenység zajlik &amp;gt;&amp;gt; meghív egy rendszerhívást a rendszerhívás interfészen keresztül. A rendszerkönyvtárak egyike a libc, a standard C library, ez felel azért, hogy az adott függvényhívásokat (mint a read()) leképezze arra a mechanizmusra, amin keresztül átlépünk kernel módba.  &lt;br /&gt;
Az implementáció belsejében van egy SYSCALL utasítás (ez hardverfüggő), ez ténylegesen elvégzi az üzemmódváltást egy speciális megszakítás generálásával, aminek eredményeként a CPU átlép védett módba. A kernel pedig kezeli ezt a megszakítást. Ekkor a kernel a CPU regisztereit elmenti, azért, hogy a folyamat futása visszaállhasson a megfelelő állapotba. A feladat végeztével a kernel visszatér a megszakításból (erre is hardverfüggő a megvalósítás), a CPU visszavált felhasználói módba, a libc pedig visszatér a függvényhívásból, amit a folyamat kiadott.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====/proc: Mi a /proc?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Speciális fájlrendszer-interfész a kernel-adatstruktúrákhoz való hozzáféréshez.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prioritás: Hogyan számítható ki egy kernel módban futó UNIX folyamat prioritása?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* a prioritást a folyamat elalvásának oka határozza meg, tehát a prioritás attól függ, milyen sleep utasítással ment át alvó állapotba&lt;br /&gt;
* alvási prioritás pl: 20 - diszk I/O-ra vár; 28 - inputra vár a karakteres terminálról&lt;br /&gt;
* kernel módú folyamatoknak (amelyek rendszerhívásokat intéznek) negatív prioritásértékeik vannak, ezeknek van a legmagasabb prioritása ...........  (http://home.mit.bme.hu/~meszaros/edu/oprendszerek/segedlet/unix/2_folyamatok_es_utemezes/unix_processes.pdf)&lt;br /&gt;
* Több szinten, több időléptékben zajlik. Óraütésenként a prioritási sorok ellenőrzése. 10 óraütésenként RR ütemezés egy soron belül. 100 óraütésenként a prioritások újraszámítása.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rendszerhívások: Igaz-e, hogy a rendszerhívások megszakítással járnak együtt?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Igen, ennek hatására vált védelmi szintet a processzor.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rendszerhívások kontextusa: Milyen kontextusban hajtódnak végre a UNIX rendszerhívások?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
folyamat kontextusban&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rendszerhívások módja: Milyen módban hajtódnak végre a UNIX rendszerhívások?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
kernel módban&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rendszerhívások módja, kontextusa: Milyen futási módban és kontextusban zajlik a UNIX rendszerhívások kiszolgálása?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Kernel módban fut a kód, és a rendszert hívó folyamat kontextusában. ((az ehhez tartozó ábra jobb felső része))&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rendszerhívások programindításkor: UNIX alatt milyen rendszerhívásokra van szükség, ha a felhasználó elindít egy programot (folyamat létrehozása és programkód betöltése)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Folyamatot létrehozni a fork() hívással, majd a programkódot betölteni az exec() hívással lehet.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====rpcgen: Mi az rpcgen program feladata?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* RPC nyelven készült leírásból C programkódot generál. [?]&lt;br /&gt;
&lt;br /&gt;
* Az RPC nyelv alkalmas a szerver interfészének formális leírására. A formális leírásból az rpcgen program képes a szerver és a kliens programok megfelelő részeit, valamint a szükséges XDR konverziós függvényeket elkészíteni C nyelven. Az így kapott C forráskódú modulokat a kliens és szerver alkalmazással kibővítve kapjuk a teljes kommunikáló rendszert.&lt;br /&gt;
* XDR (Extended Data Representation, kiterjesztett adatreprezentáció): Többféle egyszerű adattípust definiál, illetve szabályokat határoz meg bonyolultabb adatstruktúrák létrehozására. Az adatstruktúrák meghatározásán kívül az XDR egy formális nyelvet is bevezet az adatok leírására. Az RPC rendszer is ezen nyelv kiterjesztését használja a távoli eljáráshívás formális leírására.&lt;br /&gt;
* RPC (remote procedure call, távoli eljáráshívás): Az RPC-rendszer egy protokoll-leírást és egy programozói interfészt tartalmaz. Az XDR által definiált formális nyelv kiterjesztését használja a távoli eljáráshívás formális leírására.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====System V IPC: Sorolja fel a UNIX System V IPC elemek közös alapjának részeit!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Minden IPC erőforrás rendelkezik a következő azonosítókkal: kulcs (key), létrehozó (creator), tulajdonos (owner), hozzáférési jogok (permissions)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
====System V: Adja meg a System V üzenetsorok főbb jellemzőit (tömör felsorolást kérünk)!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* diszkrét, tipizált üzenetek&lt;br /&gt;
* nincs címzés, üzenetszórás&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====System V: Miért tud az s5fs (System V File System) gyorsabban írni, mint olvasni (az előadás példája alapján)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* az írás gyors, főleg kis fájlok esetén (több szintű leképzés a kisebb blokkkok miatt), az olvasás azért lassabb (csak a nagy fájlokra), mert azoknak a részeit össze kell vadászni a szétszórtság miatt&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====u-terület: milyen jellegű adminisztratív adatok vannak az u-területen?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Azok az adatok, melyek a folyamatok futásakor kellenek. Több infó: lásd adminisztratív adatoknál.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====UNIX-fajták: Soroljon fel fő UNIX-fajtákat!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Linux, Solaris, BSD, System V, HP/UX, ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====UNIX-szabványok: Soroljon fel UNIX-hoz köthető szabványokat (legalább kettőt)!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* POSIX.1 (teljes nevén: POSIX1003.1): C nyelvű szabványos rendszerhívás-interfész&lt;br /&gt;
* System V Interface Definition&lt;br /&gt;
* X/Open Portability Guide&lt;br /&gt;
* - AT&amp;amp;T SVID (pl. SVR4), - IEEE POSIX,  - Open Group X/Open, Unix95, Unix98, ...  ????&lt;br /&gt;
* http://linux.die.net/man/7/standards&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====UNIX-típusok: Soroljon fel UNIX típusokat (a családfa jellemző ágait)!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* System V (AT&amp;amp;T változat; Solaris, SCO),&lt;br /&gt;
* BSD (Berkeley változat; SunOS, OpenBSD)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Ütemezés: Adja meg a tradicionális UNIX ütemező három legjellemzőbb tulajdonságát!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* preemptív, prioritásos és időosztásos&lt;br /&gt;
(Néhány kiegészítés a UNIX-ütemezőhöz:&lt;br /&gt;
* nem preemptív kernel módban (a kernel módot végrehajtó folyamatot (pl. rendszerhívás, megszakítás-kezelés) nem lehet kényszeríteni, hogy a CPU használatáról lemondjon egy nagyobb prioritású folyamat javára)&lt;br /&gt;
* újraütemezés csak akkor következik be, ha egy folyamat önként lemond a CPU-ról és sleep rendszerhívást hajt végre, vagy a folyamat kernel módból visszatér user módba Nem méretezhető megfelelően. Az algoritmus nem képes rugalmasan alkalmazkodni a folyamatok számának növekedése esetén. A korrekciós faktor nem elég hatékony eszköz.&lt;br /&gt;
* A CPU-t adott esetben nem lehet &amp;quot;kiosztani&amp;quot; adott folyamat számára. Nem garantálható fix válaszidő. Nagy rendszerterhelés esetén a válaszidő megnőhet. A UNIX ütemezés épp ezért nem alkalmazható real-time rendszerekben.&lt;br /&gt;
* A kernel nem preemptív, ezért az egész rendszert feltarthatja. A felhasználó nem tudja megfelelő módon befolyásolni folyamatai prioritását - a nice szám nem megfelelő eszköz erre a célra.)&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====vfs: Mondjon legalább egy, UNIX VFS-alapú &amp;quot;fájlrendszert&amp;quot;, amelynek a célja nem fájlok tárolása!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
/dev, /proc, stb.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====vfs: Soroljon fel UNIX VFS-alapú fájlrendszereket (legalább négyet)!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
xfs, zfs, brtfs, nfs&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Virtuális rendszerhívás: Mi az a virtuális rendszerhívás, miért van rá szükség?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
(Klasszikus UNIX-ban nincs, Linux 2.5.x-től felfelé, mai Linux kernelek aktívan használják.)  &lt;br /&gt;
Vannak bizonyos egyszerű feladatok, amelyek a feladat egyszerűsége ellenére túl sok felesleges művelettel járnak: rendszerhívás intterrupt, kontextusváltás, stb., ezen a helyzeten szeretnénk javítani - próbáljuk lerövidíteni ezt az utat.  &lt;br /&gt;
Pl. a pontos idő lekérdezése csupán egy megfelelő hardver kiolvasása (egyszerű numerikus érték), mégis sok művelettel jár: gettimeofday(): libc &amp;gt; SYSCALL &amp;gt; kontextusváltás &amp;gt; ..., majd ugyanezen a lépcsőn visszasétálunk a felhasználói folyamatba.  &lt;br /&gt;
Persze nem mindig lehet leegyszerűsíteni ezt az utat, csak egyszerűbb és biztonságos esetekben, pl. ha egyszerű numerikus értékek, azonosítók kiolvasásáról van szó: pl. folyamatnak mi az azonosítója, processzor lekérdezése, pontos idő lekérdezése...Tehát a felhasználói módból kernel módba történő hosszas váltást szeretnénk elkerülni. Ha nincs ilyen módváltás, akkor a felhasználói címtérben elérünk egyes kernelterületeket &amp;gt; így tényleg egyszerű függvényhívás lesz. Megfelelő előfeltételekkel: csak kockázatmentes feladatokra. Időlekérdezés tipikusan ilyen, ott megtehetjük.A felhasználói címtérben az a tevékenység, amelyet szeretnénk végrehajtani, elérhető legyen. Ezt oldják meg a virtuális rendszerhívások!	&lt;br /&gt;
A folyamat címterébe a kernel rendszerinduláskor speciális &amp;quot;kernellapot&amp;quot; allokál - ezen a biztonságosnak tekinthető rendszerhívások vannak. Terminálból példa: ldd /bin/bash&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====vnode/vfs: Mi a UNIX vnode/vfs?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Implementáció-független fájlrendszer absztrakció&lt;br /&gt;
* vnode: virtuális csomópont, vfs: virtuális állományrendszer&lt;br /&gt;
* inode --&amp;gt; vnode&lt;br /&gt;
* fs --&amp;gt; vfs&lt;br /&gt;
* Új absztrakció: annak felismerése, hogy több állományrendszernek számos előnye van, szükségessé vette a virtuális csomópont (vnode) és a virtuális állományrendszer (vfs) leíró adatszerkezetek bevezetését. Követelmények, elvárások az állományrendszerrel kapcsolatban:&lt;br /&gt;
** egyszerre támogasson több - UNIX, nem UNIX - állományrendszert&lt;br /&gt;
** különböző diszk partíciók különböző állományrendszereket is tartalmazhatnak, de mountolás esetén egységet képet kell, hogy mutassanak&lt;br /&gt;
** támogassa a hálózati állományok osztott használatát&lt;br /&gt;
** modulárisan bővíthető legyen. &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Zombi állapot: Mi a zombi állapot szerepe egy UNIX rendszerben?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A folyamat már felszabadította a foglalt memóriát, lezárta az állományokat, minden erőforrását visszaadta a rendszernek, csak a proc struktúráját tartja fogva, amiben visszatérési és statisztikai információt tárol a szülő számára. A folyamat szülő wait hívása után szűnik meg.&lt;br /&gt;
&lt;br /&gt;
Megjegyzés: bővebben magyarázattal, előadás alapján:&lt;br /&gt;
A folyamat megáll, a UNIX-ban a kernel szeretné ezt a szülőjének is tudomására hozni.	&lt;br /&gt;
A folyamat már leállt, nem fog tovább futni, de a szülőjét még nem értesítették arról, hogy ez a folyamat megszűnt, esetleg gondoskodjon az újraindításáról, stb.  &lt;br /&gt;
Pl. egy webszerver: beérkező kérések kiszolgálása --&amp;gt; kliens folyamat indítása, ez megkapja a kérés kiszolgálásának feladatát, a kliens pedig valamikor megáll, a webszerver nem árt, ha értesül róla, hogy hiba vagy normál működés folytán állt le.  &lt;br /&gt;
Tehát amíg a szülő nem értesült a leállásról, a folyamat zombi állapotban marad. Ha a szülőt nem érdekli, mi történt a gyerekfolyamattal, a zombi állapot hamar megszűnik.  &lt;br /&gt;
A zombi állapotban a folyamatnak semmilyen saját adatát nem tároljuk, a folyamat összes működéshez szükséges adata megszűnik, kizárólag a kernel adatstruktúrákban, tehát a proc struktúrában marad meg a folyamatnak néhány adminisztratív adata. A ps kilistázhat pl. zombi állapotban lévő feladatokat, mert ezeknet a folyamatoknak az adminisztratív adatai a kernel címterében még megtalálhatóak. De a folyamatok saját címtere, u-terület, stb. már nem létezik. Miután a szülő értesült róla, hogy a gyerekfolyamat meghalt, a kernel törölni fogja a folyamatot a process táblából is, a folyamat kilép a zombi állapotból.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Zombi állapot: Igaz-e az, hogy egy zombi állapotban lévő folyamat még memóriaterületet foglal?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Igen, mert a kernel processz táblában még ott vannak az adatai, és az memóriaterületet foglal. (A NEM választ is meg lehet indokolni...) [Indoklás nélkül 0 pont!!!]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
&lt;br /&gt;
====Alrendszer: Melyik az az alrendszere a Windowsnak, ami nélkül nem tud futni?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A Windows alrendszer, avagy Client/Server Runtime [[SubSystem]] (csrss.exe). Ennek kilövése kékhalált eredményez.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====API-k: Hogyan oldották meg, hogy az alkalmazások többféle API-n (Win32, POSIX) keresztül is meg tudják hívni a Windows operációs rendszer funkcióit?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Megoldás: környezeti alrendszerek (environment subsystems): a felhasználónak vagy programozónak nyújtott környezet, személyiség egy részét a környezeti alrendszer folyamatok valósítják meg, minden egyes környezet külön API-t mutat (Windows, POSIX, ...), az operációs rendszer rendszerhívásainak egy részét kínálja a felhasználói alkalmazások számára. (Forrás: http://mit.bme.hu/~micskeiz/opre/files/00-opre-windows-bevezeto.pptx)&lt;br /&gt;
* a kernelnek egy definiált interfésze van, ami nem publikus (hivatalos dokumentációja nincsen): NT API &amp;gt;&amp;gt; az ebben lévő függvényeket a fejlesztő ne hívhassa meg közvetlenül. Ehelyett erre két alrendszer épül, ők mutatnak egy API-t az alkalmazások felé: Windows API és POSIX API. (ezek teljesen dokumentáltak!). Az alkalmazások viszont nem keverhetik az alrendszereket, mindegyik csak egyet használhat; ezt linkeléskor kell eldönteni.&lt;br /&gt;
* A két alrendszer feladata az, hogy az általuk definiált hívásokat átfordítsák.&lt;br /&gt;
* Nem pusztán szintaktikai, hanem szemantikai eltérések is vannak.&lt;br /&gt;
&lt;br /&gt;
(Megjegyzés: Exetype segédeszköz segítségével megnézhető, melyik alrendszert használja egy adott alkalmazás.)&lt;br /&gt;
&lt;br /&gt;
Forrás: http://video.bme.hu/media/video/Operacios_Rendszerek_04ea_20110215.wmv (00:28:29 körül)&lt;br /&gt;
&lt;br /&gt;
(Korábbi:&lt;br /&gt;
* Alkalmazás 1&amp;gt;&amp;gt;&amp;gt;Windows API (Windows alrendszer)&amp;gt;&amp;gt;&amp;gt;NT API (NT Kernel)&amp;lt;&amp;lt;&amp;lt;Posix API (Posix alrendszer)&amp;lt;&amp;lt;&amp;lt;Alkalmazás 2 TODO(ehelyett 1 épkézláb mondat kéne)&lt;br /&gt;
* alkalmazások viszont nem keverhetik az alrendszereket, mindegyik csak egyet használhat; ezt linkeléskor kell eldönteni&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Executive réteg: Executive (Windows)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Az operációs rendszer magasabb szintű funkcióit szolgáltató rétege (memóriakezelés, biztonság, stb.). Az adatokat objektumokban tárolja, melyeket leírókkal (handle) lehet csak elérni, jól definiált interfészeken keresztül. Bár a kernel funkcióit csak a kernel interfészén keresztül éri el, szintén az ntoskrnl.exe tartalmazza. A legtöbb rendszerhívás itt van megvalósítva. &lt;br /&gt;
Forrás: http://mit.bme.hu/~micskeiz/opre/files/00-opre-windows-bevezeto.pptx&lt;br /&gt;
&lt;br /&gt;
(Korábbi: Ez a réteg tartalmazza az NTDLL.DLL által definiált függvények hívásainak megvalósítását, valamint a rendszer külső objektumai közti kommunikáció. Legfontosabb szolgáltató funkciója a lokális eljárás hívás - LPC (Local Procedure Call) megvalósítása. TODO[MZ])&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fájlhozzáférések: Mivel azonosítja a Windows a felhasználókat és csoportokat a fájlhozzáférési listákban?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* objektum (SecurableObject) &amp;amp;#8594; (SID, engedélyek) ; engedély: adatok írása, attribútumok olvasása...&lt;br /&gt;
* SecurityDescriptor (biztonsági leíró, összefogja a többi elemet) &amp;gt;&amp;gt; Owner (Tulajdonos, megváltoztathatja az objektum engedélyeit, akkor is ha nincs explicit joga), Discretionary Access Control List (DACL, belátás szerinti, erőforrás szintű, hozzáférési lista - hozzáférés szabályozása), SACL (biztonsági naplózás szabályozása - kinek milyen művelete esetén kell naplózni az adott műveletet)&lt;br /&gt;
* AccessControlEntry:&lt;br /&gt;
** Típus: megengedő, tiltó, audit&lt;br /&gt;
** Flag: Pl. öröklődés&lt;br /&gt;
** SID: kire vonatkozik&lt;br /&gt;
** Maszk: végrehajtás | törlés  tulajdonos írása...&lt;br /&gt;
* elérési lista (ACL), melyben megadható, hogy mely folyamatok jogosultak az adott section object elérésére ???&lt;br /&gt;
*  minden objektumhoz tároljuk a hozzá tartozó &amp;lt;tartomány, műveletvégzési jog&amp;gt; párokat ????&lt;br /&gt;
* TODO - bőven elég annyi, hogy Security Identifier (SID) segítségével azonosítja&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Felhasználó- és csoportazonosító: Mi alapján azonosítja a Windows a felhasználókat és a csoportokat?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
SID - Security Identifier&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Paravirtualizáció: Mit jelent az, hogy egy virtualizációs megoldás paravirtualizációt használ a CPU virtualizálásához?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Paravirtualizáció esetén fel kell készíteni a vendég OS-t a forráskódjának módosításával, hogy ne is akarjon problémás utasításokat hívni, hanem azok helyett azoknak megfelelő függvényeket hívjon a hypervisorban. Ezzel egyszerűsödik a hypervisor implementálása.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Felhasználó- és csoportazonosító: Mivel azonosítja a Windows a felhasználókat és csoportokat a hozzáférések ellenőrzése során?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;Gép SID&amp;gt;-&amp;lt;RID&amp;gt; (SID security identifier - gépspecifikus, RID: relative identifier)&lt;br /&gt;
* Jól ismert SID-ek: Everyone: S-1-1-0, Administrator: S-1-5-domain-500&lt;br /&gt;
* Vista: szolgáltatások is kapnak SID-et&lt;br /&gt;
* objektum &amp;amp;#8594; (SID, engedélyek) ; engedély: adatok írása, attribútumok olvasása...&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====HAL: Mi a HAL (Windows)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;quot;HAL&amp;quot; - Hardware Abstraction Layer&lt;br /&gt;
* A felsőbb rétegek a HAL-on keresztül érik el az alap HW szolgáltatásokat, a HAL szerepe, hogy elfedje a HW megvalósítás részleteit, és egy egységes, platformfüggetlen felületet biztosítson.&lt;br /&gt;
* hal.dll fájlban megvalósítva (pl. timer interrupt kezelését, alaplap alapvető felépítését (milyen chipsetek vannak rajta), stb. elfedi a felette lévő rétegektől)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Hardverfüggő részek: Melyek a Windows hardverfüggő részei?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* A kernel egyes részei és a HAL.&lt;br /&gt;
* Megjegyzés: én ide a drivereket is beírtam, nem vontak le érte pontot, de azt mondták, azokat nem mindig szokás a rendszer részének tekinteni.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Jogosultságok szerepe: Mik a jogosultságok (privilege) szerepe a Windows-ban?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* operációs rendszer szintű jog&lt;br /&gt;
* meghatározzák azokat a rendszerműveleteket, amelyeket egy felhasználói azonosító elvégezhet. Egy rendszergazda jogosultságokat felhasználóknak és csoportazonosítóknak oszt (http://msdn.microsoft.com/en-us/library/bb530716(VS.85).aspx)&lt;br /&gt;
* pl. számítógép leállítása, eszközmeghajtó betöltése&lt;br /&gt;
* név: SeShutDownPrivilege, SeLoadDriverPrivilege&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Képernyőkezelő/ablakkezelő/grafikus komponens/Képernyőkezelő és grafikus funkciókat megvalósító függvények kernel módba kerülése: Mi a fő oka, hogy a Windows NT-ben a képernyőkezelő és grafikus funkciókat megvalósító függvények kernel módba kerültek? Elméleti megfontolások alapján hol lenne a helyük?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
	 Windows NT 4.0-ban került le kernel szintre ez a komponens, hogy kevesebb folyamat- és módváltás legyen (Ne kelljen mindig visszaváltani a csrss.exe-be, majd onnan átváltani kernel módba, utasítani a hardvert, visszaváltani felhasználói módba, majd visszaváltani a felhasználói folyamatba, aki kezdeményezte a változtatást.) (A felhasználói módú folyamatban (csrss.exe) csak a konzol kezelés maradt.) Elméletileg felhasználói szinten kéne lennie.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Képernyőkezelő/ablakkezelő/grafikus komponens kernel módba kerülése: Windows-ban miért került le az ablakkezelő kernel módba?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Hogy kevesebb kontextus- és módváltás legyen, mivel a Windows szerves része az ablakkezelés, ezért rengeteg user-kernel mód váltás lenne ha a csrss.exe-en keresztül használnánk. Tehát teljesítménybeli okokból.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Képernyőkezelő/ablakkezelő/grafikus komponens előnyei: A Windows OS grafikus komponensének mik az előnyei, hátrányai?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A grafikus komponens kernel módban fut. Emiatt a hibái az egész rendszert magával ránthatják, viszont gyorsabb, mert kevesebb CPU-mód váltás kell a rajzoláshoz.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Képernyőkezelő/ablakkezelő/grafikus komponens kernel módba kerülése: Mi volt a fő oka annak, hogy a Windows NT-ben a képernyőkezelő és grafikus funkciókat megvalósító komponens kernel módba került?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
	 Mert ezek a folyamatok intenzíven használják a hardvert, és futásuk gyorsaságára az egész rendszer teljesítménye érzékeny. A user módban történő megvalósítás a rendszert lelassítaná a gyakori környezetváltás miatt.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kernel: Mi a kernel (Windows)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A rendszer állandóan memóriában lévő, védett módban futó része. Az NT egyetlen HW függő része, szerepe a HW elfedése a felette található eszközök elől, ezáltal a felette lévő részek már teljesen HW függetlenek. Megvalósítja a szálütemezést, multiprocesszor ütemezést és a TRAP kezelést.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kliens-szerver-modell: Nevezzen meg egy kliens-szerver-modell alapján működő komponenst az NT-ben!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* csrss.exe - Client/Server Run-Time Subsystems (környezeti alrendszerek)&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Memóriafoglalás: Mely utasításokkal és miért történik a memóriafoglalás két lépésben Windows alatt?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* A két lépés: Reserve és Commit. Az első csak címtartományt foglal, amögött nem lesz ténylegesen használható memóriaterület; a másik a már lefoglalt címtartományhoz rendel (virtuális) memóriát.&lt;br /&gt;
* A folyamatok címtartományának töredezettsége csökkenthető azzal, ha a címtartományt már akkor előre foglalja, mikor a memóriára még nincs szüksége, és ez nem jár olyan memóriapocsékolással, mintha fizikai memóriát is foglalna ugyanakkor.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Munkakészlet (working set): Mit jelent a Windows-ban az egy folyamathoz tartozó munkakészlet (working set) fogalma?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Azon fizikai lapok halmaza, amelyekre a folyamat laphiba nélkül hivatkozhat. &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====NT hardverfüggő rétegei: Sorolja fel az NT hardverfüggő rétegeit!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
HAL (Hardware Abstraction Level), kernel&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====NTDLL.DLL: Mi az NTDLL.DLL fő funkciója?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Összeköti a User és Kernel módot. Az Executive függvényeknek megfelelő függvénycsonkok vannak benne.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Quantum: Mi a szerepe a quantumnak a Windows ütemezőjében?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* A szálak adott ideig futnak (quantum)&lt;br /&gt;
* RR ütemezésnél az időszelet&lt;br /&gt;
* Óramegszakításban mérik (clock interval, clock tick) 1 clock tick = ~ 10-15 ms (HALtól függ)&lt;br /&gt;
* Quantum hossza: időegység, amíg egy szál fut&lt;br /&gt;
* Kliensek esetén a quantum hossza 2 clock tick a háttérben futó folyamatoknak, az előtérben futó folyamatoknak 6 clock tick jut. Így egy CPU-intenzív folyamatról való ablakváltáskor az új, előtérben lévő folyamat arányosan több CPU-időt kap (azonos prioritásokat feltételezve).&lt;br /&gt;
* Szervereknél: mindenkinek 12 clock tick a kontextusváltások minimalizálása érdekében. Szervereknél így a kliensek kéréseinek eredményeként felébredő alkalmazásoknak több esélye van befejezni a kérést, és várakozó állapotba kerülni, mielőtt az időszelet véget érne.&lt;br /&gt;
* esély annak a folyamatnak, amelynek épp most ért véget a várakozása: a várakozás végén megnöveljük a prioritást, de a quantum eggyel csökken; a quantum végén a prioritást az eredetire csökkenti.&lt;br /&gt;
* éhezés elkerülése: az OS másodpercenként megnézni a futásra kész szálakat, és annak, aki nem futott már 300 óraütés óta, 15-ös prioritást ad, megnöveli a quantumját egy quantumnyi futásig&lt;br /&gt;
* TODO, hogy a forrás feldolgozása jó-e: http://mit.bme.hu/~micskeiz/opre/files/01-opre-windows-utemezes.pptx&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rendszeridő megváltoztatása: A rendszeridő megváltoztatására kinek van joga Windows alatt?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* SeSystemTimePrivilege joggal rendelkező felhasználóknak / azoknak a felhasználóknak, amelyek olyan csoportba tartoznak, amelyekhez hozzá van rendelve a SeSystemtimePrivilege.&lt;br /&gt;
* Alapértelmezett beállításként csak az Administrators és Power Users group rendelkezik vele.&lt;br /&gt;
* http://msdn.microsoft.com/en-us/library/windows/desktop/bb530716(v=vs.85).aspx&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Standby memórialapok listája: Mire szolgál a standby memória lap lista a Windows-ban (miért nem szabad lapként vannak ezek nyilvántartva)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A lap egy munkahalmaz része volt, de már nem az, elvették tőle. A lap nem módosult, mióta kiírták a merevlemezre, vagy mióta beolvasták. Egy nem Valid laptábla bejegyzés még mutat rá, azaz ha kell, még könnyen életre lehet kelteni a lapot. &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Szabad (free) és nullázott (zeroed) lapok: Miért van a Windows-ban külön szabad és nullázott (freed és zeroed) memórialap-lista?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Biztonsági okokból. Nem nullázott memóriaterületet odaadni más folyamatnak biztonsági kockázatot jelent.&lt;br /&gt;
Tehát a free lapok szabad lapok, de még nem adhatók oda felhasználói folyamatnak, mert &amp;quot;szemetet&amp;quot; vagy érzékeny adatot tartalmazhatnak: nincs nullákkal felülírva a tartalma. A zeroed lapok szabadok, és nullákkal vannak felülírva, tehát odaadhatók felhasználói folyamatnak, amennyiben igény van rá.&lt;br /&gt;
&lt;br /&gt;
TODO: ez így már megfelelő indoklás?&lt;br /&gt;
&lt;br /&gt;
(Korábban:&lt;br /&gt;
*Free*: a lap szabad, de nincs 0-kkal felülírva a tartalma, szemét vagy egy előző processz által használt tartalom van benne. Ezt nem adhatja ki közvetlenül a memóriakezelő más processzeknek, mert biztonsági szempontból aggályos adatokat találhatna rajta.&lt;br /&gt;
*Zeroed*: szabad és nullákkal felülírt lap, kiadható, ha valakinek kell. &lt;br /&gt;
TODO(ez így igaz, csak ebben a formában nem a kérdésre válaszol))&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Mik a szerepük a szolgáltatásoknak a Windowsban? ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Olyan folyamatok, amik a felhasználói felülettől és belépéstől függetlenül a háttérben futnak, és kibővítik az operációs rendszer alap szolgáltatásait.&lt;br /&gt;
TODO?&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Újrahívhatóság (reentrancy): Mit jelent az, hogy a Windows-ban a rendszerhívások újrahívhatóak?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A rendszerhívásokat több alkalmazás is meghívhatja egyszerre, nem blokkolódnak, ha már valakit éppen kiszolgál az adott rendszerhívás.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Védett objektum tulajdonosának speciális joga: Milyen speciális joga van egy védett objektum tulajdonosának az adott objektumra a Windows-ban?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Megváltoztathatja az objektum engedélyeit, akkor is, ha erre nincs explicit joga. (https://wiki.sch.bme.hu/pub/Infoalap/OpRe/03-opre-windows-biztonsag.pptx)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Verzióleírás: Mit jelentenek a számok és szavak a következő verzióleírásban: &amp;quot;Microsoft (R) Windows (R) 5.01.2006 Service Pack 2 Uniprocessor Free&amp;quot;?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* (MZ) 5.01.2006 a verziószám, major.minor.build formában, 5.1 a Windows XP verzója, 2006 az SP2-es verzió build száma. Uniprocessor = egy processzoros kernel verzió, Free = debug szimbólumok nélküli verzió.&lt;br /&gt;
	*(MZ) 2011-től kezdve ez már nem része a tananyagnak&lt;br /&gt;
* Most computers run a &amp;quot;uniprocessor free&amp;quot; version of Windows, which is a version that runs on a single CPU and does not contain extra errorchecking.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- /#q_and_a --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Tartalomjegyzék==&lt;br /&gt;
&amp;lt;div class=&amp;quot;table_of_contents&amp;quot;&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Források (teljesség igénye nélkül)==&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs_sources&amp;quot;&amp;gt;&lt;br /&gt;
Ez előadás diáin, Wikipédiás és egyéb, Google-lel található cikkeken kívül ezek voltak a források, és MÉG ÍGY SEM tartalmazza az összes beugrókérdést (volt olyan, amit rengeteg idő lett volna átszerkeszteni, vagy kevésbé sanszos, hogy olyan hosszúságú beugrókérdést tennének fel, ami ott szerepelt):&lt;br /&gt;
&lt;br /&gt;
* Hivatalos előadásjegyzetek: http://portal.mit.bme.hu/?l=oktatas/targyak/vimia219/jegyzet/index.html&lt;br /&gt;
* https://wiki.sch.bme.hu/bin/view/Infoalap/OpReVizsgaBeugrok&lt;br /&gt;
* https://wiki.sch.bme.hu/bin/view/Infoalap/OpReVizsgaKisKerdesek&lt;br /&gt;
* https://wiki.sch.bme.hu/bin/view/Infoalap/OpReVizsga2007junius12megoldas&lt;br /&gt;
* https://wiki.sch.bme.hu/bin/view/Infoalap/OpReVizsga2008majus20megoldas&lt;br /&gt;
* https://wiki.sch.bme.hu/bin/view/Infoalap/OpReVizsga2008junius11megoldas&lt;br /&gt;
* https://wiki.sch.bme.hu/pub/Infoalap/OpRe/pelda_beugro_megoldas.pdf&lt;br /&gt;
----&lt;br /&gt;
* https://vir.sch.bme.hu/dokumentumok/InfoSite/4.%20f%C3%A9l%C3%A9v/Oper%C3%A1ci%C3%B3s%20rendszerek/&lt;br /&gt;
* https://vir.sch.bme.hu/document/targyak/opre/opre_beugro.zip (HOSSZÚ)&lt;br /&gt;
* https://vir.sch.bme.hu/document/targyak/opre/oprendszkidolg.zip&lt;br /&gt;
* Wikipédia&lt;br /&gt;
* Google segítségével fellelhető rengeteg forrás&lt;br /&gt;
* stb.&lt;br /&gt;
&lt;br /&gt;
-- [[PeteHaro|Pete]] - 2011.06.19.&lt;br /&gt;
* [[Media:opre_beugro_ABC.docx|Operációs rendszerek vizsgabeugrók megoldással DOCX-formátumban (szerkeszthető, javítható!)]]&lt;br /&gt;
* [[Media:opre_beugro_ABC.pdf|Operációs rendszerek vizsgabeugrók megoldással PDF-formátumban]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Infoalap]]&lt;/div&gt;</summary>
		<author><name>Bolla Dávid</name></author>
	</entry>
	<entry>
		<id>https://vik.wiki/index.php?title=Oper%C3%A1ci%C3%B3s_rendszerek_kidolgozott_beugr%C3%B3k%C3%A9rd%C3%A9sek_vizsg%C3%A1ra_ABC-sorrendben&amp;diff=186254</id>
		<title>Operációs rendszerek kidolgozott beugrókérdések vizsgára ABC-sorrendben</title>
		<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=Oper%C3%A1ci%C3%B3s_rendszerek_kidolgozott_beugr%C3%B3k%C3%A9rd%C3%A9sek_vizsg%C3%A1ra_ABC-sorrendben&amp;diff=186254"/>
		<updated>2015-06-10T11:13:12Z</updated>

		<summary type="html">&lt;p&gt;Bolla Dávid: /* Paravirtualizáció: Mit jelent az, hogy egy virtualizációs megoldás paravirtualizációt használ a CPU virtualizálásához? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Bevezető==&lt;br /&gt;
Korábbi Wiki-n és InfoSite-on szereplő kidolgozott és kidolgozatlan anyagok, számtalan forrásból összeszedve - előadásdiákból, video.bme.hu-n lévő felvett anyagokból, Wikipédiás és egyéb, Google segítségével fellelhető anyagokból kiegészítve.&lt;br /&gt;
Hibák előfordulhatnak! TODO-val azokat a részeket jelöltem, amik átnézendők, rendbe szedendők, hiányosak, stb., ezeket is kérlek javítsátok, ha tudjátok! Köszi!&lt;br /&gt;
Ami fontos: ABC-sorrendbe rendezve szerepelnek a kérdések, így könnyebben megtalálható, tartsuk is meg ezt a tendenciát!&lt;br /&gt;
Remélem hasznát veszitek! -- [[PeteHaro|Pete]] - 2011.06.19.&lt;br /&gt;
Valamilyen szintű kategorizálást is beleraktam. A kérdések elejére odaírtam magának a kérdésnek a lényegét is, hogy könnyebben megtalálhatóak legyenek az azonos kérdéskörbe tartozóak.&lt;br /&gt;
&lt;br /&gt;
==Beugrókérdések megoldással==&lt;br /&gt;
===Általános jellegű OS-ekkel kapcsolatos kérdések===&lt;br /&gt;
&lt;br /&gt;
====Indulás: Hasonlítsa össze az általános célú (asztali) és a beágyazott operációs rendszereket az indulás szempontjából!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A beágyazottnál először indul az alkalmazás, és az indítja az operációs rendszert, az asztalinál az operációs rendszer indítja az alkalmazásokat.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Inkrementális mentés: Mit jelent az inkrementális mentés?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Csak a változtatásokat mentjük az előző mentéshez képest -&amp;gt; kisebb helyet foglal, hamarabb végez a mentés.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kemény valós idejű rendszer: Adja meg a kemény valós idejű (hard real-time) rendszer definícióját!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A rendszer adott eseményekre  adott időn belül 1 valószínűséggel válaszol (egyébként hibás, hiába funkcionálisan jó a válasz). A rendszer NEM késhet!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Lazán csatolt rendszer: Milyen szinkronizációs kényszereket jelent, ha egy lazán csatolt rendszer kommunikációja során véges kapacitású csatornát alkalmazunk?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
ha a küldő folyamat túl gyorsan küldözget, akkor a csatorna megtelik, úgyhogy túlcsordulás lesz, ami miatt a küldőnek várnia kell mielőtt újra küld.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rendszerhívások: Milyen előnnyel jár a rendszerhívások valamilyen magas szintű programnyelvvel történő megadása?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Az API elrejti a rendszerhívások részleteit, bonyolultságát a programozó elől, lényegében egy wrapper réteggel fedi be a rendszerhívásokat.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====RPC: Milyen részekből áll az RPC technológia?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* RPC: Remote Procedure Call, távoli eljáráshívás. Magas szintű folyamatok közti kommunikációt tesz lehetővé. Részei:&lt;br /&gt;
*  a hívható eljárások és típusaik (interfész) leírása&lt;br /&gt;
* programgenerátor - rpcgen: a leírásból C programkódot generáló program&lt;br /&gt;
* kommunikációs infrastruktúra - portmapper: a programazonosítók és a hálózati portok összerendelése&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Statikus/dinamikus OS: Mikor nevezünk statikusnak, illetve dinamikusnak egy operációs rendszert?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
statikus: azok a rendszerek, amelyeknek muködése során - a felépülés és inicializálás kezdeti szakaszától eltekintve - nem jönnek létre és nem szűnnek meg folyamatok. dinamikus: működés közben bármikor születhetnek illetve megszünhetnek folyamatok.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Szorosan csatolt rendszerek: Milyen rendszereket nevezünk &amp;quot;szorosan csatolt&amp;quot; rendszereknek?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Ahol több CPU közös óra és közös memória segítségével működik együtt. Általában egyetlen operációs rendszer van, de az bonyolult. (Megjegyzés: az architektúrákból megtanult &amp;quot;közös erőforrást használnak&amp;quot; definícióra csak fél pontot adtak.)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Erőforrás-hozzáférés===&lt;br /&gt;
&lt;br /&gt;
====Elosztott rendszerek: Elosztott rendszerekben milyen konzisztencia kérdésekkel kell foglalkozni?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* frissítés konzisztencia&lt;br /&gt;
* másolat konzisztencia&lt;br /&gt;
* cache konzisztencia&lt;br /&gt;
* hiba konzisztencia&lt;br /&gt;
* óra konzisztencia&lt;br /&gt;
* felhasználói interfész konzisztencia&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Erőforrás-gazdálkodás: Mi a különbség a hierarchikus és a globális erőforrás-gazdálkodás között?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
hierarchikus: a gyermek folyamatok csak a szülő erőforrásaiból részesülhetnek, és nem létezhetnek önállóan, csak amíg a szülőjük is létezik. globális: a rendszer valamennyi folyamata létrejötte után egyenrangú, önálló szereplő, és versenyezhet a teljes erőforráskészletből való részesedésért.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Éhezés: Mi az az éhezés?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A folyamatnak megvan mindene, ami a futásához kellene (ezért nem holtpont), de az erőforrásokat, amiket használni akar, más folyamatok kapják meg (ezért nem tud futni).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Graceful degradation: Mit jelent a &amp;quot;graceful degradation&amp;quot; fogalma? ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Fokozatos leromlás/összeomlás: Ha a rendszer terhelése eléri az ún. könyökkapacitást, akkor utána viselkedése megváltozik, a tovább növekvő terhelésre már egyre rosszabb működéssel reagál (overhead). Elvárható, hogy ezt fokozatosan tegye (ne omoljon össze).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kölcsönös kizárás====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Annak biztosítása, hogy a közös erőforrást egy időben csak annyi magában szekvenciális feladat használja, amely mellett a helyes működése garantálható.&lt;br /&gt;
A kölcsönös kizárást meg kell oldanunk a programban. Többnyire a használt erőforrást lock-oljuk (elzárjuk): nem engedjük hozzáférni a többi részfeladatot.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kritikus szakasz: Mit jelent a kritikus szakasz?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A magában szekvenciális feladatok azon kódrészletei, amely során a kölcsönös kizárást egy bizonyos közös erőforrásra biztosítjuk. A kritikus szakasz a kérdéses közös erőforráshoz tartozik. A kritikus szakaszt a hozzá tartozó erőforrásra atomi műveletként (nem megszakítható módon) kell végrehajtanunk.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Monitor: Mi a monitor alkalmazásának lényege? (Kölcsönös kizárás)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A lockolás nem szétszórva történik a programban, hanem egyetlen, a közös erőforráshoz szorosan tartozó programrészletben.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prioritás öröklés: Mi a prioritás öröklés (Priority Inheritance, Pl) protokoll lényege? (prioritás inverzió témakör)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Az alacsony prioritású feladat megörökli az általa kölcsönös kizárással feltartott feladat prioritását a kritikus szakaszából való kilépéséig. Csak részben oldja meg a prioritás inverzió problémáját.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Test-and-set: Hogyan lehet Test_and_Set utasítással kritikus szakaszba lépést (entry) és kilépés (exit) megvalósítani?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Belépésnél csökkentjük a value értékét ezzel jelezve hogy használni akarjuk a kritikus szakaszt&lt;br /&gt;
* Kilépésnél növeljük a value értékét&lt;br /&gt;
Egy változót kijelölünk &amp;quot;lock object&amp;quot;-nek; ha ennek a tartalma 0, nincs senki a kritikus szakaszban. A kritikus szakasz elején egy ciklusban test-and-set-et hajtunk végre rá (az utasítást a ciklus feltételébe téve); ha valaki van a szakaszban már, a ciklusban fogunk keringeni, amíg ki nem lép belőle a másik. Amikor kilépett, a test-and-set következő végrehajtása beállítja a változót, és továbbengedi az egyik várakozó ciklust. A szakaszból kilépéskor pedig simán (nem test-and-set-tel) 0-ba állítjuk.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Test-and-set: Hogyan működik a test_and_set?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Visszaadja egy bit értékét, és ha 0 volt, 1-re állítja. Mindezt oszthatatlanul, vagyis ha 0 volt ott, és többen egyszerre hívtak rá test-and-set-et, akkor az egyiké teljesen lefut, 1-be állítja és nullát ad vissza, mielőtt a többi elkezdene futni (így ők mind 1-et fognak visszaadni)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Újrahívhatóság: Mit jelent az újrahívhatóság (reentrancy) fogalma?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A közös erőforrás problémájának egyfajta kiterjesztett esete egy függvényen/objektumon belül, mely akkor léphet fel, amennyiben ezt a függvényt/metódust egyszerre többen is meghívhatják. Előfordulhat akkor, ha ugyanazt a függvényt hívjuk egy taszkból és egy megszakítás-rutinból is, vagy ha preemptív ütemezés esetén ugyanazt a függvényt hívjuk két taszkból is.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Holtpont===&lt;br /&gt;
&lt;br /&gt;
====Definíció: Adja meg a holtpont definícióját!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Egy rendszer folyamatainak egy H halmaza holtponton van, ha a H halmazba tartozó valamennyi folyamat olyan eseményre vár, amelyet csak egy másik, H halmazba tartozó folyamat tudna előidézni. Másként: A közös erőforrások hibás beállítása vagy használata miatt a rendszerben a részfeladatok egymásra várnak &amp;amp;#187; nincs futásra kész folyamat; &amp;amp;#187; nem jöhet létre belső esemény; &amp;amp;#187; A rendszer nem tud előrelépni.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Foglalva várakozás: Holtpont megelőzése (prevention) esetén milyen módszerrel lehet a foglalva várakozás előfordulását kizárni?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Az erőforrást birtokló feladat kér újabb erőforrást.&lt;br /&gt;
* Minden szükséges erőforrást egyben kell lefoglalni, egyetlen rendszerhívással.&lt;br /&gt;
* Alkalmazástól függ a használhatósága.&lt;br /&gt;
* Erőforrás-kihasználás romlik.&lt;br /&gt;
*  A foglalva várakozás elkerülhető, ha minden folyamat betartja azt a szabályt, hogy az egyidejűleg szükséges valamennyi erőforrását egyetlen rendszerhívással kéri el. A szabály betartásával megelőzhető a holtpont, de ára az erőforrás-kihasználás jelentős romlása.&lt;br /&gt;
*  Ha a folyamatokat kötelezzük arra, hogy minden erőforrásukat egyszerre kérjék el. Ha meg akarjuk engedni a rákérést, akkor menthető állapotú erőforrások esetén megtehetjük, hogy a várakozó folyamatoktól elvesszük az erőforrásaikat.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kezelése: Az operációs rendszer milyen általános eljárásokat használhat a holtpont kezelésére?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* strucc algoritmus (nem vesz róla tudomást)&lt;br /&gt;
* holtpont feloldása - melyik holtpontban érintett folyamatot számoljuk fel?&lt;br /&gt;
* menthető állapotú erőforrások elvétele,&lt;br /&gt;
* minél kevesebb folyamat felszámolása,&lt;br /&gt;
* folyamatok prioritása,&lt;br /&gt;
* már elvégzett munka,&lt;br /&gt;
* folyamatok visszaállíthatóságának biztosítása&lt;br /&gt;
* holtpont megelőzése&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kialakulás szükséges feltételei: Sorolja fel a holtpont kialakulásának szükséges feltételeit!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Kölcsönös kizárás: Vannak olyan erőforrások a rendszerben, melyeket a folyamatok csak kizárólagosan használhatnak.&lt;br /&gt;
* Foglalva várakozás: legyen olyan folyamat mely lefoglalva tart erőforrásokat, miközben más erőforrásokra várakozik.&lt;br /&gt;
* Nincs erőszakos erőforrás-elvétel: a folyamatok addig birtokolják az erőforrást, míg saját jószántukból fel nem szabadítják azokat.&lt;br /&gt;
* Körkörös várakozás: Létezik a rendszerben egy olyan folyamatsorozat, melyben minden folyamat az utána következő folyamat által foglalt erőforrásra vár, a sorozat utolsó tagja pedig a sorozat első tagjára.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Megelőzés, elkerülés: Mi a különbség a holtpont megelőzése (prevention) és holtpont elkerülése (avoidance) között?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* megelőzése: olyan rendszert tervezünk, ahol nem teljesülnek a holtpont feltételei, így elvileg sem lehet holtpont.&lt;br /&gt;
* elkerülése (pl. bankár algoritmus): A rendszer minden erőforrásigény kielégítése előtt mérlegeli, hogy nem vezet-e holtpontveszélyre a kérés teljesítése, más szóval fennmarad-e a biztonságos állapot.&lt;br /&gt;
&lt;br /&gt;
* ( Kölcsönös kizárás minimálisra csökkentése: lehetőleg többpéldányos erőforrásokat alkalmazunk, ahol ez nem lehetséges, ott a hozzáférést megpróbáljuk oszthatatlan műveletté tenni.&lt;br /&gt;
* Foglalva várakoztatás megszüntetése: Ha minden folyamat betartja a szabályt, miszerint az egyidejűleg szükséges valamennyi erőforrását egyetlen rendszerhívással kéri el, akkor elkerülhető a foglalva várakoztatás. Ennek ára van: az erőforrás-kihasználtság romlása.&lt;br /&gt;
* Nincs erőszakos erőforrás-elvétel kiküszöbölése: Ha menthető állapotú erőforrásaink vannak, akkor megtehetjük, hogy elvesszük egy adott folyamat erőforrását és egy másiknak adjuk, majd annak lefutása után visszaadjuk a régi állapotában az erőforrást az első folyamatnak.&lt;br /&gt;
* Körkörös várakozás megakadályozása: A folyamatok megegyeznek az erőforrások sorszámozásában, minden folyamat csak nagyobb sorszámú erőforrást igényelhet azoknál az erőforrásoknál melyeket birtokol. Ekkor biztosan nem alakulhat ki kör.)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Fájlrendszerek===&lt;br /&gt;
&lt;br /&gt;
====Fájl: Mi a fájl az operációs rendszer szempontjából? (háttértár-kezelés)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* a fájl a permanens táron az adattárolás logikai egysége, az operációs rendszer feladata a logikai egységek (fájlok) leképzése valódi fizikai egységekre, ez az OS-ben egy többszintü réteges rendszer&lt;br /&gt;
* Absztrakt adattípus (objektum, fájl mutató).&lt;br /&gt;
* Adat, név (name - elnev. konvenciók), típus (type - kezelés módja) tulajdonságok (attributes). Tulajdonosok, jogosultságok. Hozzáférési időpontok&lt;br /&gt;
* Kölcsönös kizárás (file locking)&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Háttértáron lévő lapok: Milyen részidőkből áll össze a háttértáron levő lapokhoz való tényleges hozzáférési idő? Kis vagy nagy lapok használata esetén kapunk &amp;quot;jobb&amp;quot; byte hozzáférést?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* adatátviteli sebesség + fejmozgás sebessége + lemezek forgási sebessége&lt;br /&gt;
* nagy lapok esetén ( mert így közvetlenül egymás után helyezkednek el az összetartőző adatok így nem kell a fejnek &amp;quot;ugrálnia&amp;quot; )&lt;br /&gt;
* Először a laptáblából kell kikeresni a lap bejegyzését, és konstatálni, hogy nincs hozzá fizikai lap rendelve. Majd, ki kell választani egy szabad fizikai lapot (ha nincs, ki kell vinni egyet háttértárra), a szabad helyre beolvasni a lapot, majd újraindítani a laphibát okozó utasítást. Ezek közül a háttértárról olvasás nagyságrendekkel lassabb a többinél, ezért lényegében ez határozza meg a teljes hozzáférési időt.&lt;br /&gt;
* Ha csak a háttértáron lévő lapokat nézzük, akkor, mivel kisebb lapot gyorsabban lehet beolvasni, ezért kisebb lapoknál gyorsabb a hozzáférés. Ha egy folyamat teljes munkahalmazát nézzük, akkor viszont a kisebb lapok több adminisztrációs költséggel járnak (gyakrabban kell háttértárhoz fordulni), és átlagban a nagyobb lapok adnak jobb eredményt.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Indexelt tárolás: Sorolja fel az indexelt tárolás (indexed allocation) előnyeit és hátrányait! (Fájlrendszer-leképzés)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Szekvenciális és indexelt elérésre is alkalmas.&lt;br /&gt;
* Sérülékeny (az index blokkok sérülése a fájlt elérhetetlenné teszi).&lt;br /&gt;
* Az index blokkokat viszont könnyű többszörözni (replikálni).&lt;br /&gt;
* Sok fejmozgást okoz (seek), a blokkok el vannak szórva a diszken.&lt;br /&gt;
* Itt is lehet a láncolt listás töredezettség mentesítéshez hasonló algoritmusokat használni a fejmozgás minimalizálására.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====RAID: Sorolja fel a RAID technika leglényegesebb elemeit!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Használjunk több merevlemezt egyszerre.&lt;br /&gt;
* Több redundáns alkalmazása növeli a megbízhatóságot.&lt;br /&gt;
* Több párhuzamos használata növeli a sebességet.&lt;br /&gt;
* Hozzunk létre egy virtuális diszket a fizikai diszkekből.&lt;br /&gt;
* Redundant Array of Inexpensive Disks: több lemez összekapcsolása.&lt;br /&gt;
* A RAID-0 esetében két lemezre vannak szétosztva az adatok, így egyetlen fájlt kétszer akkora sebességgel lehet írni (a két felét parhuzamosan).&lt;br /&gt;
* A RAID-1 esetében ugyanazt az adatot tároljuk le a két lemezen, így gyorsabb nem lesz, de az egyik lemez hibája esetén visszanyerhetőek az adatok.&lt;br /&gt;
* Megjegyzés: ez csak példa, több lemezzel is lehet csinálni, a sebesség/tárhely/hibatűrés között különböző kompromisszumokat elérve.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====RAID0 vs. RAID1: Hasonlítsa össze két azonos diszkből álló RAID0 és RAID1 tömb tulajdonságait! Hogyan alakul a hozzáférési idő, az adatátviteli sebesség és a megbízhatóság egyetlen diszkhez képest a két esetben?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
RAID 0-1 szabványok általában SW implementációval és kevés (2db) diszkkel&lt;br /&gt;
* RAID 0 (striped disks):&lt;br /&gt;
** Több diszk párhuzamos használata;&lt;br /&gt;
** file részei N diszkre kerülnek;&lt;br /&gt;
** Az egyes részek egymástól függetlenül elérhetők&lt;br /&gt;
** A diszkek tárolókapacitása összeadódik&lt;br /&gt;
** N azonos diszk esetén a RAID 0 virtuális diszk olvasásai és írási adatátviteli sebessége maximum N-szeres közelébe nő.&lt;br /&gt;
** A hozzáférési idő közel eléri egy diszk hozzáférési idejét.&lt;br /&gt;
** Bármelyik diszk meghibásodása esetén az adat elveszik&lt;br /&gt;
* RAID 1 (mirroring):&lt;br /&gt;
** Több diszk redundáns használata.&lt;br /&gt;
** A file minden része minden (N) diszkre kikerül.&lt;br /&gt;
** Azonos diszkeket feltételezve a tárolóterület egy diszk tárolóterületével azonos.&lt;br /&gt;
** Az adatátviteli sebesség lassabb, mint egy diszk sebessége.&lt;br /&gt;
** A hozzáférési idő nő.&lt;br /&gt;
** Speciális esetben az olvasási sebesség N-szeresre nőhet, feltételezve a diszk meghibásodásának más módon történő észlelését (nem kell az azonosságot ellenőrizni többségi szavazással).&lt;br /&gt;
** Egy működőképes diszk esetén az adat elérhető.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====RAID5: Adja meg az M (M pozitív egész szám) diszket tartalmazó RAID5 tömb tulajdonságait! (hibatűrés és sebesség)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* RAID 5 (block interleaved distributed parity).&lt;br /&gt;
* Több diszk redundáns és párhuzamos használata&lt;br /&gt;
* Adat és paritás elosztása N+1 diszkre.&lt;br /&gt;
** A sebesség tekintetében közel áll az N diszket használó RAID 0-hoz (HW támogatás esetén).&lt;br /&gt;
** 1 diszk meghibásodása esetén az adat elérhető.&lt;br /&gt;
** 2 vagy több diszk meghibásodása esetén az adat elveszik.&lt;br /&gt;
** Az adat nem feltétlenül állítható helyre. (Csendes/néma hibák (silent error). A 2. meghibásodás észlelése a tömb újraépítése során)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====RAID5: Miért előnyös és miért hátrányos RAID5 használata?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* + N azonos diszk esetén az olvasási és írási adatátviteli sebessége maximum N-szeres közelébe nő.&lt;br /&gt;
* + 1 diszk meghibásodása esetén az adat elérhető.&lt;br /&gt;
* - 2 vagy több diszk meghibásodása esetén az adat elveszik.&lt;br /&gt;
* - Az adat nem feltétlenül állítható helyre. (Csendes/néma hibák (silent error).&lt;br /&gt;
* -Bonyolultabb, mint a Raid 0/1, ezért hardveresen valósítják meg, ami viszont drága&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====RAID6: Adja meg a 8 darab 1 Tbyte-os HDD-ből álló RAID6 tömb tárolókapacitását!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
6 TB. (Adat és paritás elosztása N+2 diszkre. A kapacitása N diszk tároló kapacitásával egyenlő.)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====RAID6: N db azonos diszkből álló RAID6 tömb esetén a tömb tárolókapacitása és sebessége (nagy fájlok írása/olvasása során elérhető adatátviteli sebesség) hogyan viszonyul az egyetlen diszk azonos adataihoz?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* RAID 6 (block interleaved dual distributed parity)&lt;br /&gt;
* Több diszk redundáns és párhuzamos használata.&lt;br /&gt;
* Adat és paritás elosztása N+2 diszkre.&lt;br /&gt;
** A sebesség tekintetében közel áll az N diszket használó RAID 0-hoz (HW támogatás esetén).&lt;br /&gt;
** 2 diszk meghibásodása esetén az adat elérhető.&lt;br /&gt;
** 3 vagy több diszk meghibásodása esetén az adat elveszik.&lt;br /&gt;
** Az adat nagyobb valószínűséggel állítható helyre a RAID 5-höz képest&lt;br /&gt;
* Minimum négy lemezre van szükség a RAID 6 működéséhez. The capacity of the array is (N-2) times the size of the smallest member disk for the array of N disks.&lt;br /&gt;
* Az olvasási sebesség (N-2)-szerese egy lemez olvasási sebességének - two disks in the row hold a parity which is useless to read. Such read speed values are roughly the same as in RAID 5.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Tárolás egysége: Mi a logikai és mi a fizikai tárolás egysége a permanens táron?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* logikai egység: fájl (file)&lt;br /&gt;
* fizikai egység: adatblokkok (cilinder, sáv és szektor együtt azonosítja az írható/olvasható adatblokkot; OS képzi le a logikaiakat fizikaiakra)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Folyamatok, szálak===&lt;br /&gt;
&lt;br /&gt;
====Bernstein feltétele: Mikor lehet két tevékenységet (utasítássorozatot) párhuzamosan végrehajtani (Bernstein)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Bernstein feltétele:&lt;br /&gt;
* Legyen &amp;lt;math&amp;gt; P_i &amp;lt;/math&amp;gt; és &amp;lt;math&amp;gt; P_j &amp;lt;/math&amp;gt; két darabja egy programnak.&lt;br /&gt;
* A &amp;lt;math&amp;gt; P_i &amp;lt;/math&amp;gt; összes bemeneti változója &amp;lt;math&amp;gt; I_i &amp;lt;/math&amp;gt;, és az összes kimeneti változója &amp;lt;math&amp;gt; O_i &amp;lt;/math&amp;gt;, ugyanez &amp;lt;math&amp;gt; P_j &amp;lt;/math&amp;gt; -re &amp;lt;math&amp;gt; I_j &amp;lt;/math&amp;gt; és &amp;lt;math&amp;gt; O_j &amp;lt;/math&amp;gt;.&lt;br /&gt;
* A két program párhuzamosan végrehajtható (vagyis független), ha: &amp;lt;math&amp;gt; I_j \bigcap O_i = 0 &amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt; I_i \bigcap O_j = 0 &amp;lt;/math&amp;gt; és &amp;lt;math&amp;gt; O_i \bigcap O_j = 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Feladatok (task) együttműködése: Hasonlítsa össze a közös memórián illetve az üzenetváltáson alapuló folyamatok közti együttműködést!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Közös memórián keresztül történő adatcsere esetén az együttműködő folyamatok mindegyike saját címtartományában lát egy közös memóriát. A közös memória elérését valamilyen adatátviteli rendszer teszi lehetővé. Üzenetváltásos adatcsere esetén a folyamatoknak nincs közös memóriája. Az adatátviteli rendszer most a logikai processzorokat kapcsolja össze. Rajta keresztül a folyamatok üzeneteket tudnak küldeni, illetve fogadni. Az üzenetküldésre a folyamatok logikai processzorainak utasításkészletében megfelelő utasítások állnak rendelkezésre. Ezek a Küld (Send) és a Fogad (Receive) műveletek.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Folyamat: Definiálja a &amp;quot;folyamat&amp;quot; (process) fogalmát!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Egy program futás alatt álló példánya a folyamat.&lt;br /&gt;
* saját kód, adat, halom, verem&lt;br /&gt;
* A folyamatok nem férnek hozzá egymás lapjaihoz (védettek más folyamatoktól)&lt;br /&gt;
&lt;br /&gt;
* végrehajtás alatt álló program (program maga a végrehajtható kód), amely folyamat virtuális címterébe van leképezve&lt;br /&gt;
* folyamat egy szála az, ami éppen fut egy CPU-n, és nem maga a folyamat&lt;br /&gt;
* minden folyamathoz tartozik legalább egy szál, ami elinduláskor elkezdi futtatni a program main metódusát&lt;br /&gt;
* privát virtuális címtér (virtuális memóriacímek készlete, amiket a folyamat használhat)&lt;br /&gt;
* tartozik hozzá egy egyedi folyamatazonosító (process ID)&lt;br /&gt;
* rendszererőforrások listája, melyekhez a folyamat összes szála hozzáfér&lt;br /&gt;
* a folyamat virtuálisan összefüggő memóriát lát (virtuális memória) (valójában az összefüggő memóriaterület ritka)&lt;br /&gt;
* háttértárolóra is kiírható (swapping)&lt;br /&gt;
* A folyamat által látott logikai címtartomány, és a ténylegesen használt fizikai címtartományok teljesen elkülönülnek&lt;br /&gt;
* Folyamatok megoszthatnak memóriaterületeket olvasás- vagy akár írás- és olvasás-hozzáféréssel (Az ilyen memória területek több folyamat virtuális címtartományába vannak belapozva)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Folyamatok közötti kommunikáció: Soroljon fel legalább 4 IPC (Inter-process communication) megoldást!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Jelzés&#039;&#039;&#039;: rendszerüzenetek küldése és fogadása a folyamatok között, jellemzően utasítások továbbítása egyik folyamattól a másiknak&lt;br /&gt;
* &#039;&#039;&#039;Üzenetsor&#039;&#039;&#039;: aszinkron kommunikációs forma, mely során a küldő és fogadó közvetlen interakciója nem szükséges, az üzenetek addig tárolódnak a sorban amíg a címzett fel nem dolgozza azokat vagy a sor meg nem telik&lt;br /&gt;
* &#039;&#039;&#039;Szemafor&#039;&#039;&#039;: absztrakt struktúra amely a folyamatok közötti közös erőforrásokért való hozzáférést vezérli&lt;br /&gt;
* &#039;&#039;&#039;Közös memória&#039;&#039;&#039;: ugyan az a memóriaterület kerül kiosztásra több különböző folyamatnak, írási és olvasási joggal egyaránt&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Forrás&#039;&#039;: http://en.wikipedia.org/wiki/Inter-process_communication&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Folyamatok vs. szálak: Mi az eltérés a folyamatok illetve a szálak között, és milyen előnnyel jár a szálak alkalmazása?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A szálak lényegében párhuzamos végrehajtású, közös memóriát használó programrészek a folyamaton belül (egy program végrehajtása több szálon futhat). A szálaknak saját logikai processzoruk van, azonban memóriáik nincsenek elkülönítve, közös logikai memóriát használnak, azaz a kódon és a változókon osztoznak. Emiatt az operációs rendszer lényegesen gyorsabban tud végrehajtani egy átkapcsolást a szálak között, mint a folyamatok között.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Java-szálak: Milyen módokon képezheti le a JAVA virtuális gép a JAVA natív szálakat a hoszt operációs rendszer folyamataira/szálaira?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A JAVA virtuális gép egy folyamat a hoszt operációs rendszeren belül. A JAVA szálak feleltethetők meg a hoszt operációs rendszer szálainak, ez többnyire one-to-one (JAVA szál egyben OS szál is) napjainkban. (https://wiki.sch.bme.hu/pub/Infoalap/OpRe/20100507_ZH_megoldas.pdf)  &lt;br /&gt;
Kovácsházy Tamás válasza:&lt;br /&gt;
7. fólia, 11. fólia:&lt;br /&gt;
JAVA (VM a folyamat, VM-en belül szál):&lt;br /&gt;
* Thread osztályból származtatva&lt;br /&gt;
* Runnable interface megvalósítása&lt;br /&gt;
* A JAVA platform-specifikusan valósítja meg a szálat:&lt;br /&gt;
* Natív OS specifikus szál (one-to-one, tipikus).&lt;br /&gt;
* JAVA specifikus szálak (many-to-one) egy natív OS szálra vagy folyamatra leképezve.&lt;br /&gt;
* many-to-many leképzés (erőforrás szempontok miatt, egyre ritkább).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====PRAM: Mi történik a PRAM modellben írás-írás ütközés esetén?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Az írás-írás ütközésekor valamelyik művelet hatása érvényesül, a két beírni szándékozott érték valamelyike írja felül a rekesz tartalmát (versenyhelyzet), harmadik érték nem alakulhat ki.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Processzor-affinitás: Mit állítunk be, ha egy szálnak beállítjuk a processzor affinitását, és miért lehet arra szükség?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* processzoraffinitás: minden szál rendelkezik egy maszkkal, amely kijelöli, hogy a szál mely processzorokon képes futni&lt;br /&gt;
* szerepe: ez alapján dől el, hogy a szál mely processzoron fog futni&lt;br /&gt;
* ütemezésnél: multiprocesszoros esetben a processzor kiválasztása a processzor-affinitás alapján történik&lt;br /&gt;
* A feladat más processzorra, vagy processzormagra kerülése csökkenti a végrehajtás sebességét (pl. cache-elésnél) &amp;gt;&amp;gt; Cél: A feladatot ugyanazon a végrehajtó egységen tartani - Laza vagy kemény processzor affinitás (soft or hard processor affinity).&lt;br /&gt;
** Laza: Nincs garancia, de törekszik rá az OS (többnyire alapeset)&lt;br /&gt;
** Kemény: Biztosan ugyanazon a CPU-n marad (rendszerhívással)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Szál: Definiálja a &amp;quot;szál&amp;quot; (thread) fogalmát!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* párhuzamos végrehajtású, közös memóriát használó programrészek a folyamaton belül (egy program végrehajtása több szálon futhat). A szálaknak saját logikai processzoruk és saját vermük van, azonban memóriáik nincsenek elkülönítve, közös logikai memóriát használnak, azaz a kódon és a változókon osztoznak, vagyis egymás adatait olvashatják és írhatják. Emiatt az operációs rendszer lényegesen gyorsabban tud végrehajtani egy átkapcsolást a szálak között, mint a folyamatok között.&lt;br /&gt;
* A folyamat egy szála az, ami éppen fut egy CPU-n (ami ütemezésre kerül), és nem maga a folyamat.&lt;br /&gt;
* Minden folyamathoz tartozik legalább egy szál, ami elinduláskor elkezdi futtatni a program main metódusát (szál nélkül a folyamat programja nem futhat).&lt;br /&gt;
* szálak még véletlenül sem hivatkozhatnak más folyamatok címterére, hacsak a másik folyamat nem teszi elérhetővé privát virtuális címterének egy részét megosztott memóriaszakaszként (file mapping object a Windows API-ban), vagy - Windows-nál - hacsak egyik folyamatnak nincs joga megnyitni más folyamatot, hogy olyan folyamatok közti memóriafüggvényeket használjon, mint a ReadProcessMemory vagy WriteProcessMemory&lt;br /&gt;
* A szál önmagában szekvenciális kód, a végrehajtás legkisebb egysége. Egy adott folyamat szálainak közös az adat- és kódszegmensük, a halmuk (heap), és az egyéb erőforrásokat is közösen használják, de saját virtuális CPU-t látnak, és saját veremmel rendelkeznek.&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Védelmi tartományok: Mi a különbség a statikus és a dinamikus védelmi tartományok között?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
	 Statikus védelmi tartományok esetén az egy folyamathoz tartozó védelmi tartomány a folyamat végrehajtása során nem változik, míg dinamikus védelmi tartományok esetén igen.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Virtuális gép: Mi a virtuális gép koncepció lényege?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* A programok elől az operációs rendszer elfedi a hardver implementációs részleteit, és kibővíti azt plusz funkciókkal.&lt;br /&gt;
* Az op.rendszer egy olyan réteget képez a hardver fölött, mely elrejti annak körülményességét és bonyolultságát a programozó elől és kibővíti a hardver szolgáltatását. A felhasználó így egy sokkal kellemesebb virtuális gépet (virtual machine, extended machine) lát.&lt;br /&gt;
* Az operációs rendszer egy kényelmesen kezelhető virtuális gépet jelenít meg a felhasználói és a programozói felületen.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Jogosultságok===&lt;br /&gt;
&lt;br /&gt;
====Belső biztonság: Mi a belső biztonság?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Belső biztonság = védelem. Védelemnek nevezzük az eljárásoknak és módszereknek azon rendszerét, amely lehetőséget teremt a számítógép erőforrásainak programok, folyamatok illetve felhasználók által történő elérésének szabályozására.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Engedélyezés: Definiálja az engedélyezés (authorization) fogalmát!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* jogosultság ellenőrzése: milyen adatokat és szolgáltatásokat érhet el ez a személy?&lt;br /&gt;
* Hozzáférés-szabályozási listák (Access Control List, ACL)&lt;br /&gt;
* Alapelv: mindig csoportnak osztunk jogot&lt;br /&gt;
* Pl. biztonsági házirend, fájl ACL&lt;br /&gt;
&lt;br /&gt;
TODO!!!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Jogosultság + engedélyezési sémák: Mi a jogosultság fogalma, mi a kapcsolata az engedélyezési sémák többi alapfogalmával?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* A jogosultság egy reláció a szereplők és védett objektumok között.&lt;br /&gt;
* engedélyezés ált. sémáinál: szereplő&amp;gt;&amp;gt;&amp;gt;szereplőt leíró adatszerkezet&amp;gt;&amp;gt;&amp;gt;biztonsági szabályzat (policy), JOGOSULTSÁG&amp;gt;&amp;gt;&amp;gt;védett objektumok TODO&lt;br /&gt;
* Jogosultságkezelés alapjai: A rendszer működése során&lt;br /&gt;
** A szereplők műveleteket kezdeményeznek&lt;br /&gt;
** A műveletek kontextusa tartalmazza a szereplő azonosítóját, a célobjektumot és az elvégzendő művelet fajtáját&lt;br /&gt;
** A jogosultsági döntő komponens kiértékeli kontextust és engedélyezi vagy megtiltja a műveletet&lt;br /&gt;
** A jogosultsági végrehajtó komponens biztosítja, hogy a döntő által hozott döntés érvényre jusson&lt;br /&gt;
* NT: SMR (Secure Reference Monitor) - objektumok elérési jogosultságainak ellenőrzése&lt;br /&gt;
* NT: Az LSA a SAM segítségével azonosítja a felhasználót és jogosultságait. Ha a felhasználó jogosult bejelentkezni, a logon elindítja a számára kijelölt shellt&lt;br /&gt;
* UNIX: hozzáférési jogosultságok (owner, group, others, read, write, execute)&lt;br /&gt;
* Engedélyezés általános sémái: &amp;gt;&amp;gt;Szerep alapú hozzáférés-vezérlés &amp;gt;&amp;gt;Hozzáférési jogosultság listák&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Külső biztonság: Mit takar a külső biztonság fogalma?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Annak mértéke, hogy mennyire lehetünk biztosak a számítógépes rendszer, illetve a rendszerben tárolt adatok sérthetetlenségében.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Művelet kontextusa: Engedélyezési rendszerekben mit tartalmaz egy művelet kontextusa? (Felhasználó- és jogosultságkezelés)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A műveletek kontextusa tartalmazza a szereplő azonosítóját, a célobjektumot és az elvégzendő művelet fajtáját.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hibakeresés===&lt;br /&gt;
&lt;br /&gt;
====DTrace: Mi a Solaris DTrace megoldás célja?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
dinamikus hibakereső rendszer, nyomkövető eszköz, amivel a rendszer és a programok működését futási időben lehet megfigyelni.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Memória===&lt;br /&gt;
&lt;br /&gt;
====32 bit: 32 bites kliens Windows operációs rendszer maximum mennyi fizikai memóriát kezelhet, és miért?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Legfeljebb 4 GB-ot (bár néha kevesebbet lát az OS, mert a memóriatartomány felső részére I/O eszközöket szoktak berakni, ld. pl. videókártya-memória...): &#039;&#039;&amp;quot;kliens Windowsok nem használják a gépben lévő PAE támogatást, mert az a tapasztalat, hogy a kliensekben lévő eszközök meghajtói nem kezelik le rendesen a 4 GB-nál több fizikai memóriát&amp;quot;&#039;&#039;. &lt;br /&gt;
(https://wiki.sch.bme.hu/pub/Infoalap/OpRe/02-opre-windows-memoria.pptx)&lt;br /&gt;
(nem támogatják a PAE-t eleve, csak patch-csel)&lt;br /&gt;
(_&amp;quot;However, &amp;quot;client&amp;quot; versions of 32-bit Windows (Windows XP SP1 and later, Windows Vista, Windows 7) limit physical address space to the first 4 GB for driver compatibility and licensing reasons, even though these versions do run in PAE mode if NX support is enabled.&amp;quot;_ - http://en.wikipedia.org/wiki/Physical_Address_Extension)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====32 bit: 32 bites szerver Windows képes-e 4 GB-nál több fizikai memória kezelésére? Válaszát indokolja!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Igen, PAE (Physical Address Extension) támogatás segítségével (ezzel lehet 32 bites címbuszú CPU-val is 64 GB memóriát kezelni a maximális 4 GB helyett).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====32 bit: 32 bites Windows használata esetén egy felhasználói folyamat maximum mekkora virtuális címteret használhat?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Alapból 2GB felhasználói módú címterületet használhat, ez a /3GB kapcsolóval 3 GB felhasználói címterületre bővíthető.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====32 bit: 32 bites Windows szerver operációs rendszerek képesek-e 4 GB-nál több fizikai memória kezelésére? Indokolja válaszát!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Igen, PAE (Physical Address Extension) támogatás segítségével.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====32 bit: 32 bites x86-os (Windows) esetén mekkora a felhasználói és a rendszer mód címtartomány mérete?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Alapból 2GB felhasználói módú és 2GB kernel címterület van, ezt a /3GB kapcsolóval 3GB felhasználói és 1GB kernelre lehet módosítani.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Bélády-anomália: Mit nevezünk Bélády-anomáliának?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
	 FIFO algoritmusnál egyes esetekben, ha a munkahalmaz méretét növeljük, a várakozásokkal ellentétben a laphibák száma is nő.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Címfordítás: Hogyan történnek a címfordítások, ha az OS szegmens- és lapszervezést is használ a memóriánál?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
CPU --&amp;gt; Segmentation unit --&amp;gt; Paging unit --&amp;gt; Physical memory&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Címfordítás: Milyen címtranszformációk történnek együttes szegmens- és lapszervezésű memória használata során?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* CPU &amp;gt;&amp;gt;&amp;gt;[Logical Address]&amp;gt;&amp;gt;&amp;gt; &#039;&#039;&#039;Segmentation Unit&#039;&#039;&#039; &amp;gt;&amp;gt;&amp;gt;[Linear Address]&amp;gt;&amp;gt;&amp;gt; &#039;&#039;&#039;Paging Unit&#039;&#039;&#039; &amp;gt;&amp;gt;&amp;gt;[Physical Address]&amp;gt;&amp;gt;&amp;gt; Physical Memory (http://portal.mit.bme.hu/?l=oktatas%2Ftargyak%2Fvimia219%2Fjegyzet%2F2011%2Fslides_17_memory.pdf)&lt;br /&gt;
* https://wiki.sch.bme.hu/pub/Infoalap/OpRe/oprewiki1.pdf, 48. oldaltól.&lt;br /&gt;
* Változó méretű szegmensek fix méretű lapokat tartalmaznak. Kicsi mind a belső, mind a külső tördelődés. A cím felépítése: (szegmens szám, lapszám, lapon belüli eltolás)&lt;br /&gt;
* Hasonlít a szegmensszervezéshez és a kétszintű lapszervezéshez: A memóriában szegmensek vannak ugyan, de ezek lapokból épülnek föl. Van szegmenstábla, és minden bejegyzéséhez tartozik egy laptábla is. Külső töredeződés nincs, belső töredeződés minimális (szegmensenként átlag fél lap); ez a kombinált módszer egyesíti a két módszer előnyeit&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Lapszervezés, keret tábla: Lapszervezés esetén mit tartunk nyilván a keret táblában (frame table)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Az üres kereteket (frames).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Logikai vs. fizikai memória: Mi a különbség a logikai és a fizikai memória között?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A logikai memória a fizikai tár leképezve, ráadásul a leképezés a végrehajtás során változhat is.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====MMU: Mi a processzor Memory Management Unit (MMU) komponensének a feladata?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
	 * Speciális HW a CPU-ban&lt;br /&gt;
* Memória állapotának nyilvántartása&lt;br /&gt;
** Tulajdonos folyamat azonosítója&lt;br /&gt;
** Hozzáférési jogosultságok (ACL)&lt;br /&gt;
** cache-elhetőség, ha van cache (pl. DMA)&lt;br /&gt;
* Virtuális memória leképzése fizikai memóriára&lt;br /&gt;
** Pl. Translation Lookaside Buffer (TLB)&lt;br /&gt;
** Kontextusváltásnál ezt is kezelni kell (ha van)&lt;br /&gt;
** Pagefile vagy SWAP (HDD)&lt;br /&gt;
* Memóriavédelem&lt;br /&gt;
** Tiltott memória hozzáférés megakadályozása vagy legalább jelzése (ACL alapján)&lt;br /&gt;
** General Protection Fault (GPF) a Windows-ban&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Modified/dirty bit, referenced/used bit: Mi a modified/dirty bit és a referenced/used bit szerepe? (Virtuális memóriakezelés)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* laptáblában:&lt;br /&gt;
* Módosítás nyilvántartása (modified/dirty bit): minden memórialaphoz tartozik egy HW által kezelt bit (pl. a laptáblában) - betöltéskor törlik, módosításkor beállítják. Ha a dirty bit 1, akkor erre a lapra történt írási művelet, mióta a ﬁzikai memóriába került. Ezt a bitet a CPU tartja karban (automatikusan), ezzel az operációs rendszer munkáját segítve. 0 érték esetén a lapokat nem kell a diszkre kiírni, ha kiszorulnak a ﬁzikai memóriából (hiszen a tartalmuk a ﬁzikai memóriába helyezés óta változatlan, a diszk-en tárolt változat tehát továbbra is aktuális).&lt;br /&gt;
&lt;br /&gt;
* Hivatkozások nyilvántartása (referenced/used bit): Ha a refernced bit 1, akkor volt &amp;quot;mostanában&amp;quot; hivatkozás erre a lapra. Ezt is a CPU tartja karban. Ez a bit segít az operációs rendszernek, amikor el kell döntenie, hogy melyik lapot dobja ki a ﬁzikai memóriából, ha egy új lapnak nincs helye. A referenced=0 lapokból fog válogatni.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Page locking: Mit jelent és miért van szükség arra, hogy a virtuális tárkezelésnél egyes lapokat ideiglenesen a tárba lehessen &amp;quot;fagyasztani&amp;quot; (page locking)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Azt jelenti, hogy a lapcsere algoritmus nem lapozhatja ki a háttértárra az adott lapot. Ok: periféria-művelet van az adott lappal kapcsolatban.&lt;br /&gt;
* Azt jelenti, hogy bizonyos lapokat a memóriában tartunk, mert I/O műveletek hivatkozhatnak rá, és ilyenkor a memóriában kell lenniük, mert az I/O műveletek fizikai memóriacímeket használnak.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Referenced/used bit: Mi a referenced/used bit szerepe? (Virtuális memóriakezelés)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Bizonyos algoritmusok igénylik a lapra történő hivatkozások figyelését is, ami ugyancsak hardvertámogatással hatékony. A laptáblában erre a célra is fenntarthatunk egy bitet. Ezt a hivatkozott bitet (referenced bit, used bit, R bit) a címképző hardver állítja be minden esetben, amikor az adott lapon belüli címre történik hivatkozás. A bitet az operációs rendszer törli adott időnként, vagy eseményhez (például laphiba) kötötten.&lt;br /&gt;
* Hivatkozások nyilvántartása (referenced/used bit): OS adott időnként és/vagy adott eseményekre törli - használat esetén beállítják.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====TLB: Mi az a Translation Lookaside Buffer, fizikai címcsatolásnál mi a szerepe?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A virtuális címet fizikai címre a laptábla segítségével lehet fordítani; de ez lassú, plusz egy memória-hozzáférést jelent. Ezért a lapkezdőcímek egy részét egy asszociatív cache-ben eltárolják, ez a TLB. Címfordításkor párhuzamosan indul a keresés a laptáblában és a TLB-ben, ha az egyikben megtalálta, akkor kész.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====TLB: Mire szolgál a Translation Lookaside Buffer és mi a szerepe a fizikai cím kiszámításánál (virtuális címképzés)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A virtuális címet fizikai címre a laptábla segítségével lehet fordítani; de ez lassú, plusz egy memória-hozzáférést jelent. Ezért a lapkezdőcímek egy részét egy asszociatív cache-ben eltárolják, ez a TLB. Címfordításkor párhuzamosan indul a keresés a laptáblában és a TLB-ben, ha az egyikben megtalálta, akkor kész.&lt;br /&gt;
&lt;br /&gt;
(Szerintem előbb a TLB-ben keresi, aztán ha ott nincs, csak utána nézi a laptáblát.)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Tördelődés (külső vs. belső): Mi a különbség a külső és belső tördelődés között? (Memória foglalás)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
	A tördelődött memóriaterületet külső tördelődés esetén az operációs rendszer szabadon hagyja, míg belső tördelődés esetén pedig odaadja egy olyan folyamatnak, aminek nincs igazából rá szüksége.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Vergődés: Adja meg a vergődés (trashing) definícióját!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A gyakori laphibák okozta teljesítménycsökkenést vergődésnek (thrashing) nevezzük. Az ellene való védekezés a munkahalmaz méretének jó megválasztása. Célszerű egy folyamatnak annyi lapot adni, amennyi szükséges az egyensúlyhoz, azaz ahány lapra hivatkozik a laphiba kiszolgálás ideje alatt (ugyanakkor nem sokkal többet, mert ekkor leromlik a multiprogramozás foka).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Vergődés: Mi az a vergődés, és hogyan védekezzünk ellene?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Ha több memóriára lenne szüksége a folyamatoknak, mint amennyi rendelkezésre áll, ezért túl gyakran keletkezik laphiba, és a processzor idejének nagy része haszontalan lapcserékkel telik.&lt;br /&gt;
* Védekezni ellene például azzal lehet, ha a laphiba-gyakoriság függvényében az ütemező változtatja a multiprogramozás fokát: ha kevés a memória, folyamatokat függeszt fel, és swappel ki; ha van elég, akkor épp ellenkezőleg.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===uc/OS-II===&lt;br /&gt;
&lt;br /&gt;
====Prioritás: A uC/OS-II-ben hány taszk tartózkodhat egy prioritási szinten és miért?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
1, mert így gyorsan eldönthető, hogy melyik a legmagasabb prioritású, futásra kész taszk.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prioritás: Egy prioritási szinten hány szál futtatását teszi lehetővé a uC/OS-II, miért?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
1, mert így gyorsan eldönthető, hogy melyik a legmagasabb prioritású, futásra kész taszk. Egy taszk = egy szál.&lt;br /&gt;
&lt;br /&gt;
(Magyarázat: egy taszk = egy szál; lásd http://video.bme.hu/media/video/Operacios_Rendszerek_08ea_20110301.wmv, 01:09:18 környékén&lt;br /&gt;
Röviden: a beágyazott rendszerek, kis OS-ek esetén (uC/OS-II, FreeRTOS, stb.) lényegében csakis szálakban gondolkozunk. Nincs MMU, csak egyetlen összefüggő fizikai memória van, nincs virtuális memória koncepció, a processzoron futó teljes alkalmazás (az egyetlen alkalmazás) egy nagy folyamat - nincs más folyamat! Ezenbelül tudunk threadeket futtatni. Single Address Space.)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Ütemezés===&lt;br /&gt;
&lt;br /&gt;
====Átbocsátó képesség: Adja meg az átbocsátó képesség definícióját és mértékegységét!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
*  (throughput) Mértékegység: munka/s, vagy 1/s&lt;br /&gt;
* Adott időegység alatt elvégzett feladatok száma. &amp;lt;math&amp;gt;\frac{\sum \textrm{elvegzett munkak}}{\textrm{ido}}&amp;lt;/math&amp;gt;&lt;br /&gt;
* A rendszerfeladatokat nem számoljuk.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Hosszú távú ütemezés: Adja meg a hosszú távú ütemezés célját!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Tipikusan a BATCH rendszerekben van jelen, és uj jobok végrehajtasának megkezdéseről (új folyamatok indítasárol) dönt. Az elvégzesre váro munkák közül a választas szempontja, hogy a rendszerben a CPU-intenzív es I/O-intenzív folyamatok aránya optimális legyen (optimalis job-mix fenntartasa).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Hosszú távú ütemezés: Definiálja a hosszú távú ütemezés fogalmát!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A hosszútávú ütemező feladata az elindított feladatok rendszerbe, illetve a &amp;quot;futásra kész&amp;quot; várakozási sorba való beengedését szabályozni. Igyekszik a CPU-t és a perifériákat terhelő folyamatokat egyensúlyban tartani. Batch rendszerekre jellemző; a PC-k oprendszere általában azonnal indítja a folyamatokat, mikor azt a felhasználó kéri.&lt;br /&gt;
* feladata: A háttértáron várakozó feladatok közül kiválasztja azt, amelyiket el kell indítani.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Konvoj hatás: Mi a konvoj hatás, és a tanult ütemező algoritmusok közül melyekben jelentkezhet?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* igen nagy lehet az átlagos várakozási idő, mivel egy-egy hosszú CPU-löketű folyamat feltartja a mögötte várakozókat&lt;br /&gt;
* FCFS-nél (First-come, first-served) tapasztalható (pl. SJF (Shortest Job First) és RR algoritmus küszöböli ki)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Középtávú ütemezés: Adja meg a középtávú ütemezés célját!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Swapping, azaz a program a fizikai memória és a háttértár közti mozgatása.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Középtávú ütemezés: Mi a középtávú ütemező feladata?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Swapping, azaz a program a fizikai memória és a háttértár közti mozgatása.&lt;br /&gt;
&lt;br /&gt;
Szerintem inkább ez:&lt;br /&gt;
A rendszerben lévő feladatok memóriájának egyes éppen nem használt részeinek kiírása háttértárra.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Körülfordulási idő: Mi az a körülfordulási idő?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* TAT (Turnaround Time) -&amp;gt; Egy feladatra vonatkozóan a rendszerbe helyezéstől a teljesítésig eltelt idő.&lt;br /&gt;
* Mértékegység: s,&lt;br /&gt;
* t_(CPU,végrehajtási idő)+t_várakozás (Magában foglalja a ténylegesen munkával töltött időt és a várakozást is.)&lt;br /&gt;
* felhasználó minél előbb szeretné látni a végeredményt &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Megszakítás: Az éppen futó taszkot megszakítja egy IT. Preemptív OS esetén mindig a megszakított taszk fogja-e visszakapni a futási jogot? Miért?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Nem feltétlenül; például a preemptálás maga is úgy működik, hogy egy időzítő a szál quantumjának lejártakor megszakítást generál; ilyenkor értelemszerűen az ütemező általában nem ugyanazt a folyamatot választja ki futásra.&lt;br /&gt;
* Másik: Nem, mert akitől elvették a futás jogát az futásra kész állapotba fog kerülni és az ütemező dönti el, hogy melyik folyamat fogja megint megkapni a futást.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Megszakítás: Egy futó taszkra IT érkezik. Preemptív OS esetén az interrupt után mindenképpen &#039;ide&#039; térünk vissza?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Nem feltétlenül; például a preemptálás maga is úgy működik, hogy egy időzítő a szál quantumjának lejártakor megszakítást generál; ilyenkor értelemszerűen az ütemező általában nem ugyanazt a folyamatot választja ki futásra.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Preemptív ütemező: Mikor nevezünk egy ütemezőt preemptívnek? ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Ha az OS elveheti a futásjogot (a CPU-t) egy folyamattól/futó feladattól (interrupt).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rövid távú ütemezés: Mi a rövidtávú ütemezés, mikor jár környezetváltással?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Rövidtávú ütemezés: futó folyamat kiválasztása a futásra kész feladatok közül&lt;br /&gt;
* Ha a futó folyamatnak lejár az időszelete (csak preemptívnél), önként lemond a processzorról (együttműködő folyamatok), blokkoló rendszerhívást hajt végre (pl. I/O művelet), egy másik szál futásra kész állapotba kerül (bekövetkezik, amire várt, vagy újonnan elindítanak egy szálat), egy szál prioritása megváltozik, esetleg egy szál processzor-affinitása megváltozik.&lt;br /&gt;
* Környezetváltással akkor jár, ha másik szál választódik ki futásra, mint ami eddig futott. Pl. Windows NT alatt, ha a legmagasabb prioritási szinten pontosan egy folyamat van, akkor megtörténhet, hogy ugyanaz a szál fut tovább, és nem történik környezetváltás.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rövid távú ütemezés: Mikor fut a rövidtávú ütemező és mikor jár környezetváltással?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Ütemezés következhet be, ha&lt;br /&gt;
** a futó folyamat befejeződik,&lt;br /&gt;
** egy folyamat felébred, futásra késszé válik,&lt;br /&gt;
** a futó folyamat várakozni kényszerül (valamilyen esemény bekövetkezésére), illetve,&lt;br /&gt;
** a futó folyamat önként lemond a futás jogáról vagy pedig elveszik tőle.&lt;br /&gt;
* Az első és a harmadik esetben az ütemezés mindig környezetváltással jár, hiszen a következő futó folyamat egészen biztosan nem a korábban futott lesz. A másik két esetben előfordulhat, hogy az ütemezőnek nem kell másik folyamatot kiválasztania.&lt;br /&gt;
* Ha a futó folyamatnak lejár az időszelete (csak preemptívnél), önként lemond a processzorról (együttműködő folyamatok), blokkoló rendszerhívást hajt végre (pl. I/O művelet), egy másik szál futásra kész állapotba kerül (bekövetkezik, amire várt, vagy újonnan elindítanak egy szálat), egy szál prioritása megváltozik, esetleg egy szál processzor-affinitása megváltozik.&lt;br /&gt;
* Környezetváltással akkor jár, ha másik szál választódik ki futásra, mint ami eddig futott. Pl. Windows NT alatt, ha a legmagasabb prioritási szinten pontosan egy folyamat van, akkor megtörténhet, hogy ugyanaz a szál fut tovább, és nem történik környezetváltás.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Terhelés-végrehajtó egységek közötti megosztás: Sorolja fel a terhelés-végrehajtó egységek közötti megosztásának megoldásait! (Többprocesszoros rendszerek)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Master and slaves (egy CPU osztja ki a feladatokat)&lt;br /&gt;
* Self-scheduling / peering (minden CPU ütemez)&lt;br /&gt;
* Globális futásra kész sor&lt;br /&gt;
* Processzoronkénti futásra kész sor&lt;br /&gt;
**  Push alapú: OS kernel folyamat mozgatja a sorok között a feladatokat.&lt;br /&gt;
**  Pull alapú: Az idle állapotban (idle feladatot végrehajtó) CPU próbál a többi sorából feladatot kapni.&lt;br /&gt;
* Kettő kombinációja&lt;br /&gt;
** Összefüggő, párhuzamosan futtatható feladatok optimalizálása (pl. Gang scheduler)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Virtualizáció===&lt;br /&gt;
&lt;br /&gt;
====Hardveres virtualizáció: Mit jelent az, ha egy x86-os processzor hardveres virtualizáció támogatással rendelkezik?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A CPU utasításkészletének és üzemmódjainak olyan kiegészítése, amely lehetővé teszi a vendég operációs&lt;br /&gt;
rendszer kódjának módosítás nélküli futtatását. [?]&lt;br /&gt;
&lt;br /&gt;
(Speciális utasításokkal látják el a processzort, amit szoftveresen akár több 100 utasításon keresztül lehetne csak megoldani. ROSSZ(MZ))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Elrejti a gep fizikai tulajdonsagait a felhasznalok elol.&lt;br /&gt;
&lt;br /&gt;
Miert erdemes virtualizalni?&lt;br /&gt;
&lt;br /&gt;
-Lehet futtatni a gazda OS el nem kompatibilis alkalmazast.&lt;br /&gt;
&lt;br /&gt;
-Lehet biztonsaggal rendszergazda jogot adni mindennek, mert ugy se tud a gazda os-be kart tenni.&lt;br /&gt;
&lt;br /&gt;
-Konnyen at lehet masolni a virtualis gepet egy masik gepre.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Hosted vs. bare-metal: Miben különbözik egy hosted egy bare-metal típusú virtualizációs megoldástól?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
  Bare-metal esetén a VMM kezeli a HW erőforrásokat, míg hosted típusú esetén ezt a host OS végzi. &lt;br /&gt;
&lt;br /&gt;
videó:&lt;br /&gt;
http://video.bme.hu/media/video/Operacios_Rendszerek_20ea_20110418.wmv&lt;br /&gt;
00:16:45 körül&lt;br /&gt;
&lt;br /&gt;
Kétféle megközelítés:&lt;br /&gt;
&lt;br /&gt;
# Hosted: az operációs rendszerre telepítek egy virtualizációs szoftvert, ez beépül az operációs rendszerbe tipikusan kernel modulként, innentől a virtualizációs szoftver teszi lehetővé, hogy virtuális gépeket futtassak. Tipikusan a desktop megoldások (VMware Player, VirtualBox, Virtual PC, stb.)&lt;br /&gt;
# Bare-metal: a virtualizációs szoftver valós OS-szerű funkciókat valósít meg. Lényegében egy minimális funkciókészlettel rendelkező OS. A hardvert nem egy általános célú operációs rendszer kezeli, hanem a virtualizációs szoftver feladata az, hogy a hardver-erőforrásokkal gazdálkodjon, ő dönt az ütemezésről, ő dönt a memória-hozzáférésekről. Tipikusan szokott hozzá tartozni egy menedzsment operációs rendszer, egy menedzsment konzol, ami a távoli hozzáférést, virtuális gépek elindítását lehetővé teszi, és ott is ott tudom futtatni a vendég operációs rendszereket. Tipikusan szervermegoldások (VMware ESX Server, Xen Enterprise, MS Hyper-V).&lt;br /&gt;
&lt;br /&gt;
Fontos különbség: ki dönt a CPU-erőforrásról?&lt;br /&gt;
# van az OS-nek egy ütemezője, ő dönt arról, mikor, ki kapja meg a CPU-t. Dönthet úgy, hogy az időszeletet az alkalmazás kapja meg, a köv. időszeletet a virtualizációs szoftver/modul, ő magán belül pedig eldöntheti, melyik virtuális gépnek osztja a processzort, de alapvetően a host OS dönt arról, mi dönt az erőforrásról.&lt;br /&gt;
# arról, hogy ki kapja a CPU-t, a közvetlenül a hardver réteg felett lévő virtualizációs szoftver dönti el. Dönthet úgy, hogy a menedzsment OS kapja, dönthet úgy, hogy valamelyik virtuális gép kapja meg.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Paravirtualizáció: Mit jelent az, hogy egy virtualizációs megoldás paravirtualizációt használ a CPU virtualizálásához?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Módosítjuk a vendég OS forráskódját, hogy ne is akarjon &amp;quot;problémás&amp;quot; utasításokat hívni, hanem azok helyett azoknak megfelelő függvényeket hívjon a hypervisorban. (Ezzel egyszerűsödik a hypervisor implementálása, viszont csak úgy működik a módszer, ha módosítják a vendég OS forrását.)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Trap-and-emulate: Trap &amp;amp; emulate virtualizációs módszer használata esetén mi történik a vendég gép által kiadott nem privilegizált utasítással?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* nem privilegizált utasítások közvetlenül a valós CPU-n hajtódnak végre (no VMM intervention)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===UNIX===&lt;br /&gt;
&lt;br /&gt;
====Adminisztratív adatok: hol helyezzük el azokat az adminisztratív adatokat, amelyekre mindig szükség van, akkor is, ha a folyamatnak egyetlen lapja sincs a memóriában?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A proc struktúrában.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Adminisztratív adatok: UNIX-ban a folyamatokkal kapcsolatos adminisztratív adatok hogyan épülnek fel?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
TODO: rövidíteni.&lt;br /&gt;
&lt;br /&gt;
# adatok, melyek elsősorban akkor szükségesek, amikor a folyamat ténylegesen fut - bent van egy v. több lapja a memóriában, éppen ezekkel kapcsolatos utasításokat hajtunk végre. &amp;gt;&amp;gt; az u-területen található kontextusadatok. A folyamat címtér része. A folyamat nem férhet hozzá, de a folyamat saját címterében találhatók. Amikor a folyamatnak egyetlen lapja sincs a memóriában, hanem minden a háttértáron található, a folyamat nem fut, akkor az itt található adatokhoz a kernel sem tud hozzáférni, mivel ide csak azok az adatok kerülnek, melyek a folyamat futásakor kellenek! Pl. hozzáférés-szabályozási adatok: a folyamat szeretne valamilyen tevékenységet végrehajtani, szabad-e neki vagy sem? Másik példa: rendszerhívások állapotai: végrehajt egy rendszerhívást, amiben éppen tartózkodik, ezzel kapcsolatos állapotadatok, stb. Vagy: nyitott fájl adatok, fájlkezeléssel kapcsolatos adatok. UNIX-ban a fájlkezelést nagyon általánosan kell érteni. Minden, ami a fájlrendszer-interfészen keresztül zajlik, ahhoz tartozik egy nyitott fájl objektum, ami ennek adminisztrálására szolgál, ezek is az u-területen találhatók. Ezenkívül: számlázási, statisztikai adatok.&lt;br /&gt;
&lt;br /&gt;
# adatok, melyek elsősorban a folyamatok kezeléséhez szükségesek (amire a kernelnek bármikor szüksége lehet). Pl. folyamat alapvető azonosító adatai. Folyamat PID-je, szülőazonosító, stb. Folyamat ütemezésével kapcsolatos adatok, mi a folyamat aktuális futási állapota, mennyi a prioritása, prioritás kiszámolásához szükséges adatai, stb. Memóriakezelési adatok: folyamat memórialapjai bent vannak a memóriában, vagy épp kint vannak a háttértáron. Az u-terület címe, stb. &amp;gt;&amp;gt;&amp;gt; proc struktúra adatai: a process tábla egy eleme (ez a klasszikus rendszereknél ténylegesen egy tábla volt, ma bonyolultabb, pl. láncolt listás megvalósítás). A kernel címterének része. A kernel bármikor elérheti őket.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Adminisztratív adatok: Milyen adatstruktúrá(k)ban és milyen címter(ek)ben található(k) a folyamatok adminisztratív adata(i)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A folyamat futása során szükséges adatok az u-területen, mely a folyamat címterének része, illetve a folyamatok kezeléséhez szükséges adatok a proc struktúrában, mely a kernel címtér része.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Adminisztratív adatok: Sorolja fel a UNIX folyamatok legalább 4 alapvető adminisztratív adatát!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* PID (Process ID): egyedi, a folyamatot azonosító szám (PPID: szülő folyamat azonosítója)&lt;br /&gt;
* A folyamat állapota (fut, alszik, stb.; ütemezési információk (prioritás, CPU használat, nice érték) )&lt;br /&gt;
* Hitelesítők (UID, GID: a kapcsolódó felhasználó adatai)&lt;br /&gt;
* Memória-kezelési adatok (címleképezési térkép)&lt;br /&gt;
* Kommunikációs adatok (fájlleírók, jelzés információk)&lt;br /&gt;
* Statisztikák (erőforrás használat (számlázáshoz) )&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Alvási prioritás: UNIX alvási prioritásának ütemezését mi végzi?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Az alvási prioritást is az ütemező határozza meg, az alapján, hogy mire várakozik a folyamat, vagyis miért hajtott végre sleep() rendszerhívást. Kernel módban az ütemező nem veheti el a futási jogot, ezért amíg nem hajt végre sleep() hívást, addig nincs is szükség a prioritásának meghatározására.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Android: Az Androidban mikor és miért (adjon jellegzetes példát) terminálható egy alkalmazás?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Az alkalmazás erőforráshiány miatt bármikor terminálható, ezt az operációs rendszer automatikusan meg is teszi. Példa: ha nincs elég memória.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Belső szerkezeti elemek: Sorolja fel a UNIX operációs rendszer főbb belső szerkezeti elemeit!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* betöltő&lt;br /&gt;
* virtuálismemória-kezelő&lt;br /&gt;
* állományrendszer&lt;br /&gt;
* blokkos berendezés-meghajtó kapcsoló (+ a hozzá kapcsolódó eszközmeghajtók, pl.: lemezegység, szalagos meghajtó)&lt;br /&gt;
* karakteres berendezés-meghajtó kapcsoló (+ a hozzá kapcsolódó eszközmeghajtók, pl.: hálózat, nyomtató)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Csővezeték (pipe): Írjon le egy olyan konkrét UNIX shell parancssort, amely csővezetéket alkalmaz!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
ls -la | more&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====exec(): Mire szolgál a UNIX exec() rendszerhívás?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
exec(): új programkód betöltése egy folyamat címterébe&lt;br /&gt;
Azaz a fork() paranccsal létrehozunk egy új folyamatot, exec() paranccsal pedig betöltjük a folyamatba a kódot.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fájl-attribútumok: Sorolja fel a fontosabb UNIX fájl-attribútumokat!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Típus&lt;br /&gt;
* Linkek&lt;br /&gt;
* Eszköz, inode, méret...&lt;br /&gt;
* Időbélyegek&lt;br /&gt;
* Azonosítási és hozzáférés-szabályozási adatok&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fájlrendszeri bejegyzések: Sorolja fel a UNIX fájlrendszeri bejegyzések alapvető tulajdonságait (legalább hármat, ls -l oszlopok)!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* pl.: drwxr-xr-x 2 root root 4096 dec 22 12.27 txt&lt;br /&gt;
* sorrendben: I. UNIX-fájltípusok (pl. közönséges fájl (-), katalógus (d), szimbolikus link (l), stb.), II. hozzáférési jogosultságok (3*3-as bontásban - 1. hármas csoport a tulajdonos, a 2. a csoport, a 3. a többiek jogosultságait;  &#039;r&#039; az olvasás (read), a &#039;w&#039; az írás (write), az &#039;x&#039; pedig a végrehajtás (execute) jele), III. jogosultságok után egy szám áll (ez könyvtárak esetén azt mondja meg, hogy az adott könyvtár hány elemet tartalmaz, fájlok esetén azt tudhatjuk meg, hogy az adott fájlra hány hardlink mutat), IV. tulajdonos, V. méret (bájtokban), VI. utolsó módosítás dátuma, VII. fájl neve&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Felfüggesztett állapotok: Mik azok a felfüggesztett állapotok, mi a szerepük a UNIX-ban?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
felfüggesztve futásra kész, felfüggesztve alszik állapot A UNIX-ban egyfajta hosszú távú, felhasználói ütemezést jelentenek - a felhasználónak lehetősége van arra, hogy bizonyos folyamatokat a többi állapotból kiemeljen. Pl. Ctrl+Z billentyűkombinációval felfüggesztem a folyamatok futását. Innen valamikor visszahelyezzük futó állapotba.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Felhasználói mód, kernel kontextus: UNIX esetén milyen tevékenység zajlik felhasználói módban, kernel kontextusban?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Semmilyen!! &lt;br /&gt;
Megj.: Kernel kontextusban, felhasználói módban a program saját utasításait hajtjuk végre, a program saját adataival dolgozunk. Ennél fogva itt nincs értelme beszélni semmiről, mert a folyamat a kernel kontextusában nem hajthat végre semmit.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Felhasználói módból kernel módba váltás: Hogyan vált egy UNIX folyamat felhasználói (user) módból kernel módba?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Rendszerhívásokon keresztül.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Felhasználói módú prioritás: Sorolja fel milyen tényezők határozzák meg egy UNIX folyamat felhasználói módú prioritását (tradicionális UNIX ütemező esetén)!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Korábbi CPU-használat&lt;br /&gt;
* Futásra kész folyamatok száma (p_cpu &amp;quot;öregítésével&amp;quot;)&lt;br /&gt;
* nice érték (nice és renice parancsok)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Folyamatok állapotai: Milyen állapotai vannak a UNIX-folyamatoknak?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
# kiinduló állapot&lt;br /&gt;
# futásra kész&lt;br /&gt;
# kernel módban futó állapot&lt;br /&gt;
# felhasználói módban futó állapot&lt;br /&gt;
# alvó állapot&lt;br /&gt;
# zombi állapot&lt;br /&gt;
# felfüggesztve alszik&lt;br /&gt;
# felfüggesztve futásra kész&lt;br /&gt;
&lt;br /&gt;
 Ctrl+Z-vel felfüggesztett állapotba helyezem a folyamatot.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Folyamatok közötti kommunikáció: Soroljon fel legalább 4 UNIX folyamatok között kommunikációs megoldást!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* System V IPC: szemafor, osztott memória, üzenetsor&lt;br /&gt;
* Csővezeték és nevesített csővezeték&lt;br /&gt;
* Jelzések&lt;br /&gt;
* RPC&lt;br /&gt;
* Folyamat-nyomkövetés&lt;br /&gt;
* Szemaforok&lt;br /&gt;
* Üzenetsorok&lt;br /&gt;
* Osztott memória&lt;br /&gt;
* Hálózati, socketeken keresztüli kommunikáció&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Folyamatok közötti kommunikáció: Soroljon fel UNIX folyamatok közötti adatátviteli eszközöket (legalább hármat)!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* System V IPC: - szemaforok, - üzenetsorok, - osztott memória&lt;br /&gt;
* Jelzések: - aszinkron események keltése és kezelése&lt;br /&gt;
* Csővezetékek, nevesített csővezetékek: - FIFO kommunikáció a &amp;quot;rokonságban&amp;quot;&lt;br /&gt;
* Szemaforok: - a korábban megismert szinkronizációs megoldások&lt;br /&gt;
* Üzenetsorok: - diszkrét, típusos üzenetek folyamatok között&lt;br /&gt;
* Osztott memória: - azonos fizikai memóriaterület használata több folyamatban&lt;br /&gt;
* &amp;quot;hálózati&amp;quot; (socket) kommunikáció: - címzéssel és protokollokkal támogatott kommunikáció&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====fork(): Mire szolgál a fork() rendszerhívás?====&lt;br /&gt;
TODO: rövidíteni.&lt;br /&gt;
&lt;br /&gt;
Új folyamat létrehozására. A fork() hívásakor az aktuális folyamat, amely kiadta a rendszerhívást, megduplázódik (minden adata, verme, memórialapja, stb.), onnantól két példányban fog továbbélni, amelyek egymással szinte tökéletesen megegyeznek, kvázi klónozva van a folyamat, néhány apró különbség van csupán. De valójában a memóriaszervezés ügyes trükkje: semmit nem csinál azonkívül, hogy bizonyos adminisztratív adatokat megdupláz, ténylegesen nem másol semmit (memórialapokat)! Az így megduplázott folyamat memórialapjaihoz hozzárendel még egy folyamatot, és megjegyzi azt, hogy amíg ezek a folyamatok békésen tudnak egymás mellett dolgozni, addig dolgozzanak ugyanazon, de ha konfliktus van, akkor majd lemásoljuk ezeket a memórialapokat. &lt;br /&gt;
&lt;br /&gt;
Ha a fork() hívás 0-val tér vissza: a gyerek folyamat kódja fut tovább. Ha egy negatív számmal tér vissza, fork() hiba történt, nem tudtuk létrehozni az új folyamatot, le kell kezelni. Ha pozitív számot adott vissza, akkor az eredményben a gyerekfolyamat azonosítója található, itt a szülőfolyamat fut tovább.&lt;br /&gt;
 &lt;br /&gt;
Gyerek folyamat fut: az exec() az aktuális folyamat helyére betölt egy másik binárist. Az exec()-et meghívó folyamatnak az exec() kitörli a saját kontextusát, stb., betölt egy új programkódot, amit elkezd végrehajtani. (Kvázi mintha elindítana egy új folyamatot, de a folyamat már fut.) Ha nem sikerült betölteni a binárist (pl. nincs ilyen fájl), akkor hiba, visszatér az exec() is, egyébként nem: az új programkód utasításait hajtjuk végre.&lt;br /&gt;
Tehát folyamat létrehozása UNIX-ban két lépésben:&lt;br /&gt;
# fork() rendszerhívás = folyamatduplázás, majd&lt;br /&gt;
# a gyerekfolyamat helyére az új programkód betöltése exec() hívással.&lt;br /&gt;
Modern UNIX-okban fork() már nem igazán (más rendszerhívásokat használ).&lt;br /&gt;
&lt;br /&gt;
====fork(): Miért van szükség a fork() rendszerhívásnál a folyamat megduplázására?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Futási/végrehajtási mód: Mi az a futási mód?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
http://video.bme.hu/media/video/Operacios_Rendszerek_09ea_20110307.wmv, 00:17:00 környéke alapján&lt;br /&gt;
TODO - rövidíteni&lt;br /&gt;
A folyamatok a kerneltől teljesen különválasztva működnek (rendszerhívás interfészen keresztül kommunikálnak a kernellel). A végrehajtási mód azt határozza meg, hogy a kernel vagy a folyamat feladatait hajtja végre az OS.&lt;br /&gt;
Két mód: kernel (&amp;quot;privilegizált, védett&amp;quot;) mód, valamint felhasználói (&amp;quot;szabad&amp;quot;) mód.&lt;br /&gt;
Kernel módban a védett (kernel) tevékenységeket, felhasználói módban a folyamat programkódját hajtja végre az OS.&lt;br /&gt;
Példa: egy webböngésző a tevékenysége egy részében a saját feladatát hajtja végre, pl. HTML-kódot értelmez és jelenít meg, valamint vannak olyan tevékenységek, amelyek ahhoz kellenek, hogy ezt a feladatát végrehajtsa: hálózati kommunikáció, fájlrendszer-műveletek, stb. - ezek kernel tevékenységek.&lt;br /&gt;
Kernel módban privilegizált utasítások hajtódnak végre, pl. egy eszközt kezelünk, vagy hozzányúlunk a háttértárhoz, onnan valamit beolvasunk, oda valamit kiírunk. Ilyen utasításokat egy felhasználói módban futó folyamat nem hajthat végre, hiszen ha közvetlenül hozzáférne a hardverekhez, akkor akár adott esetben a teljes rendszer működését felboríthatná.&lt;br /&gt;
Felhasználói módból kernel módba átlépéskor átlépünk egy védett módba, így olyan feladatokat is végrehajthatunk, amit egyébként tilos.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====inode: Mi a UNIX inode?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* A fizikai állományokhoz tartozó leíró, azonosító&lt;br /&gt;
* minden file-hoz tartozik egy inode állomány amiben a file minden tulajdonsága megtalálható (azonosító,leíró)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kernel mód, folyamat kontextus: Milyen tevékenység zajlik kernel módban, folyamat kontextusban?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Kivételek, rendszerhívások kezelése, rendszerhívások végrehajtása.  &lt;br /&gt;
Amikor a folyamat végrehajt egy rendszerhívást, a felhasználói módból átlép kernel módba, hiszen a rendszerhívás belsejében olyan tevékenységeket szeretne végrehajtani (beolvasni vmit egy fizikai eszközről, hálózatról, más folyamattal kommunikálni, elindítani másik folyamatot, stb.), amelyhez kernel utasítások végrehajtása tartozik.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kernel mód, kernel kontextus: Milyen tevékenység zajlik kernel módban, kernel kontextusban?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Rendszerfeladatok, megszakítások kezelése. Kernelfolyamatok.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kernel módú prioritás: Mi határozza meg a UNIX folyamatok kernel módú prioritását a tradicionális UNIX ütemezésben?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A kernel módban futó folyamat prioritása statikus, nem függ attól, hogy a folyamat mennyit használta a CPUt, vagyis mennyi ideig futott. A prioritás attól függ, hogy a folyamat milyen ok miatt hajtott végre sleep rendszerhívást, vagyis, hogy milyen eseményre várakozik. Emiatt a kernel prioritást szokták alvási prioritásnak is nevezni.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kernelszolgáltatások elérése: Milyen interfészen keresztül érhetők el a UNIX kernel szolgáltatásai?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* System Call Interface&lt;br /&gt;
* Az alkalmazások a rendszerkönyvtárakat hívják meg, amelyek szükség szerint meghívják az operációs rendszer szolgáltatásait ??&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kontextus: Mi az a kontextus?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
http://video.bme.hu/media/video/Operacios_Rendszerek_09ea_20110307.wmv alapján.&lt;br /&gt;
TODO: rövidíteni.&lt;br /&gt;
Az a környezet, amiben végrehajtjuk az utasításokat. Ez is különbözik a kernelek és folyamatok esetén: folyamat kontextusban azokkal az adatokkal és utasításokkal dolgozunk, amelyek alapvetően a folyamat célját szolgálják, kernel (rendszer vagy megszakítás) kontextusban pedig kernel feladatokat hajtunk végre, és az ezekhez a feladatokhoz szükséges adatokkal dolgozunk.&lt;br /&gt;
Kernel kontextus: érkezik egy hardveres megszakítás, ennek kezelése itt zajlik.&lt;br /&gt;
Folyamat kontextus: a folyamattal kapcsolatban hajtunk végre tevékenységeket.&lt;br /&gt;
Nem uaz, mint a végrehajtási mód, mert lehetséges az, hogy bizonyos tevékenységeket kernel módban hajtunk végre, de folyamat kontextusban. Amikor hozzá kell férnünk egy folyamat futási adataihoz, veremhez, virtuális memóriájához, stb., a programnak az adminisztratív adatait kezeljük, ezek folyamat kontextusban találhatóak.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Környezeti adatok: Mik azok a környezeti adatok egy UNIX-folyamatnál?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A folyamat indításakor megörökölt tulajdonságok. Tulajdonság-érték párok. Pl. a felhasználó bejelentkezik; mi az ő neve. A felhasználó milyen terminált használ, annak milyen képességei vannak. Mi a felhasználó shellje. Az épp futó folyamat néhány tulajdonsága. Olyan tulajdonság, amely egyes folyamatok számára értéket jelentenek. A felhasználók ezeket a set, setenv, export parancsokkal tudják ezeket állítani (és le is kérdezhetik őket). Megörökli az őt elindító folyamat környezetét (hogy melyiket kell épp használni, UNIX-variánstól függ). Amikor a felhasználó bejelentkezik, akkor a környezeti változók beállítódnak, a folyamatok induláskor ezeket a beállításokat megöröklik.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====libc: A libc-nek mi a feladata rendszerhívások kezelésében?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A felhasználói mód és kernel mód közötti átmenet lebonyolítása.  &lt;br /&gt;
A folyamat csak meghív egy open(), read(), write(), stb. függvényt, valójában a háttérben bonyolultabb tevékenység zajlik &amp;gt;&amp;gt; meghív egy rendszerhívást a rendszerhívás interfészen keresztül. A rendszerkönyvtárak egyike a libc, a standard C library, ez felel azért, hogy az adott függvényhívásokat (mint a read()) leképezze arra a mechanizmusra, amin keresztül átlépünk kernel módba.  &lt;br /&gt;
Az implementáció belsejében van egy SYSCALL utasítás (ez hardverfüggő), ez ténylegesen elvégzi az üzemmódváltást egy speciális megszakítás generálásával, aminek eredményeként a CPU átlép védett módba. A kernel pedig kezeli ezt a megszakítást. Ekkor a kernel a CPU regisztereit elmenti, azért, hogy a folyamat futása visszaállhasson a megfelelő állapotba. A feladat végeztével a kernel visszatér a megszakításból (erre is hardverfüggő a megvalósítás), a CPU visszavált felhasználói módba, a libc pedig visszatér a függvényhívásból, amit a folyamat kiadott.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====/proc: Mi a /proc?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Speciális fájlrendszer-interfész a kernel-adatstruktúrákhoz való hozzáféréshez.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prioritás: Hogyan számítható ki egy kernel módban futó UNIX folyamat prioritása?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* a prioritást a folyamat elalvásának oka határozza meg, tehát a prioritás attól függ, milyen sleep utasítással ment át alvó állapotba&lt;br /&gt;
* alvási prioritás pl: 20 - diszk I/O-ra vár; 28 - inputra vár a karakteres terminálról&lt;br /&gt;
* kernel módú folyamatoknak (amelyek rendszerhívásokat intéznek) negatív prioritásértékeik vannak, ezeknek van a legmagasabb prioritása ...........  (http://home.mit.bme.hu/~meszaros/edu/oprendszerek/segedlet/unix/2_folyamatok_es_utemezes/unix_processes.pdf)&lt;br /&gt;
* Több szinten, több időléptékben zajlik. Óraütésenként a prioritási sorok ellenőrzése. 10 óraütésenként RR ütemezés egy soron belül. 100 óraütésenként a prioritások újraszámítása.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rendszerhívások: Igaz-e, hogy a rendszerhívások megszakítással járnak együtt?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Igen, ennek hatására vált védelmi szintet a processzor.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rendszerhívások kontextusa: Milyen kontextusban hajtódnak végre a UNIX rendszerhívások?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
folyamat kontextusban&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rendszerhívások módja: Milyen módban hajtódnak végre a UNIX rendszerhívások?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
kernel módban&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rendszerhívások módja, kontextusa: Milyen futási módban és kontextusban zajlik a UNIX rendszerhívások kiszolgálása?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Kernel módban fut a kód, és a rendszert hívó folyamat kontextusában. ((az ehhez tartozó ábra jobb felső része))&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rendszerhívások programindításkor: UNIX alatt milyen rendszerhívásokra van szükség, ha a felhasználó elindít egy programot (folyamat létrehozása és programkód betöltése)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Folyamatot létrehozni a fork() hívással, majd a programkódot betölteni az exec() hívással lehet.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====rpcgen: Mi az rpcgen program feladata?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* RPC nyelven készült leírásból C programkódot generál. [?]&lt;br /&gt;
&lt;br /&gt;
* Az RPC nyelv alkalmas a szerver interfészének formális leírására. A formális leírásból az rpcgen program képes a szerver és a kliens programok megfelelő részeit, valamint a szükséges XDR konverziós függvényeket elkészíteni C nyelven. Az így kapott C forráskódú modulokat a kliens és szerver alkalmazással kibővítve kapjuk a teljes kommunikáló rendszert.&lt;br /&gt;
* XDR (Extended Data Representation, kiterjesztett adatreprezentáció): Többféle egyszerű adattípust definiál, illetve szabályokat határoz meg bonyolultabb adatstruktúrák létrehozására. Az adatstruktúrák meghatározásán kívül az XDR egy formális nyelvet is bevezet az adatok leírására. Az RPC rendszer is ezen nyelv kiterjesztését használja a távoli eljáráshívás formális leírására.&lt;br /&gt;
* RPC (remote procedure call, távoli eljáráshívás): Az RPC-rendszer egy protokoll-leírást és egy programozói interfészt tartalmaz. Az XDR által definiált formális nyelv kiterjesztését használja a távoli eljáráshívás formális leírására.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====System V IPC: Sorolja fel a UNIX System V IPC elemek közös alapjának részeit!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Minden IPC erőforrás rendelkezik a következő azonosítókkal: kulcs (key), létrehozó (creator), tulajdonos (owner), hozzáférési jogok (permissions)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
====System V: Adja meg a System V üzenetsorok főbb jellemzőit (tömör felsorolást kérünk)!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* diszkrét, tipizált üzenetek&lt;br /&gt;
* nincs címzés, üzenetszórás&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====System V: Miért tud az s5fs (System V File System) gyorsabban írni, mint olvasni (az előadás példája alapján)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* az írás gyors, főleg kis fájlok esetén (több szintű leképzés a kisebb blokkkok miatt), az olvasás azért lassabb (csak a nagy fájlokra), mert azoknak a részeit össze kell vadászni a szétszórtság miatt&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====u-terület: milyen jellegű adminisztratív adatok vannak az u-területen?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Azok az adatok, melyek a folyamatok futásakor kellenek. Több infó: lásd adminisztratív adatoknál.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====UNIX-fajták: Soroljon fel fő UNIX-fajtákat!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Linux, Solaris, BSD, System V, HP/UX, ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====UNIX-szabványok: Soroljon fel UNIX-hoz köthető szabványokat (legalább kettőt)!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* POSIX.1 (teljes nevén: POSIX1003.1): C nyelvű szabványos rendszerhívás-interfész&lt;br /&gt;
* System V Interface Definition&lt;br /&gt;
* X/Open Portability Guide&lt;br /&gt;
* - AT&amp;amp;T SVID (pl. SVR4), - IEEE POSIX,  - Open Group X/Open, Unix95, Unix98, ...  ????&lt;br /&gt;
* http://linux.die.net/man/7/standards&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====UNIX-típusok: Soroljon fel UNIX típusokat (a családfa jellemző ágait)!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* System V (AT&amp;amp;T változat; Solaris, SCO),&lt;br /&gt;
* BSD (Berkeley változat; SunOS, OpenBSD)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Ütemezés: Adja meg a tradicionális UNIX ütemező három legjellemzőbb tulajdonságát!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* preemptív, prioritásos és időosztásos&lt;br /&gt;
(Néhány kiegészítés a UNIX-ütemezőhöz:&lt;br /&gt;
* nem preemptív kernel módban (a kernel módot végrehajtó folyamatot (pl. rendszerhívás, megszakítás-kezelés) nem lehet kényszeríteni, hogy a CPU használatáról lemondjon egy nagyobb prioritású folyamat javára)&lt;br /&gt;
* újraütemezés csak akkor következik be, ha egy folyamat önként lemond a CPU-ról és sleep rendszerhívást hajt végre, vagy a folyamat kernel módból visszatér user módba Nem méretezhető megfelelően. Az algoritmus nem képes rugalmasan alkalmazkodni a folyamatok számának növekedése esetén. A korrekciós faktor nem elég hatékony eszköz.&lt;br /&gt;
* A CPU-t adott esetben nem lehet &amp;quot;kiosztani&amp;quot; adott folyamat számára. Nem garantálható fix válaszidő. Nagy rendszerterhelés esetén a válaszidő megnőhet. A UNIX ütemezés épp ezért nem alkalmazható real-time rendszerekben.&lt;br /&gt;
* A kernel nem preemptív, ezért az egész rendszert feltarthatja. A felhasználó nem tudja megfelelő módon befolyásolni folyamatai prioritását - a nice szám nem megfelelő eszköz erre a célra.)&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====vfs: Mondjon legalább egy, UNIX VFS-alapú &amp;quot;fájlrendszert&amp;quot;, amelynek a célja nem fájlok tárolása!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
/dev, /proc, stb.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====vfs: Soroljon fel UNIX VFS-alapú fájlrendszereket (legalább négyet)!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
xfs, zfs, brtfs, nfs&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Virtuális rendszerhívás: Mi az a virtuális rendszerhívás, miért van rá szükség?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
(Klasszikus UNIX-ban nincs, Linux 2.5.x-től felfelé, mai Linux kernelek aktívan használják.)  &lt;br /&gt;
Vannak bizonyos egyszerű feladatok, amelyek a feladat egyszerűsége ellenére túl sok felesleges művelettel járnak: rendszerhívás intterrupt, kontextusváltás, stb., ezen a helyzeten szeretnénk javítani - próbáljuk lerövidíteni ezt az utat.  &lt;br /&gt;
Pl. a pontos idő lekérdezése csupán egy megfelelő hardver kiolvasása (egyszerű numerikus érték), mégis sok művelettel jár: gettimeofday(): libc &amp;gt; SYSCALL &amp;gt; kontextusváltás &amp;gt; ..., majd ugyanezen a lépcsőn visszasétálunk a felhasználói folyamatba.  &lt;br /&gt;
Persze nem mindig lehet leegyszerűsíteni ezt az utat, csak egyszerűbb és biztonságos esetekben, pl. ha egyszerű numerikus értékek, azonosítók kiolvasásáról van szó: pl. folyamatnak mi az azonosítója, processzor lekérdezése, pontos idő lekérdezése...Tehát a felhasználói módból kernel módba történő hosszas váltást szeretnénk elkerülni. Ha nincs ilyen módváltás, akkor a felhasználói címtérben elérünk egyes kernelterületeket &amp;gt; így tényleg egyszerű függvényhívás lesz. Megfelelő előfeltételekkel: csak kockázatmentes feladatokra. Időlekérdezés tipikusan ilyen, ott megtehetjük.A felhasználói címtérben az a tevékenység, amelyet szeretnénk végrehajtani, elérhető legyen. Ezt oldják meg a virtuális rendszerhívások!	&lt;br /&gt;
A folyamat címterébe a kernel rendszerinduláskor speciális &amp;quot;kernellapot&amp;quot; allokál - ezen a biztonságosnak tekinthető rendszerhívások vannak. Terminálból példa: ldd /bin/bash&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====vnode/vfs: Mi a UNIX vnode/vfs?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Implementáció-független fájlrendszer absztrakció&lt;br /&gt;
* vnode: virtuális csomópont, vfs: virtuális állományrendszer&lt;br /&gt;
* inode --&amp;gt; vnode&lt;br /&gt;
* fs --&amp;gt; vfs&lt;br /&gt;
* Új absztrakció: annak felismerése, hogy több állományrendszernek számos előnye van, szükségessé vette a virtuális csomópont (vnode) és a virtuális állományrendszer (vfs) leíró adatszerkezetek bevezetését. Követelmények, elvárások az állományrendszerrel kapcsolatban:&lt;br /&gt;
** egyszerre támogasson több - UNIX, nem UNIX - állományrendszert&lt;br /&gt;
** különböző diszk partíciók különböző állományrendszereket is tartalmazhatnak, de mountolás esetén egységet képet kell, hogy mutassanak&lt;br /&gt;
** támogassa a hálózati állományok osztott használatát&lt;br /&gt;
** modulárisan bővíthető legyen. &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Zombi állapot: Mi a zombi állapot szerepe egy UNIX rendszerben?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A folyamat már felszabadította a foglalt memóriát, lezárta az állományokat, minden erőforrását visszaadta a rendszernek, csak a proc struktúráját tartja fogva, amiben visszatérési és statisztikai információt tárol a szülő számára. A folyamat szülő wait hívása után szűnik meg.&lt;br /&gt;
&lt;br /&gt;
Megjegyzés: bővebben magyarázattal, előadás alapján:&lt;br /&gt;
A folyamat megáll, a UNIX-ban a kernel szeretné ezt a szülőjének is tudomására hozni.	&lt;br /&gt;
A folyamat már leállt, nem fog tovább futni, de a szülőjét még nem értesítették arról, hogy ez a folyamat megszűnt, esetleg gondoskodjon az újraindításáról, stb.  &lt;br /&gt;
Pl. egy webszerver: beérkező kérések kiszolgálása --&amp;gt; kliens folyamat indítása, ez megkapja a kérés kiszolgálásának feladatát, a kliens pedig valamikor megáll, a webszerver nem árt, ha értesül róla, hogy hiba vagy normál működés folytán állt le.  &lt;br /&gt;
Tehát amíg a szülő nem értesült a leállásról, a folyamat zombi állapotban marad. Ha a szülőt nem érdekli, mi történt a gyerekfolyamattal, a zombi állapot hamar megszűnik.  &lt;br /&gt;
A zombi állapotban a folyamatnak semmilyen saját adatát nem tároljuk, a folyamat összes működéshez szükséges adata megszűnik, kizárólag a kernel adatstruktúrákban, tehát a proc struktúrában marad meg a folyamatnak néhány adminisztratív adata. A ps kilistázhat pl. zombi állapotban lévő feladatokat, mert ezeknet a folyamatoknak az adminisztratív adatai a kernel címterében még megtalálhatóak. De a folyamatok saját címtere, u-terület, stb. már nem létezik. Miután a szülő értesült róla, hogy a gyerekfolyamat meghalt, a kernel törölni fogja a folyamatot a process táblából is, a folyamat kilép a zombi állapotból.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Zombi állapot: Igaz-e az, hogy egy zombi állapotban lévő folyamat még memóriaterületet foglal?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Igen, mert a kernel processz táblában még ott vannak az adatai, és az memóriaterületet foglal. (A NEM választ is meg lehet indokolni...) [Indoklás nélkül 0 pont!!!]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
&lt;br /&gt;
====Alrendszer: Melyik az az alrendszere a Windowsnak, ami nélkül nem tud futni?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A Windows alrendszer, avagy Client/Server Runtime [[SubSystem]] (csrss.exe). Ennek kilövése kékhalált eredményez.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====API-k: Hogyan oldották meg, hogy az alkalmazások többféle API-n (Win32, POSIX) keresztül is meg tudják hívni a Windows operációs rendszer funkcióit?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Megoldás: környezeti alrendszerek (environment subsystems): a felhasználónak vagy programozónak nyújtott környezet, személyiség egy részét a környezeti alrendszer folyamatok valósítják meg, minden egyes környezet külön API-t mutat (Windows, POSIX, ...), az operációs rendszer rendszerhívásainak egy részét kínálja a felhasználói alkalmazások számára. (Forrás: http://mit.bme.hu/~micskeiz/opre/files/00-opre-windows-bevezeto.pptx)&lt;br /&gt;
* a kernelnek egy definiált interfésze van, ami nem publikus (hivatalos dokumentációja nincsen): NT API &amp;gt;&amp;gt; az ebben lévő függvényeket a fejlesztő ne hívhassa meg közvetlenül. Ehelyett erre két alrendszer épül, ők mutatnak egy API-t az alkalmazások felé: Windows API és POSIX API. (ezek teljesen dokumentáltak!). Az alkalmazások viszont nem keverhetik az alrendszereket, mindegyik csak egyet használhat; ezt linkeléskor kell eldönteni.&lt;br /&gt;
* A két alrendszer feladata az, hogy az általuk definiált hívásokat átfordítsák.&lt;br /&gt;
* Nem pusztán szintaktikai, hanem szemantikai eltérések is vannak.&lt;br /&gt;
&lt;br /&gt;
(Megjegyzés: Exetype segédeszköz segítségével megnézhető, melyik alrendszert használja egy adott alkalmazás.)&lt;br /&gt;
&lt;br /&gt;
Forrás: http://video.bme.hu/media/video/Operacios_Rendszerek_04ea_20110215.wmv (00:28:29 körül)&lt;br /&gt;
&lt;br /&gt;
(Korábbi:&lt;br /&gt;
* Alkalmazás 1&amp;gt;&amp;gt;&amp;gt;Windows API (Windows alrendszer)&amp;gt;&amp;gt;&amp;gt;NT API (NT Kernel)&amp;lt;&amp;lt;&amp;lt;Posix API (Posix alrendszer)&amp;lt;&amp;lt;&amp;lt;Alkalmazás 2 TODO(ehelyett 1 épkézláb mondat kéne)&lt;br /&gt;
* alkalmazások viszont nem keverhetik az alrendszereket, mindegyik csak egyet használhat; ezt linkeléskor kell eldönteni&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Executive réteg: Executive (Windows)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Az operációs rendszer magasabb szintű funkcióit szolgáltató rétege (memóriakezelés, biztonság, stb.). Az adatokat objektumokban tárolja, melyeket leírókkal (handle) lehet csak elérni, jól definiált interfészeken keresztül. Bár a kernel funkcióit csak a kernel interfészén keresztül éri el, szintén az ntoskrnl.exe tartalmazza. A legtöbb rendszerhívás itt van megvalósítva. &lt;br /&gt;
Forrás: http://mit.bme.hu/~micskeiz/opre/files/00-opre-windows-bevezeto.pptx&lt;br /&gt;
&lt;br /&gt;
(Korábbi: Ez a réteg tartalmazza az NTDLL.DLL által definiált függvények hívásainak megvalósítását, valamint a rendszer külső objektumai közti kommunikáció. Legfontosabb szolgáltató funkciója a lokális eljárás hívás - LPC (Local Procedure Call) megvalósítása. TODO[MZ])&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fájlhozzáférések: Mivel azonosítja a Windows a felhasználókat és csoportokat a fájlhozzáférési listákban?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* objektum (SecurableObject) &amp;amp;#8594; (SID, engedélyek) ; engedély: adatok írása, attribútumok olvasása...&lt;br /&gt;
* SecurityDescriptor (biztonsági leíró, összefogja a többi elemet) &amp;gt;&amp;gt; Owner (Tulajdonos, megváltoztathatja az objektum engedélyeit, akkor is ha nincs explicit joga), Discretionary Access Control List (DACL, belátás szerinti, erőforrás szintű, hozzáférési lista - hozzáférés szabályozása), SACL (biztonsági naplózás szabályozása - kinek milyen művelete esetén kell naplózni az adott műveletet)&lt;br /&gt;
* AccessControlEntry:&lt;br /&gt;
** Típus: megengedő, tiltó, audit&lt;br /&gt;
** Flag: Pl. öröklődés&lt;br /&gt;
** SID: kire vonatkozik&lt;br /&gt;
** Maszk: végrehajtás | törlés  tulajdonos írása...&lt;br /&gt;
* elérési lista (ACL), melyben megadható, hogy mely folyamatok jogosultak az adott section object elérésére ???&lt;br /&gt;
*  minden objektumhoz tároljuk a hozzá tartozó &amp;lt;tartomány, műveletvégzési jog&amp;gt; párokat ????&lt;br /&gt;
* TODO - bőven elég annyi, hogy Security Identifier (SID) segítségével azonosítja&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Felhasználó- és csoportazonosító: Mi alapján azonosítja a Windows a felhasználókat és a csoportokat?====&lt;br /&gt;
SID - Security Identifier&lt;br /&gt;
&lt;br /&gt;
====Paravirtualizáció: Mit jelent az, hogy egy virtualizációs megoldás paravirtualizációt használ a CPU virtualizálásához?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Paravirtualizáció esetén fel kell készíteni a vendég OS-t a forráskódjának módosításával, hogy ne is akarjon problémás utasításokat hívni, hanem azok helyett azoknak megfelelő függvényeket hívjon a hypervisorban. Ezzel egyszerűsödik a hypervisor implementálása.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Felhasználó- és csoportazonosító: Mivel azonosítja a Windows a felhasználókat és csoportokat a hozzáférések ellenőrzése során?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;Gép SID&amp;gt;-&amp;lt;RID&amp;gt; (SID security identifier - gépspecifikus, RID: relative identifier)&lt;br /&gt;
* Jól ismert SID-ek: Everyone: S-1-1-0, Administrator: S-1-5-domain-500&lt;br /&gt;
* Vista: szolgáltatások is kapnak SID-et&lt;br /&gt;
* objektum &amp;amp;#8594; (SID, engedélyek) ; engedély: adatok írása, attribútumok olvasása...&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====HAL: Mi a HAL (Windows)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;quot;HAL&amp;quot; - Hardware Abstraction Layer&lt;br /&gt;
* A felsőbb rétegek a HAL-on keresztül érik el az alap HW szolgáltatásokat, a HAL szerepe, hogy elfedje a HW megvalósítás részleteit, és egy egységes, platformfüggetlen felületet biztosítson.&lt;br /&gt;
* hal.dll fájlban megvalósítva (pl. timer interrupt kezelését, alaplap alapvető felépítését (milyen chipsetek vannak rajta), stb. elfedi a felette lévő rétegektől)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Hardverfüggő részek: Melyek a Windows hardverfüggő részei?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* A kernel egyes részei és a HAL.&lt;br /&gt;
* Megjegyzés: én ide a drivereket is beírtam, nem vontak le érte pontot, de azt mondták, azokat nem mindig szokás a rendszer részének tekinteni.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Jogosultságok szerepe: Mik a jogosultságok (privilege) szerepe a Windows-ban?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* operációs rendszer szintű jog&lt;br /&gt;
* meghatározzák azokat a rendszerműveleteket, amelyeket egy felhasználói azonosító elvégezhet. Egy rendszergazda jogosultságokat felhasználóknak és csoportazonosítóknak oszt (http://msdn.microsoft.com/en-us/library/bb530716(VS.85).aspx)&lt;br /&gt;
* pl. számítógép leállítása, eszközmeghajtó betöltése&lt;br /&gt;
* név: SeShutDownPrivilege, SeLoadDriverPrivilege&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Képernyőkezelő/ablakkezelő/grafikus komponens/Képernyőkezelő és grafikus funkciókat megvalósító függvények kernel módba kerülése: Mi a fő oka, hogy a Windows NT-ben a képernyőkezelő és grafikus funkciókat megvalósító függvények kernel módba kerültek? Elméleti megfontolások alapján hol lenne a helyük?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
	 Windows NT 4.0-ban került le kernel szintre ez a komponens, hogy kevesebb folyamat- és módváltás legyen (Ne kelljen mindig visszaváltani a csrss.exe-be, majd onnan átváltani kernel módba, utasítani a hardvert, visszaváltani felhasználói módba, majd visszaváltani a felhasználói folyamatba, aki kezdeményezte a változtatást.) (A felhasználói módú folyamatban (csrss.exe) csak a konzol kezelés maradt.) Elméletileg felhasználói szinten kéne lennie.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Képernyőkezelő/ablakkezelő/grafikus komponens kernel módba kerülése: Windows-ban miért került le az ablakkezelő kernel módba?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Hogy kevesebb kontextus- és módváltás legyen, mivel a Windows szerves része az ablakkezelés, ezért rengeteg user-kernel mód váltás lenne ha a csrss.exe-en keresztül használnánk. Tehát teljesítménybeli okokból.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Képernyőkezelő/ablakkezelő/grafikus komponens előnyei: A Windows OS grafikus komponensének mik az előnyei, hátrányai?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A grafikus komponens kernel módban fut. Emiatt a hibái az egész rendszert magával ránthatják, viszont gyorsabb, mert kevesebb CPU-mód váltás kell a rajzoláshoz.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Képernyőkezelő/ablakkezelő/grafikus komponens kernel módba kerülése: Mi volt a fő oka annak, hogy a Windows NT-ben a képernyőkezelő és grafikus funkciókat megvalósító komponens kernel módba került?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
	 Mert ezek a folyamatok intenzíven használják a hardvert, és futásuk gyorsaságára az egész rendszer teljesítménye érzékeny. A user módban történő megvalósítás a rendszert lelassítaná a gyakori környezetváltás miatt.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kernel: Mi a kernel (Windows)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A rendszer állandóan memóriában lévő, védett módban futó része. Az NT egyetlen HW függő része, szerepe a HW elfedése a felette található eszközök elől, ezáltal a felette lévő részek már teljesen HW függetlenek. Megvalósítja a szálütemezést, multiprocesszor ütemezést és a TRAP kezelést.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kliens-szerver-modell: Nevezzen meg egy kliens-szerver-modell alapján működő komponenst az NT-ben!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* csrss.exe - Client/Server Run-Time Subsystems (környezeti alrendszerek)&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Memóriafoglalás: Mely utasításokkal és miért történik a memóriafoglalás két lépésben Windows alatt?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* A két lépés: Reserve és Commit. Az első csak címtartományt foglal, amögött nem lesz ténylegesen használható memóriaterület; a másik a már lefoglalt címtartományhoz rendel (virtuális) memóriát.&lt;br /&gt;
* A folyamatok címtartományának töredezettsége csökkenthető azzal, ha a címtartományt már akkor előre foglalja, mikor a memóriára még nincs szüksége, és ez nem jár olyan memóriapocsékolással, mintha fizikai memóriát is foglalna ugyanakkor.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Munkakészlet (working set): Mit jelent a Windows-ban az egy folyamathoz tartozó munkakészlet (working set) fogalma?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Azon fizikai lapok halmaza, amelyekre a folyamat laphiba nélkül hivatkozhat. &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====NT hardverfüggő rétegei: Sorolja fel az NT hardverfüggő rétegeit!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
HAL (Hardware Abstraction Level), kernel&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====NTDLL.DLL: Mi az NTDLL.DLL fő funkciója?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Összeköti a User és Kernel módot. Az Executive függvényeknek megfelelő függvénycsonkok vannak benne.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Quantum: Mi a szerepe a quantumnak a Windows ütemezőjében?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* A szálak adott ideig futnak (quantum)&lt;br /&gt;
* RR ütemezésnél az időszelet&lt;br /&gt;
* Óramegszakításban mérik (clock interval, clock tick) 1 clock tick = ~ 10-15 ms (HALtól függ)&lt;br /&gt;
* Quantum hossza: időegység, amíg egy szál fut&lt;br /&gt;
* Kliensek esetén a quantum hossza 2 clock tick a háttérben futó folyamatoknak, az előtérben futó folyamatoknak 6 clock tick jut. Így egy CPU-intenzív folyamatról való ablakváltáskor az új, előtérben lévő folyamat arányosan több CPU-időt kap (azonos prioritásokat feltételezve).&lt;br /&gt;
* Szervereknél: mindenkinek 12 clock tick a kontextusváltások minimalizálása érdekében. Szervereknél így a kliensek kéréseinek eredményeként felébredő alkalmazásoknak több esélye van befejezni a kérést, és várakozó állapotba kerülni, mielőtt az időszelet véget érne.&lt;br /&gt;
* esély annak a folyamatnak, amelynek épp most ért véget a várakozása: a várakozás végén megnöveljük a prioritást, de a quantum eggyel csökken; a quantum végén a prioritást az eredetire csökkenti.&lt;br /&gt;
* éhezés elkerülése: az OS másodpercenként megnézni a futásra kész szálakat, és annak, aki nem futott már 300 óraütés óta, 15-ös prioritást ad, megnöveli a quantumját egy quantumnyi futásig&lt;br /&gt;
* TODO, hogy a forrás feldolgozása jó-e: http://mit.bme.hu/~micskeiz/opre/files/01-opre-windows-utemezes.pptx&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rendszeridő megváltoztatása: A rendszeridő megváltoztatására kinek van joga Windows alatt?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* SeSystemTimePrivilege joggal rendelkező felhasználóknak / azoknak a felhasználóknak, amelyek olyan csoportba tartoznak, amelyekhez hozzá van rendelve a SeSystemtimePrivilege.&lt;br /&gt;
* Alapértelmezett beállításként csak az Administrators és Power Users group rendelkezik vele.&lt;br /&gt;
* http://msdn.microsoft.com/en-us/library/windows/desktop/bb530716(v=vs.85).aspx&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Standby memórialapok listája: Mire szolgál a standby memória lap lista a Windows-ban (miért nem szabad lapként vannak ezek nyilvántartva)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A lap egy munkahalmaz része volt, de már nem az, elvették tőle. A lap nem módosult, mióta kiírták a merevlemezre, vagy mióta beolvasták. Egy nem Valid laptábla bejegyzés még mutat rá, azaz ha kell, még könnyen életre lehet kelteni a lapot. &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Szabad (free) és nullázott (zeroed) lapok: Miért van a Windows-ban külön szabad és nullázott (freed és zeroed) memórialap-lista?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Biztonsági okokból. Nem nullázott memóriaterületet odaadni más folyamatnak biztonsági kockázatot jelent.&lt;br /&gt;
Tehát a free lapok szabad lapok, de még nem adhatók oda felhasználói folyamatnak, mert &amp;quot;szemetet&amp;quot; vagy érzékeny adatot tartalmazhatnak: nincs nullákkal felülírva a tartalma. A zeroed lapok szabadok, és nullákkal vannak felülírva, tehát odaadhatók felhasználói folyamatnak, amennyiben igény van rá.&lt;br /&gt;
&lt;br /&gt;
TODO: ez így már megfelelő indoklás?&lt;br /&gt;
&lt;br /&gt;
(Korábban:&lt;br /&gt;
*Free*: a lap szabad, de nincs 0-kkal felülírva a tartalma, szemét vagy egy előző processz által használt tartalom van benne. Ezt nem adhatja ki közvetlenül a memóriakezelő más processzeknek, mert biztonsági szempontból aggályos adatokat találhatna rajta.&lt;br /&gt;
*Zeroed*: szabad és nullákkal felülírt lap, kiadható, ha valakinek kell. &lt;br /&gt;
TODO(ez így igaz, csak ebben a formában nem a kérdésre válaszol))&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Mik a szerepük a szolgáltatásoknak a Windowsban? ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Olyan folyamatok, amik a felhasználói felülettől és belépéstől függetlenül a háttérben futnak, és kibővítik az operációs rendszer alap szolgáltatásait.&lt;br /&gt;
TODO?&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Újrahívhatóság (reentrancy): Mit jelent az, hogy a Windows-ban a rendszerhívások újrahívhatóak?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A rendszerhívásokat több alkalmazás is meghívhatja egyszerre, nem blokkolódnak, ha már valakit éppen kiszolgál az adott rendszerhívás.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Védett objektum tulajdonosának speciális joga: Milyen speciális joga van egy védett objektum tulajdonosának az adott objektumra a Windows-ban?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Megváltoztathatja az objektum engedélyeit, akkor is, ha erre nincs explicit joga. (https://wiki.sch.bme.hu/pub/Infoalap/OpRe/03-opre-windows-biztonsag.pptx)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Verzióleírás: Mit jelentenek a számok és szavak a következő verzióleírásban: &amp;quot;Microsoft (R) Windows (R) 5.01.2006 Service Pack 2 Uniprocessor Free&amp;quot;?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* (MZ) 5.01.2006 a verziószám, major.minor.build formában, 5.1 a Windows XP verzója, 2006 az SP2-es verzió build száma. Uniprocessor = egy processzoros kernel verzió, Free = debug szimbólumok nélküli verzió.&lt;br /&gt;
	*(MZ) 2011-től kezdve ez már nem része a tananyagnak&lt;br /&gt;
* Most computers run a &amp;quot;uniprocessor free&amp;quot; version of Windows, which is a version that runs on a single CPU and does not contain extra errorchecking.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- /#q_and_a --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Tartalomjegyzék==&lt;br /&gt;
&amp;lt;div class=&amp;quot;table_of_contents&amp;quot;&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Források (teljesség igénye nélkül)==&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs_sources&amp;quot;&amp;gt;&lt;br /&gt;
Ez előadás diáin, Wikipédiás és egyéb, Google-lel található cikkeken kívül ezek voltak a források, és MÉG ÍGY SEM tartalmazza az összes beugrókérdést (volt olyan, amit rengeteg idő lett volna átszerkeszteni, vagy kevésbé sanszos, hogy olyan hosszúságú beugrókérdést tennének fel, ami ott szerepelt):&lt;br /&gt;
&lt;br /&gt;
* Hivatalos előadásjegyzetek: http://portal.mit.bme.hu/?l=oktatas/targyak/vimia219/jegyzet/index.html&lt;br /&gt;
* https://wiki.sch.bme.hu/bin/view/Infoalap/OpReVizsgaBeugrok&lt;br /&gt;
* https://wiki.sch.bme.hu/bin/view/Infoalap/OpReVizsgaKisKerdesek&lt;br /&gt;
* https://wiki.sch.bme.hu/bin/view/Infoalap/OpReVizsga2007junius12megoldas&lt;br /&gt;
* https://wiki.sch.bme.hu/bin/view/Infoalap/OpReVizsga2008majus20megoldas&lt;br /&gt;
* https://wiki.sch.bme.hu/bin/view/Infoalap/OpReVizsga2008junius11megoldas&lt;br /&gt;
* https://wiki.sch.bme.hu/pub/Infoalap/OpRe/pelda_beugro_megoldas.pdf&lt;br /&gt;
----&lt;br /&gt;
* https://vir.sch.bme.hu/dokumentumok/InfoSite/4.%20f%C3%A9l%C3%A9v/Oper%C3%A1ci%C3%B3s%20rendszerek/&lt;br /&gt;
* https://vir.sch.bme.hu/document/targyak/opre/opre_beugro.zip (HOSSZÚ)&lt;br /&gt;
* https://vir.sch.bme.hu/document/targyak/opre/oprendszkidolg.zip&lt;br /&gt;
* Wikipédia&lt;br /&gt;
* Google segítségével fellelhető rengeteg forrás&lt;br /&gt;
* stb.&lt;br /&gt;
&lt;br /&gt;
-- [[PeteHaro|Pete]] - 2011.06.19.&lt;br /&gt;
* [[Media:opre_beugro_ABC.docx|Operációs rendszerek vizsgabeugrók megoldással DOCX-formátumban (szerkeszthető, javítható!)]]&lt;br /&gt;
* [[Media:opre_beugro_ABC.pdf|Operációs rendszerek vizsgabeugrók megoldással PDF-formátumban]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Infoalap]]&lt;/div&gt;</summary>
		<author><name>Bolla Dávid</name></author>
	</entry>
	<entry>
		<id>https://vik.wiki/index.php?title=Oper%C3%A1ci%C3%B3s_rendszerek_kidolgozott_beugr%C3%B3k%C3%A9rd%C3%A9sek_vizsg%C3%A1ra_ABC-sorrendben&amp;diff=186253</id>
		<title>Operációs rendszerek kidolgozott beugrókérdések vizsgára ABC-sorrendben</title>
		<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=Oper%C3%A1ci%C3%B3s_rendszerek_kidolgozott_beugr%C3%B3k%C3%A9rd%C3%A9sek_vizsg%C3%A1ra_ABC-sorrendben&amp;diff=186253"/>
		<updated>2015-06-10T11:12:14Z</updated>

		<summary type="html">&lt;p&gt;Bolla Dávid: /* Paravirtualizáció: Mit jelent az, hogy egy virtualizációs megoldás paravirtualizációt használ a CPU virtualizálásához? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Bevezető==&lt;br /&gt;
Korábbi Wiki-n és InfoSite-on szereplő kidolgozott és kidolgozatlan anyagok, számtalan forrásból összeszedve - előadásdiákból, video.bme.hu-n lévő felvett anyagokból, Wikipédiás és egyéb, Google segítségével fellelhető anyagokból kiegészítve.&lt;br /&gt;
Hibák előfordulhatnak! TODO-val azokat a részeket jelöltem, amik átnézendők, rendbe szedendők, hiányosak, stb., ezeket is kérlek javítsátok, ha tudjátok! Köszi!&lt;br /&gt;
Ami fontos: ABC-sorrendbe rendezve szerepelnek a kérdések, így könnyebben megtalálható, tartsuk is meg ezt a tendenciát!&lt;br /&gt;
Remélem hasznát veszitek! -- [[PeteHaro|Pete]] - 2011.06.19.&lt;br /&gt;
Valamilyen szintű kategorizálást is beleraktam. A kérdések elejére odaírtam magának a kérdésnek a lényegét is, hogy könnyebben megtalálhatóak legyenek az azonos kérdéskörbe tartozóak.&lt;br /&gt;
&lt;br /&gt;
==Beugrókérdések megoldással==&lt;br /&gt;
===Általános jellegű OS-ekkel kapcsolatos kérdések===&lt;br /&gt;
&lt;br /&gt;
====Indulás: Hasonlítsa össze az általános célú (asztali) és a beágyazott operációs rendszereket az indulás szempontjából!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A beágyazottnál először indul az alkalmazás, és az indítja az operációs rendszert, az asztalinál az operációs rendszer indítja az alkalmazásokat.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Inkrementális mentés: Mit jelent az inkrementális mentés?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Csak a változtatásokat mentjük az előző mentéshez képest -&amp;gt; kisebb helyet foglal, hamarabb végez a mentés.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kemény valós idejű rendszer: Adja meg a kemény valós idejű (hard real-time) rendszer definícióját!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A rendszer adott eseményekre  adott időn belül 1 valószínűséggel válaszol (egyébként hibás, hiába funkcionálisan jó a válasz). A rendszer NEM késhet!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Lazán csatolt rendszer: Milyen szinkronizációs kényszereket jelent, ha egy lazán csatolt rendszer kommunikációja során véges kapacitású csatornát alkalmazunk?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
ha a küldő folyamat túl gyorsan küldözget, akkor a csatorna megtelik, úgyhogy túlcsordulás lesz, ami miatt a küldőnek várnia kell mielőtt újra küld.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rendszerhívások: Milyen előnnyel jár a rendszerhívások valamilyen magas szintű programnyelvvel történő megadása?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Az API elrejti a rendszerhívások részleteit, bonyolultságát a programozó elől, lényegében egy wrapper réteggel fedi be a rendszerhívásokat.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====RPC: Milyen részekből áll az RPC technológia?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* RPC: Remote Procedure Call, távoli eljáráshívás. Magas szintű folyamatok közti kommunikációt tesz lehetővé. Részei:&lt;br /&gt;
*  a hívható eljárások és típusaik (interfész) leírása&lt;br /&gt;
* programgenerátor - rpcgen: a leírásból C programkódot generáló program&lt;br /&gt;
* kommunikációs infrastruktúra - portmapper: a programazonosítók és a hálózati portok összerendelése&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Statikus/dinamikus OS: Mikor nevezünk statikusnak, illetve dinamikusnak egy operációs rendszert?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
statikus: azok a rendszerek, amelyeknek muködése során - a felépülés és inicializálás kezdeti szakaszától eltekintve - nem jönnek létre és nem szűnnek meg folyamatok. dinamikus: működés közben bármikor születhetnek illetve megszünhetnek folyamatok.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Szorosan csatolt rendszerek: Milyen rendszereket nevezünk &amp;quot;szorosan csatolt&amp;quot; rendszereknek?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Ahol több CPU közös óra és közös memória segítségével működik együtt. Általában egyetlen operációs rendszer van, de az bonyolult. (Megjegyzés: az architektúrákból megtanult &amp;quot;közös erőforrást használnak&amp;quot; definícióra csak fél pontot adtak.)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Erőforrás-hozzáférés===&lt;br /&gt;
&lt;br /&gt;
====Elosztott rendszerek: Elosztott rendszerekben milyen konzisztencia kérdésekkel kell foglalkozni?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* frissítés konzisztencia&lt;br /&gt;
* másolat konzisztencia&lt;br /&gt;
* cache konzisztencia&lt;br /&gt;
* hiba konzisztencia&lt;br /&gt;
* óra konzisztencia&lt;br /&gt;
* felhasználói interfész konzisztencia&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Erőforrás-gazdálkodás: Mi a különbség a hierarchikus és a globális erőforrás-gazdálkodás között?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
hierarchikus: a gyermek folyamatok csak a szülő erőforrásaiból részesülhetnek, és nem létezhetnek önállóan, csak amíg a szülőjük is létezik. globális: a rendszer valamennyi folyamata létrejötte után egyenrangú, önálló szereplő, és versenyezhet a teljes erőforráskészletből való részesedésért.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Éhezés: Mi az az éhezés?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A folyamatnak megvan mindene, ami a futásához kellene (ezért nem holtpont), de az erőforrásokat, amiket használni akar, más folyamatok kapják meg (ezért nem tud futni).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Graceful degradation: Mit jelent a &amp;quot;graceful degradation&amp;quot; fogalma? ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Fokozatos leromlás/összeomlás: Ha a rendszer terhelése eléri az ún. könyökkapacitást, akkor utána viselkedése megváltozik, a tovább növekvő terhelésre már egyre rosszabb működéssel reagál (overhead). Elvárható, hogy ezt fokozatosan tegye (ne omoljon össze).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kölcsönös kizárás====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Annak biztosítása, hogy a közös erőforrást egy időben csak annyi magában szekvenciális feladat használja, amely mellett a helyes működése garantálható.&lt;br /&gt;
A kölcsönös kizárást meg kell oldanunk a programban. Többnyire a használt erőforrást lock-oljuk (elzárjuk): nem engedjük hozzáférni a többi részfeladatot.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kritikus szakasz: Mit jelent a kritikus szakasz?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A magában szekvenciális feladatok azon kódrészletei, amely során a kölcsönös kizárást egy bizonyos közös erőforrásra biztosítjuk. A kritikus szakasz a kérdéses közös erőforráshoz tartozik. A kritikus szakaszt a hozzá tartozó erőforrásra atomi műveletként (nem megszakítható módon) kell végrehajtanunk.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Monitor: Mi a monitor alkalmazásának lényege? (Kölcsönös kizárás)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A lockolás nem szétszórva történik a programban, hanem egyetlen, a közös erőforráshoz szorosan tartozó programrészletben.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prioritás öröklés: Mi a prioritás öröklés (Priority Inheritance, Pl) protokoll lényege? (prioritás inverzió témakör)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Az alacsony prioritású feladat megörökli az általa kölcsönös kizárással feltartott feladat prioritását a kritikus szakaszából való kilépéséig. Csak részben oldja meg a prioritás inverzió problémáját.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Test-and-set: Hogyan lehet Test_and_Set utasítással kritikus szakaszba lépést (entry) és kilépés (exit) megvalósítani?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Belépésnél csökkentjük a value értékét ezzel jelezve hogy használni akarjuk a kritikus szakaszt&lt;br /&gt;
* Kilépésnél növeljük a value értékét&lt;br /&gt;
Egy változót kijelölünk &amp;quot;lock object&amp;quot;-nek; ha ennek a tartalma 0, nincs senki a kritikus szakaszban. A kritikus szakasz elején egy ciklusban test-and-set-et hajtunk végre rá (az utasítást a ciklus feltételébe téve); ha valaki van a szakaszban már, a ciklusban fogunk keringeni, amíg ki nem lép belőle a másik. Amikor kilépett, a test-and-set következő végrehajtása beállítja a változót, és továbbengedi az egyik várakozó ciklust. A szakaszból kilépéskor pedig simán (nem test-and-set-tel) 0-ba állítjuk.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Test-and-set: Hogyan működik a test_and_set?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Visszaadja egy bit értékét, és ha 0 volt, 1-re állítja. Mindezt oszthatatlanul, vagyis ha 0 volt ott, és többen egyszerre hívtak rá test-and-set-et, akkor az egyiké teljesen lefut, 1-be állítja és nullát ad vissza, mielőtt a többi elkezdene futni (így ők mind 1-et fognak visszaadni)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Újrahívhatóság: Mit jelent az újrahívhatóság (reentrancy) fogalma?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A közös erőforrás problémájának egyfajta kiterjesztett esete egy függvényen/objektumon belül, mely akkor léphet fel, amennyiben ezt a függvényt/metódust egyszerre többen is meghívhatják. Előfordulhat akkor, ha ugyanazt a függvényt hívjuk egy taszkból és egy megszakítás-rutinból is, vagy ha preemptív ütemezés esetén ugyanazt a függvényt hívjuk két taszkból is.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Holtpont===&lt;br /&gt;
&lt;br /&gt;
====Definíció: Adja meg a holtpont definícióját!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Egy rendszer folyamatainak egy H halmaza holtponton van, ha a H halmazba tartozó valamennyi folyamat olyan eseményre vár, amelyet csak egy másik, H halmazba tartozó folyamat tudna előidézni. Másként: A közös erőforrások hibás beállítása vagy használata miatt a rendszerben a részfeladatok egymásra várnak &amp;amp;#187; nincs futásra kész folyamat; &amp;amp;#187; nem jöhet létre belső esemény; &amp;amp;#187; A rendszer nem tud előrelépni.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Foglalva várakozás: Holtpont megelőzése (prevention) esetén milyen módszerrel lehet a foglalva várakozás előfordulását kizárni?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Az erőforrást birtokló feladat kér újabb erőforrást.&lt;br /&gt;
* Minden szükséges erőforrást egyben kell lefoglalni, egyetlen rendszerhívással.&lt;br /&gt;
* Alkalmazástól függ a használhatósága.&lt;br /&gt;
* Erőforrás-kihasználás romlik.&lt;br /&gt;
*  A foglalva várakozás elkerülhető, ha minden folyamat betartja azt a szabályt, hogy az egyidejűleg szükséges valamennyi erőforrását egyetlen rendszerhívással kéri el. A szabály betartásával megelőzhető a holtpont, de ára az erőforrás-kihasználás jelentős romlása.&lt;br /&gt;
*  Ha a folyamatokat kötelezzük arra, hogy minden erőforrásukat egyszerre kérjék el. Ha meg akarjuk engedni a rákérést, akkor menthető állapotú erőforrások esetén megtehetjük, hogy a várakozó folyamatoktól elvesszük az erőforrásaikat.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kezelése: Az operációs rendszer milyen általános eljárásokat használhat a holtpont kezelésére?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* strucc algoritmus (nem vesz róla tudomást)&lt;br /&gt;
* holtpont feloldása - melyik holtpontban érintett folyamatot számoljuk fel?&lt;br /&gt;
* menthető állapotú erőforrások elvétele,&lt;br /&gt;
* minél kevesebb folyamat felszámolása,&lt;br /&gt;
* folyamatok prioritása,&lt;br /&gt;
* már elvégzett munka,&lt;br /&gt;
* folyamatok visszaállíthatóságának biztosítása&lt;br /&gt;
* holtpont megelőzése&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kialakulás szükséges feltételei: Sorolja fel a holtpont kialakulásának szükséges feltételeit!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Kölcsönös kizárás: Vannak olyan erőforrások a rendszerben, melyeket a folyamatok csak kizárólagosan használhatnak.&lt;br /&gt;
* Foglalva várakozás: legyen olyan folyamat mely lefoglalva tart erőforrásokat, miközben más erőforrásokra várakozik.&lt;br /&gt;
* Nincs erőszakos erőforrás-elvétel: a folyamatok addig birtokolják az erőforrást, míg saját jószántukból fel nem szabadítják azokat.&lt;br /&gt;
* Körkörös várakozás: Létezik a rendszerben egy olyan folyamatsorozat, melyben minden folyamat az utána következő folyamat által foglalt erőforrásra vár, a sorozat utolsó tagja pedig a sorozat első tagjára.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Megelőzés, elkerülés: Mi a különbség a holtpont megelőzése (prevention) és holtpont elkerülése (avoidance) között?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* megelőzése: olyan rendszert tervezünk, ahol nem teljesülnek a holtpont feltételei, így elvileg sem lehet holtpont.&lt;br /&gt;
* elkerülése (pl. bankár algoritmus): A rendszer minden erőforrásigény kielégítése előtt mérlegeli, hogy nem vezet-e holtpontveszélyre a kérés teljesítése, más szóval fennmarad-e a biztonságos állapot.&lt;br /&gt;
&lt;br /&gt;
* ( Kölcsönös kizárás minimálisra csökkentése: lehetőleg többpéldányos erőforrásokat alkalmazunk, ahol ez nem lehetséges, ott a hozzáférést megpróbáljuk oszthatatlan műveletté tenni.&lt;br /&gt;
* Foglalva várakoztatás megszüntetése: Ha minden folyamat betartja a szabályt, miszerint az egyidejűleg szükséges valamennyi erőforrását egyetlen rendszerhívással kéri el, akkor elkerülhető a foglalva várakoztatás. Ennek ára van: az erőforrás-kihasználtság romlása.&lt;br /&gt;
* Nincs erőszakos erőforrás-elvétel kiküszöbölése: Ha menthető állapotú erőforrásaink vannak, akkor megtehetjük, hogy elvesszük egy adott folyamat erőforrását és egy másiknak adjuk, majd annak lefutása után visszaadjuk a régi állapotában az erőforrást az első folyamatnak.&lt;br /&gt;
* Körkörös várakozás megakadályozása: A folyamatok megegyeznek az erőforrások sorszámozásában, minden folyamat csak nagyobb sorszámú erőforrást igényelhet azoknál az erőforrásoknál melyeket birtokol. Ekkor biztosan nem alakulhat ki kör.)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Fájlrendszerek===&lt;br /&gt;
&lt;br /&gt;
====Fájl: Mi a fájl az operációs rendszer szempontjából? (háttértár-kezelés)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* a fájl a permanens táron az adattárolás logikai egysége, az operációs rendszer feladata a logikai egységek (fájlok) leképzése valódi fizikai egységekre, ez az OS-ben egy többszintü réteges rendszer&lt;br /&gt;
* Absztrakt adattípus (objektum, fájl mutató).&lt;br /&gt;
* Adat, név (name - elnev. konvenciók), típus (type - kezelés módja) tulajdonságok (attributes). Tulajdonosok, jogosultságok. Hozzáférési időpontok&lt;br /&gt;
* Kölcsönös kizárás (file locking)&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Háttértáron lévő lapok: Milyen részidőkből áll össze a háttértáron levő lapokhoz való tényleges hozzáférési idő? Kis vagy nagy lapok használata esetén kapunk &amp;quot;jobb&amp;quot; byte hozzáférést?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* adatátviteli sebesség + fejmozgás sebessége + lemezek forgási sebessége&lt;br /&gt;
* nagy lapok esetén ( mert így közvetlenül egymás után helyezkednek el az összetartőző adatok így nem kell a fejnek &amp;quot;ugrálnia&amp;quot; )&lt;br /&gt;
* Először a laptáblából kell kikeresni a lap bejegyzését, és konstatálni, hogy nincs hozzá fizikai lap rendelve. Majd, ki kell választani egy szabad fizikai lapot (ha nincs, ki kell vinni egyet háttértárra), a szabad helyre beolvasni a lapot, majd újraindítani a laphibát okozó utasítást. Ezek közül a háttértárról olvasás nagyságrendekkel lassabb a többinél, ezért lényegében ez határozza meg a teljes hozzáférési időt.&lt;br /&gt;
* Ha csak a háttértáron lévő lapokat nézzük, akkor, mivel kisebb lapot gyorsabban lehet beolvasni, ezért kisebb lapoknál gyorsabb a hozzáférés. Ha egy folyamat teljes munkahalmazát nézzük, akkor viszont a kisebb lapok több adminisztrációs költséggel járnak (gyakrabban kell háttértárhoz fordulni), és átlagban a nagyobb lapok adnak jobb eredményt.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Indexelt tárolás: Sorolja fel az indexelt tárolás (indexed allocation) előnyeit és hátrányait! (Fájlrendszer-leképzés)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Szekvenciális és indexelt elérésre is alkalmas.&lt;br /&gt;
* Sérülékeny (az index blokkok sérülése a fájlt elérhetetlenné teszi).&lt;br /&gt;
* Az index blokkokat viszont könnyű többszörözni (replikálni).&lt;br /&gt;
* Sok fejmozgást okoz (seek), a blokkok el vannak szórva a diszken.&lt;br /&gt;
* Itt is lehet a láncolt listás töredezettség mentesítéshez hasonló algoritmusokat használni a fejmozgás minimalizálására.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====RAID: Sorolja fel a RAID technika leglényegesebb elemeit!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Használjunk több merevlemezt egyszerre.&lt;br /&gt;
* Több redundáns alkalmazása növeli a megbízhatóságot.&lt;br /&gt;
* Több párhuzamos használata növeli a sebességet.&lt;br /&gt;
* Hozzunk létre egy virtuális diszket a fizikai diszkekből.&lt;br /&gt;
* Redundant Array of Inexpensive Disks: több lemez összekapcsolása.&lt;br /&gt;
* A RAID-0 esetében két lemezre vannak szétosztva az adatok, így egyetlen fájlt kétszer akkora sebességgel lehet írni (a két felét parhuzamosan).&lt;br /&gt;
* A RAID-1 esetében ugyanazt az adatot tároljuk le a két lemezen, így gyorsabb nem lesz, de az egyik lemez hibája esetén visszanyerhetőek az adatok.&lt;br /&gt;
* Megjegyzés: ez csak példa, több lemezzel is lehet csinálni, a sebesség/tárhely/hibatűrés között különböző kompromisszumokat elérve.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====RAID0 vs. RAID1: Hasonlítsa össze két azonos diszkből álló RAID0 és RAID1 tömb tulajdonságait! Hogyan alakul a hozzáférési idő, az adatátviteli sebesség és a megbízhatóság egyetlen diszkhez képest a két esetben?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
RAID 0-1 szabványok általában SW implementációval és kevés (2db) diszkkel&lt;br /&gt;
* RAID 0 (striped disks):&lt;br /&gt;
** Több diszk párhuzamos használata;&lt;br /&gt;
** file részei N diszkre kerülnek;&lt;br /&gt;
** Az egyes részek egymástól függetlenül elérhetők&lt;br /&gt;
** A diszkek tárolókapacitása összeadódik&lt;br /&gt;
** N azonos diszk esetén a RAID 0 virtuális diszk olvasásai és írási adatátviteli sebessége maximum N-szeres közelébe nő.&lt;br /&gt;
** A hozzáférési idő közel eléri egy diszk hozzáférési idejét.&lt;br /&gt;
** Bármelyik diszk meghibásodása esetén az adat elveszik&lt;br /&gt;
* RAID 1 (mirroring):&lt;br /&gt;
** Több diszk redundáns használata.&lt;br /&gt;
** A file minden része minden (N) diszkre kikerül.&lt;br /&gt;
** Azonos diszkeket feltételezve a tárolóterület egy diszk tárolóterületével azonos.&lt;br /&gt;
** Az adatátviteli sebesség lassabb, mint egy diszk sebessége.&lt;br /&gt;
** A hozzáférési idő nő.&lt;br /&gt;
** Speciális esetben az olvasási sebesség N-szeresre nőhet, feltételezve a diszk meghibásodásának más módon történő észlelését (nem kell az azonosságot ellenőrizni többségi szavazással).&lt;br /&gt;
** Egy működőképes diszk esetén az adat elérhető.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====RAID5: Adja meg az M (M pozitív egész szám) diszket tartalmazó RAID5 tömb tulajdonságait! (hibatűrés és sebesség)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* RAID 5 (block interleaved distributed parity).&lt;br /&gt;
* Több diszk redundáns és párhuzamos használata&lt;br /&gt;
* Adat és paritás elosztása N+1 diszkre.&lt;br /&gt;
** A sebesség tekintetében közel áll az N diszket használó RAID 0-hoz (HW támogatás esetén).&lt;br /&gt;
** 1 diszk meghibásodása esetén az adat elérhető.&lt;br /&gt;
** 2 vagy több diszk meghibásodása esetén az adat elveszik.&lt;br /&gt;
** Az adat nem feltétlenül állítható helyre. (Csendes/néma hibák (silent error). A 2. meghibásodás észlelése a tömb újraépítése során)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====RAID5: Miért előnyös és miért hátrányos RAID5 használata?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* + N azonos diszk esetén az olvasási és írási adatátviteli sebessége maximum N-szeres közelébe nő.&lt;br /&gt;
* + 1 diszk meghibásodása esetén az adat elérhető.&lt;br /&gt;
* - 2 vagy több diszk meghibásodása esetén az adat elveszik.&lt;br /&gt;
* - Az adat nem feltétlenül állítható helyre. (Csendes/néma hibák (silent error).&lt;br /&gt;
* -Bonyolultabb, mint a Raid 0/1, ezért hardveresen valósítják meg, ami viszont drága&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====RAID6: Adja meg a 8 darab 1 Tbyte-os HDD-ből álló RAID6 tömb tárolókapacitását!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
6 TB. (Adat és paritás elosztása N+2 diszkre. A kapacitása N diszk tároló kapacitásával egyenlő.)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====RAID6: N db azonos diszkből álló RAID6 tömb esetén a tömb tárolókapacitása és sebessége (nagy fájlok írása/olvasása során elérhető adatátviteli sebesség) hogyan viszonyul az egyetlen diszk azonos adataihoz?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* RAID 6 (block interleaved dual distributed parity)&lt;br /&gt;
* Több diszk redundáns és párhuzamos használata.&lt;br /&gt;
* Adat és paritás elosztása N+2 diszkre.&lt;br /&gt;
** A sebesség tekintetében közel áll az N diszket használó RAID 0-hoz (HW támogatás esetén).&lt;br /&gt;
** 2 diszk meghibásodása esetén az adat elérhető.&lt;br /&gt;
** 3 vagy több diszk meghibásodása esetén az adat elveszik.&lt;br /&gt;
** Az adat nagyobb valószínűséggel állítható helyre a RAID 5-höz képest&lt;br /&gt;
* Minimum négy lemezre van szükség a RAID 6 működéséhez. The capacity of the array is (N-2) times the size of the smallest member disk for the array of N disks.&lt;br /&gt;
* Az olvasási sebesség (N-2)-szerese egy lemez olvasási sebességének - two disks in the row hold a parity which is useless to read. Such read speed values are roughly the same as in RAID 5.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Tárolás egysége: Mi a logikai és mi a fizikai tárolás egysége a permanens táron?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* logikai egység: fájl (file)&lt;br /&gt;
* fizikai egység: adatblokkok (cilinder, sáv és szektor együtt azonosítja az írható/olvasható adatblokkot; OS képzi le a logikaiakat fizikaiakra)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Folyamatok, szálak===&lt;br /&gt;
&lt;br /&gt;
====Bernstein feltétele: Mikor lehet két tevékenységet (utasítássorozatot) párhuzamosan végrehajtani (Bernstein)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Bernstein feltétele:&lt;br /&gt;
* Legyen &amp;lt;math&amp;gt; P_i &amp;lt;/math&amp;gt; és &amp;lt;math&amp;gt; P_j &amp;lt;/math&amp;gt; két darabja egy programnak.&lt;br /&gt;
* A &amp;lt;math&amp;gt; P_i &amp;lt;/math&amp;gt; összes bemeneti változója &amp;lt;math&amp;gt; I_i &amp;lt;/math&amp;gt;, és az összes kimeneti változója &amp;lt;math&amp;gt; O_i &amp;lt;/math&amp;gt;, ugyanez &amp;lt;math&amp;gt; P_j &amp;lt;/math&amp;gt; -re &amp;lt;math&amp;gt; I_j &amp;lt;/math&amp;gt; és &amp;lt;math&amp;gt; O_j &amp;lt;/math&amp;gt;.&lt;br /&gt;
* A két program párhuzamosan végrehajtható (vagyis független), ha: &amp;lt;math&amp;gt; I_j \bigcap O_i = 0 &amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt; I_i \bigcap O_j = 0 &amp;lt;/math&amp;gt; és &amp;lt;math&amp;gt; O_i \bigcap O_j = 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Feladatok (task) együttműködése: Hasonlítsa össze a közös memórián illetve az üzenetváltáson alapuló folyamatok közti együttműködést!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Közös memórián keresztül történő adatcsere esetén az együttműködő folyamatok mindegyike saját címtartományában lát egy közös memóriát. A közös memória elérését valamilyen adatátviteli rendszer teszi lehetővé. Üzenetváltásos adatcsere esetén a folyamatoknak nincs közös memóriája. Az adatátviteli rendszer most a logikai processzorokat kapcsolja össze. Rajta keresztül a folyamatok üzeneteket tudnak küldeni, illetve fogadni. Az üzenetküldésre a folyamatok logikai processzorainak utasításkészletében megfelelő utasítások állnak rendelkezésre. Ezek a Küld (Send) és a Fogad (Receive) műveletek.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Folyamat: Definiálja a &amp;quot;folyamat&amp;quot; (process) fogalmát!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Egy program futás alatt álló példánya a folyamat.&lt;br /&gt;
* saját kód, adat, halom, verem&lt;br /&gt;
* A folyamatok nem férnek hozzá egymás lapjaihoz (védettek más folyamatoktól)&lt;br /&gt;
&lt;br /&gt;
* végrehajtás alatt álló program (program maga a végrehajtható kód), amely folyamat virtuális címterébe van leképezve&lt;br /&gt;
* folyamat egy szála az, ami éppen fut egy CPU-n, és nem maga a folyamat&lt;br /&gt;
* minden folyamathoz tartozik legalább egy szál, ami elinduláskor elkezdi futtatni a program main metódusát&lt;br /&gt;
* privát virtuális címtér (virtuális memóriacímek készlete, amiket a folyamat használhat)&lt;br /&gt;
* tartozik hozzá egy egyedi folyamatazonosító (process ID)&lt;br /&gt;
* rendszererőforrások listája, melyekhez a folyamat összes szála hozzáfér&lt;br /&gt;
* a folyamat virtuálisan összefüggő memóriát lát (virtuális memória) (valójában az összefüggő memóriaterület ritka)&lt;br /&gt;
* háttértárolóra is kiírható (swapping)&lt;br /&gt;
* A folyamat által látott logikai címtartomány, és a ténylegesen használt fizikai címtartományok teljesen elkülönülnek&lt;br /&gt;
* Folyamatok megoszthatnak memóriaterületeket olvasás- vagy akár írás- és olvasás-hozzáféréssel (Az ilyen memória területek több folyamat virtuális címtartományába vannak belapozva)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Folyamatok közötti kommunikáció: Soroljon fel legalább 4 IPC (Inter-process communication) megoldást!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Jelzés&#039;&#039;&#039;: rendszerüzenetek küldése és fogadása a folyamatok között, jellemzően utasítások továbbítása egyik folyamattól a másiknak&lt;br /&gt;
* &#039;&#039;&#039;Üzenetsor&#039;&#039;&#039;: aszinkron kommunikációs forma, mely során a küldő és fogadó közvetlen interakciója nem szükséges, az üzenetek addig tárolódnak a sorban amíg a címzett fel nem dolgozza azokat vagy a sor meg nem telik&lt;br /&gt;
* &#039;&#039;&#039;Szemafor&#039;&#039;&#039;: absztrakt struktúra amely a folyamatok közötti közös erőforrásokért való hozzáférést vezérli&lt;br /&gt;
* &#039;&#039;&#039;Közös memória&#039;&#039;&#039;: ugyan az a memóriaterület kerül kiosztásra több különböző folyamatnak, írási és olvasási joggal egyaránt&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Forrás&#039;&#039;: http://en.wikipedia.org/wiki/Inter-process_communication&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Folyamatok vs. szálak: Mi az eltérés a folyamatok illetve a szálak között, és milyen előnnyel jár a szálak alkalmazása?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A szálak lényegében párhuzamos végrehajtású, közös memóriát használó programrészek a folyamaton belül (egy program végrehajtása több szálon futhat). A szálaknak saját logikai processzoruk van, azonban memóriáik nincsenek elkülönítve, közös logikai memóriát használnak, azaz a kódon és a változókon osztoznak. Emiatt az operációs rendszer lényegesen gyorsabban tud végrehajtani egy átkapcsolást a szálak között, mint a folyamatok között.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Java-szálak: Milyen módokon képezheti le a JAVA virtuális gép a JAVA natív szálakat a hoszt operációs rendszer folyamataira/szálaira?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A JAVA virtuális gép egy folyamat a hoszt operációs rendszeren belül. A JAVA szálak feleltethetők meg a hoszt operációs rendszer szálainak, ez többnyire one-to-one (JAVA szál egyben OS szál is) napjainkban. (https://wiki.sch.bme.hu/pub/Infoalap/OpRe/20100507_ZH_megoldas.pdf)  &lt;br /&gt;
Kovácsházy Tamás válasza:&lt;br /&gt;
7. fólia, 11. fólia:&lt;br /&gt;
JAVA (VM a folyamat, VM-en belül szál):&lt;br /&gt;
* Thread osztályból származtatva&lt;br /&gt;
* Runnable interface megvalósítása&lt;br /&gt;
* A JAVA platform-specifikusan valósítja meg a szálat:&lt;br /&gt;
* Natív OS specifikus szál (one-to-one, tipikus).&lt;br /&gt;
* JAVA specifikus szálak (many-to-one) egy natív OS szálra vagy folyamatra leképezve.&lt;br /&gt;
* many-to-many leképzés (erőforrás szempontok miatt, egyre ritkább).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====PRAM: Mi történik a PRAM modellben írás-írás ütközés esetén?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Az írás-írás ütközésekor valamelyik művelet hatása érvényesül, a két beírni szándékozott érték valamelyike írja felül a rekesz tartalmát (versenyhelyzet), harmadik érték nem alakulhat ki.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Processzor-affinitás: Mit állítunk be, ha egy szálnak beállítjuk a processzor affinitását, és miért lehet arra szükség?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* processzoraffinitás: minden szál rendelkezik egy maszkkal, amely kijelöli, hogy a szál mely processzorokon képes futni&lt;br /&gt;
* szerepe: ez alapján dől el, hogy a szál mely processzoron fog futni&lt;br /&gt;
* ütemezésnél: multiprocesszoros esetben a processzor kiválasztása a processzor-affinitás alapján történik&lt;br /&gt;
* A feladat más processzorra, vagy processzormagra kerülése csökkenti a végrehajtás sebességét (pl. cache-elésnél) &amp;gt;&amp;gt; Cél: A feladatot ugyanazon a végrehajtó egységen tartani - Laza vagy kemény processzor affinitás (soft or hard processor affinity).&lt;br /&gt;
** Laza: Nincs garancia, de törekszik rá az OS (többnyire alapeset)&lt;br /&gt;
** Kemény: Biztosan ugyanazon a CPU-n marad (rendszerhívással)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Szál: Definiálja a &amp;quot;szál&amp;quot; (thread) fogalmát!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* párhuzamos végrehajtású, közös memóriát használó programrészek a folyamaton belül (egy program végrehajtása több szálon futhat). A szálaknak saját logikai processzoruk és saját vermük van, azonban memóriáik nincsenek elkülönítve, közös logikai memóriát használnak, azaz a kódon és a változókon osztoznak, vagyis egymás adatait olvashatják és írhatják. Emiatt az operációs rendszer lényegesen gyorsabban tud végrehajtani egy átkapcsolást a szálak között, mint a folyamatok között.&lt;br /&gt;
* A folyamat egy szála az, ami éppen fut egy CPU-n (ami ütemezésre kerül), és nem maga a folyamat.&lt;br /&gt;
* Minden folyamathoz tartozik legalább egy szál, ami elinduláskor elkezdi futtatni a program main metódusát (szál nélkül a folyamat programja nem futhat).&lt;br /&gt;
* szálak még véletlenül sem hivatkozhatnak más folyamatok címterére, hacsak a másik folyamat nem teszi elérhetővé privát virtuális címterének egy részét megosztott memóriaszakaszként (file mapping object a Windows API-ban), vagy - Windows-nál - hacsak egyik folyamatnak nincs joga megnyitni más folyamatot, hogy olyan folyamatok közti memóriafüggvényeket használjon, mint a ReadProcessMemory vagy WriteProcessMemory&lt;br /&gt;
* A szál önmagában szekvenciális kód, a végrehajtás legkisebb egysége. Egy adott folyamat szálainak közös az adat- és kódszegmensük, a halmuk (heap), és az egyéb erőforrásokat is közösen használják, de saját virtuális CPU-t látnak, és saját veremmel rendelkeznek.&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Védelmi tartományok: Mi a különbség a statikus és a dinamikus védelmi tartományok között?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
	 Statikus védelmi tartományok esetén az egy folyamathoz tartozó védelmi tartomány a folyamat végrehajtása során nem változik, míg dinamikus védelmi tartományok esetén igen.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Virtuális gép: Mi a virtuális gép koncepció lényege?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* A programok elől az operációs rendszer elfedi a hardver implementációs részleteit, és kibővíti azt plusz funkciókkal.&lt;br /&gt;
* Az op.rendszer egy olyan réteget képez a hardver fölött, mely elrejti annak körülményességét és bonyolultságát a programozó elől és kibővíti a hardver szolgáltatását. A felhasználó így egy sokkal kellemesebb virtuális gépet (virtual machine, extended machine) lát.&lt;br /&gt;
* Az operációs rendszer egy kényelmesen kezelhető virtuális gépet jelenít meg a felhasználói és a programozói felületen.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Jogosultságok===&lt;br /&gt;
&lt;br /&gt;
====Belső biztonság: Mi a belső biztonság?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Belső biztonság = védelem. Védelemnek nevezzük az eljárásoknak és módszereknek azon rendszerét, amely lehetőséget teremt a számítógép erőforrásainak programok, folyamatok illetve felhasználók által történő elérésének szabályozására.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Engedélyezés: Definiálja az engedélyezés (authorization) fogalmát!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* jogosultság ellenőrzése: milyen adatokat és szolgáltatásokat érhet el ez a személy?&lt;br /&gt;
* Hozzáférés-szabályozási listák (Access Control List, ACL)&lt;br /&gt;
* Alapelv: mindig csoportnak osztunk jogot&lt;br /&gt;
* Pl. biztonsági házirend, fájl ACL&lt;br /&gt;
&lt;br /&gt;
TODO!!!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Jogosultság + engedélyezési sémák: Mi a jogosultság fogalma, mi a kapcsolata az engedélyezési sémák többi alapfogalmával?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* A jogosultság egy reláció a szereplők és védett objektumok között.&lt;br /&gt;
* engedélyezés ált. sémáinál: szereplő&amp;gt;&amp;gt;&amp;gt;szereplőt leíró adatszerkezet&amp;gt;&amp;gt;&amp;gt;biztonsági szabályzat (policy), JOGOSULTSÁG&amp;gt;&amp;gt;&amp;gt;védett objektumok TODO&lt;br /&gt;
* Jogosultságkezelés alapjai: A rendszer működése során&lt;br /&gt;
** A szereplők műveleteket kezdeményeznek&lt;br /&gt;
** A műveletek kontextusa tartalmazza a szereplő azonosítóját, a célobjektumot és az elvégzendő művelet fajtáját&lt;br /&gt;
** A jogosultsági döntő komponens kiértékeli kontextust és engedélyezi vagy megtiltja a műveletet&lt;br /&gt;
** A jogosultsági végrehajtó komponens biztosítja, hogy a döntő által hozott döntés érvényre jusson&lt;br /&gt;
* NT: SMR (Secure Reference Monitor) - objektumok elérési jogosultságainak ellenőrzése&lt;br /&gt;
* NT: Az LSA a SAM segítségével azonosítja a felhasználót és jogosultságait. Ha a felhasználó jogosult bejelentkezni, a logon elindítja a számára kijelölt shellt&lt;br /&gt;
* UNIX: hozzáférési jogosultságok (owner, group, others, read, write, execute)&lt;br /&gt;
* Engedélyezés általános sémái: &amp;gt;&amp;gt;Szerep alapú hozzáférés-vezérlés &amp;gt;&amp;gt;Hozzáférési jogosultság listák&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Külső biztonság: Mit takar a külső biztonság fogalma?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Annak mértéke, hogy mennyire lehetünk biztosak a számítógépes rendszer, illetve a rendszerben tárolt adatok sérthetetlenségében.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Művelet kontextusa: Engedélyezési rendszerekben mit tartalmaz egy művelet kontextusa? (Felhasználó- és jogosultságkezelés)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A műveletek kontextusa tartalmazza a szereplő azonosítóját, a célobjektumot és az elvégzendő művelet fajtáját.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hibakeresés===&lt;br /&gt;
&lt;br /&gt;
====DTrace: Mi a Solaris DTrace megoldás célja?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
dinamikus hibakereső rendszer, nyomkövető eszköz, amivel a rendszer és a programok működését futási időben lehet megfigyelni.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Memória===&lt;br /&gt;
&lt;br /&gt;
====32 bit: 32 bites kliens Windows operációs rendszer maximum mennyi fizikai memóriát kezelhet, és miért?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Legfeljebb 4 GB-ot (bár néha kevesebbet lát az OS, mert a memóriatartomány felső részére I/O eszközöket szoktak berakni, ld. pl. videókártya-memória...): &#039;&#039;&amp;quot;kliens Windowsok nem használják a gépben lévő PAE támogatást, mert az a tapasztalat, hogy a kliensekben lévő eszközök meghajtói nem kezelik le rendesen a 4 GB-nál több fizikai memóriát&amp;quot;&#039;&#039;. &lt;br /&gt;
(https://wiki.sch.bme.hu/pub/Infoalap/OpRe/02-opre-windows-memoria.pptx)&lt;br /&gt;
(nem támogatják a PAE-t eleve, csak patch-csel)&lt;br /&gt;
(_&amp;quot;However, &amp;quot;client&amp;quot; versions of 32-bit Windows (Windows XP SP1 and later, Windows Vista, Windows 7) limit physical address space to the first 4 GB for driver compatibility and licensing reasons, even though these versions do run in PAE mode if NX support is enabled.&amp;quot;_ - http://en.wikipedia.org/wiki/Physical_Address_Extension)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====32 bit: 32 bites szerver Windows képes-e 4 GB-nál több fizikai memória kezelésére? Válaszát indokolja!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Igen, PAE (Physical Address Extension) támogatás segítségével (ezzel lehet 32 bites címbuszú CPU-val is 64 GB memóriát kezelni a maximális 4 GB helyett).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====32 bit: 32 bites Windows használata esetén egy felhasználói folyamat maximum mekkora virtuális címteret használhat?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Alapból 2GB felhasználói módú címterületet használhat, ez a /3GB kapcsolóval 3 GB felhasználói címterületre bővíthető.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====32 bit: 32 bites Windows szerver operációs rendszerek képesek-e 4 GB-nál több fizikai memória kezelésére? Indokolja válaszát!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Igen, PAE (Physical Address Extension) támogatás segítségével.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====32 bit: 32 bites x86-os (Windows) esetén mekkora a felhasználói és a rendszer mód címtartomány mérete?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Alapból 2GB felhasználói módú és 2GB kernel címterület van, ezt a /3GB kapcsolóval 3GB felhasználói és 1GB kernelre lehet módosítani.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Bélády-anomália: Mit nevezünk Bélády-anomáliának?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
	 FIFO algoritmusnál egyes esetekben, ha a munkahalmaz méretét növeljük, a várakozásokkal ellentétben a laphibák száma is nő.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Címfordítás: Hogyan történnek a címfordítások, ha az OS szegmens- és lapszervezést is használ a memóriánál?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
CPU --&amp;gt; Segmentation unit --&amp;gt; Paging unit --&amp;gt; Physical memory&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Címfordítás: Milyen címtranszformációk történnek együttes szegmens- és lapszervezésű memória használata során?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* CPU &amp;gt;&amp;gt;&amp;gt;[Logical Address]&amp;gt;&amp;gt;&amp;gt; &#039;&#039;&#039;Segmentation Unit&#039;&#039;&#039; &amp;gt;&amp;gt;&amp;gt;[Linear Address]&amp;gt;&amp;gt;&amp;gt; &#039;&#039;&#039;Paging Unit&#039;&#039;&#039; &amp;gt;&amp;gt;&amp;gt;[Physical Address]&amp;gt;&amp;gt;&amp;gt; Physical Memory (http://portal.mit.bme.hu/?l=oktatas%2Ftargyak%2Fvimia219%2Fjegyzet%2F2011%2Fslides_17_memory.pdf)&lt;br /&gt;
* https://wiki.sch.bme.hu/pub/Infoalap/OpRe/oprewiki1.pdf, 48. oldaltól.&lt;br /&gt;
* Változó méretű szegmensek fix méretű lapokat tartalmaznak. Kicsi mind a belső, mind a külső tördelődés. A cím felépítése: (szegmens szám, lapszám, lapon belüli eltolás)&lt;br /&gt;
* Hasonlít a szegmensszervezéshez és a kétszintű lapszervezéshez: A memóriában szegmensek vannak ugyan, de ezek lapokból épülnek föl. Van szegmenstábla, és minden bejegyzéséhez tartozik egy laptábla is. Külső töredeződés nincs, belső töredeződés minimális (szegmensenként átlag fél lap); ez a kombinált módszer egyesíti a két módszer előnyeit&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Lapszervezés, keret tábla: Lapszervezés esetén mit tartunk nyilván a keret táblában (frame table)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Az üres kereteket (frames).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Logikai vs. fizikai memória: Mi a különbség a logikai és a fizikai memória között?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A logikai memória a fizikai tár leképezve, ráadásul a leképezés a végrehajtás során változhat is.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====MMU: Mi a processzor Memory Management Unit (MMU) komponensének a feladata?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
	 * Speciális HW a CPU-ban&lt;br /&gt;
* Memória állapotának nyilvántartása&lt;br /&gt;
** Tulajdonos folyamat azonosítója&lt;br /&gt;
** Hozzáférési jogosultságok (ACL)&lt;br /&gt;
** cache-elhetőség, ha van cache (pl. DMA)&lt;br /&gt;
* Virtuális memória leképzése fizikai memóriára&lt;br /&gt;
** Pl. Translation Lookaside Buffer (TLB)&lt;br /&gt;
** Kontextusváltásnál ezt is kezelni kell (ha van)&lt;br /&gt;
** Pagefile vagy SWAP (HDD)&lt;br /&gt;
* Memóriavédelem&lt;br /&gt;
** Tiltott memória hozzáférés megakadályozása vagy legalább jelzése (ACL alapján)&lt;br /&gt;
** General Protection Fault (GPF) a Windows-ban&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Modified/dirty bit, referenced/used bit: Mi a modified/dirty bit és a referenced/used bit szerepe? (Virtuális memóriakezelés)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* laptáblában:&lt;br /&gt;
* Módosítás nyilvántartása (modified/dirty bit): minden memórialaphoz tartozik egy HW által kezelt bit (pl. a laptáblában) - betöltéskor törlik, módosításkor beállítják. Ha a dirty bit 1, akkor erre a lapra történt írási művelet, mióta a ﬁzikai memóriába került. Ezt a bitet a CPU tartja karban (automatikusan), ezzel az operációs rendszer munkáját segítve. 0 érték esetén a lapokat nem kell a diszkre kiírni, ha kiszorulnak a ﬁzikai memóriából (hiszen a tartalmuk a ﬁzikai memóriába helyezés óta változatlan, a diszk-en tárolt változat tehát továbbra is aktuális).&lt;br /&gt;
&lt;br /&gt;
* Hivatkozások nyilvántartása (referenced/used bit): Ha a refernced bit 1, akkor volt &amp;quot;mostanában&amp;quot; hivatkozás erre a lapra. Ezt is a CPU tartja karban. Ez a bit segít az operációs rendszernek, amikor el kell döntenie, hogy melyik lapot dobja ki a ﬁzikai memóriából, ha egy új lapnak nincs helye. A referenced=0 lapokból fog válogatni.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Page locking: Mit jelent és miért van szükség arra, hogy a virtuális tárkezelésnél egyes lapokat ideiglenesen a tárba lehessen &amp;quot;fagyasztani&amp;quot; (page locking)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Azt jelenti, hogy a lapcsere algoritmus nem lapozhatja ki a háttértárra az adott lapot. Ok: periféria-művelet van az adott lappal kapcsolatban.&lt;br /&gt;
* Azt jelenti, hogy bizonyos lapokat a memóriában tartunk, mert I/O műveletek hivatkozhatnak rá, és ilyenkor a memóriában kell lenniük, mert az I/O műveletek fizikai memóriacímeket használnak.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Referenced/used bit: Mi a referenced/used bit szerepe? (Virtuális memóriakezelés)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Bizonyos algoritmusok igénylik a lapra történő hivatkozások figyelését is, ami ugyancsak hardvertámogatással hatékony. A laptáblában erre a célra is fenntarthatunk egy bitet. Ezt a hivatkozott bitet (referenced bit, used bit, R bit) a címképző hardver állítja be minden esetben, amikor az adott lapon belüli címre történik hivatkozás. A bitet az operációs rendszer törli adott időnként, vagy eseményhez (például laphiba) kötötten.&lt;br /&gt;
* Hivatkozások nyilvántartása (referenced/used bit): OS adott időnként és/vagy adott eseményekre törli - használat esetén beállítják.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====TLB: Mi az a Translation Lookaside Buffer, fizikai címcsatolásnál mi a szerepe?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A virtuális címet fizikai címre a laptábla segítségével lehet fordítani; de ez lassú, plusz egy memória-hozzáférést jelent. Ezért a lapkezdőcímek egy részét egy asszociatív cache-ben eltárolják, ez a TLB. Címfordításkor párhuzamosan indul a keresés a laptáblában és a TLB-ben, ha az egyikben megtalálta, akkor kész.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====TLB: Mire szolgál a Translation Lookaside Buffer és mi a szerepe a fizikai cím kiszámításánál (virtuális címképzés)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A virtuális címet fizikai címre a laptábla segítségével lehet fordítani; de ez lassú, plusz egy memória-hozzáférést jelent. Ezért a lapkezdőcímek egy részét egy asszociatív cache-ben eltárolják, ez a TLB. Címfordításkor párhuzamosan indul a keresés a laptáblában és a TLB-ben, ha az egyikben megtalálta, akkor kész.&lt;br /&gt;
&lt;br /&gt;
(Szerintem előbb a TLB-ben keresi, aztán ha ott nincs, csak utána nézi a laptáblát.)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Tördelődés (külső vs. belső): Mi a különbség a külső és belső tördelődés között? (Memória foglalás)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
	A tördelődött memóriaterületet külső tördelődés esetén az operációs rendszer szabadon hagyja, míg belső tördelődés esetén pedig odaadja egy olyan folyamatnak, aminek nincs igazából rá szüksége.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Vergődés: Adja meg a vergődés (trashing) definícióját!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A gyakori laphibák okozta teljesítménycsökkenést vergődésnek (thrashing) nevezzük. Az ellene való védekezés a munkahalmaz méretének jó megválasztása. Célszerű egy folyamatnak annyi lapot adni, amennyi szükséges az egyensúlyhoz, azaz ahány lapra hivatkozik a laphiba kiszolgálás ideje alatt (ugyanakkor nem sokkal többet, mert ekkor leromlik a multiprogramozás foka).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Vergődés: Mi az a vergődés, és hogyan védekezzünk ellene?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Ha több memóriára lenne szüksége a folyamatoknak, mint amennyi rendelkezésre áll, ezért túl gyakran keletkezik laphiba, és a processzor idejének nagy része haszontalan lapcserékkel telik.&lt;br /&gt;
* Védekezni ellene például azzal lehet, ha a laphiba-gyakoriság függvényében az ütemező változtatja a multiprogramozás fokát: ha kevés a memória, folyamatokat függeszt fel, és swappel ki; ha van elég, akkor épp ellenkezőleg.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===uc/OS-II===&lt;br /&gt;
&lt;br /&gt;
====Prioritás: A uC/OS-II-ben hány taszk tartózkodhat egy prioritási szinten és miért?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
1, mert így gyorsan eldönthető, hogy melyik a legmagasabb prioritású, futásra kész taszk.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prioritás: Egy prioritási szinten hány szál futtatását teszi lehetővé a uC/OS-II, miért?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
1, mert így gyorsan eldönthető, hogy melyik a legmagasabb prioritású, futásra kész taszk. Egy taszk = egy szál.&lt;br /&gt;
&lt;br /&gt;
(Magyarázat: egy taszk = egy szál; lásd http://video.bme.hu/media/video/Operacios_Rendszerek_08ea_20110301.wmv, 01:09:18 környékén&lt;br /&gt;
Röviden: a beágyazott rendszerek, kis OS-ek esetén (uC/OS-II, FreeRTOS, stb.) lényegében csakis szálakban gondolkozunk. Nincs MMU, csak egyetlen összefüggő fizikai memória van, nincs virtuális memória koncepció, a processzoron futó teljes alkalmazás (az egyetlen alkalmazás) egy nagy folyamat - nincs más folyamat! Ezenbelül tudunk threadeket futtatni. Single Address Space.)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Ütemezés===&lt;br /&gt;
&lt;br /&gt;
====Átbocsátó képesség: Adja meg az átbocsátó képesség definícióját és mértékegységét!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
*  (throughput) Mértékegység: munka/s, vagy 1/s&lt;br /&gt;
* Adott időegység alatt elvégzett feladatok száma. &amp;lt;math&amp;gt;\frac{\sum \textrm{elvegzett munkak}}{\textrm{ido}}&amp;lt;/math&amp;gt;&lt;br /&gt;
* A rendszerfeladatokat nem számoljuk.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Hosszú távú ütemezés: Adja meg a hosszú távú ütemezés célját!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Tipikusan a BATCH rendszerekben van jelen, és uj jobok végrehajtasának megkezdéseről (új folyamatok indítasárol) dönt. Az elvégzesre váro munkák közül a választas szempontja, hogy a rendszerben a CPU-intenzív es I/O-intenzív folyamatok aránya optimális legyen (optimalis job-mix fenntartasa).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Hosszú távú ütemezés: Definiálja a hosszú távú ütemezés fogalmát!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A hosszútávú ütemező feladata az elindított feladatok rendszerbe, illetve a &amp;quot;futásra kész&amp;quot; várakozási sorba való beengedését szabályozni. Igyekszik a CPU-t és a perifériákat terhelő folyamatokat egyensúlyban tartani. Batch rendszerekre jellemző; a PC-k oprendszere általában azonnal indítja a folyamatokat, mikor azt a felhasználó kéri.&lt;br /&gt;
* feladata: A háttértáron várakozó feladatok közül kiválasztja azt, amelyiket el kell indítani.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Konvoj hatás: Mi a konvoj hatás, és a tanult ütemező algoritmusok közül melyekben jelentkezhet?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* igen nagy lehet az átlagos várakozási idő, mivel egy-egy hosszú CPU-löketű folyamat feltartja a mögötte várakozókat&lt;br /&gt;
* FCFS-nél (First-come, first-served) tapasztalható (pl. SJF (Shortest Job First) és RR algoritmus küszöböli ki)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Középtávú ütemezés: Adja meg a középtávú ütemezés célját!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Swapping, azaz a program a fizikai memória és a háttértár közti mozgatása.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Középtávú ütemezés: Mi a középtávú ütemező feladata?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Swapping, azaz a program a fizikai memória és a háttértár közti mozgatása.&lt;br /&gt;
&lt;br /&gt;
Szerintem inkább ez:&lt;br /&gt;
A rendszerben lévő feladatok memóriájának egyes éppen nem használt részeinek kiírása háttértárra.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Körülfordulási idő: Mi az a körülfordulási idő?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* TAT (Turnaround Time) -&amp;gt; Egy feladatra vonatkozóan a rendszerbe helyezéstől a teljesítésig eltelt idő.&lt;br /&gt;
* Mértékegység: s,&lt;br /&gt;
* t_(CPU,végrehajtási idő)+t_várakozás (Magában foglalja a ténylegesen munkával töltött időt és a várakozást is.)&lt;br /&gt;
* felhasználó minél előbb szeretné látni a végeredményt &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Megszakítás: Az éppen futó taszkot megszakítja egy IT. Preemptív OS esetén mindig a megszakított taszk fogja-e visszakapni a futási jogot? Miért?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Nem feltétlenül; például a preemptálás maga is úgy működik, hogy egy időzítő a szál quantumjának lejártakor megszakítást generál; ilyenkor értelemszerűen az ütemező általában nem ugyanazt a folyamatot választja ki futásra.&lt;br /&gt;
* Másik: Nem, mert akitől elvették a futás jogát az futásra kész állapotba fog kerülni és az ütemező dönti el, hogy melyik folyamat fogja megint megkapni a futást.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Megszakítás: Egy futó taszkra IT érkezik. Preemptív OS esetén az interrupt után mindenképpen &#039;ide&#039; térünk vissza?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Nem feltétlenül; például a preemptálás maga is úgy működik, hogy egy időzítő a szál quantumjának lejártakor megszakítást generál; ilyenkor értelemszerűen az ütemező általában nem ugyanazt a folyamatot választja ki futásra.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Preemptív ütemező: Mikor nevezünk egy ütemezőt preemptívnek? ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Ha az OS elveheti a futásjogot (a CPU-t) egy folyamattól/futó feladattól (interrupt).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rövid távú ütemezés: Mi a rövidtávú ütemezés, mikor jár környezetváltással?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Rövidtávú ütemezés: futó folyamat kiválasztása a futásra kész feladatok közül&lt;br /&gt;
* Ha a futó folyamatnak lejár az időszelete (csak preemptívnél), önként lemond a processzorról (együttműködő folyamatok), blokkoló rendszerhívást hajt végre (pl. I/O művelet), egy másik szál futásra kész állapotba kerül (bekövetkezik, amire várt, vagy újonnan elindítanak egy szálat), egy szál prioritása megváltozik, esetleg egy szál processzor-affinitása megváltozik.&lt;br /&gt;
* Környezetváltással akkor jár, ha másik szál választódik ki futásra, mint ami eddig futott. Pl. Windows NT alatt, ha a legmagasabb prioritási szinten pontosan egy folyamat van, akkor megtörténhet, hogy ugyanaz a szál fut tovább, és nem történik környezetváltás.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rövid távú ütemezés: Mikor fut a rövidtávú ütemező és mikor jár környezetváltással?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Ütemezés következhet be, ha&lt;br /&gt;
** a futó folyamat befejeződik,&lt;br /&gt;
** egy folyamat felébred, futásra késszé válik,&lt;br /&gt;
** a futó folyamat várakozni kényszerül (valamilyen esemény bekövetkezésére), illetve,&lt;br /&gt;
** a futó folyamat önként lemond a futás jogáról vagy pedig elveszik tőle.&lt;br /&gt;
* Az első és a harmadik esetben az ütemezés mindig környezetváltással jár, hiszen a következő futó folyamat egészen biztosan nem a korábban futott lesz. A másik két esetben előfordulhat, hogy az ütemezőnek nem kell másik folyamatot kiválasztania.&lt;br /&gt;
* Ha a futó folyamatnak lejár az időszelete (csak preemptívnél), önként lemond a processzorról (együttműködő folyamatok), blokkoló rendszerhívást hajt végre (pl. I/O művelet), egy másik szál futásra kész állapotba kerül (bekövetkezik, amire várt, vagy újonnan elindítanak egy szálat), egy szál prioritása megváltozik, esetleg egy szál processzor-affinitása megváltozik.&lt;br /&gt;
* Környezetváltással akkor jár, ha másik szál választódik ki futásra, mint ami eddig futott. Pl. Windows NT alatt, ha a legmagasabb prioritási szinten pontosan egy folyamat van, akkor megtörténhet, hogy ugyanaz a szál fut tovább, és nem történik környezetváltás.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Terhelés-végrehajtó egységek közötti megosztás: Sorolja fel a terhelés-végrehajtó egységek közötti megosztásának megoldásait! (Többprocesszoros rendszerek)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Master and slaves (egy CPU osztja ki a feladatokat)&lt;br /&gt;
* Self-scheduling / peering (minden CPU ütemez)&lt;br /&gt;
* Globális futásra kész sor&lt;br /&gt;
* Processzoronkénti futásra kész sor&lt;br /&gt;
**  Push alapú: OS kernel folyamat mozgatja a sorok között a feladatokat.&lt;br /&gt;
**  Pull alapú: Az idle állapotban (idle feladatot végrehajtó) CPU próbál a többi sorából feladatot kapni.&lt;br /&gt;
* Kettő kombinációja&lt;br /&gt;
** Összefüggő, párhuzamosan futtatható feladatok optimalizálása (pl. Gang scheduler)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Virtualizáció===&lt;br /&gt;
&lt;br /&gt;
====Hardveres virtualizáció: Mit jelent az, ha egy x86-os processzor hardveres virtualizáció támogatással rendelkezik?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A CPU utasításkészletének és üzemmódjainak olyan kiegészítése, amely lehetővé teszi a vendég operációs&lt;br /&gt;
rendszer kódjának módosítás nélküli futtatását. [?]&lt;br /&gt;
&lt;br /&gt;
(Speciális utasításokkal látják el a processzort, amit szoftveresen akár több 100 utasításon keresztül lehetne csak megoldani. ROSSZ(MZ))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Elrejti a gep fizikai tulajdonsagait a felhasznalok elol.&lt;br /&gt;
&lt;br /&gt;
Miert erdemes virtualizalni?&lt;br /&gt;
&lt;br /&gt;
-Lehet futtatni a gazda OS el nem kompatibilis alkalmazast.&lt;br /&gt;
&lt;br /&gt;
-Lehet biztonsaggal rendszergazda jogot adni mindennek, mert ugy se tud a gazda os-be kart tenni.&lt;br /&gt;
&lt;br /&gt;
-Konnyen at lehet masolni a virtualis gepet egy masik gepre.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Hosted vs. bare-metal: Miben különbözik egy hosted egy bare-metal típusú virtualizációs megoldástól?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
  Bare-metal esetén a VMM kezeli a HW erőforrásokat, míg hosted típusú esetén ezt a host OS végzi. &lt;br /&gt;
&lt;br /&gt;
videó:&lt;br /&gt;
http://video.bme.hu/media/video/Operacios_Rendszerek_20ea_20110418.wmv&lt;br /&gt;
00:16:45 körül&lt;br /&gt;
&lt;br /&gt;
Kétféle megközelítés:&lt;br /&gt;
&lt;br /&gt;
# Hosted: az operációs rendszerre telepítek egy virtualizációs szoftvert, ez beépül az operációs rendszerbe tipikusan kernel modulként, innentől a virtualizációs szoftver teszi lehetővé, hogy virtuális gépeket futtassak. Tipikusan a desktop megoldások (VMware Player, VirtualBox, Virtual PC, stb.)&lt;br /&gt;
# Bare-metal: a virtualizációs szoftver valós OS-szerű funkciókat valósít meg. Lényegében egy minimális funkciókészlettel rendelkező OS. A hardvert nem egy általános célú operációs rendszer kezeli, hanem a virtualizációs szoftver feladata az, hogy a hardver-erőforrásokkal gazdálkodjon, ő dönt az ütemezésről, ő dönt a memória-hozzáférésekről. Tipikusan szokott hozzá tartozni egy menedzsment operációs rendszer, egy menedzsment konzol, ami a távoli hozzáférést, virtuális gépek elindítását lehetővé teszi, és ott is ott tudom futtatni a vendég operációs rendszereket. Tipikusan szervermegoldások (VMware ESX Server, Xen Enterprise, MS Hyper-V).&lt;br /&gt;
&lt;br /&gt;
Fontos különbség: ki dönt a CPU-erőforrásról?&lt;br /&gt;
# van az OS-nek egy ütemezője, ő dönt arról, mikor, ki kapja meg a CPU-t. Dönthet úgy, hogy az időszeletet az alkalmazás kapja meg, a köv. időszeletet a virtualizációs szoftver/modul, ő magán belül pedig eldöntheti, melyik virtuális gépnek osztja a processzort, de alapvetően a host OS dönt arról, mi dönt az erőforrásról.&lt;br /&gt;
# arról, hogy ki kapja a CPU-t, a közvetlenül a hardver réteg felett lévő virtualizációs szoftver dönti el. Dönthet úgy, hogy a menedzsment OS kapja, dönthet úgy, hogy valamelyik virtuális gép kapja meg.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Paravirtualizáció: Mit jelent az, hogy egy virtualizációs megoldás paravirtualizációt használ a CPU virtualizálásához?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Módosítjuk a vendég OS forráskódját, hogy ne is akarjon &amp;quot;problémás&amp;quot; utasításokat hívni, hanem azok helyett azoknak megfelelő függvényeket hívjon a hypervisorban. (Ezzel egyszerűsödik a hypervisor implementálása, viszont csak úgy működik a módszer, ha módosítják a vendég OS forrását.)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Trap-and-emulate: Trap &amp;amp; emulate virtualizációs módszer használata esetén mi történik a vendég gép által kiadott nem privilegizált utasítással?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* nem privilegizált utasítások közvetlenül a valós CPU-n hajtódnak végre (no VMM intervention)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===UNIX===&lt;br /&gt;
&lt;br /&gt;
====Adminisztratív adatok: hol helyezzük el azokat az adminisztratív adatokat, amelyekre mindig szükség van, akkor is, ha a folyamatnak egyetlen lapja sincs a memóriában?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A proc struktúrában.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Adminisztratív adatok: UNIX-ban a folyamatokkal kapcsolatos adminisztratív adatok hogyan épülnek fel?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
TODO: rövidíteni.&lt;br /&gt;
&lt;br /&gt;
# adatok, melyek elsősorban akkor szükségesek, amikor a folyamat ténylegesen fut - bent van egy v. több lapja a memóriában, éppen ezekkel kapcsolatos utasításokat hajtunk végre. &amp;gt;&amp;gt; az u-területen található kontextusadatok. A folyamat címtér része. A folyamat nem férhet hozzá, de a folyamat saját címterében találhatók. Amikor a folyamatnak egyetlen lapja sincs a memóriában, hanem minden a háttértáron található, a folyamat nem fut, akkor az itt található adatokhoz a kernel sem tud hozzáférni, mivel ide csak azok az adatok kerülnek, melyek a folyamat futásakor kellenek! Pl. hozzáférés-szabályozási adatok: a folyamat szeretne valamilyen tevékenységet végrehajtani, szabad-e neki vagy sem? Másik példa: rendszerhívások állapotai: végrehajt egy rendszerhívást, amiben éppen tartózkodik, ezzel kapcsolatos állapotadatok, stb. Vagy: nyitott fájl adatok, fájlkezeléssel kapcsolatos adatok. UNIX-ban a fájlkezelést nagyon általánosan kell érteni. Minden, ami a fájlrendszer-interfészen keresztül zajlik, ahhoz tartozik egy nyitott fájl objektum, ami ennek adminisztrálására szolgál, ezek is az u-területen találhatók. Ezenkívül: számlázási, statisztikai adatok.&lt;br /&gt;
&lt;br /&gt;
# adatok, melyek elsősorban a folyamatok kezeléséhez szükségesek (amire a kernelnek bármikor szüksége lehet). Pl. folyamat alapvető azonosító adatai. Folyamat PID-je, szülőazonosító, stb. Folyamat ütemezésével kapcsolatos adatok, mi a folyamat aktuális futási állapota, mennyi a prioritása, prioritás kiszámolásához szükséges adatai, stb. Memóriakezelési adatok: folyamat memórialapjai bent vannak a memóriában, vagy épp kint vannak a háttértáron. Az u-terület címe, stb. &amp;gt;&amp;gt;&amp;gt; proc struktúra adatai: a process tábla egy eleme (ez a klasszikus rendszereknél ténylegesen egy tábla volt, ma bonyolultabb, pl. láncolt listás megvalósítás). A kernel címterének része. A kernel bármikor elérheti őket.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Adminisztratív adatok: Milyen adatstruktúrá(k)ban és milyen címter(ek)ben található(k) a folyamatok adminisztratív adata(i)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A folyamat futása során szükséges adatok az u-területen, mely a folyamat címterének része, illetve a folyamatok kezeléséhez szükséges adatok a proc struktúrában, mely a kernel címtér része.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Adminisztratív adatok: Sorolja fel a UNIX folyamatok legalább 4 alapvető adminisztratív adatát!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* PID (Process ID): egyedi, a folyamatot azonosító szám (PPID: szülő folyamat azonosítója)&lt;br /&gt;
* A folyamat állapota (fut, alszik, stb.; ütemezési információk (prioritás, CPU használat, nice érték) )&lt;br /&gt;
* Hitelesítők (UID, GID: a kapcsolódó felhasználó adatai)&lt;br /&gt;
* Memória-kezelési adatok (címleképezési térkép)&lt;br /&gt;
* Kommunikációs adatok (fájlleírók, jelzés információk)&lt;br /&gt;
* Statisztikák (erőforrás használat (számlázáshoz) )&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Alvási prioritás: UNIX alvási prioritásának ütemezését mi végzi?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Az alvási prioritást is az ütemező határozza meg, az alapján, hogy mire várakozik a folyamat, vagyis miért hajtott végre sleep() rendszerhívást. Kernel módban az ütemező nem veheti el a futási jogot, ezért amíg nem hajt végre sleep() hívást, addig nincs is szükség a prioritásának meghatározására.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Android: Az Androidban mikor és miért (adjon jellegzetes példát) terminálható egy alkalmazás?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Az alkalmazás erőforráshiány miatt bármikor terminálható, ezt az operációs rendszer automatikusan meg is teszi. Példa: ha nincs elég memória.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Belső szerkezeti elemek: Sorolja fel a UNIX operációs rendszer főbb belső szerkezeti elemeit!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* betöltő&lt;br /&gt;
* virtuálismemória-kezelő&lt;br /&gt;
* állományrendszer&lt;br /&gt;
* blokkos berendezés-meghajtó kapcsoló (+ a hozzá kapcsolódó eszközmeghajtók, pl.: lemezegység, szalagos meghajtó)&lt;br /&gt;
* karakteres berendezés-meghajtó kapcsoló (+ a hozzá kapcsolódó eszközmeghajtók, pl.: hálózat, nyomtató)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Csővezeték (pipe): Írjon le egy olyan konkrét UNIX shell parancssort, amely csővezetéket alkalmaz!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
ls -la | more&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====exec(): Mire szolgál a UNIX exec() rendszerhívás?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
exec(): új programkód betöltése egy folyamat címterébe&lt;br /&gt;
Azaz a fork() paranccsal létrehozunk egy új folyamatot, exec() paranccsal pedig betöltjük a folyamatba a kódot.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fájl-attribútumok: Sorolja fel a fontosabb UNIX fájl-attribútumokat!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Típus&lt;br /&gt;
* Linkek&lt;br /&gt;
* Eszköz, inode, méret...&lt;br /&gt;
* Időbélyegek&lt;br /&gt;
* Azonosítási és hozzáférés-szabályozási adatok&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fájlrendszeri bejegyzések: Sorolja fel a UNIX fájlrendszeri bejegyzések alapvető tulajdonságait (legalább hármat, ls -l oszlopok)!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* pl.: drwxr-xr-x 2 root root 4096 dec 22 12.27 txt&lt;br /&gt;
* sorrendben: I. UNIX-fájltípusok (pl. közönséges fájl (-), katalógus (d), szimbolikus link (l), stb.), II. hozzáférési jogosultságok (3*3-as bontásban - 1. hármas csoport a tulajdonos, a 2. a csoport, a 3. a többiek jogosultságait;  &#039;r&#039; az olvasás (read), a &#039;w&#039; az írás (write), az &#039;x&#039; pedig a végrehajtás (execute) jele), III. jogosultságok után egy szám áll (ez könyvtárak esetén azt mondja meg, hogy az adott könyvtár hány elemet tartalmaz, fájlok esetén azt tudhatjuk meg, hogy az adott fájlra hány hardlink mutat), IV. tulajdonos, V. méret (bájtokban), VI. utolsó módosítás dátuma, VII. fájl neve&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Felfüggesztett állapotok: Mik azok a felfüggesztett állapotok, mi a szerepük a UNIX-ban?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
felfüggesztve futásra kész, felfüggesztve alszik állapot A UNIX-ban egyfajta hosszú távú, felhasználói ütemezést jelentenek - a felhasználónak lehetősége van arra, hogy bizonyos folyamatokat a többi állapotból kiemeljen. Pl. Ctrl+Z billentyűkombinációval felfüggesztem a folyamatok futását. Innen valamikor visszahelyezzük futó állapotba.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Felhasználói mód, kernel kontextus: UNIX esetén milyen tevékenység zajlik felhasználói módban, kernel kontextusban?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Semmilyen!! &lt;br /&gt;
Megj.: Kernel kontextusban, felhasználói módban a program saját utasításait hajtjuk végre, a program saját adataival dolgozunk. Ennél fogva itt nincs értelme beszélni semmiről, mert a folyamat a kernel kontextusában nem hajthat végre semmit.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Felhasználói módból kernel módba váltás: Hogyan vált egy UNIX folyamat felhasználói (user) módból kernel módba?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Rendszerhívásokon keresztül.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Felhasználói módú prioritás: Sorolja fel milyen tényezők határozzák meg egy UNIX folyamat felhasználói módú prioritását (tradicionális UNIX ütemező esetén)!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Korábbi CPU-használat&lt;br /&gt;
* Futásra kész folyamatok száma (p_cpu &amp;quot;öregítésével&amp;quot;)&lt;br /&gt;
* nice érték (nice és renice parancsok)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Folyamatok állapotai: Milyen állapotai vannak a UNIX-folyamatoknak?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
# kiinduló állapot&lt;br /&gt;
# futásra kész&lt;br /&gt;
# kernel módban futó állapot&lt;br /&gt;
# felhasználói módban futó állapot&lt;br /&gt;
# alvó állapot&lt;br /&gt;
# zombi állapot&lt;br /&gt;
# felfüggesztve alszik&lt;br /&gt;
# felfüggesztve futásra kész&lt;br /&gt;
&lt;br /&gt;
 Ctrl+Z-vel felfüggesztett állapotba helyezem a folyamatot.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Folyamatok közötti kommunikáció: Soroljon fel legalább 4 UNIX folyamatok között kommunikációs megoldást!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* System V IPC: szemafor, osztott memória, üzenetsor&lt;br /&gt;
* Csővezeték és nevesített csővezeték&lt;br /&gt;
* Jelzések&lt;br /&gt;
* RPC&lt;br /&gt;
* Folyamat-nyomkövetés&lt;br /&gt;
* Szemaforok&lt;br /&gt;
* Üzenetsorok&lt;br /&gt;
* Osztott memória&lt;br /&gt;
* Hálózati, socketeken keresztüli kommunikáció&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Folyamatok közötti kommunikáció: Soroljon fel UNIX folyamatok közötti adatátviteli eszközöket (legalább hármat)!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* System V IPC: - szemaforok, - üzenetsorok, - osztott memória&lt;br /&gt;
* Jelzések: - aszinkron események keltése és kezelése&lt;br /&gt;
* Csővezetékek, nevesített csővezetékek: - FIFO kommunikáció a &amp;quot;rokonságban&amp;quot;&lt;br /&gt;
* Szemaforok: - a korábban megismert szinkronizációs megoldások&lt;br /&gt;
* Üzenetsorok: - diszkrét, típusos üzenetek folyamatok között&lt;br /&gt;
* Osztott memória: - azonos fizikai memóriaterület használata több folyamatban&lt;br /&gt;
* &amp;quot;hálózati&amp;quot; (socket) kommunikáció: - címzéssel és protokollokkal támogatott kommunikáció&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====fork(): Mire szolgál a fork() rendszerhívás?====&lt;br /&gt;
TODO: rövidíteni.&lt;br /&gt;
&lt;br /&gt;
Új folyamat létrehozására. A fork() hívásakor az aktuális folyamat, amely kiadta a rendszerhívást, megduplázódik (minden adata, verme, memórialapja, stb.), onnantól két példányban fog továbbélni, amelyek egymással szinte tökéletesen megegyeznek, kvázi klónozva van a folyamat, néhány apró különbség van csupán. De valójában a memóriaszervezés ügyes trükkje: semmit nem csinál azonkívül, hogy bizonyos adminisztratív adatokat megdupláz, ténylegesen nem másol semmit (memórialapokat)! Az így megduplázott folyamat memórialapjaihoz hozzárendel még egy folyamatot, és megjegyzi azt, hogy amíg ezek a folyamatok békésen tudnak egymás mellett dolgozni, addig dolgozzanak ugyanazon, de ha konfliktus van, akkor majd lemásoljuk ezeket a memórialapokat. &lt;br /&gt;
&lt;br /&gt;
Ha a fork() hívás 0-val tér vissza: a gyerek folyamat kódja fut tovább. Ha egy negatív számmal tér vissza, fork() hiba történt, nem tudtuk létrehozni az új folyamatot, le kell kezelni. Ha pozitív számot adott vissza, akkor az eredményben a gyerekfolyamat azonosítója található, itt a szülőfolyamat fut tovább.&lt;br /&gt;
 &lt;br /&gt;
Gyerek folyamat fut: az exec() az aktuális folyamat helyére betölt egy másik binárist. Az exec()-et meghívó folyamatnak az exec() kitörli a saját kontextusát, stb., betölt egy új programkódot, amit elkezd végrehajtani. (Kvázi mintha elindítana egy új folyamatot, de a folyamat már fut.) Ha nem sikerült betölteni a binárist (pl. nincs ilyen fájl), akkor hiba, visszatér az exec() is, egyébként nem: az új programkód utasításait hajtjuk végre.&lt;br /&gt;
Tehát folyamat létrehozása UNIX-ban két lépésben:&lt;br /&gt;
# fork() rendszerhívás = folyamatduplázás, majd&lt;br /&gt;
# a gyerekfolyamat helyére az új programkód betöltése exec() hívással.&lt;br /&gt;
Modern UNIX-okban fork() már nem igazán (más rendszerhívásokat használ).&lt;br /&gt;
&lt;br /&gt;
====fork(): Miért van szükség a fork() rendszerhívásnál a folyamat megduplázására?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Futási/végrehajtási mód: Mi az a futási mód?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
http://video.bme.hu/media/video/Operacios_Rendszerek_09ea_20110307.wmv, 00:17:00 környéke alapján&lt;br /&gt;
TODO - rövidíteni&lt;br /&gt;
A folyamatok a kerneltől teljesen különválasztva működnek (rendszerhívás interfészen keresztül kommunikálnak a kernellel). A végrehajtási mód azt határozza meg, hogy a kernel vagy a folyamat feladatait hajtja végre az OS.&lt;br /&gt;
Két mód: kernel (&amp;quot;privilegizált, védett&amp;quot;) mód, valamint felhasználói (&amp;quot;szabad&amp;quot;) mód.&lt;br /&gt;
Kernel módban a védett (kernel) tevékenységeket, felhasználói módban a folyamat programkódját hajtja végre az OS.&lt;br /&gt;
Példa: egy webböngésző a tevékenysége egy részében a saját feladatát hajtja végre, pl. HTML-kódot értelmez és jelenít meg, valamint vannak olyan tevékenységek, amelyek ahhoz kellenek, hogy ezt a feladatát végrehajtsa: hálózati kommunikáció, fájlrendszer-műveletek, stb. - ezek kernel tevékenységek.&lt;br /&gt;
Kernel módban privilegizált utasítások hajtódnak végre, pl. egy eszközt kezelünk, vagy hozzányúlunk a háttértárhoz, onnan valamit beolvasunk, oda valamit kiírunk. Ilyen utasításokat egy felhasználói módban futó folyamat nem hajthat végre, hiszen ha közvetlenül hozzáférne a hardverekhez, akkor akár adott esetben a teljes rendszer működését felboríthatná.&lt;br /&gt;
Felhasználói módból kernel módba átlépéskor átlépünk egy védett módba, így olyan feladatokat is végrehajthatunk, amit egyébként tilos.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====inode: Mi a UNIX inode?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* A fizikai állományokhoz tartozó leíró, azonosító&lt;br /&gt;
* minden file-hoz tartozik egy inode állomány amiben a file minden tulajdonsága megtalálható (azonosító,leíró)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kernel mód, folyamat kontextus: Milyen tevékenység zajlik kernel módban, folyamat kontextusban?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Kivételek, rendszerhívások kezelése, rendszerhívások végrehajtása.  &lt;br /&gt;
Amikor a folyamat végrehajt egy rendszerhívást, a felhasználói módból átlép kernel módba, hiszen a rendszerhívás belsejében olyan tevékenységeket szeretne végrehajtani (beolvasni vmit egy fizikai eszközről, hálózatról, más folyamattal kommunikálni, elindítani másik folyamatot, stb.), amelyhez kernel utasítások végrehajtása tartozik.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kernel mód, kernel kontextus: Milyen tevékenység zajlik kernel módban, kernel kontextusban?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Rendszerfeladatok, megszakítások kezelése. Kernelfolyamatok.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kernel módú prioritás: Mi határozza meg a UNIX folyamatok kernel módú prioritását a tradicionális UNIX ütemezésben?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A kernel módban futó folyamat prioritása statikus, nem függ attól, hogy a folyamat mennyit használta a CPUt, vagyis mennyi ideig futott. A prioritás attól függ, hogy a folyamat milyen ok miatt hajtott végre sleep rendszerhívást, vagyis, hogy milyen eseményre várakozik. Emiatt a kernel prioritást szokták alvási prioritásnak is nevezni.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kernelszolgáltatások elérése: Milyen interfészen keresztül érhetők el a UNIX kernel szolgáltatásai?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* System Call Interface&lt;br /&gt;
* Az alkalmazások a rendszerkönyvtárakat hívják meg, amelyek szükség szerint meghívják az operációs rendszer szolgáltatásait ??&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kontextus: Mi az a kontextus?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
http://video.bme.hu/media/video/Operacios_Rendszerek_09ea_20110307.wmv alapján.&lt;br /&gt;
TODO: rövidíteni.&lt;br /&gt;
Az a környezet, amiben végrehajtjuk az utasításokat. Ez is különbözik a kernelek és folyamatok esetén: folyamat kontextusban azokkal az adatokkal és utasításokkal dolgozunk, amelyek alapvetően a folyamat célját szolgálják, kernel (rendszer vagy megszakítás) kontextusban pedig kernel feladatokat hajtunk végre, és az ezekhez a feladatokhoz szükséges adatokkal dolgozunk.&lt;br /&gt;
Kernel kontextus: érkezik egy hardveres megszakítás, ennek kezelése itt zajlik.&lt;br /&gt;
Folyamat kontextus: a folyamattal kapcsolatban hajtunk végre tevékenységeket.&lt;br /&gt;
Nem uaz, mint a végrehajtási mód, mert lehetséges az, hogy bizonyos tevékenységeket kernel módban hajtunk végre, de folyamat kontextusban. Amikor hozzá kell férnünk egy folyamat futási adataihoz, veremhez, virtuális memóriájához, stb., a programnak az adminisztratív adatait kezeljük, ezek folyamat kontextusban találhatóak.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Környezeti adatok: Mik azok a környezeti adatok egy UNIX-folyamatnál?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A folyamat indításakor megörökölt tulajdonságok. Tulajdonság-érték párok. Pl. a felhasználó bejelentkezik; mi az ő neve. A felhasználó milyen terminált használ, annak milyen képességei vannak. Mi a felhasználó shellje. Az épp futó folyamat néhány tulajdonsága. Olyan tulajdonság, amely egyes folyamatok számára értéket jelentenek. A felhasználók ezeket a set, setenv, export parancsokkal tudják ezeket állítani (és le is kérdezhetik őket). Megörökli az őt elindító folyamat környezetét (hogy melyiket kell épp használni, UNIX-variánstól függ). Amikor a felhasználó bejelentkezik, akkor a környezeti változók beállítódnak, a folyamatok induláskor ezeket a beállításokat megöröklik.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====libc: A libc-nek mi a feladata rendszerhívások kezelésében?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A felhasználói mód és kernel mód közötti átmenet lebonyolítása.  &lt;br /&gt;
A folyamat csak meghív egy open(), read(), write(), stb. függvényt, valójában a háttérben bonyolultabb tevékenység zajlik &amp;gt;&amp;gt; meghív egy rendszerhívást a rendszerhívás interfészen keresztül. A rendszerkönyvtárak egyike a libc, a standard C library, ez felel azért, hogy az adott függvényhívásokat (mint a read()) leképezze arra a mechanizmusra, amin keresztül átlépünk kernel módba.  &lt;br /&gt;
Az implementáció belsejében van egy SYSCALL utasítás (ez hardverfüggő), ez ténylegesen elvégzi az üzemmódváltást egy speciális megszakítás generálásával, aminek eredményeként a CPU átlép védett módba. A kernel pedig kezeli ezt a megszakítást. Ekkor a kernel a CPU regisztereit elmenti, azért, hogy a folyamat futása visszaállhasson a megfelelő állapotba. A feladat végeztével a kernel visszatér a megszakításból (erre is hardverfüggő a megvalósítás), a CPU visszavált felhasználói módba, a libc pedig visszatér a függvényhívásból, amit a folyamat kiadott.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====/proc: Mi a /proc?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Speciális fájlrendszer-interfész a kernel-adatstruktúrákhoz való hozzáféréshez.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prioritás: Hogyan számítható ki egy kernel módban futó UNIX folyamat prioritása?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* a prioritást a folyamat elalvásának oka határozza meg, tehát a prioritás attól függ, milyen sleep utasítással ment át alvó állapotba&lt;br /&gt;
* alvási prioritás pl: 20 - diszk I/O-ra vár; 28 - inputra vár a karakteres terminálról&lt;br /&gt;
* kernel módú folyamatoknak (amelyek rendszerhívásokat intéznek) negatív prioritásértékeik vannak, ezeknek van a legmagasabb prioritása ...........  (http://home.mit.bme.hu/~meszaros/edu/oprendszerek/segedlet/unix/2_folyamatok_es_utemezes/unix_processes.pdf)&lt;br /&gt;
* Több szinten, több időléptékben zajlik. Óraütésenként a prioritási sorok ellenőrzése. 10 óraütésenként RR ütemezés egy soron belül. 100 óraütésenként a prioritások újraszámítása.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rendszerhívások: Igaz-e, hogy a rendszerhívások megszakítással járnak együtt?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Igen, ennek hatására vált védelmi szintet a processzor.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rendszerhívások kontextusa: Milyen kontextusban hajtódnak végre a UNIX rendszerhívások?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
folyamat kontextusban&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rendszerhívások módja: Milyen módban hajtódnak végre a UNIX rendszerhívások?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
kernel módban&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rendszerhívások módja, kontextusa: Milyen futási módban és kontextusban zajlik a UNIX rendszerhívások kiszolgálása?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Kernel módban fut a kód, és a rendszert hívó folyamat kontextusában. ((az ehhez tartozó ábra jobb felső része))&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rendszerhívások programindításkor: UNIX alatt milyen rendszerhívásokra van szükség, ha a felhasználó elindít egy programot (folyamat létrehozása és programkód betöltése)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Folyamatot létrehozni a fork() hívással, majd a programkódot betölteni az exec() hívással lehet.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====rpcgen: Mi az rpcgen program feladata?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* RPC nyelven készült leírásból C programkódot generál. [?]&lt;br /&gt;
&lt;br /&gt;
* Az RPC nyelv alkalmas a szerver interfészének formális leírására. A formális leírásból az rpcgen program képes a szerver és a kliens programok megfelelő részeit, valamint a szükséges XDR konverziós függvényeket elkészíteni C nyelven. Az így kapott C forráskódú modulokat a kliens és szerver alkalmazással kibővítve kapjuk a teljes kommunikáló rendszert.&lt;br /&gt;
* XDR (Extended Data Representation, kiterjesztett adatreprezentáció): Többféle egyszerű adattípust definiál, illetve szabályokat határoz meg bonyolultabb adatstruktúrák létrehozására. Az adatstruktúrák meghatározásán kívül az XDR egy formális nyelvet is bevezet az adatok leírására. Az RPC rendszer is ezen nyelv kiterjesztését használja a távoli eljáráshívás formális leírására.&lt;br /&gt;
* RPC (remote procedure call, távoli eljáráshívás): Az RPC-rendszer egy protokoll-leírást és egy programozói interfészt tartalmaz. Az XDR által definiált formális nyelv kiterjesztését használja a távoli eljáráshívás formális leírására.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====System V IPC: Sorolja fel a UNIX System V IPC elemek közös alapjának részeit!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Minden IPC erőforrás rendelkezik a következő azonosítókkal: kulcs (key), létrehozó (creator), tulajdonos (owner), hozzáférési jogok (permissions)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
====System V: Adja meg a System V üzenetsorok főbb jellemzőit (tömör felsorolást kérünk)!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* diszkrét, tipizált üzenetek&lt;br /&gt;
* nincs címzés, üzenetszórás&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====System V: Miért tud az s5fs (System V File System) gyorsabban írni, mint olvasni (az előadás példája alapján)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* az írás gyors, főleg kis fájlok esetén (több szintű leképzés a kisebb blokkkok miatt), az olvasás azért lassabb (csak a nagy fájlokra), mert azoknak a részeit össze kell vadászni a szétszórtság miatt&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====u-terület: milyen jellegű adminisztratív adatok vannak az u-területen?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Azok az adatok, melyek a folyamatok futásakor kellenek. Több infó: lásd adminisztratív adatoknál.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====UNIX-fajták: Soroljon fel fő UNIX-fajtákat!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Linux, Solaris, BSD, System V, HP/UX, ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====UNIX-szabványok: Soroljon fel UNIX-hoz köthető szabványokat (legalább kettőt)!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* POSIX.1 (teljes nevén: POSIX1003.1): C nyelvű szabványos rendszerhívás-interfész&lt;br /&gt;
* System V Interface Definition&lt;br /&gt;
* X/Open Portability Guide&lt;br /&gt;
* - AT&amp;amp;T SVID (pl. SVR4), - IEEE POSIX,  - Open Group X/Open, Unix95, Unix98, ...  ????&lt;br /&gt;
* http://linux.die.net/man/7/standards&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====UNIX-típusok: Soroljon fel UNIX típusokat (a családfa jellemző ágait)!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* System V (AT&amp;amp;T változat; Solaris, SCO),&lt;br /&gt;
* BSD (Berkeley változat; SunOS, OpenBSD)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Ütemezés: Adja meg a tradicionális UNIX ütemező három legjellemzőbb tulajdonságát!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* preemptív, prioritásos és időosztásos&lt;br /&gt;
(Néhány kiegészítés a UNIX-ütemezőhöz:&lt;br /&gt;
* nem preemptív kernel módban (a kernel módot végrehajtó folyamatot (pl. rendszerhívás, megszakítás-kezelés) nem lehet kényszeríteni, hogy a CPU használatáról lemondjon egy nagyobb prioritású folyamat javára)&lt;br /&gt;
* újraütemezés csak akkor következik be, ha egy folyamat önként lemond a CPU-ról és sleep rendszerhívást hajt végre, vagy a folyamat kernel módból visszatér user módba Nem méretezhető megfelelően. Az algoritmus nem képes rugalmasan alkalmazkodni a folyamatok számának növekedése esetén. A korrekciós faktor nem elég hatékony eszköz.&lt;br /&gt;
* A CPU-t adott esetben nem lehet &amp;quot;kiosztani&amp;quot; adott folyamat számára. Nem garantálható fix válaszidő. Nagy rendszerterhelés esetén a válaszidő megnőhet. A UNIX ütemezés épp ezért nem alkalmazható real-time rendszerekben.&lt;br /&gt;
* A kernel nem preemptív, ezért az egész rendszert feltarthatja. A felhasználó nem tudja megfelelő módon befolyásolni folyamatai prioritását - a nice szám nem megfelelő eszköz erre a célra.)&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====vfs: Mondjon legalább egy, UNIX VFS-alapú &amp;quot;fájlrendszert&amp;quot;, amelynek a célja nem fájlok tárolása!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
/dev, /proc, stb.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====vfs: Soroljon fel UNIX VFS-alapú fájlrendszereket (legalább négyet)!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
xfs, zfs, brtfs, nfs&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Virtuális rendszerhívás: Mi az a virtuális rendszerhívás, miért van rá szükség?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
(Klasszikus UNIX-ban nincs, Linux 2.5.x-től felfelé, mai Linux kernelek aktívan használják.)  &lt;br /&gt;
Vannak bizonyos egyszerű feladatok, amelyek a feladat egyszerűsége ellenére túl sok felesleges művelettel járnak: rendszerhívás intterrupt, kontextusváltás, stb., ezen a helyzeten szeretnénk javítani - próbáljuk lerövidíteni ezt az utat.  &lt;br /&gt;
Pl. a pontos idő lekérdezése csupán egy megfelelő hardver kiolvasása (egyszerű numerikus érték), mégis sok művelettel jár: gettimeofday(): libc &amp;gt; SYSCALL &amp;gt; kontextusváltás &amp;gt; ..., majd ugyanezen a lépcsőn visszasétálunk a felhasználói folyamatba.  &lt;br /&gt;
Persze nem mindig lehet leegyszerűsíteni ezt az utat, csak egyszerűbb és biztonságos esetekben, pl. ha egyszerű numerikus értékek, azonosítók kiolvasásáról van szó: pl. folyamatnak mi az azonosítója, processzor lekérdezése, pontos idő lekérdezése...Tehát a felhasználói módból kernel módba történő hosszas váltást szeretnénk elkerülni. Ha nincs ilyen módváltás, akkor a felhasználói címtérben elérünk egyes kernelterületeket &amp;gt; így tényleg egyszerű függvényhívás lesz. Megfelelő előfeltételekkel: csak kockázatmentes feladatokra. Időlekérdezés tipikusan ilyen, ott megtehetjük.A felhasználói címtérben az a tevékenység, amelyet szeretnénk végrehajtani, elérhető legyen. Ezt oldják meg a virtuális rendszerhívások!	&lt;br /&gt;
A folyamat címterébe a kernel rendszerinduláskor speciális &amp;quot;kernellapot&amp;quot; allokál - ezen a biztonságosnak tekinthető rendszerhívások vannak. Terminálból példa: ldd /bin/bash&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====vnode/vfs: Mi a UNIX vnode/vfs?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Implementáció-független fájlrendszer absztrakció&lt;br /&gt;
* vnode: virtuális csomópont, vfs: virtuális állományrendszer&lt;br /&gt;
* inode --&amp;gt; vnode&lt;br /&gt;
* fs --&amp;gt; vfs&lt;br /&gt;
* Új absztrakció: annak felismerése, hogy több állományrendszernek számos előnye van, szükségessé vette a virtuális csomópont (vnode) és a virtuális állományrendszer (vfs) leíró adatszerkezetek bevezetését. Követelmények, elvárások az állományrendszerrel kapcsolatban:&lt;br /&gt;
** egyszerre támogasson több - UNIX, nem UNIX - állományrendszert&lt;br /&gt;
** különböző diszk partíciók különböző állományrendszereket is tartalmazhatnak, de mountolás esetén egységet képet kell, hogy mutassanak&lt;br /&gt;
** támogassa a hálózati állományok osztott használatát&lt;br /&gt;
** modulárisan bővíthető legyen. &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Zombi állapot: Mi a zombi állapot szerepe egy UNIX rendszerben?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A folyamat már felszabadította a foglalt memóriát, lezárta az állományokat, minden erőforrását visszaadta a rendszernek, csak a proc struktúráját tartja fogva, amiben visszatérési és statisztikai információt tárol a szülő számára. A folyamat szülő wait hívása után szűnik meg.&lt;br /&gt;
&lt;br /&gt;
Megjegyzés: bővebben magyarázattal, előadás alapján:&lt;br /&gt;
A folyamat megáll, a UNIX-ban a kernel szeretné ezt a szülőjének is tudomására hozni.	&lt;br /&gt;
A folyamat már leállt, nem fog tovább futni, de a szülőjét még nem értesítették arról, hogy ez a folyamat megszűnt, esetleg gondoskodjon az újraindításáról, stb.  &lt;br /&gt;
Pl. egy webszerver: beérkező kérések kiszolgálása --&amp;gt; kliens folyamat indítása, ez megkapja a kérés kiszolgálásának feladatát, a kliens pedig valamikor megáll, a webszerver nem árt, ha értesül róla, hogy hiba vagy normál működés folytán állt le.  &lt;br /&gt;
Tehát amíg a szülő nem értesült a leállásról, a folyamat zombi állapotban marad. Ha a szülőt nem érdekli, mi történt a gyerekfolyamattal, a zombi állapot hamar megszűnik.  &lt;br /&gt;
A zombi állapotban a folyamatnak semmilyen saját adatát nem tároljuk, a folyamat összes működéshez szükséges adata megszűnik, kizárólag a kernel adatstruktúrákban, tehát a proc struktúrában marad meg a folyamatnak néhány adminisztratív adata. A ps kilistázhat pl. zombi állapotban lévő feladatokat, mert ezeknet a folyamatoknak az adminisztratív adatai a kernel címterében még megtalálhatóak. De a folyamatok saját címtere, u-terület, stb. már nem létezik. Miután a szülő értesült róla, hogy a gyerekfolyamat meghalt, a kernel törölni fogja a folyamatot a process táblából is, a folyamat kilép a zombi állapotból.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Zombi állapot: Igaz-e az, hogy egy zombi állapotban lévő folyamat még memóriaterületet foglal?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Igen, mert a kernel processz táblában még ott vannak az adatai, és az memóriaterületet foglal. (A NEM választ is meg lehet indokolni...) [Indoklás nélkül 0 pont!!!]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
&lt;br /&gt;
====Alrendszer: Melyik az az alrendszere a Windowsnak, ami nélkül nem tud futni?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A Windows alrendszer, avagy Client/Server Runtime [[SubSystem]] (csrss.exe). Ennek kilövése kékhalált eredményez.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====API-k: Hogyan oldották meg, hogy az alkalmazások többféle API-n (Win32, POSIX) keresztül is meg tudják hívni a Windows operációs rendszer funkcióit?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Megoldás: környezeti alrendszerek (environment subsystems): a felhasználónak vagy programozónak nyújtott környezet, személyiség egy részét a környezeti alrendszer folyamatok valósítják meg, minden egyes környezet külön API-t mutat (Windows, POSIX, ...), az operációs rendszer rendszerhívásainak egy részét kínálja a felhasználói alkalmazások számára. (Forrás: http://mit.bme.hu/~micskeiz/opre/files/00-opre-windows-bevezeto.pptx)&lt;br /&gt;
* a kernelnek egy definiált interfésze van, ami nem publikus (hivatalos dokumentációja nincsen): NT API &amp;gt;&amp;gt; az ebben lévő függvényeket a fejlesztő ne hívhassa meg közvetlenül. Ehelyett erre két alrendszer épül, ők mutatnak egy API-t az alkalmazások felé: Windows API és POSIX API. (ezek teljesen dokumentáltak!). Az alkalmazások viszont nem keverhetik az alrendszereket, mindegyik csak egyet használhat; ezt linkeléskor kell eldönteni.&lt;br /&gt;
* A két alrendszer feladata az, hogy az általuk definiált hívásokat átfordítsák.&lt;br /&gt;
* Nem pusztán szintaktikai, hanem szemantikai eltérések is vannak.&lt;br /&gt;
&lt;br /&gt;
(Megjegyzés: Exetype segédeszköz segítségével megnézhető, melyik alrendszert használja egy adott alkalmazás.)&lt;br /&gt;
&lt;br /&gt;
Forrás: http://video.bme.hu/media/video/Operacios_Rendszerek_04ea_20110215.wmv (00:28:29 körül)&lt;br /&gt;
&lt;br /&gt;
(Korábbi:&lt;br /&gt;
* Alkalmazás 1&amp;gt;&amp;gt;&amp;gt;Windows API (Windows alrendszer)&amp;gt;&amp;gt;&amp;gt;NT API (NT Kernel)&amp;lt;&amp;lt;&amp;lt;Posix API (Posix alrendszer)&amp;lt;&amp;lt;&amp;lt;Alkalmazás 2 TODO(ehelyett 1 épkézláb mondat kéne)&lt;br /&gt;
* alkalmazások viszont nem keverhetik az alrendszereket, mindegyik csak egyet használhat; ezt linkeléskor kell eldönteni&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Executive réteg: Executive (Windows)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Az operációs rendszer magasabb szintű funkcióit szolgáltató rétege (memóriakezelés, biztonság, stb.). Az adatokat objektumokban tárolja, melyeket leírókkal (handle) lehet csak elérni, jól definiált interfészeken keresztül. Bár a kernel funkcióit csak a kernel interfészén keresztül éri el, szintén az ntoskrnl.exe tartalmazza. A legtöbb rendszerhívás itt van megvalósítva. &lt;br /&gt;
Forrás: http://mit.bme.hu/~micskeiz/opre/files/00-opre-windows-bevezeto.pptx&lt;br /&gt;
&lt;br /&gt;
(Korábbi: Ez a réteg tartalmazza az NTDLL.DLL által definiált függvények hívásainak megvalósítását, valamint a rendszer külső objektumai közti kommunikáció. Legfontosabb szolgáltató funkciója a lokális eljárás hívás - LPC (Local Procedure Call) megvalósítása. TODO[MZ])&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fájlhozzáférések: Mivel azonosítja a Windows a felhasználókat és csoportokat a fájlhozzáférési listákban?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* objektum (SecurableObject) &amp;amp;#8594; (SID, engedélyek) ; engedély: adatok írása, attribútumok olvasása...&lt;br /&gt;
* SecurityDescriptor (biztonsági leíró, összefogja a többi elemet) &amp;gt;&amp;gt; Owner (Tulajdonos, megváltoztathatja az objektum engedélyeit, akkor is ha nincs explicit joga), Discretionary Access Control List (DACL, belátás szerinti, erőforrás szintű, hozzáférési lista - hozzáférés szabályozása), SACL (biztonsági naplózás szabályozása - kinek milyen művelete esetén kell naplózni az adott műveletet)&lt;br /&gt;
* AccessControlEntry:&lt;br /&gt;
** Típus: megengedő, tiltó, audit&lt;br /&gt;
** Flag: Pl. öröklődés&lt;br /&gt;
** SID: kire vonatkozik&lt;br /&gt;
** Maszk: végrehajtás | törlés  tulajdonos írása...&lt;br /&gt;
* elérési lista (ACL), melyben megadható, hogy mely folyamatok jogosultak az adott section object elérésére ???&lt;br /&gt;
*  minden objektumhoz tároljuk a hozzá tartozó &amp;lt;tartomány, műveletvégzési jog&amp;gt; párokat ????&lt;br /&gt;
* TODO - bőven elég annyi, hogy Security Identifier (SID) segítségével azonosítja&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Felhasználó- és csoportazonosító: Mi alapján azonosítja a Windows a felhasználókat és a csoportokat?====&lt;br /&gt;
SID - Security Identifier&lt;br /&gt;
&lt;br /&gt;
====Paravirtualizáció: Mit jelent az, hogy egy virtualizációs megoldás paravirtualizációt használ a CPU virtualizálásához?====&lt;br /&gt;
felhasználókat és a csoportokat?&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Paravirtualizáció esetén fel kell készíteni a vendég OS-t a forráskódjának módosításával, hogy ne is akarjon problémás utasításokat hívni, hanem azok helyett azoknak megfelelő függvényeket hívjon a hypervisorban. Ezzel egyszerűsödik a hypervisor implementálása.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Felhasználó- és csoportazonosító: Mivel azonosítja a Windows a felhasználókat és csoportokat a hozzáférések ellenőrzése során?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;Gép SID&amp;gt;-&amp;lt;RID&amp;gt; (SID security identifier - gépspecifikus, RID: relative identifier)&lt;br /&gt;
* Jól ismert SID-ek: Everyone: S-1-1-0, Administrator: S-1-5-domain-500&lt;br /&gt;
* Vista: szolgáltatások is kapnak SID-et&lt;br /&gt;
* objektum &amp;amp;#8594; (SID, engedélyek) ; engedély: adatok írása, attribútumok olvasása...&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====HAL: Mi a HAL (Windows)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;quot;HAL&amp;quot; - Hardware Abstraction Layer&lt;br /&gt;
* A felsőbb rétegek a HAL-on keresztül érik el az alap HW szolgáltatásokat, a HAL szerepe, hogy elfedje a HW megvalósítás részleteit, és egy egységes, platformfüggetlen felületet biztosítson.&lt;br /&gt;
* hal.dll fájlban megvalósítva (pl. timer interrupt kezelését, alaplap alapvető felépítését (milyen chipsetek vannak rajta), stb. elfedi a felette lévő rétegektől)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Hardverfüggő részek: Melyek a Windows hardverfüggő részei?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* A kernel egyes részei és a HAL.&lt;br /&gt;
* Megjegyzés: én ide a drivereket is beírtam, nem vontak le érte pontot, de azt mondták, azokat nem mindig szokás a rendszer részének tekinteni.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Jogosultságok szerepe: Mik a jogosultságok (privilege) szerepe a Windows-ban?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* operációs rendszer szintű jog&lt;br /&gt;
* meghatározzák azokat a rendszerműveleteket, amelyeket egy felhasználói azonosító elvégezhet. Egy rendszergazda jogosultságokat felhasználóknak és csoportazonosítóknak oszt (http://msdn.microsoft.com/en-us/library/bb530716(VS.85).aspx)&lt;br /&gt;
* pl. számítógép leállítása, eszközmeghajtó betöltése&lt;br /&gt;
* név: SeShutDownPrivilege, SeLoadDriverPrivilege&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Képernyőkezelő/ablakkezelő/grafikus komponens/Képernyőkezelő és grafikus funkciókat megvalósító függvények kernel módba kerülése: Mi a fő oka, hogy a Windows NT-ben a képernyőkezelő és grafikus funkciókat megvalósító függvények kernel módba kerültek? Elméleti megfontolások alapján hol lenne a helyük?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
	 Windows NT 4.0-ban került le kernel szintre ez a komponens, hogy kevesebb folyamat- és módváltás legyen (Ne kelljen mindig visszaváltani a csrss.exe-be, majd onnan átváltani kernel módba, utasítani a hardvert, visszaváltani felhasználói módba, majd visszaváltani a felhasználói folyamatba, aki kezdeményezte a változtatást.) (A felhasználói módú folyamatban (csrss.exe) csak a konzol kezelés maradt.) Elméletileg felhasználói szinten kéne lennie.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Képernyőkezelő/ablakkezelő/grafikus komponens kernel módba kerülése: Windows-ban miért került le az ablakkezelő kernel módba?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Hogy kevesebb kontextus- és módváltás legyen, mivel a Windows szerves része az ablakkezelés, ezért rengeteg user-kernel mód váltás lenne ha a csrss.exe-en keresztül használnánk. Tehát teljesítménybeli okokból.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Képernyőkezelő/ablakkezelő/grafikus komponens előnyei: A Windows OS grafikus komponensének mik az előnyei, hátrányai?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A grafikus komponens kernel módban fut. Emiatt a hibái az egész rendszert magával ránthatják, viszont gyorsabb, mert kevesebb CPU-mód váltás kell a rajzoláshoz.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Képernyőkezelő/ablakkezelő/grafikus komponens kernel módba kerülése: Mi volt a fő oka annak, hogy a Windows NT-ben a képernyőkezelő és grafikus funkciókat megvalósító komponens kernel módba került?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
	 Mert ezek a folyamatok intenzíven használják a hardvert, és futásuk gyorsaságára az egész rendszer teljesítménye érzékeny. A user módban történő megvalósítás a rendszert lelassítaná a gyakori környezetváltás miatt.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kernel: Mi a kernel (Windows)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A rendszer állandóan memóriában lévő, védett módban futó része. Az NT egyetlen HW függő része, szerepe a HW elfedése a felette található eszközök elől, ezáltal a felette lévő részek már teljesen HW függetlenek. Megvalósítja a szálütemezést, multiprocesszor ütemezést és a TRAP kezelést.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kliens-szerver-modell: Nevezzen meg egy kliens-szerver-modell alapján működő komponenst az NT-ben!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* csrss.exe - Client/Server Run-Time Subsystems (környezeti alrendszerek)&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Memóriafoglalás: Mely utasításokkal és miért történik a memóriafoglalás két lépésben Windows alatt?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* A két lépés: Reserve és Commit. Az első csak címtartományt foglal, amögött nem lesz ténylegesen használható memóriaterület; a másik a már lefoglalt címtartományhoz rendel (virtuális) memóriát.&lt;br /&gt;
* A folyamatok címtartományának töredezettsége csökkenthető azzal, ha a címtartományt már akkor előre foglalja, mikor a memóriára még nincs szüksége, és ez nem jár olyan memóriapocsékolással, mintha fizikai memóriát is foglalna ugyanakkor.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Munkakészlet (working set): Mit jelent a Windows-ban az egy folyamathoz tartozó munkakészlet (working set) fogalma?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Azon fizikai lapok halmaza, amelyekre a folyamat laphiba nélkül hivatkozhat. &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====NT hardverfüggő rétegei: Sorolja fel az NT hardverfüggő rétegeit!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
HAL (Hardware Abstraction Level), kernel&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====NTDLL.DLL: Mi az NTDLL.DLL fő funkciója?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Összeköti a User és Kernel módot. Az Executive függvényeknek megfelelő függvénycsonkok vannak benne.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Quantum: Mi a szerepe a quantumnak a Windows ütemezőjében?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* A szálak adott ideig futnak (quantum)&lt;br /&gt;
* RR ütemezésnél az időszelet&lt;br /&gt;
* Óramegszakításban mérik (clock interval, clock tick) 1 clock tick = ~ 10-15 ms (HALtól függ)&lt;br /&gt;
* Quantum hossza: időegység, amíg egy szál fut&lt;br /&gt;
* Kliensek esetén a quantum hossza 2 clock tick a háttérben futó folyamatoknak, az előtérben futó folyamatoknak 6 clock tick jut. Így egy CPU-intenzív folyamatról való ablakváltáskor az új, előtérben lévő folyamat arányosan több CPU-időt kap (azonos prioritásokat feltételezve).&lt;br /&gt;
* Szervereknél: mindenkinek 12 clock tick a kontextusváltások minimalizálása érdekében. Szervereknél így a kliensek kéréseinek eredményeként felébredő alkalmazásoknak több esélye van befejezni a kérést, és várakozó állapotba kerülni, mielőtt az időszelet véget érne.&lt;br /&gt;
* esély annak a folyamatnak, amelynek épp most ért véget a várakozása: a várakozás végén megnöveljük a prioritást, de a quantum eggyel csökken; a quantum végén a prioritást az eredetire csökkenti.&lt;br /&gt;
* éhezés elkerülése: az OS másodpercenként megnézni a futásra kész szálakat, és annak, aki nem futott már 300 óraütés óta, 15-ös prioritást ad, megnöveli a quantumját egy quantumnyi futásig&lt;br /&gt;
* TODO, hogy a forrás feldolgozása jó-e: http://mit.bme.hu/~micskeiz/opre/files/01-opre-windows-utemezes.pptx&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rendszeridő megváltoztatása: A rendszeridő megváltoztatására kinek van joga Windows alatt?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* SeSystemTimePrivilege joggal rendelkező felhasználóknak / azoknak a felhasználóknak, amelyek olyan csoportba tartoznak, amelyekhez hozzá van rendelve a SeSystemtimePrivilege.&lt;br /&gt;
* Alapértelmezett beállításként csak az Administrators és Power Users group rendelkezik vele.&lt;br /&gt;
* http://msdn.microsoft.com/en-us/library/windows/desktop/bb530716(v=vs.85).aspx&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Standby memórialapok listája: Mire szolgál a standby memória lap lista a Windows-ban (miért nem szabad lapként vannak ezek nyilvántartva)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A lap egy munkahalmaz része volt, de már nem az, elvették tőle. A lap nem módosult, mióta kiírták a merevlemezre, vagy mióta beolvasták. Egy nem Valid laptábla bejegyzés még mutat rá, azaz ha kell, még könnyen életre lehet kelteni a lapot. &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Szabad (free) és nullázott (zeroed) lapok: Miért van a Windows-ban külön szabad és nullázott (freed és zeroed) memórialap-lista?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Biztonsági okokból. Nem nullázott memóriaterületet odaadni más folyamatnak biztonsági kockázatot jelent.&lt;br /&gt;
Tehát a free lapok szabad lapok, de még nem adhatók oda felhasználói folyamatnak, mert &amp;quot;szemetet&amp;quot; vagy érzékeny adatot tartalmazhatnak: nincs nullákkal felülírva a tartalma. A zeroed lapok szabadok, és nullákkal vannak felülírva, tehát odaadhatók felhasználói folyamatnak, amennyiben igény van rá.&lt;br /&gt;
&lt;br /&gt;
TODO: ez így már megfelelő indoklás?&lt;br /&gt;
&lt;br /&gt;
(Korábban:&lt;br /&gt;
*Free*: a lap szabad, de nincs 0-kkal felülírva a tartalma, szemét vagy egy előző processz által használt tartalom van benne. Ezt nem adhatja ki közvetlenül a memóriakezelő más processzeknek, mert biztonsági szempontból aggályos adatokat találhatna rajta.&lt;br /&gt;
*Zeroed*: szabad és nullákkal felülírt lap, kiadható, ha valakinek kell. &lt;br /&gt;
TODO(ez így igaz, csak ebben a formában nem a kérdésre válaszol))&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Mik a szerepük a szolgáltatásoknak a Windowsban? ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Olyan folyamatok, amik a felhasználói felülettől és belépéstől függetlenül a háttérben futnak, és kibővítik az operációs rendszer alap szolgáltatásait.&lt;br /&gt;
TODO?&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Újrahívhatóság (reentrancy): Mit jelent az, hogy a Windows-ban a rendszerhívások újrahívhatóak?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A rendszerhívásokat több alkalmazás is meghívhatja egyszerre, nem blokkolódnak, ha már valakit éppen kiszolgál az adott rendszerhívás.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Védett objektum tulajdonosának speciális joga: Milyen speciális joga van egy védett objektum tulajdonosának az adott objektumra a Windows-ban?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Megváltoztathatja az objektum engedélyeit, akkor is, ha erre nincs explicit joga. (https://wiki.sch.bme.hu/pub/Infoalap/OpRe/03-opre-windows-biztonsag.pptx)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Verzióleírás: Mit jelentenek a számok és szavak a következő verzióleírásban: &amp;quot;Microsoft (R) Windows (R) 5.01.2006 Service Pack 2 Uniprocessor Free&amp;quot;?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* (MZ) 5.01.2006 a verziószám, major.minor.build formában, 5.1 a Windows XP verzója, 2006 az SP2-es verzió build száma. Uniprocessor = egy processzoros kernel verzió, Free = debug szimbólumok nélküli verzió.&lt;br /&gt;
	*(MZ) 2011-től kezdve ez már nem része a tananyagnak&lt;br /&gt;
* Most computers run a &amp;quot;uniprocessor free&amp;quot; version of Windows, which is a version that runs on a single CPU and does not contain extra errorchecking.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- /#q_and_a --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Tartalomjegyzék==&lt;br /&gt;
&amp;lt;div class=&amp;quot;table_of_contents&amp;quot;&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Források (teljesség igénye nélkül)==&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs_sources&amp;quot;&amp;gt;&lt;br /&gt;
Ez előadás diáin, Wikipédiás és egyéb, Google-lel található cikkeken kívül ezek voltak a források, és MÉG ÍGY SEM tartalmazza az összes beugrókérdést (volt olyan, amit rengeteg idő lett volna átszerkeszteni, vagy kevésbé sanszos, hogy olyan hosszúságú beugrókérdést tennének fel, ami ott szerepelt):&lt;br /&gt;
&lt;br /&gt;
* Hivatalos előadásjegyzetek: http://portal.mit.bme.hu/?l=oktatas/targyak/vimia219/jegyzet/index.html&lt;br /&gt;
* https://wiki.sch.bme.hu/bin/view/Infoalap/OpReVizsgaBeugrok&lt;br /&gt;
* https://wiki.sch.bme.hu/bin/view/Infoalap/OpReVizsgaKisKerdesek&lt;br /&gt;
* https://wiki.sch.bme.hu/bin/view/Infoalap/OpReVizsga2007junius12megoldas&lt;br /&gt;
* https://wiki.sch.bme.hu/bin/view/Infoalap/OpReVizsga2008majus20megoldas&lt;br /&gt;
* https://wiki.sch.bme.hu/bin/view/Infoalap/OpReVizsga2008junius11megoldas&lt;br /&gt;
* https://wiki.sch.bme.hu/pub/Infoalap/OpRe/pelda_beugro_megoldas.pdf&lt;br /&gt;
----&lt;br /&gt;
* https://vir.sch.bme.hu/dokumentumok/InfoSite/4.%20f%C3%A9l%C3%A9v/Oper%C3%A1ci%C3%B3s%20rendszerek/&lt;br /&gt;
* https://vir.sch.bme.hu/document/targyak/opre/opre_beugro.zip (HOSSZÚ)&lt;br /&gt;
* https://vir.sch.bme.hu/document/targyak/opre/oprendszkidolg.zip&lt;br /&gt;
* Wikipédia&lt;br /&gt;
* Google segítségével fellelhető rengeteg forrás&lt;br /&gt;
* stb.&lt;br /&gt;
&lt;br /&gt;
-- [[PeteHaro|Pete]] - 2011.06.19.&lt;br /&gt;
* [[Media:opre_beugro_ABC.docx|Operációs rendszerek vizsgabeugrók megoldással DOCX-formátumban (szerkeszthető, javítható!)]]&lt;br /&gt;
* [[Media:opre_beugro_ABC.pdf|Operációs rendszerek vizsgabeugrók megoldással PDF-formátumban]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Infoalap]]&lt;/div&gt;</summary>
		<author><name>Bolla Dávid</name></author>
	</entry>
	<entry>
		<id>https://vik.wiki/index.php?title=Oper%C3%A1ci%C3%B3s_rendszerek_kidolgozott_beugr%C3%B3k%C3%A9rd%C3%A9sek_vizsg%C3%A1ra_ABC-sorrendben&amp;diff=186252</id>
		<title>Operációs rendszerek kidolgozott beugrókérdések vizsgára ABC-sorrendben</title>
		<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=Oper%C3%A1ci%C3%B3s_rendszerek_kidolgozott_beugr%C3%B3k%C3%A9rd%C3%A9sek_vizsg%C3%A1ra_ABC-sorrendben&amp;diff=186252"/>
		<updated>2015-06-10T11:00:30Z</updated>

		<summary type="html">&lt;p&gt;Bolla Dávid: /* Felhasználó- és csoportazonosító: Mi alapján azonosítja a Windows a felhasználókat és a csoportokat? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Bevezető==&lt;br /&gt;
Korábbi Wiki-n és InfoSite-on szereplő kidolgozott és kidolgozatlan anyagok, számtalan forrásból összeszedve - előadásdiákból, video.bme.hu-n lévő felvett anyagokból, Wikipédiás és egyéb, Google segítségével fellelhető anyagokból kiegészítve.&lt;br /&gt;
Hibák előfordulhatnak! TODO-val azokat a részeket jelöltem, amik átnézendők, rendbe szedendők, hiányosak, stb., ezeket is kérlek javítsátok, ha tudjátok! Köszi!&lt;br /&gt;
Ami fontos: ABC-sorrendbe rendezve szerepelnek a kérdések, így könnyebben megtalálható, tartsuk is meg ezt a tendenciát!&lt;br /&gt;
Remélem hasznát veszitek! -- [[PeteHaro|Pete]] - 2011.06.19.&lt;br /&gt;
Valamilyen szintű kategorizálást is beleraktam. A kérdések elejére odaírtam magának a kérdésnek a lényegét is, hogy könnyebben megtalálhatóak legyenek az azonos kérdéskörbe tartozóak.&lt;br /&gt;
&lt;br /&gt;
==Beugrókérdések megoldással==&lt;br /&gt;
===Általános jellegű OS-ekkel kapcsolatos kérdések===&lt;br /&gt;
&lt;br /&gt;
====Indulás: Hasonlítsa össze az általános célú (asztali) és a beágyazott operációs rendszereket az indulás szempontjából!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A beágyazottnál először indul az alkalmazás, és az indítja az operációs rendszert, az asztalinál az operációs rendszer indítja az alkalmazásokat.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Inkrementális mentés: Mit jelent az inkrementális mentés?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Csak a változtatásokat mentjük az előző mentéshez képest -&amp;gt; kisebb helyet foglal, hamarabb végez a mentés.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kemény valós idejű rendszer: Adja meg a kemény valós idejű (hard real-time) rendszer definícióját!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A rendszer adott eseményekre  adott időn belül 1 valószínűséggel válaszol (egyébként hibás, hiába funkcionálisan jó a válasz). A rendszer NEM késhet!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Lazán csatolt rendszer: Milyen szinkronizációs kényszereket jelent, ha egy lazán csatolt rendszer kommunikációja során véges kapacitású csatornát alkalmazunk?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
ha a küldő folyamat túl gyorsan küldözget, akkor a csatorna megtelik, úgyhogy túlcsordulás lesz, ami miatt a küldőnek várnia kell mielőtt újra küld.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rendszerhívások: Milyen előnnyel jár a rendszerhívások valamilyen magas szintű programnyelvvel történő megadása?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Az API elrejti a rendszerhívások részleteit, bonyolultságát a programozó elől, lényegében egy wrapper réteggel fedi be a rendszerhívásokat.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====RPC: Milyen részekből áll az RPC technológia?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* RPC: Remote Procedure Call, távoli eljáráshívás. Magas szintű folyamatok közti kommunikációt tesz lehetővé. Részei:&lt;br /&gt;
*  a hívható eljárások és típusaik (interfész) leírása&lt;br /&gt;
* programgenerátor - rpcgen: a leírásból C programkódot generáló program&lt;br /&gt;
* kommunikációs infrastruktúra - portmapper: a programazonosítók és a hálózati portok összerendelése&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Statikus/dinamikus OS: Mikor nevezünk statikusnak, illetve dinamikusnak egy operációs rendszert?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
statikus: azok a rendszerek, amelyeknek muködése során - a felépülés és inicializálás kezdeti szakaszától eltekintve - nem jönnek létre és nem szűnnek meg folyamatok. dinamikus: működés közben bármikor születhetnek illetve megszünhetnek folyamatok.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Szorosan csatolt rendszerek: Milyen rendszereket nevezünk &amp;quot;szorosan csatolt&amp;quot; rendszereknek?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Ahol több CPU közös óra és közös memória segítségével működik együtt. Általában egyetlen operációs rendszer van, de az bonyolult. (Megjegyzés: az architektúrákból megtanult &amp;quot;közös erőforrást használnak&amp;quot; definícióra csak fél pontot adtak.)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Erőforrás-hozzáférés===&lt;br /&gt;
&lt;br /&gt;
====Elosztott rendszerek: Elosztott rendszerekben milyen konzisztencia kérdésekkel kell foglalkozni?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* frissítés konzisztencia&lt;br /&gt;
* másolat konzisztencia&lt;br /&gt;
* cache konzisztencia&lt;br /&gt;
* hiba konzisztencia&lt;br /&gt;
* óra konzisztencia&lt;br /&gt;
* felhasználói interfész konzisztencia&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Erőforrás-gazdálkodás: Mi a különbség a hierarchikus és a globális erőforrás-gazdálkodás között?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
hierarchikus: a gyermek folyamatok csak a szülő erőforrásaiból részesülhetnek, és nem létezhetnek önállóan, csak amíg a szülőjük is létezik. globális: a rendszer valamennyi folyamata létrejötte után egyenrangú, önálló szereplő, és versenyezhet a teljes erőforráskészletből való részesedésért.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Éhezés: Mi az az éhezés?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A folyamatnak megvan mindene, ami a futásához kellene (ezért nem holtpont), de az erőforrásokat, amiket használni akar, más folyamatok kapják meg (ezért nem tud futni).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Graceful degradation: Mit jelent a &amp;quot;graceful degradation&amp;quot; fogalma? ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Fokozatos leromlás/összeomlás: Ha a rendszer terhelése eléri az ún. könyökkapacitást, akkor utána viselkedése megváltozik, a tovább növekvő terhelésre már egyre rosszabb működéssel reagál (overhead). Elvárható, hogy ezt fokozatosan tegye (ne omoljon össze).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kölcsönös kizárás====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Annak biztosítása, hogy a közös erőforrást egy időben csak annyi magában szekvenciális feladat használja, amely mellett a helyes működése garantálható.&lt;br /&gt;
A kölcsönös kizárást meg kell oldanunk a programban. Többnyire a használt erőforrást lock-oljuk (elzárjuk): nem engedjük hozzáférni a többi részfeladatot.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kritikus szakasz: Mit jelent a kritikus szakasz?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A magában szekvenciális feladatok azon kódrészletei, amely során a kölcsönös kizárást egy bizonyos közös erőforrásra biztosítjuk. A kritikus szakasz a kérdéses közös erőforráshoz tartozik. A kritikus szakaszt a hozzá tartozó erőforrásra atomi műveletként (nem megszakítható módon) kell végrehajtanunk.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Monitor: Mi a monitor alkalmazásának lényege? (Kölcsönös kizárás)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A lockolás nem szétszórva történik a programban, hanem egyetlen, a közös erőforráshoz szorosan tartozó programrészletben.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prioritás öröklés: Mi a prioritás öröklés (Priority Inheritance, Pl) protokoll lényege? (prioritás inverzió témakör)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Az alacsony prioritású feladat megörökli az általa kölcsönös kizárással feltartott feladat prioritását a kritikus szakaszából való kilépéséig. Csak részben oldja meg a prioritás inverzió problémáját.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Test-and-set: Hogyan lehet Test_and_Set utasítással kritikus szakaszba lépést (entry) és kilépés (exit) megvalósítani?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Belépésnél csökkentjük a value értékét ezzel jelezve hogy használni akarjuk a kritikus szakaszt&lt;br /&gt;
* Kilépésnél növeljük a value értékét&lt;br /&gt;
Egy változót kijelölünk &amp;quot;lock object&amp;quot;-nek; ha ennek a tartalma 0, nincs senki a kritikus szakaszban. A kritikus szakasz elején egy ciklusban test-and-set-et hajtunk végre rá (az utasítást a ciklus feltételébe téve); ha valaki van a szakaszban már, a ciklusban fogunk keringeni, amíg ki nem lép belőle a másik. Amikor kilépett, a test-and-set következő végrehajtása beállítja a változót, és továbbengedi az egyik várakozó ciklust. A szakaszból kilépéskor pedig simán (nem test-and-set-tel) 0-ba állítjuk.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Test-and-set: Hogyan működik a test_and_set?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Visszaadja egy bit értékét, és ha 0 volt, 1-re állítja. Mindezt oszthatatlanul, vagyis ha 0 volt ott, és többen egyszerre hívtak rá test-and-set-et, akkor az egyiké teljesen lefut, 1-be állítja és nullát ad vissza, mielőtt a többi elkezdene futni (így ők mind 1-et fognak visszaadni)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Újrahívhatóság: Mit jelent az újrahívhatóság (reentrancy) fogalma?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A közös erőforrás problémájának egyfajta kiterjesztett esete egy függvényen/objektumon belül, mely akkor léphet fel, amennyiben ezt a függvényt/metódust egyszerre többen is meghívhatják. Előfordulhat akkor, ha ugyanazt a függvényt hívjuk egy taszkból és egy megszakítás-rutinból is, vagy ha preemptív ütemezés esetén ugyanazt a függvényt hívjuk két taszkból is.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Holtpont===&lt;br /&gt;
&lt;br /&gt;
====Definíció: Adja meg a holtpont definícióját!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Egy rendszer folyamatainak egy H halmaza holtponton van, ha a H halmazba tartozó valamennyi folyamat olyan eseményre vár, amelyet csak egy másik, H halmazba tartozó folyamat tudna előidézni. Másként: A közös erőforrások hibás beállítása vagy használata miatt a rendszerben a részfeladatok egymásra várnak &amp;amp;#187; nincs futásra kész folyamat; &amp;amp;#187; nem jöhet létre belső esemény; &amp;amp;#187; A rendszer nem tud előrelépni.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Foglalva várakozás: Holtpont megelőzése (prevention) esetén milyen módszerrel lehet a foglalva várakozás előfordulását kizárni?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Az erőforrást birtokló feladat kér újabb erőforrást.&lt;br /&gt;
* Minden szükséges erőforrást egyben kell lefoglalni, egyetlen rendszerhívással.&lt;br /&gt;
* Alkalmazástól függ a használhatósága.&lt;br /&gt;
* Erőforrás-kihasználás romlik.&lt;br /&gt;
*  A foglalva várakozás elkerülhető, ha minden folyamat betartja azt a szabályt, hogy az egyidejűleg szükséges valamennyi erőforrását egyetlen rendszerhívással kéri el. A szabály betartásával megelőzhető a holtpont, de ára az erőforrás-kihasználás jelentős romlása.&lt;br /&gt;
*  Ha a folyamatokat kötelezzük arra, hogy minden erőforrásukat egyszerre kérjék el. Ha meg akarjuk engedni a rákérést, akkor menthető állapotú erőforrások esetén megtehetjük, hogy a várakozó folyamatoktól elvesszük az erőforrásaikat.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kezelése: Az operációs rendszer milyen általános eljárásokat használhat a holtpont kezelésére?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* strucc algoritmus (nem vesz róla tudomást)&lt;br /&gt;
* holtpont feloldása - melyik holtpontban érintett folyamatot számoljuk fel?&lt;br /&gt;
* menthető állapotú erőforrások elvétele,&lt;br /&gt;
* minél kevesebb folyamat felszámolása,&lt;br /&gt;
* folyamatok prioritása,&lt;br /&gt;
* már elvégzett munka,&lt;br /&gt;
* folyamatok visszaállíthatóságának biztosítása&lt;br /&gt;
* holtpont megelőzése&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kialakulás szükséges feltételei: Sorolja fel a holtpont kialakulásának szükséges feltételeit!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Kölcsönös kizárás: Vannak olyan erőforrások a rendszerben, melyeket a folyamatok csak kizárólagosan használhatnak.&lt;br /&gt;
* Foglalva várakozás: legyen olyan folyamat mely lefoglalva tart erőforrásokat, miközben más erőforrásokra várakozik.&lt;br /&gt;
* Nincs erőszakos erőforrás-elvétel: a folyamatok addig birtokolják az erőforrást, míg saját jószántukból fel nem szabadítják azokat.&lt;br /&gt;
* Körkörös várakozás: Létezik a rendszerben egy olyan folyamatsorozat, melyben minden folyamat az utána következő folyamat által foglalt erőforrásra vár, a sorozat utolsó tagja pedig a sorozat első tagjára.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Megelőzés, elkerülés: Mi a különbség a holtpont megelőzése (prevention) és holtpont elkerülése (avoidance) között?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* megelőzése: olyan rendszert tervezünk, ahol nem teljesülnek a holtpont feltételei, így elvileg sem lehet holtpont.&lt;br /&gt;
* elkerülése (pl. bankár algoritmus): A rendszer minden erőforrásigény kielégítése előtt mérlegeli, hogy nem vezet-e holtpontveszélyre a kérés teljesítése, más szóval fennmarad-e a biztonságos állapot.&lt;br /&gt;
&lt;br /&gt;
* ( Kölcsönös kizárás minimálisra csökkentése: lehetőleg többpéldányos erőforrásokat alkalmazunk, ahol ez nem lehetséges, ott a hozzáférést megpróbáljuk oszthatatlan műveletté tenni.&lt;br /&gt;
* Foglalva várakoztatás megszüntetése: Ha minden folyamat betartja a szabályt, miszerint az egyidejűleg szükséges valamennyi erőforrását egyetlen rendszerhívással kéri el, akkor elkerülhető a foglalva várakoztatás. Ennek ára van: az erőforrás-kihasználtság romlása.&lt;br /&gt;
* Nincs erőszakos erőforrás-elvétel kiküszöbölése: Ha menthető állapotú erőforrásaink vannak, akkor megtehetjük, hogy elvesszük egy adott folyamat erőforrását és egy másiknak adjuk, majd annak lefutása után visszaadjuk a régi állapotában az erőforrást az első folyamatnak.&lt;br /&gt;
* Körkörös várakozás megakadályozása: A folyamatok megegyeznek az erőforrások sorszámozásában, minden folyamat csak nagyobb sorszámú erőforrást igényelhet azoknál az erőforrásoknál melyeket birtokol. Ekkor biztosan nem alakulhat ki kör.)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Fájlrendszerek===&lt;br /&gt;
&lt;br /&gt;
====Fájl: Mi a fájl az operációs rendszer szempontjából? (háttértár-kezelés)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* a fájl a permanens táron az adattárolás logikai egysége, az operációs rendszer feladata a logikai egységek (fájlok) leképzése valódi fizikai egységekre, ez az OS-ben egy többszintü réteges rendszer&lt;br /&gt;
* Absztrakt adattípus (objektum, fájl mutató).&lt;br /&gt;
* Adat, név (name - elnev. konvenciók), típus (type - kezelés módja) tulajdonságok (attributes). Tulajdonosok, jogosultságok. Hozzáférési időpontok&lt;br /&gt;
* Kölcsönös kizárás (file locking)&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Háttértáron lévő lapok: Milyen részidőkből áll össze a háttértáron levő lapokhoz való tényleges hozzáférési idő? Kis vagy nagy lapok használata esetén kapunk &amp;quot;jobb&amp;quot; byte hozzáférést?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* adatátviteli sebesség + fejmozgás sebessége + lemezek forgási sebessége&lt;br /&gt;
* nagy lapok esetén ( mert így közvetlenül egymás után helyezkednek el az összetartőző adatok így nem kell a fejnek &amp;quot;ugrálnia&amp;quot; )&lt;br /&gt;
* Először a laptáblából kell kikeresni a lap bejegyzését, és konstatálni, hogy nincs hozzá fizikai lap rendelve. Majd, ki kell választani egy szabad fizikai lapot (ha nincs, ki kell vinni egyet háttértárra), a szabad helyre beolvasni a lapot, majd újraindítani a laphibát okozó utasítást. Ezek közül a háttértárról olvasás nagyságrendekkel lassabb a többinél, ezért lényegében ez határozza meg a teljes hozzáférési időt.&lt;br /&gt;
* Ha csak a háttértáron lévő lapokat nézzük, akkor, mivel kisebb lapot gyorsabban lehet beolvasni, ezért kisebb lapoknál gyorsabb a hozzáférés. Ha egy folyamat teljes munkahalmazát nézzük, akkor viszont a kisebb lapok több adminisztrációs költséggel járnak (gyakrabban kell háttértárhoz fordulni), és átlagban a nagyobb lapok adnak jobb eredményt.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Indexelt tárolás: Sorolja fel az indexelt tárolás (indexed allocation) előnyeit és hátrányait! (Fájlrendszer-leképzés)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Szekvenciális és indexelt elérésre is alkalmas.&lt;br /&gt;
* Sérülékeny (az index blokkok sérülése a fájlt elérhetetlenné teszi).&lt;br /&gt;
* Az index blokkokat viszont könnyű többszörözni (replikálni).&lt;br /&gt;
* Sok fejmozgást okoz (seek), a blokkok el vannak szórva a diszken.&lt;br /&gt;
* Itt is lehet a láncolt listás töredezettség mentesítéshez hasonló algoritmusokat használni a fejmozgás minimalizálására.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====RAID: Sorolja fel a RAID technika leglényegesebb elemeit!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Használjunk több merevlemezt egyszerre.&lt;br /&gt;
* Több redundáns alkalmazása növeli a megbízhatóságot.&lt;br /&gt;
* Több párhuzamos használata növeli a sebességet.&lt;br /&gt;
* Hozzunk létre egy virtuális diszket a fizikai diszkekből.&lt;br /&gt;
* Redundant Array of Inexpensive Disks: több lemez összekapcsolása.&lt;br /&gt;
* A RAID-0 esetében két lemezre vannak szétosztva az adatok, így egyetlen fájlt kétszer akkora sebességgel lehet írni (a két felét parhuzamosan).&lt;br /&gt;
* A RAID-1 esetében ugyanazt az adatot tároljuk le a két lemezen, így gyorsabb nem lesz, de az egyik lemez hibája esetén visszanyerhetőek az adatok.&lt;br /&gt;
* Megjegyzés: ez csak példa, több lemezzel is lehet csinálni, a sebesség/tárhely/hibatűrés között különböző kompromisszumokat elérve.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====RAID0 vs. RAID1: Hasonlítsa össze két azonos diszkből álló RAID0 és RAID1 tömb tulajdonságait! Hogyan alakul a hozzáférési idő, az adatátviteli sebesség és a megbízhatóság egyetlen diszkhez képest a két esetben?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
RAID 0-1 szabványok általában SW implementációval és kevés (2db) diszkkel&lt;br /&gt;
* RAID 0 (striped disks):&lt;br /&gt;
** Több diszk párhuzamos használata;&lt;br /&gt;
** file részei N diszkre kerülnek;&lt;br /&gt;
** Az egyes részek egymástól függetlenül elérhetők&lt;br /&gt;
** A diszkek tárolókapacitása összeadódik&lt;br /&gt;
** N azonos diszk esetén a RAID 0 virtuális diszk olvasásai és írási adatátviteli sebessége maximum N-szeres közelébe nő.&lt;br /&gt;
** A hozzáférési idő közel eléri egy diszk hozzáférési idejét.&lt;br /&gt;
** Bármelyik diszk meghibásodása esetén az adat elveszik&lt;br /&gt;
* RAID 1 (mirroring):&lt;br /&gt;
** Több diszk redundáns használata.&lt;br /&gt;
** A file minden része minden (N) diszkre kikerül.&lt;br /&gt;
** Azonos diszkeket feltételezve a tárolóterület egy diszk tárolóterületével azonos.&lt;br /&gt;
** Az adatátviteli sebesség lassabb, mint egy diszk sebessége.&lt;br /&gt;
** A hozzáférési idő nő.&lt;br /&gt;
** Speciális esetben az olvasási sebesség N-szeresre nőhet, feltételezve a diszk meghibásodásának más módon történő észlelését (nem kell az azonosságot ellenőrizni többségi szavazással).&lt;br /&gt;
** Egy működőképes diszk esetén az adat elérhető.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====RAID5: Adja meg az M (M pozitív egész szám) diszket tartalmazó RAID5 tömb tulajdonságait! (hibatűrés és sebesség)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* RAID 5 (block interleaved distributed parity).&lt;br /&gt;
* Több diszk redundáns és párhuzamos használata&lt;br /&gt;
* Adat és paritás elosztása N+1 diszkre.&lt;br /&gt;
** A sebesség tekintetében közel áll az N diszket használó RAID 0-hoz (HW támogatás esetén).&lt;br /&gt;
** 1 diszk meghibásodása esetén az adat elérhető.&lt;br /&gt;
** 2 vagy több diszk meghibásodása esetén az adat elveszik.&lt;br /&gt;
** Az adat nem feltétlenül állítható helyre. (Csendes/néma hibák (silent error). A 2. meghibásodás észlelése a tömb újraépítése során)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====RAID5: Miért előnyös és miért hátrányos RAID5 használata?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* + N azonos diszk esetén az olvasási és írási adatátviteli sebessége maximum N-szeres közelébe nő.&lt;br /&gt;
* + 1 diszk meghibásodása esetén az adat elérhető.&lt;br /&gt;
* - 2 vagy több diszk meghibásodása esetén az adat elveszik.&lt;br /&gt;
* - Az adat nem feltétlenül állítható helyre. (Csendes/néma hibák (silent error).&lt;br /&gt;
* -Bonyolultabb, mint a Raid 0/1, ezért hardveresen valósítják meg, ami viszont drága&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====RAID6: Adja meg a 8 darab 1 Tbyte-os HDD-ből álló RAID6 tömb tárolókapacitását!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
6 TB. (Adat és paritás elosztása N+2 diszkre. A kapacitása N diszk tároló kapacitásával egyenlő.)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====RAID6: N db azonos diszkből álló RAID6 tömb esetén a tömb tárolókapacitása és sebessége (nagy fájlok írása/olvasása során elérhető adatátviteli sebesség) hogyan viszonyul az egyetlen diszk azonos adataihoz?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* RAID 6 (block interleaved dual distributed parity)&lt;br /&gt;
* Több diszk redundáns és párhuzamos használata.&lt;br /&gt;
* Adat és paritás elosztása N+2 diszkre.&lt;br /&gt;
** A sebesség tekintetében közel áll az N diszket használó RAID 0-hoz (HW támogatás esetén).&lt;br /&gt;
** 2 diszk meghibásodása esetén az adat elérhető.&lt;br /&gt;
** 3 vagy több diszk meghibásodása esetén az adat elveszik.&lt;br /&gt;
** Az adat nagyobb valószínűséggel állítható helyre a RAID 5-höz képest&lt;br /&gt;
* Minimum négy lemezre van szükség a RAID 6 működéséhez. The capacity of the array is (N-2) times the size of the smallest member disk for the array of N disks.&lt;br /&gt;
* Az olvasási sebesség (N-2)-szerese egy lemez olvasási sebességének - two disks in the row hold a parity which is useless to read. Such read speed values are roughly the same as in RAID 5.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Tárolás egysége: Mi a logikai és mi a fizikai tárolás egysége a permanens táron?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* logikai egység: fájl (file)&lt;br /&gt;
* fizikai egység: adatblokkok (cilinder, sáv és szektor együtt azonosítja az írható/olvasható adatblokkot; OS képzi le a logikaiakat fizikaiakra)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Folyamatok, szálak===&lt;br /&gt;
&lt;br /&gt;
====Bernstein feltétele: Mikor lehet két tevékenységet (utasítássorozatot) párhuzamosan végrehajtani (Bernstein)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Bernstein feltétele:&lt;br /&gt;
* Legyen &amp;lt;math&amp;gt; P_i &amp;lt;/math&amp;gt; és &amp;lt;math&amp;gt; P_j &amp;lt;/math&amp;gt; két darabja egy programnak.&lt;br /&gt;
* A &amp;lt;math&amp;gt; P_i &amp;lt;/math&amp;gt; összes bemeneti változója &amp;lt;math&amp;gt; I_i &amp;lt;/math&amp;gt;, és az összes kimeneti változója &amp;lt;math&amp;gt; O_i &amp;lt;/math&amp;gt;, ugyanez &amp;lt;math&amp;gt; P_j &amp;lt;/math&amp;gt; -re &amp;lt;math&amp;gt; I_j &amp;lt;/math&amp;gt; és &amp;lt;math&amp;gt; O_j &amp;lt;/math&amp;gt;.&lt;br /&gt;
* A két program párhuzamosan végrehajtható (vagyis független), ha: &amp;lt;math&amp;gt; I_j \bigcap O_i = 0 &amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt; I_i \bigcap O_j = 0 &amp;lt;/math&amp;gt; és &amp;lt;math&amp;gt; O_i \bigcap O_j = 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Feladatok (task) együttműködése: Hasonlítsa össze a közös memórián illetve az üzenetváltáson alapuló folyamatok közti együttműködést!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Közös memórián keresztül történő adatcsere esetén az együttműködő folyamatok mindegyike saját címtartományában lát egy közös memóriát. A közös memória elérését valamilyen adatátviteli rendszer teszi lehetővé. Üzenetváltásos adatcsere esetén a folyamatoknak nincs közös memóriája. Az adatátviteli rendszer most a logikai processzorokat kapcsolja össze. Rajta keresztül a folyamatok üzeneteket tudnak küldeni, illetve fogadni. Az üzenetküldésre a folyamatok logikai processzorainak utasításkészletében megfelelő utasítások állnak rendelkezésre. Ezek a Küld (Send) és a Fogad (Receive) műveletek.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Folyamat: Definiálja a &amp;quot;folyamat&amp;quot; (process) fogalmát!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Egy program futás alatt álló példánya a folyamat.&lt;br /&gt;
* saját kód, adat, halom, verem&lt;br /&gt;
* A folyamatok nem férnek hozzá egymás lapjaihoz (védettek más folyamatoktól)&lt;br /&gt;
&lt;br /&gt;
* végrehajtás alatt álló program (program maga a végrehajtható kód), amely folyamat virtuális címterébe van leképezve&lt;br /&gt;
* folyamat egy szála az, ami éppen fut egy CPU-n, és nem maga a folyamat&lt;br /&gt;
* minden folyamathoz tartozik legalább egy szál, ami elinduláskor elkezdi futtatni a program main metódusát&lt;br /&gt;
* privát virtuális címtér (virtuális memóriacímek készlete, amiket a folyamat használhat)&lt;br /&gt;
* tartozik hozzá egy egyedi folyamatazonosító (process ID)&lt;br /&gt;
* rendszererőforrások listája, melyekhez a folyamat összes szála hozzáfér&lt;br /&gt;
* a folyamat virtuálisan összefüggő memóriát lát (virtuális memória) (valójában az összefüggő memóriaterület ritka)&lt;br /&gt;
* háttértárolóra is kiírható (swapping)&lt;br /&gt;
* A folyamat által látott logikai címtartomány, és a ténylegesen használt fizikai címtartományok teljesen elkülönülnek&lt;br /&gt;
* Folyamatok megoszthatnak memóriaterületeket olvasás- vagy akár írás- és olvasás-hozzáféréssel (Az ilyen memória területek több folyamat virtuális címtartományába vannak belapozva)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Folyamatok közötti kommunikáció: Soroljon fel legalább 4 IPC (Inter-process communication) megoldást!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Jelzés&#039;&#039;&#039;: rendszerüzenetek küldése és fogadása a folyamatok között, jellemzően utasítások továbbítása egyik folyamattól a másiknak&lt;br /&gt;
* &#039;&#039;&#039;Üzenetsor&#039;&#039;&#039;: aszinkron kommunikációs forma, mely során a küldő és fogadó közvetlen interakciója nem szükséges, az üzenetek addig tárolódnak a sorban amíg a címzett fel nem dolgozza azokat vagy a sor meg nem telik&lt;br /&gt;
* &#039;&#039;&#039;Szemafor&#039;&#039;&#039;: absztrakt struktúra amely a folyamatok közötti közös erőforrásokért való hozzáférést vezérli&lt;br /&gt;
* &#039;&#039;&#039;Közös memória&#039;&#039;&#039;: ugyan az a memóriaterület kerül kiosztásra több különböző folyamatnak, írási és olvasási joggal egyaránt&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Forrás&#039;&#039;: http://en.wikipedia.org/wiki/Inter-process_communication&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Folyamatok vs. szálak: Mi az eltérés a folyamatok illetve a szálak között, és milyen előnnyel jár a szálak alkalmazása?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A szálak lényegében párhuzamos végrehajtású, közös memóriát használó programrészek a folyamaton belül (egy program végrehajtása több szálon futhat). A szálaknak saját logikai processzoruk van, azonban memóriáik nincsenek elkülönítve, közös logikai memóriát használnak, azaz a kódon és a változókon osztoznak. Emiatt az operációs rendszer lényegesen gyorsabban tud végrehajtani egy átkapcsolást a szálak között, mint a folyamatok között.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Java-szálak: Milyen módokon képezheti le a JAVA virtuális gép a JAVA natív szálakat a hoszt operációs rendszer folyamataira/szálaira?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A JAVA virtuális gép egy folyamat a hoszt operációs rendszeren belül. A JAVA szálak feleltethetők meg a hoszt operációs rendszer szálainak, ez többnyire one-to-one (JAVA szál egyben OS szál is) napjainkban. (https://wiki.sch.bme.hu/pub/Infoalap/OpRe/20100507_ZH_megoldas.pdf)  &lt;br /&gt;
Kovácsházy Tamás válasza:&lt;br /&gt;
7. fólia, 11. fólia:&lt;br /&gt;
JAVA (VM a folyamat, VM-en belül szál):&lt;br /&gt;
* Thread osztályból származtatva&lt;br /&gt;
* Runnable interface megvalósítása&lt;br /&gt;
* A JAVA platform-specifikusan valósítja meg a szálat:&lt;br /&gt;
* Natív OS specifikus szál (one-to-one, tipikus).&lt;br /&gt;
* JAVA specifikus szálak (many-to-one) egy natív OS szálra vagy folyamatra leképezve.&lt;br /&gt;
* many-to-many leképzés (erőforrás szempontok miatt, egyre ritkább).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====PRAM: Mi történik a PRAM modellben írás-írás ütközés esetén?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Az írás-írás ütközésekor valamelyik művelet hatása érvényesül, a két beírni szándékozott érték valamelyike írja felül a rekesz tartalmát (versenyhelyzet), harmadik érték nem alakulhat ki.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Processzor-affinitás: Mit állítunk be, ha egy szálnak beállítjuk a processzor affinitását, és miért lehet arra szükség?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* processzoraffinitás: minden szál rendelkezik egy maszkkal, amely kijelöli, hogy a szál mely processzorokon képes futni&lt;br /&gt;
* szerepe: ez alapján dől el, hogy a szál mely processzoron fog futni&lt;br /&gt;
* ütemezésnél: multiprocesszoros esetben a processzor kiválasztása a processzor-affinitás alapján történik&lt;br /&gt;
* A feladat más processzorra, vagy processzormagra kerülése csökkenti a végrehajtás sebességét (pl. cache-elésnél) &amp;gt;&amp;gt; Cél: A feladatot ugyanazon a végrehajtó egységen tartani - Laza vagy kemény processzor affinitás (soft or hard processor affinity).&lt;br /&gt;
** Laza: Nincs garancia, de törekszik rá az OS (többnyire alapeset)&lt;br /&gt;
** Kemény: Biztosan ugyanazon a CPU-n marad (rendszerhívással)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Szál: Definiálja a &amp;quot;szál&amp;quot; (thread) fogalmát!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* párhuzamos végrehajtású, közös memóriát használó programrészek a folyamaton belül (egy program végrehajtása több szálon futhat). A szálaknak saját logikai processzoruk és saját vermük van, azonban memóriáik nincsenek elkülönítve, közös logikai memóriát használnak, azaz a kódon és a változókon osztoznak, vagyis egymás adatait olvashatják és írhatják. Emiatt az operációs rendszer lényegesen gyorsabban tud végrehajtani egy átkapcsolást a szálak között, mint a folyamatok között.&lt;br /&gt;
* A folyamat egy szála az, ami éppen fut egy CPU-n (ami ütemezésre kerül), és nem maga a folyamat.&lt;br /&gt;
* Minden folyamathoz tartozik legalább egy szál, ami elinduláskor elkezdi futtatni a program main metódusát (szál nélkül a folyamat programja nem futhat).&lt;br /&gt;
* szálak még véletlenül sem hivatkozhatnak más folyamatok címterére, hacsak a másik folyamat nem teszi elérhetővé privát virtuális címterének egy részét megosztott memóriaszakaszként (file mapping object a Windows API-ban), vagy - Windows-nál - hacsak egyik folyamatnak nincs joga megnyitni más folyamatot, hogy olyan folyamatok közti memóriafüggvényeket használjon, mint a ReadProcessMemory vagy WriteProcessMemory&lt;br /&gt;
* A szál önmagában szekvenciális kód, a végrehajtás legkisebb egysége. Egy adott folyamat szálainak közös az adat- és kódszegmensük, a halmuk (heap), és az egyéb erőforrásokat is közösen használják, de saját virtuális CPU-t látnak, és saját veremmel rendelkeznek.&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Védelmi tartományok: Mi a különbség a statikus és a dinamikus védelmi tartományok között?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
	 Statikus védelmi tartományok esetén az egy folyamathoz tartozó védelmi tartomány a folyamat végrehajtása során nem változik, míg dinamikus védelmi tartományok esetén igen.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Virtuális gép: Mi a virtuális gép koncepció lényege?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* A programok elől az operációs rendszer elfedi a hardver implementációs részleteit, és kibővíti azt plusz funkciókkal.&lt;br /&gt;
* Az op.rendszer egy olyan réteget képez a hardver fölött, mely elrejti annak körülményességét és bonyolultságát a programozó elől és kibővíti a hardver szolgáltatását. A felhasználó így egy sokkal kellemesebb virtuális gépet (virtual machine, extended machine) lát.&lt;br /&gt;
* Az operációs rendszer egy kényelmesen kezelhető virtuális gépet jelenít meg a felhasználói és a programozói felületen.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Jogosultságok===&lt;br /&gt;
&lt;br /&gt;
====Belső biztonság: Mi a belső biztonság?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Belső biztonság = védelem. Védelemnek nevezzük az eljárásoknak és módszereknek azon rendszerét, amely lehetőséget teremt a számítógép erőforrásainak programok, folyamatok illetve felhasználók által történő elérésének szabályozására.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Engedélyezés: Definiálja az engedélyezés (authorization) fogalmát!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* jogosultság ellenőrzése: milyen adatokat és szolgáltatásokat érhet el ez a személy?&lt;br /&gt;
* Hozzáférés-szabályozási listák (Access Control List, ACL)&lt;br /&gt;
* Alapelv: mindig csoportnak osztunk jogot&lt;br /&gt;
* Pl. biztonsági házirend, fájl ACL&lt;br /&gt;
&lt;br /&gt;
TODO!!!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Jogosultság + engedélyezési sémák: Mi a jogosultság fogalma, mi a kapcsolata az engedélyezési sémák többi alapfogalmával?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* A jogosultság egy reláció a szereplők és védett objektumok között.&lt;br /&gt;
* engedélyezés ált. sémáinál: szereplő&amp;gt;&amp;gt;&amp;gt;szereplőt leíró adatszerkezet&amp;gt;&amp;gt;&amp;gt;biztonsági szabályzat (policy), JOGOSULTSÁG&amp;gt;&amp;gt;&amp;gt;védett objektumok TODO&lt;br /&gt;
* Jogosultságkezelés alapjai: A rendszer működése során&lt;br /&gt;
** A szereplők műveleteket kezdeményeznek&lt;br /&gt;
** A műveletek kontextusa tartalmazza a szereplő azonosítóját, a célobjektumot és az elvégzendő művelet fajtáját&lt;br /&gt;
** A jogosultsági döntő komponens kiértékeli kontextust és engedélyezi vagy megtiltja a műveletet&lt;br /&gt;
** A jogosultsági végrehajtó komponens biztosítja, hogy a döntő által hozott döntés érvényre jusson&lt;br /&gt;
* NT: SMR (Secure Reference Monitor) - objektumok elérési jogosultságainak ellenőrzése&lt;br /&gt;
* NT: Az LSA a SAM segítségével azonosítja a felhasználót és jogosultságait. Ha a felhasználó jogosult bejelentkezni, a logon elindítja a számára kijelölt shellt&lt;br /&gt;
* UNIX: hozzáférési jogosultságok (owner, group, others, read, write, execute)&lt;br /&gt;
* Engedélyezés általános sémái: &amp;gt;&amp;gt;Szerep alapú hozzáférés-vezérlés &amp;gt;&amp;gt;Hozzáférési jogosultság listák&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Külső biztonság: Mit takar a külső biztonság fogalma?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Annak mértéke, hogy mennyire lehetünk biztosak a számítógépes rendszer, illetve a rendszerben tárolt adatok sérthetetlenségében.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Művelet kontextusa: Engedélyezési rendszerekben mit tartalmaz egy művelet kontextusa? (Felhasználó- és jogosultságkezelés)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A műveletek kontextusa tartalmazza a szereplő azonosítóját, a célobjektumot és az elvégzendő művelet fajtáját.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hibakeresés===&lt;br /&gt;
&lt;br /&gt;
====DTrace: Mi a Solaris DTrace megoldás célja?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
dinamikus hibakereső rendszer, nyomkövető eszköz, amivel a rendszer és a programok működését futási időben lehet megfigyelni.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Memória===&lt;br /&gt;
&lt;br /&gt;
====32 bit: 32 bites kliens Windows operációs rendszer maximum mennyi fizikai memóriát kezelhet, és miért?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Legfeljebb 4 GB-ot (bár néha kevesebbet lát az OS, mert a memóriatartomány felső részére I/O eszközöket szoktak berakni, ld. pl. videókártya-memória...): &#039;&#039;&amp;quot;kliens Windowsok nem használják a gépben lévő PAE támogatást, mert az a tapasztalat, hogy a kliensekben lévő eszközök meghajtói nem kezelik le rendesen a 4 GB-nál több fizikai memóriát&amp;quot;&#039;&#039;. &lt;br /&gt;
(https://wiki.sch.bme.hu/pub/Infoalap/OpRe/02-opre-windows-memoria.pptx)&lt;br /&gt;
(nem támogatják a PAE-t eleve, csak patch-csel)&lt;br /&gt;
(_&amp;quot;However, &amp;quot;client&amp;quot; versions of 32-bit Windows (Windows XP SP1 and later, Windows Vista, Windows 7) limit physical address space to the first 4 GB for driver compatibility and licensing reasons, even though these versions do run in PAE mode if NX support is enabled.&amp;quot;_ - http://en.wikipedia.org/wiki/Physical_Address_Extension)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====32 bit: 32 bites szerver Windows képes-e 4 GB-nál több fizikai memória kezelésére? Válaszát indokolja!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Igen, PAE (Physical Address Extension) támogatás segítségével (ezzel lehet 32 bites címbuszú CPU-val is 64 GB memóriát kezelni a maximális 4 GB helyett).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====32 bit: 32 bites Windows használata esetén egy felhasználói folyamat maximum mekkora virtuális címteret használhat?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Alapból 2GB felhasználói módú címterületet használhat, ez a /3GB kapcsolóval 3 GB felhasználói címterületre bővíthető.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====32 bit: 32 bites Windows szerver operációs rendszerek képesek-e 4 GB-nál több fizikai memória kezelésére? Indokolja válaszát!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Igen, PAE (Physical Address Extension) támogatás segítségével.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====32 bit: 32 bites x86-os (Windows) esetén mekkora a felhasználói és a rendszer mód címtartomány mérete?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Alapból 2GB felhasználói módú és 2GB kernel címterület van, ezt a /3GB kapcsolóval 3GB felhasználói és 1GB kernelre lehet módosítani.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Bélády-anomália: Mit nevezünk Bélády-anomáliának?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
	 FIFO algoritmusnál egyes esetekben, ha a munkahalmaz méretét növeljük, a várakozásokkal ellentétben a laphibák száma is nő.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Címfordítás: Hogyan történnek a címfordítások, ha az OS szegmens- és lapszervezést is használ a memóriánál?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
CPU --&amp;gt; Segmentation unit --&amp;gt; Paging unit --&amp;gt; Physical memory&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Címfordítás: Milyen címtranszformációk történnek együttes szegmens- és lapszervezésű memória használata során?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* CPU &amp;gt;&amp;gt;&amp;gt;[Logical Address]&amp;gt;&amp;gt;&amp;gt; &#039;&#039;&#039;Segmentation Unit&#039;&#039;&#039; &amp;gt;&amp;gt;&amp;gt;[Linear Address]&amp;gt;&amp;gt;&amp;gt; &#039;&#039;&#039;Paging Unit&#039;&#039;&#039; &amp;gt;&amp;gt;&amp;gt;[Physical Address]&amp;gt;&amp;gt;&amp;gt; Physical Memory (http://portal.mit.bme.hu/?l=oktatas%2Ftargyak%2Fvimia219%2Fjegyzet%2F2011%2Fslides_17_memory.pdf)&lt;br /&gt;
* https://wiki.sch.bme.hu/pub/Infoalap/OpRe/oprewiki1.pdf, 48. oldaltól.&lt;br /&gt;
* Változó méretű szegmensek fix méretű lapokat tartalmaznak. Kicsi mind a belső, mind a külső tördelődés. A cím felépítése: (szegmens szám, lapszám, lapon belüli eltolás)&lt;br /&gt;
* Hasonlít a szegmensszervezéshez és a kétszintű lapszervezéshez: A memóriában szegmensek vannak ugyan, de ezek lapokból épülnek föl. Van szegmenstábla, és minden bejegyzéséhez tartozik egy laptábla is. Külső töredeződés nincs, belső töredeződés minimális (szegmensenként átlag fél lap); ez a kombinált módszer egyesíti a két módszer előnyeit&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Lapszervezés, keret tábla: Lapszervezés esetén mit tartunk nyilván a keret táblában (frame table)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Az üres kereteket (frames).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Logikai vs. fizikai memória: Mi a különbség a logikai és a fizikai memória között?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A logikai memória a fizikai tár leképezve, ráadásul a leképezés a végrehajtás során változhat is.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====MMU: Mi a processzor Memory Management Unit (MMU) komponensének a feladata?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
	 * Speciális HW a CPU-ban&lt;br /&gt;
* Memória állapotának nyilvántartása&lt;br /&gt;
** Tulajdonos folyamat azonosítója&lt;br /&gt;
** Hozzáférési jogosultságok (ACL)&lt;br /&gt;
** cache-elhetőség, ha van cache (pl. DMA)&lt;br /&gt;
* Virtuális memória leképzése fizikai memóriára&lt;br /&gt;
** Pl. Translation Lookaside Buffer (TLB)&lt;br /&gt;
** Kontextusváltásnál ezt is kezelni kell (ha van)&lt;br /&gt;
** Pagefile vagy SWAP (HDD)&lt;br /&gt;
* Memóriavédelem&lt;br /&gt;
** Tiltott memória hozzáférés megakadályozása vagy legalább jelzése (ACL alapján)&lt;br /&gt;
** General Protection Fault (GPF) a Windows-ban&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Modified/dirty bit, referenced/used bit: Mi a modified/dirty bit és a referenced/used bit szerepe? (Virtuális memóriakezelés)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* laptáblában:&lt;br /&gt;
* Módosítás nyilvántartása (modified/dirty bit): minden memórialaphoz tartozik egy HW által kezelt bit (pl. a laptáblában) - betöltéskor törlik, módosításkor beállítják. Ha a dirty bit 1, akkor erre a lapra történt írási művelet, mióta a ﬁzikai memóriába került. Ezt a bitet a CPU tartja karban (automatikusan), ezzel az operációs rendszer munkáját segítve. 0 érték esetén a lapokat nem kell a diszkre kiírni, ha kiszorulnak a ﬁzikai memóriából (hiszen a tartalmuk a ﬁzikai memóriába helyezés óta változatlan, a diszk-en tárolt változat tehát továbbra is aktuális).&lt;br /&gt;
&lt;br /&gt;
* Hivatkozások nyilvántartása (referenced/used bit): Ha a refernced bit 1, akkor volt &amp;quot;mostanában&amp;quot; hivatkozás erre a lapra. Ezt is a CPU tartja karban. Ez a bit segít az operációs rendszernek, amikor el kell döntenie, hogy melyik lapot dobja ki a ﬁzikai memóriából, ha egy új lapnak nincs helye. A referenced=0 lapokból fog válogatni.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Page locking: Mit jelent és miért van szükség arra, hogy a virtuális tárkezelésnél egyes lapokat ideiglenesen a tárba lehessen &amp;quot;fagyasztani&amp;quot; (page locking)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Azt jelenti, hogy a lapcsere algoritmus nem lapozhatja ki a háttértárra az adott lapot. Ok: periféria-művelet van az adott lappal kapcsolatban.&lt;br /&gt;
* Azt jelenti, hogy bizonyos lapokat a memóriában tartunk, mert I/O műveletek hivatkozhatnak rá, és ilyenkor a memóriában kell lenniük, mert az I/O műveletek fizikai memóriacímeket használnak.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Referenced/used bit: Mi a referenced/used bit szerepe? (Virtuális memóriakezelés)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Bizonyos algoritmusok igénylik a lapra történő hivatkozások figyelését is, ami ugyancsak hardvertámogatással hatékony. A laptáblában erre a célra is fenntarthatunk egy bitet. Ezt a hivatkozott bitet (referenced bit, used bit, R bit) a címképző hardver állítja be minden esetben, amikor az adott lapon belüli címre történik hivatkozás. A bitet az operációs rendszer törli adott időnként, vagy eseményhez (például laphiba) kötötten.&lt;br /&gt;
* Hivatkozások nyilvántartása (referenced/used bit): OS adott időnként és/vagy adott eseményekre törli - használat esetén beállítják.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====TLB: Mi az a Translation Lookaside Buffer, fizikai címcsatolásnál mi a szerepe?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A virtuális címet fizikai címre a laptábla segítségével lehet fordítani; de ez lassú, plusz egy memória-hozzáférést jelent. Ezért a lapkezdőcímek egy részét egy asszociatív cache-ben eltárolják, ez a TLB. Címfordításkor párhuzamosan indul a keresés a laptáblában és a TLB-ben, ha az egyikben megtalálta, akkor kész.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====TLB: Mire szolgál a Translation Lookaside Buffer és mi a szerepe a fizikai cím kiszámításánál (virtuális címképzés)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A virtuális címet fizikai címre a laptábla segítségével lehet fordítani; de ez lassú, plusz egy memória-hozzáférést jelent. Ezért a lapkezdőcímek egy részét egy asszociatív cache-ben eltárolják, ez a TLB. Címfordításkor párhuzamosan indul a keresés a laptáblában és a TLB-ben, ha az egyikben megtalálta, akkor kész.&lt;br /&gt;
&lt;br /&gt;
(Szerintem előbb a TLB-ben keresi, aztán ha ott nincs, csak utána nézi a laptáblát.)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Tördelődés (külső vs. belső): Mi a különbség a külső és belső tördelődés között? (Memória foglalás)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
	A tördelődött memóriaterületet külső tördelődés esetén az operációs rendszer szabadon hagyja, míg belső tördelődés esetén pedig odaadja egy olyan folyamatnak, aminek nincs igazából rá szüksége.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Vergődés: Adja meg a vergődés (trashing) definícióját!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A gyakori laphibák okozta teljesítménycsökkenést vergődésnek (thrashing) nevezzük. Az ellene való védekezés a munkahalmaz méretének jó megválasztása. Célszerű egy folyamatnak annyi lapot adni, amennyi szükséges az egyensúlyhoz, azaz ahány lapra hivatkozik a laphiba kiszolgálás ideje alatt (ugyanakkor nem sokkal többet, mert ekkor leromlik a multiprogramozás foka).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Vergődés: Mi az a vergődés, és hogyan védekezzünk ellene?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Ha több memóriára lenne szüksége a folyamatoknak, mint amennyi rendelkezésre áll, ezért túl gyakran keletkezik laphiba, és a processzor idejének nagy része haszontalan lapcserékkel telik.&lt;br /&gt;
* Védekezni ellene például azzal lehet, ha a laphiba-gyakoriság függvényében az ütemező változtatja a multiprogramozás fokát: ha kevés a memória, folyamatokat függeszt fel, és swappel ki; ha van elég, akkor épp ellenkezőleg.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===uc/OS-II===&lt;br /&gt;
&lt;br /&gt;
====Prioritás: A uC/OS-II-ben hány taszk tartózkodhat egy prioritási szinten és miért?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
1, mert így gyorsan eldönthető, hogy melyik a legmagasabb prioritású, futásra kész taszk.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prioritás: Egy prioritási szinten hány szál futtatását teszi lehetővé a uC/OS-II, miért?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
1, mert így gyorsan eldönthető, hogy melyik a legmagasabb prioritású, futásra kész taszk. Egy taszk = egy szál.&lt;br /&gt;
&lt;br /&gt;
(Magyarázat: egy taszk = egy szál; lásd http://video.bme.hu/media/video/Operacios_Rendszerek_08ea_20110301.wmv, 01:09:18 környékén&lt;br /&gt;
Röviden: a beágyazott rendszerek, kis OS-ek esetén (uC/OS-II, FreeRTOS, stb.) lényegében csakis szálakban gondolkozunk. Nincs MMU, csak egyetlen összefüggő fizikai memória van, nincs virtuális memória koncepció, a processzoron futó teljes alkalmazás (az egyetlen alkalmazás) egy nagy folyamat - nincs más folyamat! Ezenbelül tudunk threadeket futtatni. Single Address Space.)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Ütemezés===&lt;br /&gt;
&lt;br /&gt;
====Átbocsátó képesség: Adja meg az átbocsátó képesség definícióját és mértékegységét!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
*  (throughput) Mértékegység: munka/s, vagy 1/s&lt;br /&gt;
* Adott időegység alatt elvégzett feladatok száma. &amp;lt;math&amp;gt;\frac{\sum \textrm{elvegzett munkak}}{\textrm{ido}}&amp;lt;/math&amp;gt;&lt;br /&gt;
* A rendszerfeladatokat nem számoljuk.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Hosszú távú ütemezés: Adja meg a hosszú távú ütemezés célját!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Tipikusan a BATCH rendszerekben van jelen, és uj jobok végrehajtasának megkezdéseről (új folyamatok indítasárol) dönt. Az elvégzesre váro munkák közül a választas szempontja, hogy a rendszerben a CPU-intenzív es I/O-intenzív folyamatok aránya optimális legyen (optimalis job-mix fenntartasa).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Hosszú távú ütemezés: Definiálja a hosszú távú ütemezés fogalmát!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A hosszútávú ütemező feladata az elindított feladatok rendszerbe, illetve a &amp;quot;futásra kész&amp;quot; várakozási sorba való beengedését szabályozni. Igyekszik a CPU-t és a perifériákat terhelő folyamatokat egyensúlyban tartani. Batch rendszerekre jellemző; a PC-k oprendszere általában azonnal indítja a folyamatokat, mikor azt a felhasználó kéri.&lt;br /&gt;
* feladata: A háttértáron várakozó feladatok közül kiválasztja azt, amelyiket el kell indítani.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Konvoj hatás: Mi a konvoj hatás, és a tanult ütemező algoritmusok közül melyekben jelentkezhet?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* igen nagy lehet az átlagos várakozási idő, mivel egy-egy hosszú CPU-löketű folyamat feltartja a mögötte várakozókat&lt;br /&gt;
* FCFS-nél (First-come, first-served) tapasztalható (pl. SJF (Shortest Job First) és RR algoritmus küszöböli ki)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Középtávú ütemezés: Adja meg a középtávú ütemezés célját!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Swapping, azaz a program a fizikai memória és a háttértár közti mozgatása.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Középtávú ütemezés: Mi a középtávú ütemező feladata?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Swapping, azaz a program a fizikai memória és a háttértár közti mozgatása.&lt;br /&gt;
&lt;br /&gt;
Szerintem inkább ez:&lt;br /&gt;
A rendszerben lévő feladatok memóriájának egyes éppen nem használt részeinek kiírása háttértárra.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Körülfordulási idő: Mi az a körülfordulási idő?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* TAT (Turnaround Time) -&amp;gt; Egy feladatra vonatkozóan a rendszerbe helyezéstől a teljesítésig eltelt idő.&lt;br /&gt;
* Mértékegység: s,&lt;br /&gt;
* t_(CPU,végrehajtási idő)+t_várakozás (Magában foglalja a ténylegesen munkával töltött időt és a várakozást is.)&lt;br /&gt;
* felhasználó minél előbb szeretné látni a végeredményt &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Megszakítás: Az éppen futó taszkot megszakítja egy IT. Preemptív OS esetén mindig a megszakított taszk fogja-e visszakapni a futási jogot? Miért?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Nem feltétlenül; például a preemptálás maga is úgy működik, hogy egy időzítő a szál quantumjának lejártakor megszakítást generál; ilyenkor értelemszerűen az ütemező általában nem ugyanazt a folyamatot választja ki futásra.&lt;br /&gt;
* Másik: Nem, mert akitől elvették a futás jogát az futásra kész állapotba fog kerülni és az ütemező dönti el, hogy melyik folyamat fogja megint megkapni a futást.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Megszakítás: Egy futó taszkra IT érkezik. Preemptív OS esetén az interrupt után mindenképpen &#039;ide&#039; térünk vissza?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Nem feltétlenül; például a preemptálás maga is úgy működik, hogy egy időzítő a szál quantumjának lejártakor megszakítást generál; ilyenkor értelemszerűen az ütemező általában nem ugyanazt a folyamatot választja ki futásra.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Preemptív ütemező: Mikor nevezünk egy ütemezőt preemptívnek? ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Ha az OS elveheti a futásjogot (a CPU-t) egy folyamattól/futó feladattól (interrupt).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rövid távú ütemezés: Mi a rövidtávú ütemezés, mikor jár környezetváltással?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Rövidtávú ütemezés: futó folyamat kiválasztása a futásra kész feladatok közül&lt;br /&gt;
* Ha a futó folyamatnak lejár az időszelete (csak preemptívnél), önként lemond a processzorról (együttműködő folyamatok), blokkoló rendszerhívást hajt végre (pl. I/O művelet), egy másik szál futásra kész állapotba kerül (bekövetkezik, amire várt, vagy újonnan elindítanak egy szálat), egy szál prioritása megváltozik, esetleg egy szál processzor-affinitása megváltozik.&lt;br /&gt;
* Környezetváltással akkor jár, ha másik szál választódik ki futásra, mint ami eddig futott. Pl. Windows NT alatt, ha a legmagasabb prioritási szinten pontosan egy folyamat van, akkor megtörténhet, hogy ugyanaz a szál fut tovább, és nem történik környezetváltás.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rövid távú ütemezés: Mikor fut a rövidtávú ütemező és mikor jár környezetváltással?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Ütemezés következhet be, ha&lt;br /&gt;
** a futó folyamat befejeződik,&lt;br /&gt;
** egy folyamat felébred, futásra késszé válik,&lt;br /&gt;
** a futó folyamat várakozni kényszerül (valamilyen esemény bekövetkezésére), illetve,&lt;br /&gt;
** a futó folyamat önként lemond a futás jogáról vagy pedig elveszik tőle.&lt;br /&gt;
* Az első és a harmadik esetben az ütemezés mindig környezetváltással jár, hiszen a következő futó folyamat egészen biztosan nem a korábban futott lesz. A másik két esetben előfordulhat, hogy az ütemezőnek nem kell másik folyamatot kiválasztania.&lt;br /&gt;
* Ha a futó folyamatnak lejár az időszelete (csak preemptívnél), önként lemond a processzorról (együttműködő folyamatok), blokkoló rendszerhívást hajt végre (pl. I/O művelet), egy másik szál futásra kész állapotba kerül (bekövetkezik, amire várt, vagy újonnan elindítanak egy szálat), egy szál prioritása megváltozik, esetleg egy szál processzor-affinitása megváltozik.&lt;br /&gt;
* Környezetváltással akkor jár, ha másik szál választódik ki futásra, mint ami eddig futott. Pl. Windows NT alatt, ha a legmagasabb prioritási szinten pontosan egy folyamat van, akkor megtörténhet, hogy ugyanaz a szál fut tovább, és nem történik környezetváltás.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Terhelés-végrehajtó egységek közötti megosztás: Sorolja fel a terhelés-végrehajtó egységek közötti megosztásának megoldásait! (Többprocesszoros rendszerek)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Master and slaves (egy CPU osztja ki a feladatokat)&lt;br /&gt;
* Self-scheduling / peering (minden CPU ütemez)&lt;br /&gt;
* Globális futásra kész sor&lt;br /&gt;
* Processzoronkénti futásra kész sor&lt;br /&gt;
**  Push alapú: OS kernel folyamat mozgatja a sorok között a feladatokat.&lt;br /&gt;
**  Pull alapú: Az idle állapotban (idle feladatot végrehajtó) CPU próbál a többi sorából feladatot kapni.&lt;br /&gt;
* Kettő kombinációja&lt;br /&gt;
** Összefüggő, párhuzamosan futtatható feladatok optimalizálása (pl. Gang scheduler)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Virtualizáció===&lt;br /&gt;
&lt;br /&gt;
====Hardveres virtualizáció: Mit jelent az, ha egy x86-os processzor hardveres virtualizáció támogatással rendelkezik?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A CPU utasításkészletének és üzemmódjainak olyan kiegészítése, amely lehetővé teszi a vendég operációs&lt;br /&gt;
rendszer kódjának módosítás nélküli futtatását. [?]&lt;br /&gt;
&lt;br /&gt;
(Speciális utasításokkal látják el a processzort, amit szoftveresen akár több 100 utasításon keresztül lehetne csak megoldani. ROSSZ(MZ))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Elrejti a gep fizikai tulajdonsagait a felhasznalok elol.&lt;br /&gt;
&lt;br /&gt;
Miert erdemes virtualizalni?&lt;br /&gt;
&lt;br /&gt;
-Lehet futtatni a gazda OS el nem kompatibilis alkalmazast.&lt;br /&gt;
&lt;br /&gt;
-Lehet biztonsaggal rendszergazda jogot adni mindennek, mert ugy se tud a gazda os-be kart tenni.&lt;br /&gt;
&lt;br /&gt;
-Konnyen at lehet masolni a virtualis gepet egy masik gepre.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Hosted vs. bare-metal: Miben különbözik egy hosted egy bare-metal típusú virtualizációs megoldástól?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
  Bare-metal esetén a VMM kezeli a HW erőforrásokat, míg hosted típusú esetén ezt a host OS végzi. &lt;br /&gt;
&lt;br /&gt;
videó:&lt;br /&gt;
http://video.bme.hu/media/video/Operacios_Rendszerek_20ea_20110418.wmv&lt;br /&gt;
00:16:45 körül&lt;br /&gt;
&lt;br /&gt;
Kétféle megközelítés:&lt;br /&gt;
&lt;br /&gt;
# Hosted: az operációs rendszerre telepítek egy virtualizációs szoftvert, ez beépül az operációs rendszerbe tipikusan kernel modulként, innentől a virtualizációs szoftver teszi lehetővé, hogy virtuális gépeket futtassak. Tipikusan a desktop megoldások (VMware Player, VirtualBox, Virtual PC, stb.)&lt;br /&gt;
# Bare-metal: a virtualizációs szoftver valós OS-szerű funkciókat valósít meg. Lényegében egy minimális funkciókészlettel rendelkező OS. A hardvert nem egy általános célú operációs rendszer kezeli, hanem a virtualizációs szoftver feladata az, hogy a hardver-erőforrásokkal gazdálkodjon, ő dönt az ütemezésről, ő dönt a memória-hozzáférésekről. Tipikusan szokott hozzá tartozni egy menedzsment operációs rendszer, egy menedzsment konzol, ami a távoli hozzáférést, virtuális gépek elindítását lehetővé teszi, és ott is ott tudom futtatni a vendég operációs rendszereket. Tipikusan szervermegoldások (VMware ESX Server, Xen Enterprise, MS Hyper-V).&lt;br /&gt;
&lt;br /&gt;
Fontos különbség: ki dönt a CPU-erőforrásról?&lt;br /&gt;
# van az OS-nek egy ütemezője, ő dönt arról, mikor, ki kapja meg a CPU-t. Dönthet úgy, hogy az időszeletet az alkalmazás kapja meg, a köv. időszeletet a virtualizációs szoftver/modul, ő magán belül pedig eldöntheti, melyik virtuális gépnek osztja a processzort, de alapvetően a host OS dönt arról, mi dönt az erőforrásról.&lt;br /&gt;
# arról, hogy ki kapja a CPU-t, a közvetlenül a hardver réteg felett lévő virtualizációs szoftver dönti el. Dönthet úgy, hogy a menedzsment OS kapja, dönthet úgy, hogy valamelyik virtuális gép kapja meg.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Paravirtualizáció: Mit jelent az, hogy egy virtualizációs megoldás paravirtualizációt használ a CPU virtualizálásához?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Módosítjuk a vendég OS forráskódját, hogy ne is akarjon &amp;quot;problémás&amp;quot; utasításokat hívni, hanem azok helyett azoknak megfelelő függvényeket hívjon a hypervisorban. (Ezzel egyszerűsödik a hypervisor implementálása, viszont csak úgy működik a módszer, ha módosítják a vendég OS forrását.)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Trap-and-emulate: Trap &amp;amp; emulate virtualizációs módszer használata esetén mi történik a vendég gép által kiadott nem privilegizált utasítással?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* nem privilegizált utasítások közvetlenül a valós CPU-n hajtódnak végre (no VMM intervention)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===UNIX===&lt;br /&gt;
&lt;br /&gt;
====Adminisztratív adatok: hol helyezzük el azokat az adminisztratív adatokat, amelyekre mindig szükség van, akkor is, ha a folyamatnak egyetlen lapja sincs a memóriában?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A proc struktúrában.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Adminisztratív adatok: UNIX-ban a folyamatokkal kapcsolatos adminisztratív adatok hogyan épülnek fel?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
TODO: rövidíteni.&lt;br /&gt;
&lt;br /&gt;
# adatok, melyek elsősorban akkor szükségesek, amikor a folyamat ténylegesen fut - bent van egy v. több lapja a memóriában, éppen ezekkel kapcsolatos utasításokat hajtunk végre. &amp;gt;&amp;gt; az u-területen található kontextusadatok. A folyamat címtér része. A folyamat nem férhet hozzá, de a folyamat saját címterében találhatók. Amikor a folyamatnak egyetlen lapja sincs a memóriában, hanem minden a háttértáron található, a folyamat nem fut, akkor az itt található adatokhoz a kernel sem tud hozzáférni, mivel ide csak azok az adatok kerülnek, melyek a folyamat futásakor kellenek! Pl. hozzáférés-szabályozási adatok: a folyamat szeretne valamilyen tevékenységet végrehajtani, szabad-e neki vagy sem? Másik példa: rendszerhívások állapotai: végrehajt egy rendszerhívást, amiben éppen tartózkodik, ezzel kapcsolatos állapotadatok, stb. Vagy: nyitott fájl adatok, fájlkezeléssel kapcsolatos adatok. UNIX-ban a fájlkezelést nagyon általánosan kell érteni. Minden, ami a fájlrendszer-interfészen keresztül zajlik, ahhoz tartozik egy nyitott fájl objektum, ami ennek adminisztrálására szolgál, ezek is az u-területen találhatók. Ezenkívül: számlázási, statisztikai adatok.&lt;br /&gt;
&lt;br /&gt;
# adatok, melyek elsősorban a folyamatok kezeléséhez szükségesek (amire a kernelnek bármikor szüksége lehet). Pl. folyamat alapvető azonosító adatai. Folyamat PID-je, szülőazonosító, stb. Folyamat ütemezésével kapcsolatos adatok, mi a folyamat aktuális futási állapota, mennyi a prioritása, prioritás kiszámolásához szükséges adatai, stb. Memóriakezelési adatok: folyamat memórialapjai bent vannak a memóriában, vagy épp kint vannak a háttértáron. Az u-terület címe, stb. &amp;gt;&amp;gt;&amp;gt; proc struktúra adatai: a process tábla egy eleme (ez a klasszikus rendszereknél ténylegesen egy tábla volt, ma bonyolultabb, pl. láncolt listás megvalósítás). A kernel címterének része. A kernel bármikor elérheti őket.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Adminisztratív adatok: Milyen adatstruktúrá(k)ban és milyen címter(ek)ben található(k) a folyamatok adminisztratív adata(i)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A folyamat futása során szükséges adatok az u-területen, mely a folyamat címterének része, illetve a folyamatok kezeléséhez szükséges adatok a proc struktúrában, mely a kernel címtér része.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Adminisztratív adatok: Sorolja fel a UNIX folyamatok legalább 4 alapvető adminisztratív adatát!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* PID (Process ID): egyedi, a folyamatot azonosító szám (PPID: szülő folyamat azonosítója)&lt;br /&gt;
* A folyamat állapota (fut, alszik, stb.; ütemezési információk (prioritás, CPU használat, nice érték) )&lt;br /&gt;
* Hitelesítők (UID, GID: a kapcsolódó felhasználó adatai)&lt;br /&gt;
* Memória-kezelési adatok (címleképezési térkép)&lt;br /&gt;
* Kommunikációs adatok (fájlleírók, jelzés információk)&lt;br /&gt;
* Statisztikák (erőforrás használat (számlázáshoz) )&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Alvási prioritás: UNIX alvási prioritásának ütemezését mi végzi?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Az alvási prioritást is az ütemező határozza meg, az alapján, hogy mire várakozik a folyamat, vagyis miért hajtott végre sleep() rendszerhívást. Kernel módban az ütemező nem veheti el a futási jogot, ezért amíg nem hajt végre sleep() hívást, addig nincs is szükség a prioritásának meghatározására.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Android: Az Androidban mikor és miért (adjon jellegzetes példát) terminálható egy alkalmazás?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Az alkalmazás erőforráshiány miatt bármikor terminálható, ezt az operációs rendszer automatikusan meg is teszi. Példa: ha nincs elég memória.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Belső szerkezeti elemek: Sorolja fel a UNIX operációs rendszer főbb belső szerkezeti elemeit!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* betöltő&lt;br /&gt;
* virtuálismemória-kezelő&lt;br /&gt;
* állományrendszer&lt;br /&gt;
* blokkos berendezés-meghajtó kapcsoló (+ a hozzá kapcsolódó eszközmeghajtók, pl.: lemezegység, szalagos meghajtó)&lt;br /&gt;
* karakteres berendezés-meghajtó kapcsoló (+ a hozzá kapcsolódó eszközmeghajtók, pl.: hálózat, nyomtató)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Csővezeték (pipe): Írjon le egy olyan konkrét UNIX shell parancssort, amely csővezetéket alkalmaz!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
ls -la | more&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====exec(): Mire szolgál a UNIX exec() rendszerhívás?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
exec(): új programkód betöltése egy folyamat címterébe&lt;br /&gt;
Azaz a fork() paranccsal létrehozunk egy új folyamatot, exec() paranccsal pedig betöltjük a folyamatba a kódot.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fájl-attribútumok: Sorolja fel a fontosabb UNIX fájl-attribútumokat!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Típus&lt;br /&gt;
* Linkek&lt;br /&gt;
* Eszköz, inode, méret...&lt;br /&gt;
* Időbélyegek&lt;br /&gt;
* Azonosítási és hozzáférés-szabályozási adatok&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fájlrendszeri bejegyzések: Sorolja fel a UNIX fájlrendszeri bejegyzések alapvető tulajdonságait (legalább hármat, ls -l oszlopok)!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* pl.: drwxr-xr-x 2 root root 4096 dec 22 12.27 txt&lt;br /&gt;
* sorrendben: I. UNIX-fájltípusok (pl. közönséges fájl (-), katalógus (d), szimbolikus link (l), stb.), II. hozzáférési jogosultságok (3*3-as bontásban - 1. hármas csoport a tulajdonos, a 2. a csoport, a 3. a többiek jogosultságait;  &#039;r&#039; az olvasás (read), a &#039;w&#039; az írás (write), az &#039;x&#039; pedig a végrehajtás (execute) jele), III. jogosultságok után egy szám áll (ez könyvtárak esetén azt mondja meg, hogy az adott könyvtár hány elemet tartalmaz, fájlok esetén azt tudhatjuk meg, hogy az adott fájlra hány hardlink mutat), IV. tulajdonos, V. méret (bájtokban), VI. utolsó módosítás dátuma, VII. fájl neve&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Felfüggesztett állapotok: Mik azok a felfüggesztett állapotok, mi a szerepük a UNIX-ban?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
felfüggesztve futásra kész, felfüggesztve alszik állapot A UNIX-ban egyfajta hosszú távú, felhasználói ütemezést jelentenek - a felhasználónak lehetősége van arra, hogy bizonyos folyamatokat a többi állapotból kiemeljen. Pl. Ctrl+Z billentyűkombinációval felfüggesztem a folyamatok futását. Innen valamikor visszahelyezzük futó állapotba.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Felhasználói mód, kernel kontextus: UNIX esetén milyen tevékenység zajlik felhasználói módban, kernel kontextusban?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Semmilyen!! &lt;br /&gt;
Megj.: Kernel kontextusban, felhasználói módban a program saját utasításait hajtjuk végre, a program saját adataival dolgozunk. Ennél fogva itt nincs értelme beszélni semmiről, mert a folyamat a kernel kontextusában nem hajthat végre semmit.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Felhasználói módból kernel módba váltás: Hogyan vált egy UNIX folyamat felhasználói (user) módból kernel módba?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Rendszerhívásokon keresztül.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Felhasználói módú prioritás: Sorolja fel milyen tényezők határozzák meg egy UNIX folyamat felhasználói módú prioritását (tradicionális UNIX ütemező esetén)!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Korábbi CPU-használat&lt;br /&gt;
* Futásra kész folyamatok száma (p_cpu &amp;quot;öregítésével&amp;quot;)&lt;br /&gt;
* nice érték (nice és renice parancsok)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Folyamatok állapotai: Milyen állapotai vannak a UNIX-folyamatoknak?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
# kiinduló állapot&lt;br /&gt;
# futásra kész&lt;br /&gt;
# kernel módban futó állapot&lt;br /&gt;
# felhasználói módban futó állapot&lt;br /&gt;
# alvó állapot&lt;br /&gt;
# zombi állapot&lt;br /&gt;
# felfüggesztve alszik&lt;br /&gt;
# felfüggesztve futásra kész&lt;br /&gt;
&lt;br /&gt;
 Ctrl+Z-vel felfüggesztett állapotba helyezem a folyamatot.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Folyamatok közötti kommunikáció: Soroljon fel legalább 4 UNIX folyamatok között kommunikációs megoldást!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* System V IPC: szemafor, osztott memória, üzenetsor&lt;br /&gt;
* Csővezeték és nevesített csővezeték&lt;br /&gt;
* Jelzések&lt;br /&gt;
* RPC&lt;br /&gt;
* Folyamat-nyomkövetés&lt;br /&gt;
* Szemaforok&lt;br /&gt;
* Üzenetsorok&lt;br /&gt;
* Osztott memória&lt;br /&gt;
* Hálózati, socketeken keresztüli kommunikáció&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Folyamatok közötti kommunikáció: Soroljon fel UNIX folyamatok közötti adatátviteli eszközöket (legalább hármat)!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* System V IPC: - szemaforok, - üzenetsorok, - osztott memória&lt;br /&gt;
* Jelzések: - aszinkron események keltése és kezelése&lt;br /&gt;
* Csővezetékek, nevesített csővezetékek: - FIFO kommunikáció a &amp;quot;rokonságban&amp;quot;&lt;br /&gt;
* Szemaforok: - a korábban megismert szinkronizációs megoldások&lt;br /&gt;
* Üzenetsorok: - diszkrét, típusos üzenetek folyamatok között&lt;br /&gt;
* Osztott memória: - azonos fizikai memóriaterület használata több folyamatban&lt;br /&gt;
* &amp;quot;hálózati&amp;quot; (socket) kommunikáció: - címzéssel és protokollokkal támogatott kommunikáció&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====fork(): Mire szolgál a fork() rendszerhívás?====&lt;br /&gt;
TODO: rövidíteni.&lt;br /&gt;
&lt;br /&gt;
Új folyamat létrehozására. A fork() hívásakor az aktuális folyamat, amely kiadta a rendszerhívást, megduplázódik (minden adata, verme, memórialapja, stb.), onnantól két példányban fog továbbélni, amelyek egymással szinte tökéletesen megegyeznek, kvázi klónozva van a folyamat, néhány apró különbség van csupán. De valójában a memóriaszervezés ügyes trükkje: semmit nem csinál azonkívül, hogy bizonyos adminisztratív adatokat megdupláz, ténylegesen nem másol semmit (memórialapokat)! Az így megduplázott folyamat memórialapjaihoz hozzárendel még egy folyamatot, és megjegyzi azt, hogy amíg ezek a folyamatok békésen tudnak egymás mellett dolgozni, addig dolgozzanak ugyanazon, de ha konfliktus van, akkor majd lemásoljuk ezeket a memórialapokat. &lt;br /&gt;
&lt;br /&gt;
Ha a fork() hívás 0-val tér vissza: a gyerek folyamat kódja fut tovább. Ha egy negatív számmal tér vissza, fork() hiba történt, nem tudtuk létrehozni az új folyamatot, le kell kezelni. Ha pozitív számot adott vissza, akkor az eredményben a gyerekfolyamat azonosítója található, itt a szülőfolyamat fut tovább.&lt;br /&gt;
 &lt;br /&gt;
Gyerek folyamat fut: az exec() az aktuális folyamat helyére betölt egy másik binárist. Az exec()-et meghívó folyamatnak az exec() kitörli a saját kontextusát, stb., betölt egy új programkódot, amit elkezd végrehajtani. (Kvázi mintha elindítana egy új folyamatot, de a folyamat már fut.) Ha nem sikerült betölteni a binárist (pl. nincs ilyen fájl), akkor hiba, visszatér az exec() is, egyébként nem: az új programkód utasításait hajtjuk végre.&lt;br /&gt;
Tehát folyamat létrehozása UNIX-ban két lépésben:&lt;br /&gt;
# fork() rendszerhívás = folyamatduplázás, majd&lt;br /&gt;
# a gyerekfolyamat helyére az új programkód betöltése exec() hívással.&lt;br /&gt;
Modern UNIX-okban fork() már nem igazán (más rendszerhívásokat használ).&lt;br /&gt;
&lt;br /&gt;
====fork(): Miért van szükség a fork() rendszerhívásnál a folyamat megduplázására?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Futási/végrehajtási mód: Mi az a futási mód?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
http://video.bme.hu/media/video/Operacios_Rendszerek_09ea_20110307.wmv, 00:17:00 környéke alapján&lt;br /&gt;
TODO - rövidíteni&lt;br /&gt;
A folyamatok a kerneltől teljesen különválasztva működnek (rendszerhívás interfészen keresztül kommunikálnak a kernellel). A végrehajtási mód azt határozza meg, hogy a kernel vagy a folyamat feladatait hajtja végre az OS.&lt;br /&gt;
Két mód: kernel (&amp;quot;privilegizált, védett&amp;quot;) mód, valamint felhasználói (&amp;quot;szabad&amp;quot;) mód.&lt;br /&gt;
Kernel módban a védett (kernel) tevékenységeket, felhasználói módban a folyamat programkódját hajtja végre az OS.&lt;br /&gt;
Példa: egy webböngésző a tevékenysége egy részében a saját feladatát hajtja végre, pl. HTML-kódot értelmez és jelenít meg, valamint vannak olyan tevékenységek, amelyek ahhoz kellenek, hogy ezt a feladatát végrehajtsa: hálózati kommunikáció, fájlrendszer-műveletek, stb. - ezek kernel tevékenységek.&lt;br /&gt;
Kernel módban privilegizált utasítások hajtódnak végre, pl. egy eszközt kezelünk, vagy hozzányúlunk a háttértárhoz, onnan valamit beolvasunk, oda valamit kiírunk. Ilyen utasításokat egy felhasználói módban futó folyamat nem hajthat végre, hiszen ha közvetlenül hozzáférne a hardverekhez, akkor akár adott esetben a teljes rendszer működését felboríthatná.&lt;br /&gt;
Felhasználói módból kernel módba átlépéskor átlépünk egy védett módba, így olyan feladatokat is végrehajthatunk, amit egyébként tilos.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====inode: Mi a UNIX inode?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* A fizikai állományokhoz tartozó leíró, azonosító&lt;br /&gt;
* minden file-hoz tartozik egy inode állomány amiben a file minden tulajdonsága megtalálható (azonosító,leíró)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kernel mód, folyamat kontextus: Milyen tevékenység zajlik kernel módban, folyamat kontextusban?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Kivételek, rendszerhívások kezelése, rendszerhívások végrehajtása.  &lt;br /&gt;
Amikor a folyamat végrehajt egy rendszerhívást, a felhasználói módból átlép kernel módba, hiszen a rendszerhívás belsejében olyan tevékenységeket szeretne végrehajtani (beolvasni vmit egy fizikai eszközről, hálózatról, más folyamattal kommunikálni, elindítani másik folyamatot, stb.), amelyhez kernel utasítások végrehajtása tartozik.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kernel mód, kernel kontextus: Milyen tevékenység zajlik kernel módban, kernel kontextusban?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Rendszerfeladatok, megszakítások kezelése. Kernelfolyamatok.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kernel módú prioritás: Mi határozza meg a UNIX folyamatok kernel módú prioritását a tradicionális UNIX ütemezésben?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A kernel módban futó folyamat prioritása statikus, nem függ attól, hogy a folyamat mennyit használta a CPUt, vagyis mennyi ideig futott. A prioritás attól függ, hogy a folyamat milyen ok miatt hajtott végre sleep rendszerhívást, vagyis, hogy milyen eseményre várakozik. Emiatt a kernel prioritást szokták alvási prioritásnak is nevezni.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kernelszolgáltatások elérése: Milyen interfészen keresztül érhetők el a UNIX kernel szolgáltatásai?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* System Call Interface&lt;br /&gt;
* Az alkalmazások a rendszerkönyvtárakat hívják meg, amelyek szükség szerint meghívják az operációs rendszer szolgáltatásait ??&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kontextus: Mi az a kontextus?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
http://video.bme.hu/media/video/Operacios_Rendszerek_09ea_20110307.wmv alapján.&lt;br /&gt;
TODO: rövidíteni.&lt;br /&gt;
Az a környezet, amiben végrehajtjuk az utasításokat. Ez is különbözik a kernelek és folyamatok esetén: folyamat kontextusban azokkal az adatokkal és utasításokkal dolgozunk, amelyek alapvetően a folyamat célját szolgálják, kernel (rendszer vagy megszakítás) kontextusban pedig kernel feladatokat hajtunk végre, és az ezekhez a feladatokhoz szükséges adatokkal dolgozunk.&lt;br /&gt;
Kernel kontextus: érkezik egy hardveres megszakítás, ennek kezelése itt zajlik.&lt;br /&gt;
Folyamat kontextus: a folyamattal kapcsolatban hajtunk végre tevékenységeket.&lt;br /&gt;
Nem uaz, mint a végrehajtási mód, mert lehetséges az, hogy bizonyos tevékenységeket kernel módban hajtunk végre, de folyamat kontextusban. Amikor hozzá kell férnünk egy folyamat futási adataihoz, veremhez, virtuális memóriájához, stb., a programnak az adminisztratív adatait kezeljük, ezek folyamat kontextusban találhatóak.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Környezeti adatok: Mik azok a környezeti adatok egy UNIX-folyamatnál?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A folyamat indításakor megörökölt tulajdonságok. Tulajdonság-érték párok. Pl. a felhasználó bejelentkezik; mi az ő neve. A felhasználó milyen terminált használ, annak milyen képességei vannak. Mi a felhasználó shellje. Az épp futó folyamat néhány tulajdonsága. Olyan tulajdonság, amely egyes folyamatok számára értéket jelentenek. A felhasználók ezeket a set, setenv, export parancsokkal tudják ezeket állítani (és le is kérdezhetik őket). Megörökli az őt elindító folyamat környezetét (hogy melyiket kell épp használni, UNIX-variánstól függ). Amikor a felhasználó bejelentkezik, akkor a környezeti változók beállítódnak, a folyamatok induláskor ezeket a beállításokat megöröklik.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====libc: A libc-nek mi a feladata rendszerhívások kezelésében?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A felhasználói mód és kernel mód közötti átmenet lebonyolítása.  &lt;br /&gt;
A folyamat csak meghív egy open(), read(), write(), stb. függvényt, valójában a háttérben bonyolultabb tevékenység zajlik &amp;gt;&amp;gt; meghív egy rendszerhívást a rendszerhívás interfészen keresztül. A rendszerkönyvtárak egyike a libc, a standard C library, ez felel azért, hogy az adott függvényhívásokat (mint a read()) leképezze arra a mechanizmusra, amin keresztül átlépünk kernel módba.  &lt;br /&gt;
Az implementáció belsejében van egy SYSCALL utasítás (ez hardverfüggő), ez ténylegesen elvégzi az üzemmódváltást egy speciális megszakítás generálásával, aminek eredményeként a CPU átlép védett módba. A kernel pedig kezeli ezt a megszakítást. Ekkor a kernel a CPU regisztereit elmenti, azért, hogy a folyamat futása visszaállhasson a megfelelő állapotba. A feladat végeztével a kernel visszatér a megszakításból (erre is hardverfüggő a megvalósítás), a CPU visszavált felhasználói módba, a libc pedig visszatér a függvényhívásból, amit a folyamat kiadott.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====/proc: Mi a /proc?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Speciális fájlrendszer-interfész a kernel-adatstruktúrákhoz való hozzáféréshez.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prioritás: Hogyan számítható ki egy kernel módban futó UNIX folyamat prioritása?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* a prioritást a folyamat elalvásának oka határozza meg, tehát a prioritás attól függ, milyen sleep utasítással ment át alvó állapotba&lt;br /&gt;
* alvási prioritás pl: 20 - diszk I/O-ra vár; 28 - inputra vár a karakteres terminálról&lt;br /&gt;
* kernel módú folyamatoknak (amelyek rendszerhívásokat intéznek) negatív prioritásértékeik vannak, ezeknek van a legmagasabb prioritása ...........  (http://home.mit.bme.hu/~meszaros/edu/oprendszerek/segedlet/unix/2_folyamatok_es_utemezes/unix_processes.pdf)&lt;br /&gt;
* Több szinten, több időléptékben zajlik. Óraütésenként a prioritási sorok ellenőrzése. 10 óraütésenként RR ütemezés egy soron belül. 100 óraütésenként a prioritások újraszámítása.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rendszerhívások: Igaz-e, hogy a rendszerhívások megszakítással járnak együtt?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Igen, ennek hatására vált védelmi szintet a processzor.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rendszerhívások kontextusa: Milyen kontextusban hajtódnak végre a UNIX rendszerhívások?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
folyamat kontextusban&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rendszerhívások módja: Milyen módban hajtódnak végre a UNIX rendszerhívások?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
kernel módban&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rendszerhívások módja, kontextusa: Milyen futási módban és kontextusban zajlik a UNIX rendszerhívások kiszolgálása?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Kernel módban fut a kód, és a rendszert hívó folyamat kontextusában. ((az ehhez tartozó ábra jobb felső része))&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rendszerhívások programindításkor: UNIX alatt milyen rendszerhívásokra van szükség, ha a felhasználó elindít egy programot (folyamat létrehozása és programkód betöltése)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Folyamatot létrehozni a fork() hívással, majd a programkódot betölteni az exec() hívással lehet.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====rpcgen: Mi az rpcgen program feladata?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* RPC nyelven készült leírásból C programkódot generál. [?]&lt;br /&gt;
&lt;br /&gt;
* Az RPC nyelv alkalmas a szerver interfészének formális leírására. A formális leírásból az rpcgen program képes a szerver és a kliens programok megfelelő részeit, valamint a szükséges XDR konverziós függvényeket elkészíteni C nyelven. Az így kapott C forráskódú modulokat a kliens és szerver alkalmazással kibővítve kapjuk a teljes kommunikáló rendszert.&lt;br /&gt;
* XDR (Extended Data Representation, kiterjesztett adatreprezentáció): Többféle egyszerű adattípust definiál, illetve szabályokat határoz meg bonyolultabb adatstruktúrák létrehozására. Az adatstruktúrák meghatározásán kívül az XDR egy formális nyelvet is bevezet az adatok leírására. Az RPC rendszer is ezen nyelv kiterjesztését használja a távoli eljáráshívás formális leírására.&lt;br /&gt;
* RPC (remote procedure call, távoli eljáráshívás): Az RPC-rendszer egy protokoll-leírást és egy programozói interfészt tartalmaz. Az XDR által definiált formális nyelv kiterjesztését használja a távoli eljáráshívás formális leírására.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====System V IPC: Sorolja fel a UNIX System V IPC elemek közös alapjának részeit!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Minden IPC erőforrás rendelkezik a következő azonosítókkal: kulcs (key), létrehozó (creator), tulajdonos (owner), hozzáférési jogok (permissions)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
====System V: Adja meg a System V üzenetsorok főbb jellemzőit (tömör felsorolást kérünk)!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* diszkrét, tipizált üzenetek&lt;br /&gt;
* nincs címzés, üzenetszórás&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====System V: Miért tud az s5fs (System V File System) gyorsabban írni, mint olvasni (az előadás példája alapján)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* az írás gyors, főleg kis fájlok esetén (több szintű leképzés a kisebb blokkkok miatt), az olvasás azért lassabb (csak a nagy fájlokra), mert azoknak a részeit össze kell vadászni a szétszórtság miatt&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====u-terület: milyen jellegű adminisztratív adatok vannak az u-területen?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Azok az adatok, melyek a folyamatok futásakor kellenek. Több infó: lásd adminisztratív adatoknál.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====UNIX-fajták: Soroljon fel fő UNIX-fajtákat!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Linux, Solaris, BSD, System V, HP/UX, ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====UNIX-szabványok: Soroljon fel UNIX-hoz köthető szabványokat (legalább kettőt)!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* POSIX.1 (teljes nevén: POSIX1003.1): C nyelvű szabványos rendszerhívás-interfész&lt;br /&gt;
* System V Interface Definition&lt;br /&gt;
* X/Open Portability Guide&lt;br /&gt;
* - AT&amp;amp;T SVID (pl. SVR4), - IEEE POSIX,  - Open Group X/Open, Unix95, Unix98, ...  ????&lt;br /&gt;
* http://linux.die.net/man/7/standards&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====UNIX-típusok: Soroljon fel UNIX típusokat (a családfa jellemző ágait)!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* System V (AT&amp;amp;T változat; Solaris, SCO),&lt;br /&gt;
* BSD (Berkeley változat; SunOS, OpenBSD)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Ütemezés: Adja meg a tradicionális UNIX ütemező három legjellemzőbb tulajdonságát!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* preemptív, prioritásos és időosztásos&lt;br /&gt;
(Néhány kiegészítés a UNIX-ütemezőhöz:&lt;br /&gt;
* nem preemptív kernel módban (a kernel módot végrehajtó folyamatot (pl. rendszerhívás, megszakítás-kezelés) nem lehet kényszeríteni, hogy a CPU használatáról lemondjon egy nagyobb prioritású folyamat javára)&lt;br /&gt;
* újraütemezés csak akkor következik be, ha egy folyamat önként lemond a CPU-ról és sleep rendszerhívást hajt végre, vagy a folyamat kernel módból visszatér user módba Nem méretezhető megfelelően. Az algoritmus nem képes rugalmasan alkalmazkodni a folyamatok számának növekedése esetén. A korrekciós faktor nem elég hatékony eszköz.&lt;br /&gt;
* A CPU-t adott esetben nem lehet &amp;quot;kiosztani&amp;quot; adott folyamat számára. Nem garantálható fix válaszidő. Nagy rendszerterhelés esetén a válaszidő megnőhet. A UNIX ütemezés épp ezért nem alkalmazható real-time rendszerekben.&lt;br /&gt;
* A kernel nem preemptív, ezért az egész rendszert feltarthatja. A felhasználó nem tudja megfelelő módon befolyásolni folyamatai prioritását - a nice szám nem megfelelő eszköz erre a célra.)&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====vfs: Mondjon legalább egy, UNIX VFS-alapú &amp;quot;fájlrendszert&amp;quot;, amelynek a célja nem fájlok tárolása!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
/dev, /proc, stb.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====vfs: Soroljon fel UNIX VFS-alapú fájlrendszereket (legalább négyet)!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
xfs, zfs, brtfs, nfs&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Virtuális rendszerhívás: Mi az a virtuális rendszerhívás, miért van rá szükség?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
(Klasszikus UNIX-ban nincs, Linux 2.5.x-től felfelé, mai Linux kernelek aktívan használják.)  &lt;br /&gt;
Vannak bizonyos egyszerű feladatok, amelyek a feladat egyszerűsége ellenére túl sok felesleges művelettel járnak: rendszerhívás intterrupt, kontextusváltás, stb., ezen a helyzeten szeretnénk javítani - próbáljuk lerövidíteni ezt az utat.  &lt;br /&gt;
Pl. a pontos idő lekérdezése csupán egy megfelelő hardver kiolvasása (egyszerű numerikus érték), mégis sok művelettel jár: gettimeofday(): libc &amp;gt; SYSCALL &amp;gt; kontextusváltás &amp;gt; ..., majd ugyanezen a lépcsőn visszasétálunk a felhasználói folyamatba.  &lt;br /&gt;
Persze nem mindig lehet leegyszerűsíteni ezt az utat, csak egyszerűbb és biztonságos esetekben, pl. ha egyszerű numerikus értékek, azonosítók kiolvasásáról van szó: pl. folyamatnak mi az azonosítója, processzor lekérdezése, pontos idő lekérdezése...Tehát a felhasználói módból kernel módba történő hosszas váltást szeretnénk elkerülni. Ha nincs ilyen módváltás, akkor a felhasználói címtérben elérünk egyes kernelterületeket &amp;gt; így tényleg egyszerű függvényhívás lesz. Megfelelő előfeltételekkel: csak kockázatmentes feladatokra. Időlekérdezés tipikusan ilyen, ott megtehetjük.A felhasználói címtérben az a tevékenység, amelyet szeretnénk végrehajtani, elérhető legyen. Ezt oldják meg a virtuális rendszerhívások!	&lt;br /&gt;
A folyamat címterébe a kernel rendszerinduláskor speciális &amp;quot;kernellapot&amp;quot; allokál - ezen a biztonságosnak tekinthető rendszerhívások vannak. Terminálból példa: ldd /bin/bash&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====vnode/vfs: Mi a UNIX vnode/vfs?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Implementáció-független fájlrendszer absztrakció&lt;br /&gt;
* vnode: virtuális csomópont, vfs: virtuális állományrendszer&lt;br /&gt;
* inode --&amp;gt; vnode&lt;br /&gt;
* fs --&amp;gt; vfs&lt;br /&gt;
* Új absztrakció: annak felismerése, hogy több állományrendszernek számos előnye van, szükségessé vette a virtuális csomópont (vnode) és a virtuális állományrendszer (vfs) leíró adatszerkezetek bevezetését. Követelmények, elvárások az állományrendszerrel kapcsolatban:&lt;br /&gt;
** egyszerre támogasson több - UNIX, nem UNIX - állományrendszert&lt;br /&gt;
** különböző diszk partíciók különböző állományrendszereket is tartalmazhatnak, de mountolás esetén egységet képet kell, hogy mutassanak&lt;br /&gt;
** támogassa a hálózati állományok osztott használatát&lt;br /&gt;
** modulárisan bővíthető legyen. &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Zombi állapot: Mi a zombi állapot szerepe egy UNIX rendszerben?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A folyamat már felszabadította a foglalt memóriát, lezárta az állományokat, minden erőforrását visszaadta a rendszernek, csak a proc struktúráját tartja fogva, amiben visszatérési és statisztikai információt tárol a szülő számára. A folyamat szülő wait hívása után szűnik meg.&lt;br /&gt;
&lt;br /&gt;
Megjegyzés: bővebben magyarázattal, előadás alapján:&lt;br /&gt;
A folyamat megáll, a UNIX-ban a kernel szeretné ezt a szülőjének is tudomására hozni.	&lt;br /&gt;
A folyamat már leállt, nem fog tovább futni, de a szülőjét még nem értesítették arról, hogy ez a folyamat megszűnt, esetleg gondoskodjon az újraindításáról, stb.  &lt;br /&gt;
Pl. egy webszerver: beérkező kérések kiszolgálása --&amp;gt; kliens folyamat indítása, ez megkapja a kérés kiszolgálásának feladatát, a kliens pedig valamikor megáll, a webszerver nem árt, ha értesül róla, hogy hiba vagy normál működés folytán állt le.  &lt;br /&gt;
Tehát amíg a szülő nem értesült a leállásról, a folyamat zombi állapotban marad. Ha a szülőt nem érdekli, mi történt a gyerekfolyamattal, a zombi állapot hamar megszűnik.  &lt;br /&gt;
A zombi állapotban a folyamatnak semmilyen saját adatát nem tároljuk, a folyamat összes működéshez szükséges adata megszűnik, kizárólag a kernel adatstruktúrákban, tehát a proc struktúrában marad meg a folyamatnak néhány adminisztratív adata. A ps kilistázhat pl. zombi állapotban lévő feladatokat, mert ezeknet a folyamatoknak az adminisztratív adatai a kernel címterében még megtalálhatóak. De a folyamatok saját címtere, u-terület, stb. már nem létezik. Miután a szülő értesült róla, hogy a gyerekfolyamat meghalt, a kernel törölni fogja a folyamatot a process táblából is, a folyamat kilép a zombi állapotból.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Zombi állapot: Igaz-e az, hogy egy zombi állapotban lévő folyamat még memóriaterületet foglal?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Igen, mert a kernel processz táblában még ott vannak az adatai, és az memóriaterületet foglal. (A NEM választ is meg lehet indokolni...) [Indoklás nélkül 0 pont!!!]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
&lt;br /&gt;
====Alrendszer: Melyik az az alrendszere a Windowsnak, ami nélkül nem tud futni?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A Windows alrendszer, avagy Client/Server Runtime [[SubSystem]] (csrss.exe). Ennek kilövése kékhalált eredményez.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====API-k: Hogyan oldották meg, hogy az alkalmazások többféle API-n (Win32, POSIX) keresztül is meg tudják hívni a Windows operációs rendszer funkcióit?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Megoldás: környezeti alrendszerek (environment subsystems): a felhasználónak vagy programozónak nyújtott környezet, személyiség egy részét a környezeti alrendszer folyamatok valósítják meg, minden egyes környezet külön API-t mutat (Windows, POSIX, ...), az operációs rendszer rendszerhívásainak egy részét kínálja a felhasználói alkalmazások számára. (Forrás: http://mit.bme.hu/~micskeiz/opre/files/00-opre-windows-bevezeto.pptx)&lt;br /&gt;
* a kernelnek egy definiált interfésze van, ami nem publikus (hivatalos dokumentációja nincsen): NT API &amp;gt;&amp;gt; az ebben lévő függvényeket a fejlesztő ne hívhassa meg közvetlenül. Ehelyett erre két alrendszer épül, ők mutatnak egy API-t az alkalmazások felé: Windows API és POSIX API. (ezek teljesen dokumentáltak!). Az alkalmazások viszont nem keverhetik az alrendszereket, mindegyik csak egyet használhat; ezt linkeléskor kell eldönteni.&lt;br /&gt;
* A két alrendszer feladata az, hogy az általuk definiált hívásokat átfordítsák.&lt;br /&gt;
* Nem pusztán szintaktikai, hanem szemantikai eltérések is vannak.&lt;br /&gt;
&lt;br /&gt;
(Megjegyzés: Exetype segédeszköz segítségével megnézhető, melyik alrendszert használja egy adott alkalmazás.)&lt;br /&gt;
&lt;br /&gt;
Forrás: http://video.bme.hu/media/video/Operacios_Rendszerek_04ea_20110215.wmv (00:28:29 körül)&lt;br /&gt;
&lt;br /&gt;
(Korábbi:&lt;br /&gt;
* Alkalmazás 1&amp;gt;&amp;gt;&amp;gt;Windows API (Windows alrendszer)&amp;gt;&amp;gt;&amp;gt;NT API (NT Kernel)&amp;lt;&amp;lt;&amp;lt;Posix API (Posix alrendszer)&amp;lt;&amp;lt;&amp;lt;Alkalmazás 2 TODO(ehelyett 1 épkézláb mondat kéne)&lt;br /&gt;
* alkalmazások viszont nem keverhetik az alrendszereket, mindegyik csak egyet használhat; ezt linkeléskor kell eldönteni&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Executive réteg: Executive (Windows)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Az operációs rendszer magasabb szintű funkcióit szolgáltató rétege (memóriakezelés, biztonság, stb.). Az adatokat objektumokban tárolja, melyeket leírókkal (handle) lehet csak elérni, jól definiált interfészeken keresztül. Bár a kernel funkcióit csak a kernel interfészén keresztül éri el, szintén az ntoskrnl.exe tartalmazza. A legtöbb rendszerhívás itt van megvalósítva. &lt;br /&gt;
Forrás: http://mit.bme.hu/~micskeiz/opre/files/00-opre-windows-bevezeto.pptx&lt;br /&gt;
&lt;br /&gt;
(Korábbi: Ez a réteg tartalmazza az NTDLL.DLL által definiált függvények hívásainak megvalósítását, valamint a rendszer külső objektumai közti kommunikáció. Legfontosabb szolgáltató funkciója a lokális eljárás hívás - LPC (Local Procedure Call) megvalósítása. TODO[MZ])&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fájlhozzáférések: Mivel azonosítja a Windows a felhasználókat és csoportokat a fájlhozzáférési listákban?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* objektum (SecurableObject) &amp;amp;#8594; (SID, engedélyek) ; engedély: adatok írása, attribútumok olvasása...&lt;br /&gt;
* SecurityDescriptor (biztonsági leíró, összefogja a többi elemet) &amp;gt;&amp;gt; Owner (Tulajdonos, megváltoztathatja az objektum engedélyeit, akkor is ha nincs explicit joga), Discretionary Access Control List (DACL, belátás szerinti, erőforrás szintű, hozzáférési lista - hozzáférés szabályozása), SACL (biztonsági naplózás szabályozása - kinek milyen művelete esetén kell naplózni az adott műveletet)&lt;br /&gt;
* AccessControlEntry:&lt;br /&gt;
** Típus: megengedő, tiltó, audit&lt;br /&gt;
** Flag: Pl. öröklődés&lt;br /&gt;
** SID: kire vonatkozik&lt;br /&gt;
** Maszk: végrehajtás | törlés  tulajdonos írása...&lt;br /&gt;
* elérési lista (ACL), melyben megadható, hogy mely folyamatok jogosultak az adott section object elérésére ???&lt;br /&gt;
*  minden objektumhoz tároljuk a hozzá tartozó &amp;lt;tartomány, műveletvégzési jog&amp;gt; párokat ????&lt;br /&gt;
* TODO - bőven elég annyi, hogy Security Identifier (SID) segítségével azonosítja&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Felhasználó- és csoportazonosító: Mi alapján azonosítja a Windows a felhasználókat és a csoportokat?====&lt;br /&gt;
SID - Security Identifier&lt;br /&gt;
&lt;br /&gt;
====Paravirtualizáció: Mit jelent az, hogy egy virtualizációs megoldás paravirtualizációt használ a CPU virtualizálásához?====&lt;br /&gt;
felhasználókat és a csoportokat?&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
SID - Security Identifier&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Felhasználó- és csoportazonosító: Mivel azonosítja a Windows a felhasználókat és csoportokat a hozzáférések ellenőrzése során?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;Gép SID&amp;gt;-&amp;lt;RID&amp;gt; (SID security identifier - gépspecifikus, RID: relative identifier)&lt;br /&gt;
* Jól ismert SID-ek: Everyone: S-1-1-0, Administrator: S-1-5-domain-500&lt;br /&gt;
* Vista: szolgáltatások is kapnak SID-et&lt;br /&gt;
* objektum &amp;amp;#8594; (SID, engedélyek) ; engedély: adatok írása, attribútumok olvasása...&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====HAL: Mi a HAL (Windows)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;quot;HAL&amp;quot; - Hardware Abstraction Layer&lt;br /&gt;
* A felsőbb rétegek a HAL-on keresztül érik el az alap HW szolgáltatásokat, a HAL szerepe, hogy elfedje a HW megvalósítás részleteit, és egy egységes, platformfüggetlen felületet biztosítson.&lt;br /&gt;
* hal.dll fájlban megvalósítva (pl. timer interrupt kezelését, alaplap alapvető felépítését (milyen chipsetek vannak rajta), stb. elfedi a felette lévő rétegektől)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Hardverfüggő részek: Melyek a Windows hardverfüggő részei?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* A kernel egyes részei és a HAL.&lt;br /&gt;
* Megjegyzés: én ide a drivereket is beírtam, nem vontak le érte pontot, de azt mondták, azokat nem mindig szokás a rendszer részének tekinteni.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Jogosultságok szerepe: Mik a jogosultságok (privilege) szerepe a Windows-ban?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* operációs rendszer szintű jog&lt;br /&gt;
* meghatározzák azokat a rendszerműveleteket, amelyeket egy felhasználói azonosító elvégezhet. Egy rendszergazda jogosultságokat felhasználóknak és csoportazonosítóknak oszt (http://msdn.microsoft.com/en-us/library/bb530716(VS.85).aspx)&lt;br /&gt;
* pl. számítógép leállítása, eszközmeghajtó betöltése&lt;br /&gt;
* név: SeShutDownPrivilege, SeLoadDriverPrivilege&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Képernyőkezelő/ablakkezelő/grafikus komponens/Képernyőkezelő és grafikus funkciókat megvalósító függvények kernel módba kerülése: Mi a fő oka, hogy a Windows NT-ben a képernyőkezelő és grafikus funkciókat megvalósító függvények kernel módba kerültek? Elméleti megfontolások alapján hol lenne a helyük?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
	 Windows NT 4.0-ban került le kernel szintre ez a komponens, hogy kevesebb folyamat- és módváltás legyen (Ne kelljen mindig visszaváltani a csrss.exe-be, majd onnan átváltani kernel módba, utasítani a hardvert, visszaváltani felhasználói módba, majd visszaváltani a felhasználói folyamatba, aki kezdeményezte a változtatást.) (A felhasználói módú folyamatban (csrss.exe) csak a konzol kezelés maradt.) Elméletileg felhasználói szinten kéne lennie.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Képernyőkezelő/ablakkezelő/grafikus komponens kernel módba kerülése: Windows-ban miért került le az ablakkezelő kernel módba?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Hogy kevesebb kontextus- és módváltás legyen, mivel a Windows szerves része az ablakkezelés, ezért rengeteg user-kernel mód váltás lenne ha a csrss.exe-en keresztül használnánk. Tehát teljesítménybeli okokból.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Képernyőkezelő/ablakkezelő/grafikus komponens előnyei: A Windows OS grafikus komponensének mik az előnyei, hátrányai?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A grafikus komponens kernel módban fut. Emiatt a hibái az egész rendszert magával ránthatják, viszont gyorsabb, mert kevesebb CPU-mód váltás kell a rajzoláshoz.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Képernyőkezelő/ablakkezelő/grafikus komponens kernel módba kerülése: Mi volt a fő oka annak, hogy a Windows NT-ben a képernyőkezelő és grafikus funkciókat megvalósító komponens kernel módba került?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
	 Mert ezek a folyamatok intenzíven használják a hardvert, és futásuk gyorsaságára az egész rendszer teljesítménye érzékeny. A user módban történő megvalósítás a rendszert lelassítaná a gyakori környezetváltás miatt.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kernel: Mi a kernel (Windows)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A rendszer állandóan memóriában lévő, védett módban futó része. Az NT egyetlen HW függő része, szerepe a HW elfedése a felette található eszközök elől, ezáltal a felette lévő részek már teljesen HW függetlenek. Megvalósítja a szálütemezést, multiprocesszor ütemezést és a TRAP kezelést.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kliens-szerver-modell: Nevezzen meg egy kliens-szerver-modell alapján működő komponenst az NT-ben!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* csrss.exe - Client/Server Run-Time Subsystems (környezeti alrendszerek)&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Memóriafoglalás: Mely utasításokkal és miért történik a memóriafoglalás két lépésben Windows alatt?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* A két lépés: Reserve és Commit. Az első csak címtartományt foglal, amögött nem lesz ténylegesen használható memóriaterület; a másik a már lefoglalt címtartományhoz rendel (virtuális) memóriát.&lt;br /&gt;
* A folyamatok címtartományának töredezettsége csökkenthető azzal, ha a címtartományt már akkor előre foglalja, mikor a memóriára még nincs szüksége, és ez nem jár olyan memóriapocsékolással, mintha fizikai memóriát is foglalna ugyanakkor.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Munkakészlet (working set): Mit jelent a Windows-ban az egy folyamathoz tartozó munkakészlet (working set) fogalma?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Azon fizikai lapok halmaza, amelyekre a folyamat laphiba nélkül hivatkozhat. &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====NT hardverfüggő rétegei: Sorolja fel az NT hardverfüggő rétegeit!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
HAL (Hardware Abstraction Level), kernel&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====NTDLL.DLL: Mi az NTDLL.DLL fő funkciója?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Összeköti a User és Kernel módot. Az Executive függvényeknek megfelelő függvénycsonkok vannak benne.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Quantum: Mi a szerepe a quantumnak a Windows ütemezőjében?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* A szálak adott ideig futnak (quantum)&lt;br /&gt;
* RR ütemezésnél az időszelet&lt;br /&gt;
* Óramegszakításban mérik (clock interval, clock tick) 1 clock tick = ~ 10-15 ms (HALtól függ)&lt;br /&gt;
* Quantum hossza: időegység, amíg egy szál fut&lt;br /&gt;
* Kliensek esetén a quantum hossza 2 clock tick a háttérben futó folyamatoknak, az előtérben futó folyamatoknak 6 clock tick jut. Így egy CPU-intenzív folyamatról való ablakváltáskor az új, előtérben lévő folyamat arányosan több CPU-időt kap (azonos prioritásokat feltételezve).&lt;br /&gt;
* Szervereknél: mindenkinek 12 clock tick a kontextusváltások minimalizálása érdekében. Szervereknél így a kliensek kéréseinek eredményeként felébredő alkalmazásoknak több esélye van befejezni a kérést, és várakozó állapotba kerülni, mielőtt az időszelet véget érne.&lt;br /&gt;
* esély annak a folyamatnak, amelynek épp most ért véget a várakozása: a várakozás végén megnöveljük a prioritást, de a quantum eggyel csökken; a quantum végén a prioritást az eredetire csökkenti.&lt;br /&gt;
* éhezés elkerülése: az OS másodpercenként megnézni a futásra kész szálakat, és annak, aki nem futott már 300 óraütés óta, 15-ös prioritást ad, megnöveli a quantumját egy quantumnyi futásig&lt;br /&gt;
* TODO, hogy a forrás feldolgozása jó-e: http://mit.bme.hu/~micskeiz/opre/files/01-opre-windows-utemezes.pptx&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rendszeridő megváltoztatása: A rendszeridő megváltoztatására kinek van joga Windows alatt?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* SeSystemTimePrivilege joggal rendelkező felhasználóknak / azoknak a felhasználóknak, amelyek olyan csoportba tartoznak, amelyekhez hozzá van rendelve a SeSystemtimePrivilege.&lt;br /&gt;
* Alapértelmezett beállításként csak az Administrators és Power Users group rendelkezik vele.&lt;br /&gt;
* http://msdn.microsoft.com/en-us/library/windows/desktop/bb530716(v=vs.85).aspx&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Standby memórialapok listája: Mire szolgál a standby memória lap lista a Windows-ban (miért nem szabad lapként vannak ezek nyilvántartva)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A lap egy munkahalmaz része volt, de már nem az, elvették tőle. A lap nem módosult, mióta kiírták a merevlemezre, vagy mióta beolvasták. Egy nem Valid laptábla bejegyzés még mutat rá, azaz ha kell, még könnyen életre lehet kelteni a lapot. &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Szabad (free) és nullázott (zeroed) lapok: Miért van a Windows-ban külön szabad és nullázott (freed és zeroed) memórialap-lista?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Biztonsági okokból. Nem nullázott memóriaterületet odaadni más folyamatnak biztonsági kockázatot jelent.&lt;br /&gt;
Tehát a free lapok szabad lapok, de még nem adhatók oda felhasználói folyamatnak, mert &amp;quot;szemetet&amp;quot; vagy érzékeny adatot tartalmazhatnak: nincs nullákkal felülírva a tartalma. A zeroed lapok szabadok, és nullákkal vannak felülírva, tehát odaadhatók felhasználói folyamatnak, amennyiben igény van rá.&lt;br /&gt;
&lt;br /&gt;
TODO: ez így már megfelelő indoklás?&lt;br /&gt;
&lt;br /&gt;
(Korábban:&lt;br /&gt;
*Free*: a lap szabad, de nincs 0-kkal felülírva a tartalma, szemét vagy egy előző processz által használt tartalom van benne. Ezt nem adhatja ki közvetlenül a memóriakezelő más processzeknek, mert biztonsági szempontból aggályos adatokat találhatna rajta.&lt;br /&gt;
*Zeroed*: szabad és nullákkal felülírt lap, kiadható, ha valakinek kell. &lt;br /&gt;
TODO(ez így igaz, csak ebben a formában nem a kérdésre válaszol))&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Mik a szerepük a szolgáltatásoknak a Windowsban? ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Olyan folyamatok, amik a felhasználói felülettől és belépéstől függetlenül a háttérben futnak, és kibővítik az operációs rendszer alap szolgáltatásait.&lt;br /&gt;
TODO?&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Újrahívhatóság (reentrancy): Mit jelent az, hogy a Windows-ban a rendszerhívások újrahívhatóak?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A rendszerhívásokat több alkalmazás is meghívhatja egyszerre, nem blokkolódnak, ha már valakit éppen kiszolgál az adott rendszerhívás.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Védett objektum tulajdonosának speciális joga: Milyen speciális joga van egy védett objektum tulajdonosának az adott objektumra a Windows-ban?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Megváltoztathatja az objektum engedélyeit, akkor is, ha erre nincs explicit joga. (https://wiki.sch.bme.hu/pub/Infoalap/OpRe/03-opre-windows-biztonsag.pptx)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Verzióleírás: Mit jelentenek a számok és szavak a következő verzióleírásban: &amp;quot;Microsoft (R) Windows (R) 5.01.2006 Service Pack 2 Uniprocessor Free&amp;quot;?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* (MZ) 5.01.2006 a verziószám, major.minor.build formában, 5.1 a Windows XP verzója, 2006 az SP2-es verzió build száma. Uniprocessor = egy processzoros kernel verzió, Free = debug szimbólumok nélküli verzió.&lt;br /&gt;
	*(MZ) 2011-től kezdve ez már nem része a tananyagnak&lt;br /&gt;
* Most computers run a &amp;quot;uniprocessor free&amp;quot; version of Windows, which is a version that runs on a single CPU and does not contain extra errorchecking.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- /#q_and_a --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Tartalomjegyzék==&lt;br /&gt;
&amp;lt;div class=&amp;quot;table_of_contents&amp;quot;&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Források (teljesség igénye nélkül)==&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs_sources&amp;quot;&amp;gt;&lt;br /&gt;
Ez előadás diáin, Wikipédiás és egyéb, Google-lel található cikkeken kívül ezek voltak a források, és MÉG ÍGY SEM tartalmazza az összes beugrókérdést (volt olyan, amit rengeteg idő lett volna átszerkeszteni, vagy kevésbé sanszos, hogy olyan hosszúságú beugrókérdést tennének fel, ami ott szerepelt):&lt;br /&gt;
&lt;br /&gt;
* Hivatalos előadásjegyzetek: http://portal.mit.bme.hu/?l=oktatas/targyak/vimia219/jegyzet/index.html&lt;br /&gt;
* https://wiki.sch.bme.hu/bin/view/Infoalap/OpReVizsgaBeugrok&lt;br /&gt;
* https://wiki.sch.bme.hu/bin/view/Infoalap/OpReVizsgaKisKerdesek&lt;br /&gt;
* https://wiki.sch.bme.hu/bin/view/Infoalap/OpReVizsga2007junius12megoldas&lt;br /&gt;
* https://wiki.sch.bme.hu/bin/view/Infoalap/OpReVizsga2008majus20megoldas&lt;br /&gt;
* https://wiki.sch.bme.hu/bin/view/Infoalap/OpReVizsga2008junius11megoldas&lt;br /&gt;
* https://wiki.sch.bme.hu/pub/Infoalap/OpRe/pelda_beugro_megoldas.pdf&lt;br /&gt;
----&lt;br /&gt;
* https://vir.sch.bme.hu/dokumentumok/InfoSite/4.%20f%C3%A9l%C3%A9v/Oper%C3%A1ci%C3%B3s%20rendszerek/&lt;br /&gt;
* https://vir.sch.bme.hu/document/targyak/opre/opre_beugro.zip (HOSSZÚ)&lt;br /&gt;
* https://vir.sch.bme.hu/document/targyak/opre/oprendszkidolg.zip&lt;br /&gt;
* Wikipédia&lt;br /&gt;
* Google segítségével fellelhető rengeteg forrás&lt;br /&gt;
* stb.&lt;br /&gt;
&lt;br /&gt;
-- [[PeteHaro|Pete]] - 2011.06.19.&lt;br /&gt;
* [[Media:opre_beugro_ABC.docx|Operációs rendszerek vizsgabeugrók megoldással DOCX-formátumban (szerkeszthető, javítható!)]]&lt;br /&gt;
* [[Media:opre_beugro_ABC.pdf|Operációs rendszerek vizsgabeugrók megoldással PDF-formátumban]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Infoalap]]&lt;/div&gt;</summary>
		<author><name>Bolla Dávid</name></author>
	</entry>
	<entry>
		<id>https://vik.wiki/index.php?title=Oper%C3%A1ci%C3%B3s_rendszerek_kidolgozott_beugr%C3%B3k%C3%A9rd%C3%A9sek_vizsg%C3%A1ra_ABC-sorrendben&amp;diff=186251</id>
		<title>Operációs rendszerek kidolgozott beugrókérdések vizsgára ABC-sorrendben</title>
		<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=Oper%C3%A1ci%C3%B3s_rendszerek_kidolgozott_beugr%C3%B3k%C3%A9rd%C3%A9sek_vizsg%C3%A1ra_ABC-sorrendben&amp;diff=186251"/>
		<updated>2015-06-10T11:00:11Z</updated>

		<summary type="html">&lt;p&gt;Bolla Dávid: /* Felhasználó- és csoportazonosító: Mi alapján azonosítja a Windows a */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Bevezető==&lt;br /&gt;
Korábbi Wiki-n és InfoSite-on szereplő kidolgozott és kidolgozatlan anyagok, számtalan forrásból összeszedve - előadásdiákból, video.bme.hu-n lévő felvett anyagokból, Wikipédiás és egyéb, Google segítségével fellelhető anyagokból kiegészítve.&lt;br /&gt;
Hibák előfordulhatnak! TODO-val azokat a részeket jelöltem, amik átnézendők, rendbe szedendők, hiányosak, stb., ezeket is kérlek javítsátok, ha tudjátok! Köszi!&lt;br /&gt;
Ami fontos: ABC-sorrendbe rendezve szerepelnek a kérdések, így könnyebben megtalálható, tartsuk is meg ezt a tendenciát!&lt;br /&gt;
Remélem hasznát veszitek! -- [[PeteHaro|Pete]] - 2011.06.19.&lt;br /&gt;
Valamilyen szintű kategorizálást is beleraktam. A kérdések elejére odaírtam magának a kérdésnek a lényegét is, hogy könnyebben megtalálhatóak legyenek az azonos kérdéskörbe tartozóak.&lt;br /&gt;
&lt;br /&gt;
==Beugrókérdések megoldással==&lt;br /&gt;
===Általános jellegű OS-ekkel kapcsolatos kérdések===&lt;br /&gt;
&lt;br /&gt;
====Indulás: Hasonlítsa össze az általános célú (asztali) és a beágyazott operációs rendszereket az indulás szempontjából!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A beágyazottnál először indul az alkalmazás, és az indítja az operációs rendszert, az asztalinál az operációs rendszer indítja az alkalmazásokat.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Inkrementális mentés: Mit jelent az inkrementális mentés?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Csak a változtatásokat mentjük az előző mentéshez képest -&amp;gt; kisebb helyet foglal, hamarabb végez a mentés.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kemény valós idejű rendszer: Adja meg a kemény valós idejű (hard real-time) rendszer definícióját!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A rendszer adott eseményekre  adott időn belül 1 valószínűséggel válaszol (egyébként hibás, hiába funkcionálisan jó a válasz). A rendszer NEM késhet!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Lazán csatolt rendszer: Milyen szinkronizációs kényszereket jelent, ha egy lazán csatolt rendszer kommunikációja során véges kapacitású csatornát alkalmazunk?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
ha a küldő folyamat túl gyorsan küldözget, akkor a csatorna megtelik, úgyhogy túlcsordulás lesz, ami miatt a küldőnek várnia kell mielőtt újra küld.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rendszerhívások: Milyen előnnyel jár a rendszerhívások valamilyen magas szintű programnyelvvel történő megadása?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Az API elrejti a rendszerhívások részleteit, bonyolultságát a programozó elől, lényegében egy wrapper réteggel fedi be a rendszerhívásokat.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====RPC: Milyen részekből áll az RPC technológia?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* RPC: Remote Procedure Call, távoli eljáráshívás. Magas szintű folyamatok közti kommunikációt tesz lehetővé. Részei:&lt;br /&gt;
*  a hívható eljárások és típusaik (interfész) leírása&lt;br /&gt;
* programgenerátor - rpcgen: a leírásból C programkódot generáló program&lt;br /&gt;
* kommunikációs infrastruktúra - portmapper: a programazonosítók és a hálózati portok összerendelése&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Statikus/dinamikus OS: Mikor nevezünk statikusnak, illetve dinamikusnak egy operációs rendszert?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
statikus: azok a rendszerek, amelyeknek muködése során - a felépülés és inicializálás kezdeti szakaszától eltekintve - nem jönnek létre és nem szűnnek meg folyamatok. dinamikus: működés közben bármikor születhetnek illetve megszünhetnek folyamatok.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Szorosan csatolt rendszerek: Milyen rendszereket nevezünk &amp;quot;szorosan csatolt&amp;quot; rendszereknek?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Ahol több CPU közös óra és közös memória segítségével működik együtt. Általában egyetlen operációs rendszer van, de az bonyolult. (Megjegyzés: az architektúrákból megtanult &amp;quot;közös erőforrást használnak&amp;quot; definícióra csak fél pontot adtak.)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Erőforrás-hozzáférés===&lt;br /&gt;
&lt;br /&gt;
====Elosztott rendszerek: Elosztott rendszerekben milyen konzisztencia kérdésekkel kell foglalkozni?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* frissítés konzisztencia&lt;br /&gt;
* másolat konzisztencia&lt;br /&gt;
* cache konzisztencia&lt;br /&gt;
* hiba konzisztencia&lt;br /&gt;
* óra konzisztencia&lt;br /&gt;
* felhasználói interfész konzisztencia&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Erőforrás-gazdálkodás: Mi a különbség a hierarchikus és a globális erőforrás-gazdálkodás között?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
hierarchikus: a gyermek folyamatok csak a szülő erőforrásaiból részesülhetnek, és nem létezhetnek önállóan, csak amíg a szülőjük is létezik. globális: a rendszer valamennyi folyamata létrejötte után egyenrangú, önálló szereplő, és versenyezhet a teljes erőforráskészletből való részesedésért.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Éhezés: Mi az az éhezés?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A folyamatnak megvan mindene, ami a futásához kellene (ezért nem holtpont), de az erőforrásokat, amiket használni akar, más folyamatok kapják meg (ezért nem tud futni).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Graceful degradation: Mit jelent a &amp;quot;graceful degradation&amp;quot; fogalma? ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Fokozatos leromlás/összeomlás: Ha a rendszer terhelése eléri az ún. könyökkapacitást, akkor utána viselkedése megváltozik, a tovább növekvő terhelésre már egyre rosszabb működéssel reagál (overhead). Elvárható, hogy ezt fokozatosan tegye (ne omoljon össze).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kölcsönös kizárás====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Annak biztosítása, hogy a közös erőforrást egy időben csak annyi magában szekvenciális feladat használja, amely mellett a helyes működése garantálható.&lt;br /&gt;
A kölcsönös kizárást meg kell oldanunk a programban. Többnyire a használt erőforrást lock-oljuk (elzárjuk): nem engedjük hozzáférni a többi részfeladatot.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kritikus szakasz: Mit jelent a kritikus szakasz?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A magában szekvenciális feladatok azon kódrészletei, amely során a kölcsönös kizárást egy bizonyos közös erőforrásra biztosítjuk. A kritikus szakasz a kérdéses közös erőforráshoz tartozik. A kritikus szakaszt a hozzá tartozó erőforrásra atomi műveletként (nem megszakítható módon) kell végrehajtanunk.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Monitor: Mi a monitor alkalmazásának lényege? (Kölcsönös kizárás)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A lockolás nem szétszórva történik a programban, hanem egyetlen, a közös erőforráshoz szorosan tartozó programrészletben.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prioritás öröklés: Mi a prioritás öröklés (Priority Inheritance, Pl) protokoll lényege? (prioritás inverzió témakör)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Az alacsony prioritású feladat megörökli az általa kölcsönös kizárással feltartott feladat prioritását a kritikus szakaszából való kilépéséig. Csak részben oldja meg a prioritás inverzió problémáját.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Test-and-set: Hogyan lehet Test_and_Set utasítással kritikus szakaszba lépést (entry) és kilépés (exit) megvalósítani?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Belépésnél csökkentjük a value értékét ezzel jelezve hogy használni akarjuk a kritikus szakaszt&lt;br /&gt;
* Kilépésnél növeljük a value értékét&lt;br /&gt;
Egy változót kijelölünk &amp;quot;lock object&amp;quot;-nek; ha ennek a tartalma 0, nincs senki a kritikus szakaszban. A kritikus szakasz elején egy ciklusban test-and-set-et hajtunk végre rá (az utasítást a ciklus feltételébe téve); ha valaki van a szakaszban már, a ciklusban fogunk keringeni, amíg ki nem lép belőle a másik. Amikor kilépett, a test-and-set következő végrehajtása beállítja a változót, és továbbengedi az egyik várakozó ciklust. A szakaszból kilépéskor pedig simán (nem test-and-set-tel) 0-ba állítjuk.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Test-and-set: Hogyan működik a test_and_set?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Visszaadja egy bit értékét, és ha 0 volt, 1-re állítja. Mindezt oszthatatlanul, vagyis ha 0 volt ott, és többen egyszerre hívtak rá test-and-set-et, akkor az egyiké teljesen lefut, 1-be állítja és nullát ad vissza, mielőtt a többi elkezdene futni (így ők mind 1-et fognak visszaadni)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Újrahívhatóság: Mit jelent az újrahívhatóság (reentrancy) fogalma?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A közös erőforrás problémájának egyfajta kiterjesztett esete egy függvényen/objektumon belül, mely akkor léphet fel, amennyiben ezt a függvényt/metódust egyszerre többen is meghívhatják. Előfordulhat akkor, ha ugyanazt a függvényt hívjuk egy taszkból és egy megszakítás-rutinból is, vagy ha preemptív ütemezés esetén ugyanazt a függvényt hívjuk két taszkból is.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Holtpont===&lt;br /&gt;
&lt;br /&gt;
====Definíció: Adja meg a holtpont definícióját!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Egy rendszer folyamatainak egy H halmaza holtponton van, ha a H halmazba tartozó valamennyi folyamat olyan eseményre vár, amelyet csak egy másik, H halmazba tartozó folyamat tudna előidézni. Másként: A közös erőforrások hibás beállítása vagy használata miatt a rendszerben a részfeladatok egymásra várnak &amp;amp;#187; nincs futásra kész folyamat; &amp;amp;#187; nem jöhet létre belső esemény; &amp;amp;#187; A rendszer nem tud előrelépni.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Foglalva várakozás: Holtpont megelőzése (prevention) esetén milyen módszerrel lehet a foglalva várakozás előfordulását kizárni?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Az erőforrást birtokló feladat kér újabb erőforrást.&lt;br /&gt;
* Minden szükséges erőforrást egyben kell lefoglalni, egyetlen rendszerhívással.&lt;br /&gt;
* Alkalmazástól függ a használhatósága.&lt;br /&gt;
* Erőforrás-kihasználás romlik.&lt;br /&gt;
*  A foglalva várakozás elkerülhető, ha minden folyamat betartja azt a szabályt, hogy az egyidejűleg szükséges valamennyi erőforrását egyetlen rendszerhívással kéri el. A szabály betartásával megelőzhető a holtpont, de ára az erőforrás-kihasználás jelentős romlása.&lt;br /&gt;
*  Ha a folyamatokat kötelezzük arra, hogy minden erőforrásukat egyszerre kérjék el. Ha meg akarjuk engedni a rákérést, akkor menthető állapotú erőforrások esetén megtehetjük, hogy a várakozó folyamatoktól elvesszük az erőforrásaikat.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kezelése: Az operációs rendszer milyen általános eljárásokat használhat a holtpont kezelésére?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* strucc algoritmus (nem vesz róla tudomást)&lt;br /&gt;
* holtpont feloldása - melyik holtpontban érintett folyamatot számoljuk fel?&lt;br /&gt;
* menthető állapotú erőforrások elvétele,&lt;br /&gt;
* minél kevesebb folyamat felszámolása,&lt;br /&gt;
* folyamatok prioritása,&lt;br /&gt;
* már elvégzett munka,&lt;br /&gt;
* folyamatok visszaállíthatóságának biztosítása&lt;br /&gt;
* holtpont megelőzése&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kialakulás szükséges feltételei: Sorolja fel a holtpont kialakulásának szükséges feltételeit!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Kölcsönös kizárás: Vannak olyan erőforrások a rendszerben, melyeket a folyamatok csak kizárólagosan használhatnak.&lt;br /&gt;
* Foglalva várakozás: legyen olyan folyamat mely lefoglalva tart erőforrásokat, miközben más erőforrásokra várakozik.&lt;br /&gt;
* Nincs erőszakos erőforrás-elvétel: a folyamatok addig birtokolják az erőforrást, míg saját jószántukból fel nem szabadítják azokat.&lt;br /&gt;
* Körkörös várakozás: Létezik a rendszerben egy olyan folyamatsorozat, melyben minden folyamat az utána következő folyamat által foglalt erőforrásra vár, a sorozat utolsó tagja pedig a sorozat első tagjára.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Megelőzés, elkerülés: Mi a különbség a holtpont megelőzése (prevention) és holtpont elkerülése (avoidance) között?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* megelőzése: olyan rendszert tervezünk, ahol nem teljesülnek a holtpont feltételei, így elvileg sem lehet holtpont.&lt;br /&gt;
* elkerülése (pl. bankár algoritmus): A rendszer minden erőforrásigény kielégítése előtt mérlegeli, hogy nem vezet-e holtpontveszélyre a kérés teljesítése, más szóval fennmarad-e a biztonságos állapot.&lt;br /&gt;
&lt;br /&gt;
* ( Kölcsönös kizárás minimálisra csökkentése: lehetőleg többpéldányos erőforrásokat alkalmazunk, ahol ez nem lehetséges, ott a hozzáférést megpróbáljuk oszthatatlan műveletté tenni.&lt;br /&gt;
* Foglalva várakoztatás megszüntetése: Ha minden folyamat betartja a szabályt, miszerint az egyidejűleg szükséges valamennyi erőforrását egyetlen rendszerhívással kéri el, akkor elkerülhető a foglalva várakoztatás. Ennek ára van: az erőforrás-kihasználtság romlása.&lt;br /&gt;
* Nincs erőszakos erőforrás-elvétel kiküszöbölése: Ha menthető állapotú erőforrásaink vannak, akkor megtehetjük, hogy elvesszük egy adott folyamat erőforrását és egy másiknak adjuk, majd annak lefutása után visszaadjuk a régi állapotában az erőforrást az első folyamatnak.&lt;br /&gt;
* Körkörös várakozás megakadályozása: A folyamatok megegyeznek az erőforrások sorszámozásában, minden folyamat csak nagyobb sorszámú erőforrást igényelhet azoknál az erőforrásoknál melyeket birtokol. Ekkor biztosan nem alakulhat ki kör.)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Fájlrendszerek===&lt;br /&gt;
&lt;br /&gt;
====Fájl: Mi a fájl az operációs rendszer szempontjából? (háttértár-kezelés)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* a fájl a permanens táron az adattárolás logikai egysége, az operációs rendszer feladata a logikai egységek (fájlok) leképzése valódi fizikai egységekre, ez az OS-ben egy többszintü réteges rendszer&lt;br /&gt;
* Absztrakt adattípus (objektum, fájl mutató).&lt;br /&gt;
* Adat, név (name - elnev. konvenciók), típus (type - kezelés módja) tulajdonságok (attributes). Tulajdonosok, jogosultságok. Hozzáférési időpontok&lt;br /&gt;
* Kölcsönös kizárás (file locking)&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Háttértáron lévő lapok: Milyen részidőkből áll össze a háttértáron levő lapokhoz való tényleges hozzáférési idő? Kis vagy nagy lapok használata esetén kapunk &amp;quot;jobb&amp;quot; byte hozzáférést?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* adatátviteli sebesség + fejmozgás sebessége + lemezek forgási sebessége&lt;br /&gt;
* nagy lapok esetén ( mert így közvetlenül egymás után helyezkednek el az összetartőző adatok így nem kell a fejnek &amp;quot;ugrálnia&amp;quot; )&lt;br /&gt;
* Először a laptáblából kell kikeresni a lap bejegyzését, és konstatálni, hogy nincs hozzá fizikai lap rendelve. Majd, ki kell választani egy szabad fizikai lapot (ha nincs, ki kell vinni egyet háttértárra), a szabad helyre beolvasni a lapot, majd újraindítani a laphibát okozó utasítást. Ezek közül a háttértárról olvasás nagyságrendekkel lassabb a többinél, ezért lényegében ez határozza meg a teljes hozzáférési időt.&lt;br /&gt;
* Ha csak a háttértáron lévő lapokat nézzük, akkor, mivel kisebb lapot gyorsabban lehet beolvasni, ezért kisebb lapoknál gyorsabb a hozzáférés. Ha egy folyamat teljes munkahalmazát nézzük, akkor viszont a kisebb lapok több adminisztrációs költséggel járnak (gyakrabban kell háttértárhoz fordulni), és átlagban a nagyobb lapok adnak jobb eredményt.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Indexelt tárolás: Sorolja fel az indexelt tárolás (indexed allocation) előnyeit és hátrányait! (Fájlrendszer-leképzés)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Szekvenciális és indexelt elérésre is alkalmas.&lt;br /&gt;
* Sérülékeny (az index blokkok sérülése a fájlt elérhetetlenné teszi).&lt;br /&gt;
* Az index blokkokat viszont könnyű többszörözni (replikálni).&lt;br /&gt;
* Sok fejmozgást okoz (seek), a blokkok el vannak szórva a diszken.&lt;br /&gt;
* Itt is lehet a láncolt listás töredezettség mentesítéshez hasonló algoritmusokat használni a fejmozgás minimalizálására.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====RAID: Sorolja fel a RAID technika leglényegesebb elemeit!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Használjunk több merevlemezt egyszerre.&lt;br /&gt;
* Több redundáns alkalmazása növeli a megbízhatóságot.&lt;br /&gt;
* Több párhuzamos használata növeli a sebességet.&lt;br /&gt;
* Hozzunk létre egy virtuális diszket a fizikai diszkekből.&lt;br /&gt;
* Redundant Array of Inexpensive Disks: több lemez összekapcsolása.&lt;br /&gt;
* A RAID-0 esetében két lemezre vannak szétosztva az adatok, így egyetlen fájlt kétszer akkora sebességgel lehet írni (a két felét parhuzamosan).&lt;br /&gt;
* A RAID-1 esetében ugyanazt az adatot tároljuk le a két lemezen, így gyorsabb nem lesz, de az egyik lemez hibája esetén visszanyerhetőek az adatok.&lt;br /&gt;
* Megjegyzés: ez csak példa, több lemezzel is lehet csinálni, a sebesség/tárhely/hibatűrés között különböző kompromisszumokat elérve.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====RAID0 vs. RAID1: Hasonlítsa össze két azonos diszkből álló RAID0 és RAID1 tömb tulajdonságait! Hogyan alakul a hozzáférési idő, az adatátviteli sebesség és a megbízhatóság egyetlen diszkhez képest a két esetben?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
RAID 0-1 szabványok általában SW implementációval és kevés (2db) diszkkel&lt;br /&gt;
* RAID 0 (striped disks):&lt;br /&gt;
** Több diszk párhuzamos használata;&lt;br /&gt;
** file részei N diszkre kerülnek;&lt;br /&gt;
** Az egyes részek egymástól függetlenül elérhetők&lt;br /&gt;
** A diszkek tárolókapacitása összeadódik&lt;br /&gt;
** N azonos diszk esetén a RAID 0 virtuális diszk olvasásai és írási adatátviteli sebessége maximum N-szeres közelébe nő.&lt;br /&gt;
** A hozzáférési idő közel eléri egy diszk hozzáférési idejét.&lt;br /&gt;
** Bármelyik diszk meghibásodása esetén az adat elveszik&lt;br /&gt;
* RAID 1 (mirroring):&lt;br /&gt;
** Több diszk redundáns használata.&lt;br /&gt;
** A file minden része minden (N) diszkre kikerül.&lt;br /&gt;
** Azonos diszkeket feltételezve a tárolóterület egy diszk tárolóterületével azonos.&lt;br /&gt;
** Az adatátviteli sebesség lassabb, mint egy diszk sebessége.&lt;br /&gt;
** A hozzáférési idő nő.&lt;br /&gt;
** Speciális esetben az olvasási sebesség N-szeresre nőhet, feltételezve a diszk meghibásodásának más módon történő észlelését (nem kell az azonosságot ellenőrizni többségi szavazással).&lt;br /&gt;
** Egy működőképes diszk esetén az adat elérhető.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====RAID5: Adja meg az M (M pozitív egész szám) diszket tartalmazó RAID5 tömb tulajdonságait! (hibatűrés és sebesség)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* RAID 5 (block interleaved distributed parity).&lt;br /&gt;
* Több diszk redundáns és párhuzamos használata&lt;br /&gt;
* Adat és paritás elosztása N+1 diszkre.&lt;br /&gt;
** A sebesség tekintetében közel áll az N diszket használó RAID 0-hoz (HW támogatás esetén).&lt;br /&gt;
** 1 diszk meghibásodása esetén az adat elérhető.&lt;br /&gt;
** 2 vagy több diszk meghibásodása esetén az adat elveszik.&lt;br /&gt;
** Az adat nem feltétlenül állítható helyre. (Csendes/néma hibák (silent error). A 2. meghibásodás észlelése a tömb újraépítése során)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====RAID5: Miért előnyös és miért hátrányos RAID5 használata?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* + N azonos diszk esetén az olvasási és írási adatátviteli sebessége maximum N-szeres közelébe nő.&lt;br /&gt;
* + 1 diszk meghibásodása esetén az adat elérhető.&lt;br /&gt;
* - 2 vagy több diszk meghibásodása esetén az adat elveszik.&lt;br /&gt;
* - Az adat nem feltétlenül állítható helyre. (Csendes/néma hibák (silent error).&lt;br /&gt;
* -Bonyolultabb, mint a Raid 0/1, ezért hardveresen valósítják meg, ami viszont drága&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====RAID6: Adja meg a 8 darab 1 Tbyte-os HDD-ből álló RAID6 tömb tárolókapacitását!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
6 TB. (Adat és paritás elosztása N+2 diszkre. A kapacitása N diszk tároló kapacitásával egyenlő.)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====RAID6: N db azonos diszkből álló RAID6 tömb esetén a tömb tárolókapacitása és sebessége (nagy fájlok írása/olvasása során elérhető adatátviteli sebesség) hogyan viszonyul az egyetlen diszk azonos adataihoz?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* RAID 6 (block interleaved dual distributed parity)&lt;br /&gt;
* Több diszk redundáns és párhuzamos használata.&lt;br /&gt;
* Adat és paritás elosztása N+2 diszkre.&lt;br /&gt;
** A sebesség tekintetében közel áll az N diszket használó RAID 0-hoz (HW támogatás esetén).&lt;br /&gt;
** 2 diszk meghibásodása esetén az adat elérhető.&lt;br /&gt;
** 3 vagy több diszk meghibásodása esetén az adat elveszik.&lt;br /&gt;
** Az adat nagyobb valószínűséggel állítható helyre a RAID 5-höz képest&lt;br /&gt;
* Minimum négy lemezre van szükség a RAID 6 működéséhez. The capacity of the array is (N-2) times the size of the smallest member disk for the array of N disks.&lt;br /&gt;
* Az olvasási sebesség (N-2)-szerese egy lemez olvasási sebességének - two disks in the row hold a parity which is useless to read. Such read speed values are roughly the same as in RAID 5.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Tárolás egysége: Mi a logikai és mi a fizikai tárolás egysége a permanens táron?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* logikai egység: fájl (file)&lt;br /&gt;
* fizikai egység: adatblokkok (cilinder, sáv és szektor együtt azonosítja az írható/olvasható adatblokkot; OS képzi le a logikaiakat fizikaiakra)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Folyamatok, szálak===&lt;br /&gt;
&lt;br /&gt;
====Bernstein feltétele: Mikor lehet két tevékenységet (utasítássorozatot) párhuzamosan végrehajtani (Bernstein)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Bernstein feltétele:&lt;br /&gt;
* Legyen &amp;lt;math&amp;gt; P_i &amp;lt;/math&amp;gt; és &amp;lt;math&amp;gt; P_j &amp;lt;/math&amp;gt; két darabja egy programnak.&lt;br /&gt;
* A &amp;lt;math&amp;gt; P_i &amp;lt;/math&amp;gt; összes bemeneti változója &amp;lt;math&amp;gt; I_i &amp;lt;/math&amp;gt;, és az összes kimeneti változója &amp;lt;math&amp;gt; O_i &amp;lt;/math&amp;gt;, ugyanez &amp;lt;math&amp;gt; P_j &amp;lt;/math&amp;gt; -re &amp;lt;math&amp;gt; I_j &amp;lt;/math&amp;gt; és &amp;lt;math&amp;gt; O_j &amp;lt;/math&amp;gt;.&lt;br /&gt;
* A két program párhuzamosan végrehajtható (vagyis független), ha: &amp;lt;math&amp;gt; I_j \bigcap O_i = 0 &amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt; I_i \bigcap O_j = 0 &amp;lt;/math&amp;gt; és &amp;lt;math&amp;gt; O_i \bigcap O_j = 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Feladatok (task) együttműködése: Hasonlítsa össze a közös memórián illetve az üzenetváltáson alapuló folyamatok közti együttműködést!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Közös memórián keresztül történő adatcsere esetén az együttműködő folyamatok mindegyike saját címtartományában lát egy közös memóriát. A közös memória elérését valamilyen adatátviteli rendszer teszi lehetővé. Üzenetváltásos adatcsere esetén a folyamatoknak nincs közös memóriája. Az adatátviteli rendszer most a logikai processzorokat kapcsolja össze. Rajta keresztül a folyamatok üzeneteket tudnak küldeni, illetve fogadni. Az üzenetküldésre a folyamatok logikai processzorainak utasításkészletében megfelelő utasítások állnak rendelkezésre. Ezek a Küld (Send) és a Fogad (Receive) műveletek.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Folyamat: Definiálja a &amp;quot;folyamat&amp;quot; (process) fogalmát!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Egy program futás alatt álló példánya a folyamat.&lt;br /&gt;
* saját kód, adat, halom, verem&lt;br /&gt;
* A folyamatok nem férnek hozzá egymás lapjaihoz (védettek más folyamatoktól)&lt;br /&gt;
&lt;br /&gt;
* végrehajtás alatt álló program (program maga a végrehajtható kód), amely folyamat virtuális címterébe van leképezve&lt;br /&gt;
* folyamat egy szála az, ami éppen fut egy CPU-n, és nem maga a folyamat&lt;br /&gt;
* minden folyamathoz tartozik legalább egy szál, ami elinduláskor elkezdi futtatni a program main metódusát&lt;br /&gt;
* privát virtuális címtér (virtuális memóriacímek készlete, amiket a folyamat használhat)&lt;br /&gt;
* tartozik hozzá egy egyedi folyamatazonosító (process ID)&lt;br /&gt;
* rendszererőforrások listája, melyekhez a folyamat összes szála hozzáfér&lt;br /&gt;
* a folyamat virtuálisan összefüggő memóriát lát (virtuális memória) (valójában az összefüggő memóriaterület ritka)&lt;br /&gt;
* háttértárolóra is kiírható (swapping)&lt;br /&gt;
* A folyamat által látott logikai címtartomány, és a ténylegesen használt fizikai címtartományok teljesen elkülönülnek&lt;br /&gt;
* Folyamatok megoszthatnak memóriaterületeket olvasás- vagy akár írás- és olvasás-hozzáféréssel (Az ilyen memória területek több folyamat virtuális címtartományába vannak belapozva)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Folyamatok közötti kommunikáció: Soroljon fel legalább 4 IPC (Inter-process communication) megoldást!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;Jelzés&#039;&#039;&#039;: rendszerüzenetek küldése és fogadása a folyamatok között, jellemzően utasítások továbbítása egyik folyamattól a másiknak&lt;br /&gt;
* &#039;&#039;&#039;Üzenetsor&#039;&#039;&#039;: aszinkron kommunikációs forma, mely során a küldő és fogadó közvetlen interakciója nem szükséges, az üzenetek addig tárolódnak a sorban amíg a címzett fel nem dolgozza azokat vagy a sor meg nem telik&lt;br /&gt;
* &#039;&#039;&#039;Szemafor&#039;&#039;&#039;: absztrakt struktúra amely a folyamatok közötti közös erőforrásokért való hozzáférést vezérli&lt;br /&gt;
* &#039;&#039;&#039;Közös memória&#039;&#039;&#039;: ugyan az a memóriaterület kerül kiosztásra több különböző folyamatnak, írási és olvasási joggal egyaránt&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Forrás&#039;&#039;: http://en.wikipedia.org/wiki/Inter-process_communication&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Folyamatok vs. szálak: Mi az eltérés a folyamatok illetve a szálak között, és milyen előnnyel jár a szálak alkalmazása?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A szálak lényegében párhuzamos végrehajtású, közös memóriát használó programrészek a folyamaton belül (egy program végrehajtása több szálon futhat). A szálaknak saját logikai processzoruk van, azonban memóriáik nincsenek elkülönítve, közös logikai memóriát használnak, azaz a kódon és a változókon osztoznak. Emiatt az operációs rendszer lényegesen gyorsabban tud végrehajtani egy átkapcsolást a szálak között, mint a folyamatok között.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Java-szálak: Milyen módokon képezheti le a JAVA virtuális gép a JAVA natív szálakat a hoszt operációs rendszer folyamataira/szálaira?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A JAVA virtuális gép egy folyamat a hoszt operációs rendszeren belül. A JAVA szálak feleltethetők meg a hoszt operációs rendszer szálainak, ez többnyire one-to-one (JAVA szál egyben OS szál is) napjainkban. (https://wiki.sch.bme.hu/pub/Infoalap/OpRe/20100507_ZH_megoldas.pdf)  &lt;br /&gt;
Kovácsházy Tamás válasza:&lt;br /&gt;
7. fólia, 11. fólia:&lt;br /&gt;
JAVA (VM a folyamat, VM-en belül szál):&lt;br /&gt;
* Thread osztályból származtatva&lt;br /&gt;
* Runnable interface megvalósítása&lt;br /&gt;
* A JAVA platform-specifikusan valósítja meg a szálat:&lt;br /&gt;
* Natív OS specifikus szál (one-to-one, tipikus).&lt;br /&gt;
* JAVA specifikus szálak (many-to-one) egy natív OS szálra vagy folyamatra leképezve.&lt;br /&gt;
* many-to-many leképzés (erőforrás szempontok miatt, egyre ritkább).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====PRAM: Mi történik a PRAM modellben írás-írás ütközés esetén?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Az írás-írás ütközésekor valamelyik művelet hatása érvényesül, a két beírni szándékozott érték valamelyike írja felül a rekesz tartalmát (versenyhelyzet), harmadik érték nem alakulhat ki.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Processzor-affinitás: Mit állítunk be, ha egy szálnak beállítjuk a processzor affinitását, és miért lehet arra szükség?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* processzoraffinitás: minden szál rendelkezik egy maszkkal, amely kijelöli, hogy a szál mely processzorokon képes futni&lt;br /&gt;
* szerepe: ez alapján dől el, hogy a szál mely processzoron fog futni&lt;br /&gt;
* ütemezésnél: multiprocesszoros esetben a processzor kiválasztása a processzor-affinitás alapján történik&lt;br /&gt;
* A feladat más processzorra, vagy processzormagra kerülése csökkenti a végrehajtás sebességét (pl. cache-elésnél) &amp;gt;&amp;gt; Cél: A feladatot ugyanazon a végrehajtó egységen tartani - Laza vagy kemény processzor affinitás (soft or hard processor affinity).&lt;br /&gt;
** Laza: Nincs garancia, de törekszik rá az OS (többnyire alapeset)&lt;br /&gt;
** Kemény: Biztosan ugyanazon a CPU-n marad (rendszerhívással)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Szál: Definiálja a &amp;quot;szál&amp;quot; (thread) fogalmát!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* párhuzamos végrehajtású, közös memóriát használó programrészek a folyamaton belül (egy program végrehajtása több szálon futhat). A szálaknak saját logikai processzoruk és saját vermük van, azonban memóriáik nincsenek elkülönítve, közös logikai memóriát használnak, azaz a kódon és a változókon osztoznak, vagyis egymás adatait olvashatják és írhatják. Emiatt az operációs rendszer lényegesen gyorsabban tud végrehajtani egy átkapcsolást a szálak között, mint a folyamatok között.&lt;br /&gt;
* A folyamat egy szála az, ami éppen fut egy CPU-n (ami ütemezésre kerül), és nem maga a folyamat.&lt;br /&gt;
* Minden folyamathoz tartozik legalább egy szál, ami elinduláskor elkezdi futtatni a program main metódusát (szál nélkül a folyamat programja nem futhat).&lt;br /&gt;
* szálak még véletlenül sem hivatkozhatnak más folyamatok címterére, hacsak a másik folyamat nem teszi elérhetővé privát virtuális címterének egy részét megosztott memóriaszakaszként (file mapping object a Windows API-ban), vagy - Windows-nál - hacsak egyik folyamatnak nincs joga megnyitni más folyamatot, hogy olyan folyamatok közti memóriafüggvényeket használjon, mint a ReadProcessMemory vagy WriteProcessMemory&lt;br /&gt;
* A szál önmagában szekvenciális kód, a végrehajtás legkisebb egysége. Egy adott folyamat szálainak közös az adat- és kódszegmensük, a halmuk (heap), és az egyéb erőforrásokat is közösen használják, de saját virtuális CPU-t látnak, és saját veremmel rendelkeznek.&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Védelmi tartományok: Mi a különbség a statikus és a dinamikus védelmi tartományok között?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
	 Statikus védelmi tartományok esetén az egy folyamathoz tartozó védelmi tartomány a folyamat végrehajtása során nem változik, míg dinamikus védelmi tartományok esetén igen.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Virtuális gép: Mi a virtuális gép koncepció lényege?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* A programok elől az operációs rendszer elfedi a hardver implementációs részleteit, és kibővíti azt plusz funkciókkal.&lt;br /&gt;
* Az op.rendszer egy olyan réteget képez a hardver fölött, mely elrejti annak körülményességét és bonyolultságát a programozó elől és kibővíti a hardver szolgáltatását. A felhasználó így egy sokkal kellemesebb virtuális gépet (virtual machine, extended machine) lát.&lt;br /&gt;
* Az operációs rendszer egy kényelmesen kezelhető virtuális gépet jelenít meg a felhasználói és a programozói felületen.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Jogosultságok===&lt;br /&gt;
&lt;br /&gt;
====Belső biztonság: Mi a belső biztonság?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Belső biztonság = védelem. Védelemnek nevezzük az eljárásoknak és módszereknek azon rendszerét, amely lehetőséget teremt a számítógép erőforrásainak programok, folyamatok illetve felhasználók által történő elérésének szabályozására.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Engedélyezés: Definiálja az engedélyezés (authorization) fogalmát!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* jogosultság ellenőrzése: milyen adatokat és szolgáltatásokat érhet el ez a személy?&lt;br /&gt;
* Hozzáférés-szabályozási listák (Access Control List, ACL)&lt;br /&gt;
* Alapelv: mindig csoportnak osztunk jogot&lt;br /&gt;
* Pl. biztonsági házirend, fájl ACL&lt;br /&gt;
&lt;br /&gt;
TODO!!!&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Jogosultság + engedélyezési sémák: Mi a jogosultság fogalma, mi a kapcsolata az engedélyezési sémák többi alapfogalmával?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* A jogosultság egy reláció a szereplők és védett objektumok között.&lt;br /&gt;
* engedélyezés ált. sémáinál: szereplő&amp;gt;&amp;gt;&amp;gt;szereplőt leíró adatszerkezet&amp;gt;&amp;gt;&amp;gt;biztonsági szabályzat (policy), JOGOSULTSÁG&amp;gt;&amp;gt;&amp;gt;védett objektumok TODO&lt;br /&gt;
* Jogosultságkezelés alapjai: A rendszer működése során&lt;br /&gt;
** A szereplők műveleteket kezdeményeznek&lt;br /&gt;
** A műveletek kontextusa tartalmazza a szereplő azonosítóját, a célobjektumot és az elvégzendő művelet fajtáját&lt;br /&gt;
** A jogosultsági döntő komponens kiértékeli kontextust és engedélyezi vagy megtiltja a műveletet&lt;br /&gt;
** A jogosultsági végrehajtó komponens biztosítja, hogy a döntő által hozott döntés érvényre jusson&lt;br /&gt;
* NT: SMR (Secure Reference Monitor) - objektumok elérési jogosultságainak ellenőrzése&lt;br /&gt;
* NT: Az LSA a SAM segítségével azonosítja a felhasználót és jogosultságait. Ha a felhasználó jogosult bejelentkezni, a logon elindítja a számára kijelölt shellt&lt;br /&gt;
* UNIX: hozzáférési jogosultságok (owner, group, others, read, write, execute)&lt;br /&gt;
* Engedélyezés általános sémái: &amp;gt;&amp;gt;Szerep alapú hozzáférés-vezérlés &amp;gt;&amp;gt;Hozzáférési jogosultság listák&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Külső biztonság: Mit takar a külső biztonság fogalma?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Annak mértéke, hogy mennyire lehetünk biztosak a számítógépes rendszer, illetve a rendszerben tárolt adatok sérthetetlenségében.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Művelet kontextusa: Engedélyezési rendszerekben mit tartalmaz egy művelet kontextusa? (Felhasználó- és jogosultságkezelés)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A műveletek kontextusa tartalmazza a szereplő azonosítóját, a célobjektumot és az elvégzendő művelet fajtáját.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hibakeresés===&lt;br /&gt;
&lt;br /&gt;
====DTrace: Mi a Solaris DTrace megoldás célja?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
dinamikus hibakereső rendszer, nyomkövető eszköz, amivel a rendszer és a programok működését futási időben lehet megfigyelni.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Memória===&lt;br /&gt;
&lt;br /&gt;
====32 bit: 32 bites kliens Windows operációs rendszer maximum mennyi fizikai memóriát kezelhet, és miért?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Legfeljebb 4 GB-ot (bár néha kevesebbet lát az OS, mert a memóriatartomány felső részére I/O eszközöket szoktak berakni, ld. pl. videókártya-memória...): &#039;&#039;&amp;quot;kliens Windowsok nem használják a gépben lévő PAE támogatást, mert az a tapasztalat, hogy a kliensekben lévő eszközök meghajtói nem kezelik le rendesen a 4 GB-nál több fizikai memóriát&amp;quot;&#039;&#039;. &lt;br /&gt;
(https://wiki.sch.bme.hu/pub/Infoalap/OpRe/02-opre-windows-memoria.pptx)&lt;br /&gt;
(nem támogatják a PAE-t eleve, csak patch-csel)&lt;br /&gt;
(_&amp;quot;However, &amp;quot;client&amp;quot; versions of 32-bit Windows (Windows XP SP1 and later, Windows Vista, Windows 7) limit physical address space to the first 4 GB for driver compatibility and licensing reasons, even though these versions do run in PAE mode if NX support is enabled.&amp;quot;_ - http://en.wikipedia.org/wiki/Physical_Address_Extension)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====32 bit: 32 bites szerver Windows képes-e 4 GB-nál több fizikai memória kezelésére? Válaszát indokolja!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Igen, PAE (Physical Address Extension) támogatás segítségével (ezzel lehet 32 bites címbuszú CPU-val is 64 GB memóriát kezelni a maximális 4 GB helyett).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====32 bit: 32 bites Windows használata esetén egy felhasználói folyamat maximum mekkora virtuális címteret használhat?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Alapból 2GB felhasználói módú címterületet használhat, ez a /3GB kapcsolóval 3 GB felhasználói címterületre bővíthető.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====32 bit: 32 bites Windows szerver operációs rendszerek képesek-e 4 GB-nál több fizikai memória kezelésére? Indokolja válaszát!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Igen, PAE (Physical Address Extension) támogatás segítségével.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====32 bit: 32 bites x86-os (Windows) esetén mekkora a felhasználói és a rendszer mód címtartomány mérete?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Alapból 2GB felhasználói módú és 2GB kernel címterület van, ezt a /3GB kapcsolóval 3GB felhasználói és 1GB kernelre lehet módosítani.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Bélády-anomália: Mit nevezünk Bélády-anomáliának?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
	 FIFO algoritmusnál egyes esetekben, ha a munkahalmaz méretét növeljük, a várakozásokkal ellentétben a laphibák száma is nő.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Címfordítás: Hogyan történnek a címfordítások, ha az OS szegmens- és lapszervezést is használ a memóriánál?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
CPU --&amp;gt; Segmentation unit --&amp;gt; Paging unit --&amp;gt; Physical memory&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Címfordítás: Milyen címtranszformációk történnek együttes szegmens- és lapszervezésű memória használata során?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* CPU &amp;gt;&amp;gt;&amp;gt;[Logical Address]&amp;gt;&amp;gt;&amp;gt; &#039;&#039;&#039;Segmentation Unit&#039;&#039;&#039; &amp;gt;&amp;gt;&amp;gt;[Linear Address]&amp;gt;&amp;gt;&amp;gt; &#039;&#039;&#039;Paging Unit&#039;&#039;&#039; &amp;gt;&amp;gt;&amp;gt;[Physical Address]&amp;gt;&amp;gt;&amp;gt; Physical Memory (http://portal.mit.bme.hu/?l=oktatas%2Ftargyak%2Fvimia219%2Fjegyzet%2F2011%2Fslides_17_memory.pdf)&lt;br /&gt;
* https://wiki.sch.bme.hu/pub/Infoalap/OpRe/oprewiki1.pdf, 48. oldaltól.&lt;br /&gt;
* Változó méretű szegmensek fix méretű lapokat tartalmaznak. Kicsi mind a belső, mind a külső tördelődés. A cím felépítése: (szegmens szám, lapszám, lapon belüli eltolás)&lt;br /&gt;
* Hasonlít a szegmensszervezéshez és a kétszintű lapszervezéshez: A memóriában szegmensek vannak ugyan, de ezek lapokból épülnek föl. Van szegmenstábla, és minden bejegyzéséhez tartozik egy laptábla is. Külső töredeződés nincs, belső töredeződés minimális (szegmensenként átlag fél lap); ez a kombinált módszer egyesíti a két módszer előnyeit&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Lapszervezés, keret tábla: Lapszervezés esetén mit tartunk nyilván a keret táblában (frame table)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Az üres kereteket (frames).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Logikai vs. fizikai memória: Mi a különbség a logikai és a fizikai memória között?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A logikai memória a fizikai tár leképezve, ráadásul a leképezés a végrehajtás során változhat is.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====MMU: Mi a processzor Memory Management Unit (MMU) komponensének a feladata?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
	 * Speciális HW a CPU-ban&lt;br /&gt;
* Memória állapotának nyilvántartása&lt;br /&gt;
** Tulajdonos folyamat azonosítója&lt;br /&gt;
** Hozzáférési jogosultságok (ACL)&lt;br /&gt;
** cache-elhetőség, ha van cache (pl. DMA)&lt;br /&gt;
* Virtuális memória leképzése fizikai memóriára&lt;br /&gt;
** Pl. Translation Lookaside Buffer (TLB)&lt;br /&gt;
** Kontextusváltásnál ezt is kezelni kell (ha van)&lt;br /&gt;
** Pagefile vagy SWAP (HDD)&lt;br /&gt;
* Memóriavédelem&lt;br /&gt;
** Tiltott memória hozzáférés megakadályozása vagy legalább jelzése (ACL alapján)&lt;br /&gt;
** General Protection Fault (GPF) a Windows-ban&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Modified/dirty bit, referenced/used bit: Mi a modified/dirty bit és a referenced/used bit szerepe? (Virtuális memóriakezelés)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* laptáblában:&lt;br /&gt;
* Módosítás nyilvántartása (modified/dirty bit): minden memórialaphoz tartozik egy HW által kezelt bit (pl. a laptáblában) - betöltéskor törlik, módosításkor beállítják. Ha a dirty bit 1, akkor erre a lapra történt írási művelet, mióta a ﬁzikai memóriába került. Ezt a bitet a CPU tartja karban (automatikusan), ezzel az operációs rendszer munkáját segítve. 0 érték esetén a lapokat nem kell a diszkre kiírni, ha kiszorulnak a ﬁzikai memóriából (hiszen a tartalmuk a ﬁzikai memóriába helyezés óta változatlan, a diszk-en tárolt változat tehát továbbra is aktuális).&lt;br /&gt;
&lt;br /&gt;
* Hivatkozások nyilvántartása (referenced/used bit): Ha a refernced bit 1, akkor volt &amp;quot;mostanában&amp;quot; hivatkozás erre a lapra. Ezt is a CPU tartja karban. Ez a bit segít az operációs rendszernek, amikor el kell döntenie, hogy melyik lapot dobja ki a ﬁzikai memóriából, ha egy új lapnak nincs helye. A referenced=0 lapokból fog válogatni.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Page locking: Mit jelent és miért van szükség arra, hogy a virtuális tárkezelésnél egyes lapokat ideiglenesen a tárba lehessen &amp;quot;fagyasztani&amp;quot; (page locking)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Azt jelenti, hogy a lapcsere algoritmus nem lapozhatja ki a háttértárra az adott lapot. Ok: periféria-művelet van az adott lappal kapcsolatban.&lt;br /&gt;
* Azt jelenti, hogy bizonyos lapokat a memóriában tartunk, mert I/O műveletek hivatkozhatnak rá, és ilyenkor a memóriában kell lenniük, mert az I/O műveletek fizikai memóriacímeket használnak.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Referenced/used bit: Mi a referenced/used bit szerepe? (Virtuális memóriakezelés)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Bizonyos algoritmusok igénylik a lapra történő hivatkozások figyelését is, ami ugyancsak hardvertámogatással hatékony. A laptáblában erre a célra is fenntarthatunk egy bitet. Ezt a hivatkozott bitet (referenced bit, used bit, R bit) a címképző hardver állítja be minden esetben, amikor az adott lapon belüli címre történik hivatkozás. A bitet az operációs rendszer törli adott időnként, vagy eseményhez (például laphiba) kötötten.&lt;br /&gt;
* Hivatkozások nyilvántartása (referenced/used bit): OS adott időnként és/vagy adott eseményekre törli - használat esetén beállítják.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====TLB: Mi az a Translation Lookaside Buffer, fizikai címcsatolásnál mi a szerepe?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A virtuális címet fizikai címre a laptábla segítségével lehet fordítani; de ez lassú, plusz egy memória-hozzáférést jelent. Ezért a lapkezdőcímek egy részét egy asszociatív cache-ben eltárolják, ez a TLB. Címfordításkor párhuzamosan indul a keresés a laptáblában és a TLB-ben, ha az egyikben megtalálta, akkor kész.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====TLB: Mire szolgál a Translation Lookaside Buffer és mi a szerepe a fizikai cím kiszámításánál (virtuális címképzés)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A virtuális címet fizikai címre a laptábla segítségével lehet fordítani; de ez lassú, plusz egy memória-hozzáférést jelent. Ezért a lapkezdőcímek egy részét egy asszociatív cache-ben eltárolják, ez a TLB. Címfordításkor párhuzamosan indul a keresés a laptáblában és a TLB-ben, ha az egyikben megtalálta, akkor kész.&lt;br /&gt;
&lt;br /&gt;
(Szerintem előbb a TLB-ben keresi, aztán ha ott nincs, csak utána nézi a laptáblát.)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Tördelődés (külső vs. belső): Mi a különbség a külső és belső tördelődés között? (Memória foglalás)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
	A tördelődött memóriaterületet külső tördelődés esetén az operációs rendszer szabadon hagyja, míg belső tördelődés esetén pedig odaadja egy olyan folyamatnak, aminek nincs igazából rá szüksége.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Vergődés: Adja meg a vergődés (trashing) definícióját!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A gyakori laphibák okozta teljesítménycsökkenést vergődésnek (thrashing) nevezzük. Az ellene való védekezés a munkahalmaz méretének jó megválasztása. Célszerű egy folyamatnak annyi lapot adni, amennyi szükséges az egyensúlyhoz, azaz ahány lapra hivatkozik a laphiba kiszolgálás ideje alatt (ugyanakkor nem sokkal többet, mert ekkor leromlik a multiprogramozás foka).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Vergődés: Mi az a vergődés, és hogyan védekezzünk ellene?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Ha több memóriára lenne szüksége a folyamatoknak, mint amennyi rendelkezésre áll, ezért túl gyakran keletkezik laphiba, és a processzor idejének nagy része haszontalan lapcserékkel telik.&lt;br /&gt;
* Védekezni ellene például azzal lehet, ha a laphiba-gyakoriság függvényében az ütemező változtatja a multiprogramozás fokát: ha kevés a memória, folyamatokat függeszt fel, és swappel ki; ha van elég, akkor épp ellenkezőleg.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===uc/OS-II===&lt;br /&gt;
&lt;br /&gt;
====Prioritás: A uC/OS-II-ben hány taszk tartózkodhat egy prioritási szinten és miért?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
1, mert így gyorsan eldönthető, hogy melyik a legmagasabb prioritású, futásra kész taszk.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prioritás: Egy prioritási szinten hány szál futtatását teszi lehetővé a uC/OS-II, miért?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
1, mert így gyorsan eldönthető, hogy melyik a legmagasabb prioritású, futásra kész taszk. Egy taszk = egy szál.&lt;br /&gt;
&lt;br /&gt;
(Magyarázat: egy taszk = egy szál; lásd http://video.bme.hu/media/video/Operacios_Rendszerek_08ea_20110301.wmv, 01:09:18 környékén&lt;br /&gt;
Röviden: a beágyazott rendszerek, kis OS-ek esetén (uC/OS-II, FreeRTOS, stb.) lényegében csakis szálakban gondolkozunk. Nincs MMU, csak egyetlen összefüggő fizikai memória van, nincs virtuális memória koncepció, a processzoron futó teljes alkalmazás (az egyetlen alkalmazás) egy nagy folyamat - nincs más folyamat! Ezenbelül tudunk threadeket futtatni. Single Address Space.)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Ütemezés===&lt;br /&gt;
&lt;br /&gt;
====Átbocsátó képesség: Adja meg az átbocsátó képesség definícióját és mértékegységét!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
*  (throughput) Mértékegység: munka/s, vagy 1/s&lt;br /&gt;
* Adott időegység alatt elvégzett feladatok száma. &amp;lt;math&amp;gt;\frac{\sum \textrm{elvegzett munkak}}{\textrm{ido}}&amp;lt;/math&amp;gt;&lt;br /&gt;
* A rendszerfeladatokat nem számoljuk.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Hosszú távú ütemezés: Adja meg a hosszú távú ütemezés célját!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Tipikusan a BATCH rendszerekben van jelen, és uj jobok végrehajtasának megkezdéseről (új folyamatok indítasárol) dönt. Az elvégzesre váro munkák közül a választas szempontja, hogy a rendszerben a CPU-intenzív es I/O-intenzív folyamatok aránya optimális legyen (optimalis job-mix fenntartasa).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Hosszú távú ütemezés: Definiálja a hosszú távú ütemezés fogalmát!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A hosszútávú ütemező feladata az elindított feladatok rendszerbe, illetve a &amp;quot;futásra kész&amp;quot; várakozási sorba való beengedését szabályozni. Igyekszik a CPU-t és a perifériákat terhelő folyamatokat egyensúlyban tartani. Batch rendszerekre jellemző; a PC-k oprendszere általában azonnal indítja a folyamatokat, mikor azt a felhasználó kéri.&lt;br /&gt;
* feladata: A háttértáron várakozó feladatok közül kiválasztja azt, amelyiket el kell indítani.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Konvoj hatás: Mi a konvoj hatás, és a tanult ütemező algoritmusok közül melyekben jelentkezhet?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* igen nagy lehet az átlagos várakozási idő, mivel egy-egy hosszú CPU-löketű folyamat feltartja a mögötte várakozókat&lt;br /&gt;
* FCFS-nél (First-come, first-served) tapasztalható (pl. SJF (Shortest Job First) és RR algoritmus küszöböli ki)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Középtávú ütemezés: Adja meg a középtávú ütemezés célját!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Swapping, azaz a program a fizikai memória és a háttértár közti mozgatása.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Középtávú ütemezés: Mi a középtávú ütemező feladata?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Swapping, azaz a program a fizikai memória és a háttértár közti mozgatása.&lt;br /&gt;
&lt;br /&gt;
Szerintem inkább ez:&lt;br /&gt;
A rendszerben lévő feladatok memóriájának egyes éppen nem használt részeinek kiírása háttértárra.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Körülfordulási idő: Mi az a körülfordulási idő?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* TAT (Turnaround Time) -&amp;gt; Egy feladatra vonatkozóan a rendszerbe helyezéstől a teljesítésig eltelt idő.&lt;br /&gt;
* Mértékegység: s,&lt;br /&gt;
* t_(CPU,végrehajtási idő)+t_várakozás (Magában foglalja a ténylegesen munkával töltött időt és a várakozást is.)&lt;br /&gt;
* felhasználó minél előbb szeretné látni a végeredményt &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Megszakítás: Az éppen futó taszkot megszakítja egy IT. Preemptív OS esetén mindig a megszakított taszk fogja-e visszakapni a futási jogot? Miért?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Nem feltétlenül; például a preemptálás maga is úgy működik, hogy egy időzítő a szál quantumjának lejártakor megszakítást generál; ilyenkor értelemszerűen az ütemező általában nem ugyanazt a folyamatot választja ki futásra.&lt;br /&gt;
* Másik: Nem, mert akitől elvették a futás jogát az futásra kész állapotba fog kerülni és az ütemező dönti el, hogy melyik folyamat fogja megint megkapni a futást.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Megszakítás: Egy futó taszkra IT érkezik. Preemptív OS esetén az interrupt után mindenképpen &#039;ide&#039; térünk vissza?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Nem feltétlenül; például a preemptálás maga is úgy működik, hogy egy időzítő a szál quantumjának lejártakor megszakítást generál; ilyenkor értelemszerűen az ütemező általában nem ugyanazt a folyamatot választja ki futásra.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Preemptív ütemező: Mikor nevezünk egy ütemezőt preemptívnek? ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Ha az OS elveheti a futásjogot (a CPU-t) egy folyamattól/futó feladattól (interrupt).&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rövid távú ütemezés: Mi a rövidtávú ütemezés, mikor jár környezetváltással?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Rövidtávú ütemezés: futó folyamat kiválasztása a futásra kész feladatok közül&lt;br /&gt;
* Ha a futó folyamatnak lejár az időszelete (csak preemptívnél), önként lemond a processzorról (együttműködő folyamatok), blokkoló rendszerhívást hajt végre (pl. I/O művelet), egy másik szál futásra kész állapotba kerül (bekövetkezik, amire várt, vagy újonnan elindítanak egy szálat), egy szál prioritása megváltozik, esetleg egy szál processzor-affinitása megváltozik.&lt;br /&gt;
* Környezetváltással akkor jár, ha másik szál választódik ki futásra, mint ami eddig futott. Pl. Windows NT alatt, ha a legmagasabb prioritási szinten pontosan egy folyamat van, akkor megtörténhet, hogy ugyanaz a szál fut tovább, és nem történik környezetváltás.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rövid távú ütemezés: Mikor fut a rövidtávú ütemező és mikor jár környezetváltással?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Ütemezés következhet be, ha&lt;br /&gt;
** a futó folyamat befejeződik,&lt;br /&gt;
** egy folyamat felébred, futásra késszé válik,&lt;br /&gt;
** a futó folyamat várakozni kényszerül (valamilyen esemény bekövetkezésére), illetve,&lt;br /&gt;
** a futó folyamat önként lemond a futás jogáról vagy pedig elveszik tőle.&lt;br /&gt;
* Az első és a harmadik esetben az ütemezés mindig környezetváltással jár, hiszen a következő futó folyamat egészen biztosan nem a korábban futott lesz. A másik két esetben előfordulhat, hogy az ütemezőnek nem kell másik folyamatot kiválasztania.&lt;br /&gt;
* Ha a futó folyamatnak lejár az időszelete (csak preemptívnél), önként lemond a processzorról (együttműködő folyamatok), blokkoló rendszerhívást hajt végre (pl. I/O művelet), egy másik szál futásra kész állapotba kerül (bekövetkezik, amire várt, vagy újonnan elindítanak egy szálat), egy szál prioritása megváltozik, esetleg egy szál processzor-affinitása megváltozik.&lt;br /&gt;
* Környezetváltással akkor jár, ha másik szál választódik ki futásra, mint ami eddig futott. Pl. Windows NT alatt, ha a legmagasabb prioritási szinten pontosan egy folyamat van, akkor megtörténhet, hogy ugyanaz a szál fut tovább, és nem történik környezetváltás.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Terhelés-végrehajtó egységek közötti megosztás: Sorolja fel a terhelés-végrehajtó egységek közötti megosztásának megoldásait! (Többprocesszoros rendszerek)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Master and slaves (egy CPU osztja ki a feladatokat)&lt;br /&gt;
* Self-scheduling / peering (minden CPU ütemez)&lt;br /&gt;
* Globális futásra kész sor&lt;br /&gt;
* Processzoronkénti futásra kész sor&lt;br /&gt;
**  Push alapú: OS kernel folyamat mozgatja a sorok között a feladatokat.&lt;br /&gt;
**  Pull alapú: Az idle állapotban (idle feladatot végrehajtó) CPU próbál a többi sorából feladatot kapni.&lt;br /&gt;
* Kettő kombinációja&lt;br /&gt;
** Összefüggő, párhuzamosan futtatható feladatok optimalizálása (pl. Gang scheduler)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Virtualizáció===&lt;br /&gt;
&lt;br /&gt;
====Hardveres virtualizáció: Mit jelent az, ha egy x86-os processzor hardveres virtualizáció támogatással rendelkezik?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A CPU utasításkészletének és üzemmódjainak olyan kiegészítése, amely lehetővé teszi a vendég operációs&lt;br /&gt;
rendszer kódjának módosítás nélküli futtatását. [?]&lt;br /&gt;
&lt;br /&gt;
(Speciális utasításokkal látják el a processzort, amit szoftveresen akár több 100 utasításon keresztül lehetne csak megoldani. ROSSZ(MZ))&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Elrejti a gep fizikai tulajdonsagait a felhasznalok elol.&lt;br /&gt;
&lt;br /&gt;
Miert erdemes virtualizalni?&lt;br /&gt;
&lt;br /&gt;
-Lehet futtatni a gazda OS el nem kompatibilis alkalmazast.&lt;br /&gt;
&lt;br /&gt;
-Lehet biztonsaggal rendszergazda jogot adni mindennek, mert ugy se tud a gazda os-be kart tenni.&lt;br /&gt;
&lt;br /&gt;
-Konnyen at lehet masolni a virtualis gepet egy masik gepre.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Hosted vs. bare-metal: Miben különbözik egy hosted egy bare-metal típusú virtualizációs megoldástól?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
  Bare-metal esetén a VMM kezeli a HW erőforrásokat, míg hosted típusú esetén ezt a host OS végzi. &lt;br /&gt;
&lt;br /&gt;
videó:&lt;br /&gt;
http://video.bme.hu/media/video/Operacios_Rendszerek_20ea_20110418.wmv&lt;br /&gt;
00:16:45 körül&lt;br /&gt;
&lt;br /&gt;
Kétféle megközelítés:&lt;br /&gt;
&lt;br /&gt;
# Hosted: az operációs rendszerre telepítek egy virtualizációs szoftvert, ez beépül az operációs rendszerbe tipikusan kernel modulként, innentől a virtualizációs szoftver teszi lehetővé, hogy virtuális gépeket futtassak. Tipikusan a desktop megoldások (VMware Player, VirtualBox, Virtual PC, stb.)&lt;br /&gt;
# Bare-metal: a virtualizációs szoftver valós OS-szerű funkciókat valósít meg. Lényegében egy minimális funkciókészlettel rendelkező OS. A hardvert nem egy általános célú operációs rendszer kezeli, hanem a virtualizációs szoftver feladata az, hogy a hardver-erőforrásokkal gazdálkodjon, ő dönt az ütemezésről, ő dönt a memória-hozzáférésekről. Tipikusan szokott hozzá tartozni egy menedzsment operációs rendszer, egy menedzsment konzol, ami a távoli hozzáférést, virtuális gépek elindítását lehetővé teszi, és ott is ott tudom futtatni a vendég operációs rendszereket. Tipikusan szervermegoldások (VMware ESX Server, Xen Enterprise, MS Hyper-V).&lt;br /&gt;
&lt;br /&gt;
Fontos különbség: ki dönt a CPU-erőforrásról?&lt;br /&gt;
# van az OS-nek egy ütemezője, ő dönt arról, mikor, ki kapja meg a CPU-t. Dönthet úgy, hogy az időszeletet az alkalmazás kapja meg, a köv. időszeletet a virtualizációs szoftver/modul, ő magán belül pedig eldöntheti, melyik virtuális gépnek osztja a processzort, de alapvetően a host OS dönt arról, mi dönt az erőforrásról.&lt;br /&gt;
# arról, hogy ki kapja a CPU-t, a közvetlenül a hardver réteg felett lévő virtualizációs szoftver dönti el. Dönthet úgy, hogy a menedzsment OS kapja, dönthet úgy, hogy valamelyik virtuális gép kapja meg.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Paravirtualizáció: Mit jelent az, hogy egy virtualizációs megoldás paravirtualizációt használ a CPU virtualizálásához?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Módosítjuk a vendég OS forráskódját, hogy ne is akarjon &amp;quot;problémás&amp;quot; utasításokat hívni, hanem azok helyett azoknak megfelelő függvényeket hívjon a hypervisorban. (Ezzel egyszerűsödik a hypervisor implementálása, viszont csak úgy működik a módszer, ha módosítják a vendég OS forrását.)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Trap-and-emulate: Trap &amp;amp; emulate virtualizációs módszer használata esetén mi történik a vendég gép által kiadott nem privilegizált utasítással?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* nem privilegizált utasítások közvetlenül a valós CPU-n hajtódnak végre (no VMM intervention)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===UNIX===&lt;br /&gt;
&lt;br /&gt;
====Adminisztratív adatok: hol helyezzük el azokat az adminisztratív adatokat, amelyekre mindig szükség van, akkor is, ha a folyamatnak egyetlen lapja sincs a memóriában?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A proc struktúrában.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Adminisztratív adatok: UNIX-ban a folyamatokkal kapcsolatos adminisztratív adatok hogyan épülnek fel?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
TODO: rövidíteni.&lt;br /&gt;
&lt;br /&gt;
# adatok, melyek elsősorban akkor szükségesek, amikor a folyamat ténylegesen fut - bent van egy v. több lapja a memóriában, éppen ezekkel kapcsolatos utasításokat hajtunk végre. &amp;gt;&amp;gt; az u-területen található kontextusadatok. A folyamat címtér része. A folyamat nem férhet hozzá, de a folyamat saját címterében találhatók. Amikor a folyamatnak egyetlen lapja sincs a memóriában, hanem minden a háttértáron található, a folyamat nem fut, akkor az itt található adatokhoz a kernel sem tud hozzáférni, mivel ide csak azok az adatok kerülnek, melyek a folyamat futásakor kellenek! Pl. hozzáférés-szabályozási adatok: a folyamat szeretne valamilyen tevékenységet végrehajtani, szabad-e neki vagy sem? Másik példa: rendszerhívások állapotai: végrehajt egy rendszerhívást, amiben éppen tartózkodik, ezzel kapcsolatos állapotadatok, stb. Vagy: nyitott fájl adatok, fájlkezeléssel kapcsolatos adatok. UNIX-ban a fájlkezelést nagyon általánosan kell érteni. Minden, ami a fájlrendszer-interfészen keresztül zajlik, ahhoz tartozik egy nyitott fájl objektum, ami ennek adminisztrálására szolgál, ezek is az u-területen találhatók. Ezenkívül: számlázási, statisztikai adatok.&lt;br /&gt;
&lt;br /&gt;
# adatok, melyek elsősorban a folyamatok kezeléséhez szükségesek (amire a kernelnek bármikor szüksége lehet). Pl. folyamat alapvető azonosító adatai. Folyamat PID-je, szülőazonosító, stb. Folyamat ütemezésével kapcsolatos adatok, mi a folyamat aktuális futási állapota, mennyi a prioritása, prioritás kiszámolásához szükséges adatai, stb. Memóriakezelési adatok: folyamat memórialapjai bent vannak a memóriában, vagy épp kint vannak a háttértáron. Az u-terület címe, stb. &amp;gt;&amp;gt;&amp;gt; proc struktúra adatai: a process tábla egy eleme (ez a klasszikus rendszereknél ténylegesen egy tábla volt, ma bonyolultabb, pl. láncolt listás megvalósítás). A kernel címterének része. A kernel bármikor elérheti őket.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Adminisztratív adatok: Milyen adatstruktúrá(k)ban és milyen címter(ek)ben található(k) a folyamatok adminisztratív adata(i)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A folyamat futása során szükséges adatok az u-területen, mely a folyamat címterének része, illetve a folyamatok kezeléséhez szükséges adatok a proc struktúrában, mely a kernel címtér része.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Adminisztratív adatok: Sorolja fel a UNIX folyamatok legalább 4 alapvető adminisztratív adatát!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* PID (Process ID): egyedi, a folyamatot azonosító szám (PPID: szülő folyamat azonosítója)&lt;br /&gt;
* A folyamat állapota (fut, alszik, stb.; ütemezési információk (prioritás, CPU használat, nice érték) )&lt;br /&gt;
* Hitelesítők (UID, GID: a kapcsolódó felhasználó adatai)&lt;br /&gt;
* Memória-kezelési adatok (címleképezési térkép)&lt;br /&gt;
* Kommunikációs adatok (fájlleírók, jelzés információk)&lt;br /&gt;
* Statisztikák (erőforrás használat (számlázáshoz) )&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Alvási prioritás: UNIX alvási prioritásának ütemezését mi végzi?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Az alvási prioritást is az ütemező határozza meg, az alapján, hogy mire várakozik a folyamat, vagyis miért hajtott végre sleep() rendszerhívást. Kernel módban az ütemező nem veheti el a futási jogot, ezért amíg nem hajt végre sleep() hívást, addig nincs is szükség a prioritásának meghatározására.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Android: Az Androidban mikor és miért (adjon jellegzetes példát) terminálható egy alkalmazás?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Az alkalmazás erőforráshiány miatt bármikor terminálható, ezt az operációs rendszer automatikusan meg is teszi. Példa: ha nincs elég memória.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Belső szerkezeti elemek: Sorolja fel a UNIX operációs rendszer főbb belső szerkezeti elemeit!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* betöltő&lt;br /&gt;
* virtuálismemória-kezelő&lt;br /&gt;
* állományrendszer&lt;br /&gt;
* blokkos berendezés-meghajtó kapcsoló (+ a hozzá kapcsolódó eszközmeghajtók, pl.: lemezegység, szalagos meghajtó)&lt;br /&gt;
* karakteres berendezés-meghajtó kapcsoló (+ a hozzá kapcsolódó eszközmeghajtók, pl.: hálózat, nyomtató)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Csővezeték (pipe): Írjon le egy olyan konkrét UNIX shell parancssort, amely csővezetéket alkalmaz!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
ls -la | more&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====exec(): Mire szolgál a UNIX exec() rendszerhívás?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
exec(): új programkód betöltése egy folyamat címterébe&lt;br /&gt;
Azaz a fork() paranccsal létrehozunk egy új folyamatot, exec() paranccsal pedig betöltjük a folyamatba a kódot.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fájl-attribútumok: Sorolja fel a fontosabb UNIX fájl-attribútumokat!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Típus&lt;br /&gt;
* Linkek&lt;br /&gt;
* Eszköz, inode, méret...&lt;br /&gt;
* Időbélyegek&lt;br /&gt;
* Azonosítási és hozzáférés-szabályozási adatok&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fájlrendszeri bejegyzések: Sorolja fel a UNIX fájlrendszeri bejegyzések alapvető tulajdonságait (legalább hármat, ls -l oszlopok)!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* pl.: drwxr-xr-x 2 root root 4096 dec 22 12.27 txt&lt;br /&gt;
* sorrendben: I. UNIX-fájltípusok (pl. közönséges fájl (-), katalógus (d), szimbolikus link (l), stb.), II. hozzáférési jogosultságok (3*3-as bontásban - 1. hármas csoport a tulajdonos, a 2. a csoport, a 3. a többiek jogosultságait;  &#039;r&#039; az olvasás (read), a &#039;w&#039; az írás (write), az &#039;x&#039; pedig a végrehajtás (execute) jele), III. jogosultságok után egy szám áll (ez könyvtárak esetén azt mondja meg, hogy az adott könyvtár hány elemet tartalmaz, fájlok esetén azt tudhatjuk meg, hogy az adott fájlra hány hardlink mutat), IV. tulajdonos, V. méret (bájtokban), VI. utolsó módosítás dátuma, VII. fájl neve&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Felfüggesztett állapotok: Mik azok a felfüggesztett állapotok, mi a szerepük a UNIX-ban?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
felfüggesztve futásra kész, felfüggesztve alszik állapot A UNIX-ban egyfajta hosszú távú, felhasználói ütemezést jelentenek - a felhasználónak lehetősége van arra, hogy bizonyos folyamatokat a többi állapotból kiemeljen. Pl. Ctrl+Z billentyűkombinációval felfüggesztem a folyamatok futását. Innen valamikor visszahelyezzük futó állapotba.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Felhasználói mód, kernel kontextus: UNIX esetén milyen tevékenység zajlik felhasználói módban, kernel kontextusban?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Semmilyen!! &lt;br /&gt;
Megj.: Kernel kontextusban, felhasználói módban a program saját utasításait hajtjuk végre, a program saját adataival dolgozunk. Ennél fogva itt nincs értelme beszélni semmiről, mert a folyamat a kernel kontextusában nem hajthat végre semmit.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Felhasználói módból kernel módba váltás: Hogyan vált egy UNIX folyamat felhasználói (user) módból kernel módba?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Rendszerhívásokon keresztül.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Felhasználói módú prioritás: Sorolja fel milyen tényezők határozzák meg egy UNIX folyamat felhasználói módú prioritását (tradicionális UNIX ütemező esetén)!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Korábbi CPU-használat&lt;br /&gt;
* Futásra kész folyamatok száma (p_cpu &amp;quot;öregítésével&amp;quot;)&lt;br /&gt;
* nice érték (nice és renice parancsok)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Folyamatok állapotai: Milyen állapotai vannak a UNIX-folyamatoknak?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
# kiinduló állapot&lt;br /&gt;
# futásra kész&lt;br /&gt;
# kernel módban futó állapot&lt;br /&gt;
# felhasználói módban futó állapot&lt;br /&gt;
# alvó állapot&lt;br /&gt;
# zombi állapot&lt;br /&gt;
# felfüggesztve alszik&lt;br /&gt;
# felfüggesztve futásra kész&lt;br /&gt;
&lt;br /&gt;
 Ctrl+Z-vel felfüggesztett állapotba helyezem a folyamatot.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Folyamatok közötti kommunikáció: Soroljon fel legalább 4 UNIX folyamatok között kommunikációs megoldást!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* System V IPC: szemafor, osztott memória, üzenetsor&lt;br /&gt;
* Csővezeték és nevesített csővezeték&lt;br /&gt;
* Jelzések&lt;br /&gt;
* RPC&lt;br /&gt;
* Folyamat-nyomkövetés&lt;br /&gt;
* Szemaforok&lt;br /&gt;
* Üzenetsorok&lt;br /&gt;
* Osztott memória&lt;br /&gt;
* Hálózati, socketeken keresztüli kommunikáció&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Folyamatok közötti kommunikáció: Soroljon fel UNIX folyamatok közötti adatátviteli eszközöket (legalább hármat)!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* System V IPC: - szemaforok, - üzenetsorok, - osztott memória&lt;br /&gt;
* Jelzések: - aszinkron események keltése és kezelése&lt;br /&gt;
* Csővezetékek, nevesített csővezetékek: - FIFO kommunikáció a &amp;quot;rokonságban&amp;quot;&lt;br /&gt;
* Szemaforok: - a korábban megismert szinkronizációs megoldások&lt;br /&gt;
* Üzenetsorok: - diszkrét, típusos üzenetek folyamatok között&lt;br /&gt;
* Osztott memória: - azonos fizikai memóriaterület használata több folyamatban&lt;br /&gt;
* &amp;quot;hálózati&amp;quot; (socket) kommunikáció: - címzéssel és protokollokkal támogatott kommunikáció&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====fork(): Mire szolgál a fork() rendszerhívás?====&lt;br /&gt;
TODO: rövidíteni.&lt;br /&gt;
&lt;br /&gt;
Új folyamat létrehozására. A fork() hívásakor az aktuális folyamat, amely kiadta a rendszerhívást, megduplázódik (minden adata, verme, memórialapja, stb.), onnantól két példányban fog továbbélni, amelyek egymással szinte tökéletesen megegyeznek, kvázi klónozva van a folyamat, néhány apró különbség van csupán. De valójában a memóriaszervezés ügyes trükkje: semmit nem csinál azonkívül, hogy bizonyos adminisztratív adatokat megdupláz, ténylegesen nem másol semmit (memórialapokat)! Az így megduplázott folyamat memórialapjaihoz hozzárendel még egy folyamatot, és megjegyzi azt, hogy amíg ezek a folyamatok békésen tudnak egymás mellett dolgozni, addig dolgozzanak ugyanazon, de ha konfliktus van, akkor majd lemásoljuk ezeket a memórialapokat. &lt;br /&gt;
&lt;br /&gt;
Ha a fork() hívás 0-val tér vissza: a gyerek folyamat kódja fut tovább. Ha egy negatív számmal tér vissza, fork() hiba történt, nem tudtuk létrehozni az új folyamatot, le kell kezelni. Ha pozitív számot adott vissza, akkor az eredményben a gyerekfolyamat azonosítója található, itt a szülőfolyamat fut tovább.&lt;br /&gt;
 &lt;br /&gt;
Gyerek folyamat fut: az exec() az aktuális folyamat helyére betölt egy másik binárist. Az exec()-et meghívó folyamatnak az exec() kitörli a saját kontextusát, stb., betölt egy új programkódot, amit elkezd végrehajtani. (Kvázi mintha elindítana egy új folyamatot, de a folyamat már fut.) Ha nem sikerült betölteni a binárist (pl. nincs ilyen fájl), akkor hiba, visszatér az exec() is, egyébként nem: az új programkód utasításait hajtjuk végre.&lt;br /&gt;
Tehát folyamat létrehozása UNIX-ban két lépésben:&lt;br /&gt;
# fork() rendszerhívás = folyamatduplázás, majd&lt;br /&gt;
# a gyerekfolyamat helyére az új programkód betöltése exec() hívással.&lt;br /&gt;
Modern UNIX-okban fork() már nem igazán (más rendszerhívásokat használ).&lt;br /&gt;
&lt;br /&gt;
====fork(): Miért van szükség a fork() rendszerhívásnál a folyamat megduplázására?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Futási/végrehajtási mód: Mi az a futási mód?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
http://video.bme.hu/media/video/Operacios_Rendszerek_09ea_20110307.wmv, 00:17:00 környéke alapján&lt;br /&gt;
TODO - rövidíteni&lt;br /&gt;
A folyamatok a kerneltől teljesen különválasztva működnek (rendszerhívás interfészen keresztül kommunikálnak a kernellel). A végrehajtási mód azt határozza meg, hogy a kernel vagy a folyamat feladatait hajtja végre az OS.&lt;br /&gt;
Két mód: kernel (&amp;quot;privilegizált, védett&amp;quot;) mód, valamint felhasználói (&amp;quot;szabad&amp;quot;) mód.&lt;br /&gt;
Kernel módban a védett (kernel) tevékenységeket, felhasználói módban a folyamat programkódját hajtja végre az OS.&lt;br /&gt;
Példa: egy webböngésző a tevékenysége egy részében a saját feladatát hajtja végre, pl. HTML-kódot értelmez és jelenít meg, valamint vannak olyan tevékenységek, amelyek ahhoz kellenek, hogy ezt a feladatát végrehajtsa: hálózati kommunikáció, fájlrendszer-műveletek, stb. - ezek kernel tevékenységek.&lt;br /&gt;
Kernel módban privilegizált utasítások hajtódnak végre, pl. egy eszközt kezelünk, vagy hozzányúlunk a háttértárhoz, onnan valamit beolvasunk, oda valamit kiírunk. Ilyen utasításokat egy felhasználói módban futó folyamat nem hajthat végre, hiszen ha közvetlenül hozzáférne a hardverekhez, akkor akár adott esetben a teljes rendszer működését felboríthatná.&lt;br /&gt;
Felhasználói módból kernel módba átlépéskor átlépünk egy védett módba, így olyan feladatokat is végrehajthatunk, amit egyébként tilos.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====inode: Mi a UNIX inode?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* A fizikai állományokhoz tartozó leíró, azonosító&lt;br /&gt;
* minden file-hoz tartozik egy inode állomány amiben a file minden tulajdonsága megtalálható (azonosító,leíró)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kernel mód, folyamat kontextus: Milyen tevékenység zajlik kernel módban, folyamat kontextusban?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Kivételek, rendszerhívások kezelése, rendszerhívások végrehajtása.  &lt;br /&gt;
Amikor a folyamat végrehajt egy rendszerhívást, a felhasználói módból átlép kernel módba, hiszen a rendszerhívás belsejében olyan tevékenységeket szeretne végrehajtani (beolvasni vmit egy fizikai eszközről, hálózatról, más folyamattal kommunikálni, elindítani másik folyamatot, stb.), amelyhez kernel utasítások végrehajtása tartozik.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kernel mód, kernel kontextus: Milyen tevékenység zajlik kernel módban, kernel kontextusban?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Rendszerfeladatok, megszakítások kezelése. Kernelfolyamatok.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kernel módú prioritás: Mi határozza meg a UNIX folyamatok kernel módú prioritását a tradicionális UNIX ütemezésben?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A kernel módban futó folyamat prioritása statikus, nem függ attól, hogy a folyamat mennyit használta a CPUt, vagyis mennyi ideig futott. A prioritás attól függ, hogy a folyamat milyen ok miatt hajtott végre sleep rendszerhívást, vagyis, hogy milyen eseményre várakozik. Emiatt a kernel prioritást szokták alvási prioritásnak is nevezni.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kernelszolgáltatások elérése: Milyen interfészen keresztül érhetők el a UNIX kernel szolgáltatásai?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* System Call Interface&lt;br /&gt;
* Az alkalmazások a rendszerkönyvtárakat hívják meg, amelyek szükség szerint meghívják az operációs rendszer szolgáltatásait ??&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kontextus: Mi az a kontextus?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
http://video.bme.hu/media/video/Operacios_Rendszerek_09ea_20110307.wmv alapján.&lt;br /&gt;
TODO: rövidíteni.&lt;br /&gt;
Az a környezet, amiben végrehajtjuk az utasításokat. Ez is különbözik a kernelek és folyamatok esetén: folyamat kontextusban azokkal az adatokkal és utasításokkal dolgozunk, amelyek alapvetően a folyamat célját szolgálják, kernel (rendszer vagy megszakítás) kontextusban pedig kernel feladatokat hajtunk végre, és az ezekhez a feladatokhoz szükséges adatokkal dolgozunk.&lt;br /&gt;
Kernel kontextus: érkezik egy hardveres megszakítás, ennek kezelése itt zajlik.&lt;br /&gt;
Folyamat kontextus: a folyamattal kapcsolatban hajtunk végre tevékenységeket.&lt;br /&gt;
Nem uaz, mint a végrehajtási mód, mert lehetséges az, hogy bizonyos tevékenységeket kernel módban hajtunk végre, de folyamat kontextusban. Amikor hozzá kell férnünk egy folyamat futási adataihoz, veremhez, virtuális memóriájához, stb., a programnak az adminisztratív adatait kezeljük, ezek folyamat kontextusban találhatóak.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Környezeti adatok: Mik azok a környezeti adatok egy UNIX-folyamatnál?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A folyamat indításakor megörökölt tulajdonságok. Tulajdonság-érték párok. Pl. a felhasználó bejelentkezik; mi az ő neve. A felhasználó milyen terminált használ, annak milyen képességei vannak. Mi a felhasználó shellje. Az épp futó folyamat néhány tulajdonsága. Olyan tulajdonság, amely egyes folyamatok számára értéket jelentenek. A felhasználók ezeket a set, setenv, export parancsokkal tudják ezeket állítani (és le is kérdezhetik őket). Megörökli az őt elindító folyamat környezetét (hogy melyiket kell épp használni, UNIX-variánstól függ). Amikor a felhasználó bejelentkezik, akkor a környezeti változók beállítódnak, a folyamatok induláskor ezeket a beállításokat megöröklik.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====libc: A libc-nek mi a feladata rendszerhívások kezelésében?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A felhasználói mód és kernel mód közötti átmenet lebonyolítása.  &lt;br /&gt;
A folyamat csak meghív egy open(), read(), write(), stb. függvényt, valójában a háttérben bonyolultabb tevékenység zajlik &amp;gt;&amp;gt; meghív egy rendszerhívást a rendszerhívás interfészen keresztül. A rendszerkönyvtárak egyike a libc, a standard C library, ez felel azért, hogy az adott függvényhívásokat (mint a read()) leképezze arra a mechanizmusra, amin keresztül átlépünk kernel módba.  &lt;br /&gt;
Az implementáció belsejében van egy SYSCALL utasítás (ez hardverfüggő), ez ténylegesen elvégzi az üzemmódváltást egy speciális megszakítás generálásával, aminek eredményeként a CPU átlép védett módba. A kernel pedig kezeli ezt a megszakítást. Ekkor a kernel a CPU regisztereit elmenti, azért, hogy a folyamat futása visszaállhasson a megfelelő állapotba. A feladat végeztével a kernel visszatér a megszakításból (erre is hardverfüggő a megvalósítás), a CPU visszavált felhasználói módba, a libc pedig visszatér a függvényhívásból, amit a folyamat kiadott.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====/proc: Mi a /proc?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Speciális fájlrendszer-interfész a kernel-adatstruktúrákhoz való hozzáféréshez.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Prioritás: Hogyan számítható ki egy kernel módban futó UNIX folyamat prioritása?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* a prioritást a folyamat elalvásának oka határozza meg, tehát a prioritás attól függ, milyen sleep utasítással ment át alvó állapotba&lt;br /&gt;
* alvási prioritás pl: 20 - diszk I/O-ra vár; 28 - inputra vár a karakteres terminálról&lt;br /&gt;
* kernel módú folyamatoknak (amelyek rendszerhívásokat intéznek) negatív prioritásértékeik vannak, ezeknek van a legmagasabb prioritása ...........  (http://home.mit.bme.hu/~meszaros/edu/oprendszerek/segedlet/unix/2_folyamatok_es_utemezes/unix_processes.pdf)&lt;br /&gt;
* Több szinten, több időléptékben zajlik. Óraütésenként a prioritási sorok ellenőrzése. 10 óraütésenként RR ütemezés egy soron belül. 100 óraütésenként a prioritások újraszámítása.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rendszerhívások: Igaz-e, hogy a rendszerhívások megszakítással járnak együtt?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Igen, ennek hatására vált védelmi szintet a processzor.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rendszerhívások kontextusa: Milyen kontextusban hajtódnak végre a UNIX rendszerhívások?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
folyamat kontextusban&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rendszerhívások módja: Milyen módban hajtódnak végre a UNIX rendszerhívások?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
kernel módban&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rendszerhívások módja, kontextusa: Milyen futási módban és kontextusban zajlik a UNIX rendszerhívások kiszolgálása?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Kernel módban fut a kód, és a rendszert hívó folyamat kontextusában. ((az ehhez tartozó ábra jobb felső része))&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rendszerhívások programindításkor: UNIX alatt milyen rendszerhívásokra van szükség, ha a felhasználó elindít egy programot (folyamat létrehozása és programkód betöltése)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Folyamatot létrehozni a fork() hívással, majd a programkódot betölteni az exec() hívással lehet.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====rpcgen: Mi az rpcgen program feladata?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* RPC nyelven készült leírásból C programkódot generál. [?]&lt;br /&gt;
&lt;br /&gt;
* Az RPC nyelv alkalmas a szerver interfészének formális leírására. A formális leírásból az rpcgen program képes a szerver és a kliens programok megfelelő részeit, valamint a szükséges XDR konverziós függvényeket elkészíteni C nyelven. Az így kapott C forráskódú modulokat a kliens és szerver alkalmazással kibővítve kapjuk a teljes kommunikáló rendszert.&lt;br /&gt;
* XDR (Extended Data Representation, kiterjesztett adatreprezentáció): Többféle egyszerű adattípust definiál, illetve szabályokat határoz meg bonyolultabb adatstruktúrák létrehozására. Az adatstruktúrák meghatározásán kívül az XDR egy formális nyelvet is bevezet az adatok leírására. Az RPC rendszer is ezen nyelv kiterjesztését használja a távoli eljáráshívás formális leírására.&lt;br /&gt;
* RPC (remote procedure call, távoli eljáráshívás): Az RPC-rendszer egy protokoll-leírást és egy programozói interfészt tartalmaz. Az XDR által definiált formális nyelv kiterjesztését használja a távoli eljáráshívás formális leírására.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====System V IPC: Sorolja fel a UNIX System V IPC elemek közös alapjának részeit!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Minden IPC erőforrás rendelkezik a következő azonosítókkal: kulcs (key), létrehozó (creator), tulajdonos (owner), hozzáférési jogok (permissions)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
====System V: Adja meg a System V üzenetsorok főbb jellemzőit (tömör felsorolást kérünk)!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* diszkrét, tipizált üzenetek&lt;br /&gt;
* nincs címzés, üzenetszórás&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====System V: Miért tud az s5fs (System V File System) gyorsabban írni, mint olvasni (az előadás példája alapján)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* az írás gyors, főleg kis fájlok esetén (több szintű leképzés a kisebb blokkkok miatt), az olvasás azért lassabb (csak a nagy fájlokra), mert azoknak a részeit össze kell vadászni a szétszórtság miatt&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====u-terület: milyen jellegű adminisztratív adatok vannak az u-területen?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Azok az adatok, melyek a folyamatok futásakor kellenek. Több infó: lásd adminisztratív adatoknál.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====UNIX-fajták: Soroljon fel fő UNIX-fajtákat!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Linux, Solaris, BSD, System V, HP/UX, ...&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====UNIX-szabványok: Soroljon fel UNIX-hoz köthető szabványokat (legalább kettőt)!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* POSIX.1 (teljes nevén: POSIX1003.1): C nyelvű szabványos rendszerhívás-interfész&lt;br /&gt;
* System V Interface Definition&lt;br /&gt;
* X/Open Portability Guide&lt;br /&gt;
* - AT&amp;amp;T SVID (pl. SVR4), - IEEE POSIX,  - Open Group X/Open, Unix95, Unix98, ...  ????&lt;br /&gt;
* http://linux.die.net/man/7/standards&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====UNIX-típusok: Soroljon fel UNIX típusokat (a családfa jellemző ágait)!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* System V (AT&amp;amp;T változat; Solaris, SCO),&lt;br /&gt;
* BSD (Berkeley változat; SunOS, OpenBSD)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Ütemezés: Adja meg a tradicionális UNIX ütemező három legjellemzőbb tulajdonságát!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* preemptív, prioritásos és időosztásos&lt;br /&gt;
(Néhány kiegészítés a UNIX-ütemezőhöz:&lt;br /&gt;
* nem preemptív kernel módban (a kernel módot végrehajtó folyamatot (pl. rendszerhívás, megszakítás-kezelés) nem lehet kényszeríteni, hogy a CPU használatáról lemondjon egy nagyobb prioritású folyamat javára)&lt;br /&gt;
* újraütemezés csak akkor következik be, ha egy folyamat önként lemond a CPU-ról és sleep rendszerhívást hajt végre, vagy a folyamat kernel módból visszatér user módba Nem méretezhető megfelelően. Az algoritmus nem képes rugalmasan alkalmazkodni a folyamatok számának növekedése esetén. A korrekciós faktor nem elég hatékony eszköz.&lt;br /&gt;
* A CPU-t adott esetben nem lehet &amp;quot;kiosztani&amp;quot; adott folyamat számára. Nem garantálható fix válaszidő. Nagy rendszerterhelés esetén a válaszidő megnőhet. A UNIX ütemezés épp ezért nem alkalmazható real-time rendszerekben.&lt;br /&gt;
* A kernel nem preemptív, ezért az egész rendszert feltarthatja. A felhasználó nem tudja megfelelő módon befolyásolni folyamatai prioritását - a nice szám nem megfelelő eszköz erre a célra.)&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====vfs: Mondjon legalább egy, UNIX VFS-alapú &amp;quot;fájlrendszert&amp;quot;, amelynek a célja nem fájlok tárolása!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
/dev, /proc, stb.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====vfs: Soroljon fel UNIX VFS-alapú fájlrendszereket (legalább négyet)!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
xfs, zfs, brtfs, nfs&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Virtuális rendszerhívás: Mi az a virtuális rendszerhívás, miért van rá szükség?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
(Klasszikus UNIX-ban nincs, Linux 2.5.x-től felfelé, mai Linux kernelek aktívan használják.)  &lt;br /&gt;
Vannak bizonyos egyszerű feladatok, amelyek a feladat egyszerűsége ellenére túl sok felesleges művelettel járnak: rendszerhívás intterrupt, kontextusváltás, stb., ezen a helyzeten szeretnénk javítani - próbáljuk lerövidíteni ezt az utat.  &lt;br /&gt;
Pl. a pontos idő lekérdezése csupán egy megfelelő hardver kiolvasása (egyszerű numerikus érték), mégis sok művelettel jár: gettimeofday(): libc &amp;gt; SYSCALL &amp;gt; kontextusváltás &amp;gt; ..., majd ugyanezen a lépcsőn visszasétálunk a felhasználói folyamatba.  &lt;br /&gt;
Persze nem mindig lehet leegyszerűsíteni ezt az utat, csak egyszerűbb és biztonságos esetekben, pl. ha egyszerű numerikus értékek, azonosítók kiolvasásáról van szó: pl. folyamatnak mi az azonosítója, processzor lekérdezése, pontos idő lekérdezése...Tehát a felhasználói módból kernel módba történő hosszas váltást szeretnénk elkerülni. Ha nincs ilyen módváltás, akkor a felhasználói címtérben elérünk egyes kernelterületeket &amp;gt; így tényleg egyszerű függvényhívás lesz. Megfelelő előfeltételekkel: csak kockázatmentes feladatokra. Időlekérdezés tipikusan ilyen, ott megtehetjük.A felhasználói címtérben az a tevékenység, amelyet szeretnénk végrehajtani, elérhető legyen. Ezt oldják meg a virtuális rendszerhívások!	&lt;br /&gt;
A folyamat címterébe a kernel rendszerinduláskor speciális &amp;quot;kernellapot&amp;quot; allokál - ezen a biztonságosnak tekinthető rendszerhívások vannak. Terminálból példa: ldd /bin/bash&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====vnode/vfs: Mi a UNIX vnode/vfs?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Implementáció-független fájlrendszer absztrakció&lt;br /&gt;
* vnode: virtuális csomópont, vfs: virtuális állományrendszer&lt;br /&gt;
* inode --&amp;gt; vnode&lt;br /&gt;
* fs --&amp;gt; vfs&lt;br /&gt;
* Új absztrakció: annak felismerése, hogy több állományrendszernek számos előnye van, szükségessé vette a virtuális csomópont (vnode) és a virtuális állományrendszer (vfs) leíró adatszerkezetek bevezetését. Követelmények, elvárások az állományrendszerrel kapcsolatban:&lt;br /&gt;
** egyszerre támogasson több - UNIX, nem UNIX - állományrendszert&lt;br /&gt;
** különböző diszk partíciók különböző állományrendszereket is tartalmazhatnak, de mountolás esetén egységet képet kell, hogy mutassanak&lt;br /&gt;
** támogassa a hálózati állományok osztott használatát&lt;br /&gt;
** modulárisan bővíthető legyen. &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Zombi állapot: Mi a zombi állapot szerepe egy UNIX rendszerben?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A folyamat már felszabadította a foglalt memóriát, lezárta az állományokat, minden erőforrását visszaadta a rendszernek, csak a proc struktúráját tartja fogva, amiben visszatérési és statisztikai információt tárol a szülő számára. A folyamat szülő wait hívása után szűnik meg.&lt;br /&gt;
&lt;br /&gt;
Megjegyzés: bővebben magyarázattal, előadás alapján:&lt;br /&gt;
A folyamat megáll, a UNIX-ban a kernel szeretné ezt a szülőjének is tudomására hozni.	&lt;br /&gt;
A folyamat már leállt, nem fog tovább futni, de a szülőjét még nem értesítették arról, hogy ez a folyamat megszűnt, esetleg gondoskodjon az újraindításáról, stb.  &lt;br /&gt;
Pl. egy webszerver: beérkező kérések kiszolgálása --&amp;gt; kliens folyamat indítása, ez megkapja a kérés kiszolgálásának feladatát, a kliens pedig valamikor megáll, a webszerver nem árt, ha értesül róla, hogy hiba vagy normál működés folytán állt le.  &lt;br /&gt;
Tehát amíg a szülő nem értesült a leállásról, a folyamat zombi állapotban marad. Ha a szülőt nem érdekli, mi történt a gyerekfolyamattal, a zombi állapot hamar megszűnik.  &lt;br /&gt;
A zombi állapotban a folyamatnak semmilyen saját adatát nem tároljuk, a folyamat összes működéshez szükséges adata megszűnik, kizárólag a kernel adatstruktúrákban, tehát a proc struktúrában marad meg a folyamatnak néhány adminisztratív adata. A ps kilistázhat pl. zombi állapotban lévő feladatokat, mert ezeknet a folyamatoknak az adminisztratív adatai a kernel címterében még megtalálhatóak. De a folyamatok saját címtere, u-terület, stb. már nem létezik. Miután a szülő értesült róla, hogy a gyerekfolyamat meghalt, a kernel törölni fogja a folyamatot a process táblából is, a folyamat kilép a zombi állapotból.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Zombi állapot: Igaz-e az, hogy egy zombi állapotban lévő folyamat még memóriaterületet foglal?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Igen, mert a kernel processz táblában még ott vannak az adatai, és az memóriaterületet foglal. (A NEM választ is meg lehet indokolni...) [Indoklás nélkül 0 pont!!!]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
&lt;br /&gt;
====Alrendszer: Melyik az az alrendszere a Windowsnak, ami nélkül nem tud futni?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A Windows alrendszer, avagy Client/Server Runtime [[SubSystem]] (csrss.exe). Ennek kilövése kékhalált eredményez.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====API-k: Hogyan oldották meg, hogy az alkalmazások többféle API-n (Win32, POSIX) keresztül is meg tudják hívni a Windows operációs rendszer funkcióit?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* Megoldás: környezeti alrendszerek (environment subsystems): a felhasználónak vagy programozónak nyújtott környezet, személyiség egy részét a környezeti alrendszer folyamatok valósítják meg, minden egyes környezet külön API-t mutat (Windows, POSIX, ...), az operációs rendszer rendszerhívásainak egy részét kínálja a felhasználói alkalmazások számára. (Forrás: http://mit.bme.hu/~micskeiz/opre/files/00-opre-windows-bevezeto.pptx)&lt;br /&gt;
* a kernelnek egy definiált interfésze van, ami nem publikus (hivatalos dokumentációja nincsen): NT API &amp;gt;&amp;gt; az ebben lévő függvényeket a fejlesztő ne hívhassa meg közvetlenül. Ehelyett erre két alrendszer épül, ők mutatnak egy API-t az alkalmazások felé: Windows API és POSIX API. (ezek teljesen dokumentáltak!). Az alkalmazások viszont nem keverhetik az alrendszereket, mindegyik csak egyet használhat; ezt linkeléskor kell eldönteni.&lt;br /&gt;
* A két alrendszer feladata az, hogy az általuk definiált hívásokat átfordítsák.&lt;br /&gt;
* Nem pusztán szintaktikai, hanem szemantikai eltérések is vannak.&lt;br /&gt;
&lt;br /&gt;
(Megjegyzés: Exetype segédeszköz segítségével megnézhető, melyik alrendszert használja egy adott alkalmazás.)&lt;br /&gt;
&lt;br /&gt;
Forrás: http://video.bme.hu/media/video/Operacios_Rendszerek_04ea_20110215.wmv (00:28:29 körül)&lt;br /&gt;
&lt;br /&gt;
(Korábbi:&lt;br /&gt;
* Alkalmazás 1&amp;gt;&amp;gt;&amp;gt;Windows API (Windows alrendszer)&amp;gt;&amp;gt;&amp;gt;NT API (NT Kernel)&amp;lt;&amp;lt;&amp;lt;Posix API (Posix alrendszer)&amp;lt;&amp;lt;&amp;lt;Alkalmazás 2 TODO(ehelyett 1 épkézláb mondat kéne)&lt;br /&gt;
* alkalmazások viszont nem keverhetik az alrendszereket, mindegyik csak egyet használhat; ezt linkeléskor kell eldönteni&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Executive réteg: Executive (Windows)====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Az operációs rendszer magasabb szintű funkcióit szolgáltató rétege (memóriakezelés, biztonság, stb.). Az adatokat objektumokban tárolja, melyeket leírókkal (handle) lehet csak elérni, jól definiált interfészeken keresztül. Bár a kernel funkcióit csak a kernel interfészén keresztül éri el, szintén az ntoskrnl.exe tartalmazza. A legtöbb rendszerhívás itt van megvalósítva. &lt;br /&gt;
Forrás: http://mit.bme.hu/~micskeiz/opre/files/00-opre-windows-bevezeto.pptx&lt;br /&gt;
&lt;br /&gt;
(Korábbi: Ez a réteg tartalmazza az NTDLL.DLL által definiált függvények hívásainak megvalósítását, valamint a rendszer külső objektumai közti kommunikáció. Legfontosabb szolgáltató funkciója a lokális eljárás hívás - LPC (Local Procedure Call) megvalósítása. TODO[MZ])&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Fájlhozzáférések: Mivel azonosítja a Windows a felhasználókat és csoportokat a fájlhozzáférési listákban?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* objektum (SecurableObject) &amp;amp;#8594; (SID, engedélyek) ; engedély: adatok írása, attribútumok olvasása...&lt;br /&gt;
* SecurityDescriptor (biztonsági leíró, összefogja a többi elemet) &amp;gt;&amp;gt; Owner (Tulajdonos, megváltoztathatja az objektum engedélyeit, akkor is ha nincs explicit joga), Discretionary Access Control List (DACL, belátás szerinti, erőforrás szintű, hozzáférési lista - hozzáférés szabályozása), SACL (biztonsági naplózás szabályozása - kinek milyen művelete esetén kell naplózni az adott műveletet)&lt;br /&gt;
* AccessControlEntry:&lt;br /&gt;
** Típus: megengedő, tiltó, audit&lt;br /&gt;
** Flag: Pl. öröklődés&lt;br /&gt;
** SID: kire vonatkozik&lt;br /&gt;
** Maszk: végrehajtás | törlés  tulajdonos írása...&lt;br /&gt;
* elérési lista (ACL), melyben megadható, hogy mely folyamatok jogosultak az adott section object elérésére ???&lt;br /&gt;
*  minden objektumhoz tároljuk a hozzá tartozó &amp;lt;tartomány, műveletvégzési jog&amp;gt; párokat ????&lt;br /&gt;
* TODO - bőven elég annyi, hogy Security Identifier (SID) segítségével azonosítja&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Felhasználó- és csoportazonosító: Mi alapján azonosítja a Windows a felhasználókat és a csoportokat?====&lt;br /&gt;
&lt;br /&gt;
====Paravirtualizáció: Mit jelent az, hogy egy virtualizációs megoldás paravirtualizációt használ a CPU virtualizálásához?====&lt;br /&gt;
felhasználókat és a csoportokat?&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
SID - Security Identifier&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Felhasználó- és csoportazonosító: Mivel azonosítja a Windows a felhasználókat és csoportokat a hozzáférések ellenőrzése során?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;lt;Gép SID&amp;gt;-&amp;lt;RID&amp;gt; (SID security identifier - gépspecifikus, RID: relative identifier)&lt;br /&gt;
* Jól ismert SID-ek: Everyone: S-1-1-0, Administrator: S-1-5-domain-500&lt;br /&gt;
* Vista: szolgáltatások is kapnak SID-et&lt;br /&gt;
* objektum &amp;amp;#8594; (SID, engedélyek) ; engedély: adatok írása, attribútumok olvasása...&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====HAL: Mi a HAL (Windows)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* &amp;quot;HAL&amp;quot; - Hardware Abstraction Layer&lt;br /&gt;
* A felsőbb rétegek a HAL-on keresztül érik el az alap HW szolgáltatásokat, a HAL szerepe, hogy elfedje a HW megvalósítás részleteit, és egy egységes, platformfüggetlen felületet biztosítson.&lt;br /&gt;
* hal.dll fájlban megvalósítva (pl. timer interrupt kezelését, alaplap alapvető felépítését (milyen chipsetek vannak rajta), stb. elfedi a felette lévő rétegektől)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Hardverfüggő részek: Melyek a Windows hardverfüggő részei?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* A kernel egyes részei és a HAL.&lt;br /&gt;
* Megjegyzés: én ide a drivereket is beírtam, nem vontak le érte pontot, de azt mondták, azokat nem mindig szokás a rendszer részének tekinteni.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Jogosultságok szerepe: Mik a jogosultságok (privilege) szerepe a Windows-ban?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* operációs rendszer szintű jog&lt;br /&gt;
* meghatározzák azokat a rendszerműveleteket, amelyeket egy felhasználói azonosító elvégezhet. Egy rendszergazda jogosultságokat felhasználóknak és csoportazonosítóknak oszt (http://msdn.microsoft.com/en-us/library/bb530716(VS.85).aspx)&lt;br /&gt;
* pl. számítógép leállítása, eszközmeghajtó betöltése&lt;br /&gt;
* név: SeShutDownPrivilege, SeLoadDriverPrivilege&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Képernyőkezelő/ablakkezelő/grafikus komponens/Képernyőkezelő és grafikus funkciókat megvalósító függvények kernel módba kerülése: Mi a fő oka, hogy a Windows NT-ben a képernyőkezelő és grafikus funkciókat megvalósító függvények kernel módba kerültek? Elméleti megfontolások alapján hol lenne a helyük?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
	 Windows NT 4.0-ban került le kernel szintre ez a komponens, hogy kevesebb folyamat- és módváltás legyen (Ne kelljen mindig visszaváltani a csrss.exe-be, majd onnan átváltani kernel módba, utasítani a hardvert, visszaváltani felhasználói módba, majd visszaváltani a felhasználói folyamatba, aki kezdeményezte a változtatást.) (A felhasználói módú folyamatban (csrss.exe) csak a konzol kezelés maradt.) Elméletileg felhasználói szinten kéne lennie.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Képernyőkezelő/ablakkezelő/grafikus komponens kernel módba kerülése: Windows-ban miért került le az ablakkezelő kernel módba?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Hogy kevesebb kontextus- és módváltás legyen, mivel a Windows szerves része az ablakkezelés, ezért rengeteg user-kernel mód váltás lenne ha a csrss.exe-en keresztül használnánk. Tehát teljesítménybeli okokból.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Képernyőkezelő/ablakkezelő/grafikus komponens előnyei: A Windows OS grafikus komponensének mik az előnyei, hátrányai?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A grafikus komponens kernel módban fut. Emiatt a hibái az egész rendszert magával ránthatják, viszont gyorsabb, mert kevesebb CPU-mód váltás kell a rajzoláshoz.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Képernyőkezelő/ablakkezelő/grafikus komponens kernel módba kerülése: Mi volt a fő oka annak, hogy a Windows NT-ben a képernyőkezelő és grafikus funkciókat megvalósító komponens kernel módba került?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
	 Mert ezek a folyamatok intenzíven használják a hardvert, és futásuk gyorsaságára az egész rendszer teljesítménye érzékeny. A user módban történő megvalósítás a rendszert lelassítaná a gyakori környezetváltás miatt.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kernel: Mi a kernel (Windows)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A rendszer állandóan memóriában lévő, védett módban futó része. Az NT egyetlen HW függő része, szerepe a HW elfedése a felette található eszközök elől, ezáltal a felette lévő részek már teljesen HW függetlenek. Megvalósítja a szálütemezést, multiprocesszor ütemezést és a TRAP kezelést.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Kliens-szerver-modell: Nevezzen meg egy kliens-szerver-modell alapján működő komponenst az NT-ben!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* csrss.exe - Client/Server Run-Time Subsystems (környezeti alrendszerek)&lt;br /&gt;
* TODO&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Memóriafoglalás: Mely utasításokkal és miért történik a memóriafoglalás két lépésben Windows alatt?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* A két lépés: Reserve és Commit. Az első csak címtartományt foglal, amögött nem lesz ténylegesen használható memóriaterület; a másik a már lefoglalt címtartományhoz rendel (virtuális) memóriát.&lt;br /&gt;
* A folyamatok címtartományának töredezettsége csökkenthető azzal, ha a címtartományt már akkor előre foglalja, mikor a memóriára még nincs szüksége, és ez nem jár olyan memóriapocsékolással, mintha fizikai memóriát is foglalna ugyanakkor.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Munkakészlet (working set): Mit jelent a Windows-ban az egy folyamathoz tartozó munkakészlet (working set) fogalma?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Azon fizikai lapok halmaza, amelyekre a folyamat laphiba nélkül hivatkozhat. &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====NT hardverfüggő rétegei: Sorolja fel az NT hardverfüggő rétegeit!====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
HAL (Hardware Abstraction Level), kernel&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====NTDLL.DLL: Mi az NTDLL.DLL fő funkciója?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Összeköti a User és Kernel módot. Az Executive függvényeknek megfelelő függvénycsonkok vannak benne.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Quantum: Mi a szerepe a quantumnak a Windows ütemezőjében?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* A szálak adott ideig futnak (quantum)&lt;br /&gt;
* RR ütemezésnél az időszelet&lt;br /&gt;
* Óramegszakításban mérik (clock interval, clock tick) 1 clock tick = ~ 10-15 ms (HALtól függ)&lt;br /&gt;
* Quantum hossza: időegység, amíg egy szál fut&lt;br /&gt;
* Kliensek esetén a quantum hossza 2 clock tick a háttérben futó folyamatoknak, az előtérben futó folyamatoknak 6 clock tick jut. Így egy CPU-intenzív folyamatról való ablakváltáskor az új, előtérben lévő folyamat arányosan több CPU-időt kap (azonos prioritásokat feltételezve).&lt;br /&gt;
* Szervereknél: mindenkinek 12 clock tick a kontextusváltások minimalizálása érdekében. Szervereknél így a kliensek kéréseinek eredményeként felébredő alkalmazásoknak több esélye van befejezni a kérést, és várakozó állapotba kerülni, mielőtt az időszelet véget érne.&lt;br /&gt;
* esély annak a folyamatnak, amelynek épp most ért véget a várakozása: a várakozás végén megnöveljük a prioritást, de a quantum eggyel csökken; a quantum végén a prioritást az eredetire csökkenti.&lt;br /&gt;
* éhezés elkerülése: az OS másodpercenként megnézni a futásra kész szálakat, és annak, aki nem futott már 300 óraütés óta, 15-ös prioritást ad, megnöveli a quantumját egy quantumnyi futásig&lt;br /&gt;
* TODO, hogy a forrás feldolgozása jó-e: http://mit.bme.hu/~micskeiz/opre/files/01-opre-windows-utemezes.pptx&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Rendszeridő megváltoztatása: A rendszeridő megváltoztatására kinek van joga Windows alatt?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* SeSystemTimePrivilege joggal rendelkező felhasználóknak / azoknak a felhasználóknak, amelyek olyan csoportba tartoznak, amelyekhez hozzá van rendelve a SeSystemtimePrivilege.&lt;br /&gt;
* Alapértelmezett beállításként csak az Administrators és Power Users group rendelkezik vele.&lt;br /&gt;
* http://msdn.microsoft.com/en-us/library/windows/desktop/bb530716(v=vs.85).aspx&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Standby memórialapok listája: Mire szolgál a standby memória lap lista a Windows-ban (miért nem szabad lapként vannak ezek nyilvántartva)?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A lap egy munkahalmaz része volt, de már nem az, elvették tőle. A lap nem módosult, mióta kiírták a merevlemezre, vagy mióta beolvasták. Egy nem Valid laptábla bejegyzés még mutat rá, azaz ha kell, még könnyen életre lehet kelteni a lapot. &lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Szabad (free) és nullázott (zeroed) lapok: Miért van a Windows-ban külön szabad és nullázott (freed és zeroed) memórialap-lista?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Biztonsági okokból. Nem nullázott memóriaterületet odaadni más folyamatnak biztonsági kockázatot jelent.&lt;br /&gt;
Tehát a free lapok szabad lapok, de még nem adhatók oda felhasználói folyamatnak, mert &amp;quot;szemetet&amp;quot; vagy érzékeny adatot tartalmazhatnak: nincs nullákkal felülírva a tartalma. A zeroed lapok szabadok, és nullákkal vannak felülírva, tehát odaadhatók felhasználói folyamatnak, amennyiben igény van rá.&lt;br /&gt;
&lt;br /&gt;
TODO: ez így már megfelelő indoklás?&lt;br /&gt;
&lt;br /&gt;
(Korábban:&lt;br /&gt;
*Free*: a lap szabad, de nincs 0-kkal felülírva a tartalma, szemét vagy egy előző processz által használt tartalom van benne. Ezt nem adhatja ki közvetlenül a memóriakezelő más processzeknek, mert biztonsági szempontból aggályos adatokat találhatna rajta.&lt;br /&gt;
*Zeroed*: szabad és nullákkal felülírt lap, kiadható, ha valakinek kell. &lt;br /&gt;
TODO(ez így igaz, csak ebben a formában nem a kérdésre válaszol))&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Mik a szerepük a szolgáltatásoknak a Windowsban? ====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Olyan folyamatok, amik a felhasználói felülettől és belépéstől függetlenül a háttérben futnak, és kibővítik az operációs rendszer alap szolgáltatásait.&lt;br /&gt;
TODO?&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Újrahívhatóság (reentrancy): Mit jelent az, hogy a Windows-ban a rendszerhívások újrahívhatóak?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
A rendszerhívásokat több alkalmazás is meghívhatja egyszerre, nem blokkolódnak, ha már valakit éppen kiszolgál az adott rendszerhívás.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Védett objektum tulajdonosának speciális joga: Milyen speciális joga van egy védett objektum tulajdonosának az adott objektumra a Windows-ban?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
Megváltoztathatja az objektum engedélyeit, akkor is, ha erre nincs explicit joga. (https://wiki.sch.bme.hu/pub/Infoalap/OpRe/03-opre-windows-biztonsag.pptx)&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Verzióleírás: Mit jelentenek a számok és szavak a következő verzióleírásban: &amp;quot;Microsoft (R) Windows (R) 5.01.2006 Service Pack 2 Uniprocessor Free&amp;quot;?====&lt;br /&gt;
&amp;lt;div class=&amp;quot;answer&amp;quot;&amp;gt;&lt;br /&gt;
* (MZ) 5.01.2006 a verziószám, major.minor.build formában, 5.1 a Windows XP verzója, 2006 az SP2-es verzió build száma. Uniprocessor = egy processzoros kernel verzió, Free = debug szimbólumok nélküli verzió.&lt;br /&gt;
	*(MZ) 2011-től kezdve ez már nem része a tananyagnak&lt;br /&gt;
* Most computers run a &amp;quot;uniprocessor free&amp;quot; version of Windows, which is a version that runs on a single CPU and does not contain extra errorchecking.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- /#q_and_a --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Tartalomjegyzék==&lt;br /&gt;
&amp;lt;div class=&amp;quot;table_of_contents&amp;quot;&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Források (teljesség igénye nélkül)==&lt;br /&gt;
&amp;lt;div class=&amp;quot;docs_sources&amp;quot;&amp;gt;&lt;br /&gt;
Ez előadás diáin, Wikipédiás és egyéb, Google-lel található cikkeken kívül ezek voltak a források, és MÉG ÍGY SEM tartalmazza az összes beugrókérdést (volt olyan, amit rengeteg idő lett volna átszerkeszteni, vagy kevésbé sanszos, hogy olyan hosszúságú beugrókérdést tennének fel, ami ott szerepelt):&lt;br /&gt;
&lt;br /&gt;
* Hivatalos előadásjegyzetek: http://portal.mit.bme.hu/?l=oktatas/targyak/vimia219/jegyzet/index.html&lt;br /&gt;
* https://wiki.sch.bme.hu/bin/view/Infoalap/OpReVizsgaBeugrok&lt;br /&gt;
* https://wiki.sch.bme.hu/bin/view/Infoalap/OpReVizsgaKisKerdesek&lt;br /&gt;
* https://wiki.sch.bme.hu/bin/view/Infoalap/OpReVizsga2007junius12megoldas&lt;br /&gt;
* https://wiki.sch.bme.hu/bin/view/Infoalap/OpReVizsga2008majus20megoldas&lt;br /&gt;
* https://wiki.sch.bme.hu/bin/view/Infoalap/OpReVizsga2008junius11megoldas&lt;br /&gt;
* https://wiki.sch.bme.hu/pub/Infoalap/OpRe/pelda_beugro_megoldas.pdf&lt;br /&gt;
----&lt;br /&gt;
* https://vir.sch.bme.hu/dokumentumok/InfoSite/4.%20f%C3%A9l%C3%A9v/Oper%C3%A1ci%C3%B3s%20rendszerek/&lt;br /&gt;
* https://vir.sch.bme.hu/document/targyak/opre/opre_beugro.zip (HOSSZÚ)&lt;br /&gt;
* https://vir.sch.bme.hu/document/targyak/opre/oprendszkidolg.zip&lt;br /&gt;
* Wikipédia&lt;br /&gt;
* Google segítségével fellelhető rengeteg forrás&lt;br /&gt;
* stb.&lt;br /&gt;
&lt;br /&gt;
-- [[PeteHaro|Pete]] - 2011.06.19.&lt;br /&gt;
* [[Media:opre_beugro_ABC.docx|Operációs rendszerek vizsgabeugrók megoldással DOCX-formátumban (szerkeszthető, javítható!)]]&lt;br /&gt;
* [[Media:opre_beugro_ABC.pdf|Operációs rendszerek vizsgabeugrók megoldással PDF-formátumban]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Infoalap]]&lt;/div&gt;</summary>
		<author><name>Bolla Dávid</name></author>
	</entry>
	<entry>
		<id>https://vik.wiki/index.php?title=Jelek_%C3%A9s_rendszerek&amp;diff=182935</id>
		<title>Jelek és rendszerek</title>
		<link rel="alternate" type="text/html" href="https://vik.wiki/index.php?title=Jelek_%C3%A9s_rendszerek&amp;diff=182935"/>
		<updated>2014-10-17T09:33:29Z</updated>

		<summary type="html">&lt;p&gt;Bolla Dávid: /* A szorgalmi időszakban */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Tantárgy&lt;br /&gt;
| név = Jelek és rendszerek&lt;br /&gt;
| tárgykód = VIHVA214&lt;br /&gt;
| szak = info&lt;br /&gt;
| kredit = 5&lt;br /&gt;
| félév = 4&lt;br /&gt;
| kereszt = van&lt;br /&gt;
| tanszék = HVT&lt;br /&gt;
| kiszh = nincs&lt;br /&gt;
| nagyzh = 2 db&lt;br /&gt;
| hf = 3 db&lt;br /&gt;
| vizsga = nincs&lt;br /&gt;
| levlista = jelek{{kukac}}sch.bme.hu&lt;br /&gt;
| tad = https://www.vik.bme.hu/kepzes/targyak/VIHVA214/&lt;br /&gt;
| tárgyhonlap = http://hvt.bme.hu/index.php?option=com_content&amp;amp;view=article&amp;amp;catid=1%253Absc-kepzes&amp;amp;id=504%253Ajr&amp;amp;Itemid=7&amp;amp;lang=hu&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Követelmények ==&lt;br /&gt;
=== Előtanulmányi rend ===&lt;br /&gt;
[[Analízis_II. | Analízis 2.]] tárgyból kredit megszerzése szükséges a tárgy felvételéhez.&lt;br /&gt;
&lt;br /&gt;
=== A szorgalmi időszakban ===&lt;br /&gt;
*A min. elégséges &#039;&#039;&#039;félévvégi jegy&#039;&#039;&#039; feltétele:&lt;br /&gt;
**Az &#039;&#039;&#039;összes begyűjthető pont ~50%-ának elérése&#039;&#039;&#039; a következő számonkérésekből:&lt;br /&gt;
***&#039;&#039;&#039;1. ZH&#039;&#039;&#039;: 40 pontért.&lt;br /&gt;
***&#039;&#039;&#039;2. ZH&#039;&#039;&#039;: 60 pontért.&lt;br /&gt;
***&#039;&#039;&#039;Házi feladatok&#039;&#039;&#039;: három otthon megoldandó feladat, melyek közül a legjobb kettő számít, egyenként 10 pontért. &lt;br /&gt;
*&#039;&#039;&#039;Pótlási lehetőségek:&#039;&#039;&#039;&lt;br /&gt;
**A házi feladatok nem pótolhatóak illetve határidőn túl nem leadhatóak.&lt;br /&gt;
**A két ZH-ból az egyik a pótlási héten pótolható, illetve javítható.&lt;br /&gt;
*&#039;&#039;&#039;Kontakt órák&#039;&#039;&#039;&lt;br /&gt;
**&#039;&#039;&#039;Előadás:&#039;&#039;&#039; Kéthetente változik 1-2 - gyakorlat függvényében. &lt;br /&gt;
**&#039;&#039;&#039;Gyakorlat:&#039;&#039;&#039; Kéthetente 1.&lt;br /&gt;
&lt;br /&gt;
=== A vizsgaidőszakban ===&lt;br /&gt;
*&#039;&#039;&#039;Vizsga:&#039;&#039;&#039; nincs.&lt;br /&gt;
&lt;br /&gt;
=== Félévvégi jegy ===&lt;br /&gt;
*A számonkérések összpontszáma adja ki a jegyet.&lt;br /&gt;
*Ponthatárok:&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; align=&amp;quot;center&amp;quot;&lt;br /&gt;
!Pont!!Jegy&lt;br /&gt;
|-&lt;br /&gt;
| 0 - 58 || 1&lt;br /&gt;
|-&lt;br /&gt;
|59 - 71 || 2&lt;br /&gt;
|-&lt;br /&gt;
|72 - 84 || 3&lt;br /&gt;
|-&lt;br /&gt;
|85 - 97 || 4&lt;br /&gt;
|-&lt;br /&gt;
|98 - 120|| 5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Segédanyagok ==&lt;br /&gt;
* Jegyzetek, összefogalók&lt;br /&gt;
** [[Media:Jelek_jegyzet_2008osz_kez.pdf | Kézzel írott jegyzet (2008. ősz)]]&lt;br /&gt;
** [[Media:Jelek_jegyzet_laplace.pdf | Laplace transzformáció ]]&lt;br /&gt;
** [[Media:Jelek_jegyzet_kepletek.pdf | Képletgyűjtemény ]]&lt;br /&gt;
** [http://www.bolyai.elte.hu/download/eloadas/szakmai/ejegyzet/Gnadig_II.pdf Mi az a diracdelta? ]&lt;br /&gt;
** [[Media:Jelek_jegyzet_osszefoglalo.pdf | Összefoglaló ]] (1,3,4-dik ZH-koz)&lt;br /&gt;
** [[Media:Jelek_jegyzet_zhkiskerdesek.pdf | 2. ZH-n előforduló kiskérdések]] (tárgyhonlapról)&lt;br /&gt;
** angol összefoglaló: [[Media:Jelek_jegyzet_zh1_en.pdf | ZH1]], [[Media:Jelek_jegyzet_zh2_en.pdf | ZH2]], [[Media:Jelek_jegyzet_zh3_en.pdf | ZH3]], [[Media:Jelek_jegyzet_zh4_en.doc | ZH4]]&lt;br /&gt;
** [[Media:Jelek_jegyzet_matlab.pdf | Matlab összefogaló ]]&lt;br /&gt;
** [[Media:Jelek_jegyzet_rendszerk.pdf | Frekvencia összefoglaló ]]&lt;br /&gt;
&lt;br /&gt;
* Jelek könyv&lt;br /&gt;
** [[Media:Jelek_konyv_0targymutato.pdf | Tárgymutató]]&lt;br /&gt;
** [[Media:Jelek_konyv_0tartalom.pdf | Tartalomjegyzék]]&lt;br /&gt;
** [[Media:Jelek_konyv_1.pdf | Első fejezet]]&lt;br /&gt;
** [[Media:Jelek_konyv_2.pdf | Második fejezet]]&lt;br /&gt;
** [[Media:Jelek_konyv_3.pdf | Harmadik fejezet]]&lt;br /&gt;
** [[Media:Jelek_konyv_4.pdf | Negyedik fejezet]]&lt;br /&gt;
** [[Media:Jelek_konyv_5.pdf | Ötödik fejezet]]&lt;br /&gt;
** [[Media:Jelek_konyv_szie.pdf | Kuczmann könyv]]&lt;br /&gt;
&lt;br /&gt;
* Tárgyhonlapról néhány link&lt;br /&gt;
** [http://www.mht.bme.hu/~varga/BMEVIHVA214/JR-gyak-2010.pdf Tantermi gyakorlat feladatgyűjteménye]&lt;br /&gt;
** [http://www.mht.bme.hu/~varga/BMEVIHVA214/JR-HP-VL-01.pdf Jelek és rendszerek példatár]&lt;br /&gt;
** [http://hvt.bme.hu/images/education/jr/jelek_rendszerk_frek.pdf Elméleti összefoglaló 2.ZH]&lt;br /&gt;
&lt;br /&gt;
== Házi ==&lt;br /&gt;
A félév során 3 házi feladatot lehet elkészíteni, melyek közül a két legjobb számít bele az érdemjegybe. Én erősen ajánlom, hogy az első 2 házit csináljátok meg, később nagyon fogtok örülni annak a +15-20 pontnak!&lt;br /&gt;
&lt;br /&gt;
Jófejségből a félév végére annyit variálnak, hogy 3. házi pontszámának a felét is hozzáadják még a végeredményhez, de persze semmi garancia nincs arra, hogy ezt minden félévben megteszik.&lt;br /&gt;
&lt;br /&gt;
*Pár korábbi házi:&lt;br /&gt;
**Első:&lt;br /&gt;
***[[Media:Jelek_elsohazi_megoldas.pdf | Első házi megoldás]] csak egy mintamegoldás - van benne egy elvi hiba! - 1.2.3 feladat diszkrét időben teljesen rossz. /JR Gyakvez/&lt;br /&gt;
***[[Media:jelek_hf1_megoldas.pdf | Első házi megoldás]] Egy 10 pontos első házi ( de 1.2.c.DI-nél van valami hiba).&lt;br /&gt;
***[[Media:jelek_hf1.pdf | Első házi megoldás]] Szintén egy 10 pontos mintamegoldás.&lt;br /&gt;
***[[Media:jelek_hf1_140523.pdf | Első házi megoldás]] - 10 pontos&lt;br /&gt;
**Második:&lt;br /&gt;
***[[Media:jelek_hf2_2.pdf | Második házi megoldás]] Csak az a,b,c feladatok megoldásai vannak benne (7.6 pontos házi). Az &amp;quot;a&amp;quot; részben 3. oldalon el van rontva a determináns. A kedves feltöltő kolléga nem tud parciálisan integrálni. Az 5. oldal tetején a megmaradó integrált kivonni kell, nem hozzáadni. Így a végén (cx - 1) lesz a számlálóban az egyik tag. Ezt a hibát az író bravúrosan korrigálja egy, a semmiből mágikusan előbukkanó -1-es szorzóval az oldal alján. 2B rész DI feladatában hibásan van kiemelve a szumma elől a 4, &amp;quot;4*e^(-j*p*pi/3*x)&amp;quot;-et kellene helyette írni.&lt;br /&gt;
***[[Media:jelek_hf2_140523.pdf | Második házi megoldás]] - 10 pontos&lt;br /&gt;
***[[Media:Jelek_HF2_20140525.pdf | Második házi megoldás]] - 10 pontos&lt;br /&gt;
**Harmadik:&lt;br /&gt;
***[[Media:Jelek_HF3_20140525.pdf | Harmadik házi megoldás]] - 9 pontos. A második feladatot nem kellett megcsinálni (2013/14/II.)&lt;br /&gt;
&lt;br /&gt;
==ZH==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Releváns ZH-k:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*2014 tavasz&lt;br /&gt;
** 2014.05.16. ZH2 [[Media:Info_jelek_zh2a_2014tavasz.pdf | A csoport]] - megoldás nélkül&lt;br /&gt;
&lt;br /&gt;
*2013 tavasz&lt;br /&gt;
** 2013.05.17. ZH2 [[Media:Jelek_zh2_2013-05-17_a.jpg | A csoport]] | [[Media:Jelek_zh2_2013-05-17_b.jpg | B csoport]] - megoldás nélkül&lt;br /&gt;
&lt;br /&gt;
*2011 ősz&lt;br /&gt;
** 2011.12.07 ZH2 [[Media:Jelek_zh2_2011-12-07_a.pdf | A csoport]] | [[Media:Jelek_zh2_2011-12-07_b.pdf | B csoport]] - megoldással&lt;br /&gt;
** 2011.10.17 ZH1 [[Media:Jelek_zh1_2011-10-17_a.pdf | A csoport]] | [[Media:Jelek_zh1_2011-10-17_b.pdf | B csoport]] - megoldással&lt;br /&gt;
&lt;br /&gt;
*2010 ősz&lt;br /&gt;
** 2010.10.19 ZH1 [[Media:Jelek_zh1_2010-10-19_a_jav.pdf | A csoport]] | [[Media:Jelek_zh1_2010-10-19_b_jav.pdf | B csoport]] - megoldással&lt;br /&gt;
&lt;br /&gt;
*2010 tavasz&lt;br /&gt;
** 2010.05.10 ZH2 [[Media:Jelek_zh2_2010-05-10_a_jav.pdf | A csoport]] | [[Media:Jelek_zh2_2010-05-10_b_jav.pdf | B csoport]] - megoldással&lt;br /&gt;
** 2010.03.29 ZH1 [[Media:Jelek_zh1_2010-03-29_a_jav.pdf | A csoport]] | [[Media:Jelek_zh1_2010-03-29_b_jav.pdf | B csoport]] - megoldással&lt;br /&gt;
&lt;br /&gt;
*2009 ősz&lt;br /&gt;
** 2009.12.11 ZH2 [[Media:Jelek_zh2_2009-12-11_a_jav.pdf | A csoport]] | [[Media:Jelek_zh2_2009-12-11_b_jav.pdf | B csoport]] - megoldással&lt;br /&gt;
** 2009.10.26 ZH1 [[Media:Jelek_zh1_2009-10-26_a_jav.doc | A csoport]] | [[Media:Jelek_zh1_2009-10-26_b_jav.doc | B csoport]] - megoldással&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
{{Rejtett&lt;br /&gt;
|mutatott=&#039;&#039;&#039;Régebbi, &amp;quot;elavult&amp;quot; ZH-k:&#039;&#039;&#039;&lt;br /&gt;
|szöveg=&lt;br /&gt;
*2009 tavasz&lt;br /&gt;
** 2009.03.09 ZH1 [[Media:Jelek_zh1_2009-03-09_a.pdf | A csoport]] / [[Media:Jelek_zh1_2009-03-09_b.pdf | B csoport]] - megoldás nélkül&lt;br /&gt;
** 2009.03.30 ZH2 [[Media:Jelek_zh2_2009-03-30_a_jav.pdf | A csoport ]] / [[Media:Jelek_zh2_2009-03-30_b_jav.pdf | B csoport]] - megoldással&lt;br /&gt;
** 2009.04.20 ZH3 [[Media:Jelek_zh3_2009-04-20_a_jav.pdf | A csoport ]] / [[Media:Jelek_zh3_2009-04-20_b_jav.pdf | B csoport]] - megoldással&lt;br /&gt;
** 2009.05.10 ZH4 [[Media:Jelek_zh4_2009-05-10_a_jav.pdf | A csoport]] / [[Media:Jelek_zh4_2009-05-10_b_jav.pdf | B csoport]] - megoldással&lt;br /&gt;
&lt;br /&gt;
* [[Media:Jelek_zh_2008_megoldas.pdf | 2008 ősz]] megoldással&lt;br /&gt;
&lt;br /&gt;
*2008 tavasz&lt;br /&gt;
** 2008.03.21 ZH1 [[Media:Jelek_zh1_2008-03-21_a_jav.pdf |  A csoport]] / [[Media:Jelek_zh1_2008-03-21_b_jav.pdf | B csoport]] - megoldással &lt;br /&gt;
** 2008.04.04 ZH2 [[Media:Jelek_zh2_2008-04-04_a_jav.pdf |  A csoport]] / [[Media:Jelek_zh2_2008-04-04_b_jav.pdf | B csoport]] - megoldással &lt;br /&gt;
** 2008.05.16 ZH4 [[Media:Jelek_zh4_2008-05-16_a_jav.pdf |  A csoport]] / [[Media:Jelek_zh4_2008-05-16_b_jav.pdf | B csoport]] - megoldással&lt;br /&gt;
&lt;br /&gt;
*2007 ősz&lt;br /&gt;
** 2007.10.16 ZH1 [[Media:Jelek_zh1_2007-10-16_a_jav.pdf |  A csoport]] / [[Media:Jelek_zh1_2007-10-16_b_jav.pdf | B csoport]] - megoldással &lt;br /&gt;
** 2007.11.13 ZH2 [[Media:Jelek_zh2_2007-11-13_a_jav.pdf |  A csoport]] / [[Media:Jelek_zh2_2007-11-13_b_jav.pdf | B csoport]] - megoldással &lt;br /&gt;
** 2007.12.13 ZH3 [[Media:Jelek_zh3_2007-12-13_a_jav.pdf |  A csoport]] / [[Media:Jelek_zh3_2007-12-13_b_jav.pdf | B csoport]] - megoldással&lt;br /&gt;
** 2007.11.09 PZH1 [[Media:Jelek_pzh1_2007-11-09_a_jav.pdf |  A csoport]] / [[Media:Jelek_pzh1_2007-11-09_b_jav.pdf | B csoport]] - megoldással &lt;br /&gt;
** 2007.11.27 PZH2 [[Media:Jelek_pzh2_2007-11-27_a_jav.pdf |  A csoport]] / [[Media:Jelek_pzh2_2007-11-27_b_jav.pdf | B csoport]] - megoldással &lt;br /&gt;
** 2007.12.20 PZH3 [[Media:Jelek_pzh3_2007-12-20_a_jav.pdf |  A csoport]] / [[Media:Jelek_pzh3_2007-12-20_b_jav.pdf | B csoport]] - megoldással &lt;br /&gt;
&lt;br /&gt;
*2007 tavasz&lt;br /&gt;
** 2007.03.23 ZH1 [[Media:Jelek_zh1_2007-03-23_a.pdf | A csoport]] / [[Media:Jelek_zh1_2007-03-23_b.pdf | B csoport]] - megoldás nélkül&lt;br /&gt;
** 2007.04.20 ZH2 (A) [[Media:Jelek_zh2_2007-04-20_a.pdf | megoldás nélkül]] / [[Media:Jelek_zh2_2007-04-20_a_jav.pdf | megoldással]]&lt;br /&gt;
** 2007.04.20 ZH2 (B) [[Media:Jelek_zh2_2007-04-20_b.pdf | megoldás nélkül]] / [[Media:Jelek_zh2_2007-04-20_b_jav.pdf | megoldással]]&lt;br /&gt;
** 2007.05.18 ZH3 [[Media:Jelek_zh3_2007-05-18_a.pdf | A csoport]] / [[Media:Jelek_zh3_2007-05-18_b.pdf | B csoport]] - megoldás nélkül&lt;br /&gt;
** [[Media:Jelek_pzh1_2007-05-15.pdf | 2007.05.15 PZH1]] megoldás nélkül&lt;br /&gt;
** [[Media:Jelek_pzh2_2007-05-15.pdf | 2007.05.15 PZH2]] megoldás nélkül&lt;br /&gt;
** [[Media:Jelek_pzh3_2007-05-25.pdf | 2007.05.25 PZH3]] megoldás nélkül&lt;br /&gt;
&lt;br /&gt;
*2006 tavasz&lt;br /&gt;
**2006.04.20 ZH2 [[Jelek és rendszerek - ZH2 2006.04.20.|megoldásokkal]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Egyéb anyagok ==&lt;br /&gt;
Erősen ajánlott elmenni a konzikra, vagy legalábbis &#039;&#039;&#039;&#039;&#039;átnézni a konzik anyagát&#039;&#039;&#039;&#039;&#039;!&lt;br /&gt;
* Konzi anyagok:&lt;br /&gt;
** 1. ZH&lt;br /&gt;
***[[Media:jelek_zh1_konzi_2013_tavasz.pdf | 2013 tavasz]]&lt;br /&gt;
** 2. ZH&lt;br /&gt;
*** [[Media:jelek_zh2_konz_2012_osz.pdf |  2012 ősz]]&lt;br /&gt;
*** [[Media:jelek_zh2_konzi_2013_tavasz.pdf | 2013 tavasz]]&lt;br /&gt;
&lt;br /&gt;
== Tippek ==&lt;br /&gt;
Ha van lehetőségetek, inkább Gyimóthy Szabolcs és Reichardt András előadó gyakorlatvezető párost válasszátok, mint Pávó József és Horváth Zoltán párost. Gyimóthy inkább tanuláskor jól használható jegyzetet ír a táblára, míg Pávó József inkább csak az összefüggéseket. Gyimóthy óráira kötelező bejárni, ha már az órán meg akarod érteni az anyagot, s a jó eredményre pályázol. Viszont Gyimóthy kereszten tanít, és egyesen német nyelven, s Pávó viszi az egyenest magyar nyelven.&lt;br /&gt;
&lt;br /&gt;
Egyik házi feladat sem kötelező, de ha nem csináltál házikat és néhány ponton múlik a félév végi jegy, akkor a fejedet fogod a falba verni, hogy miért nem csináltál legalább egy házit...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Előfordulhat olyan, hogy eselteg pár pont kell a jobb jegyhez, akkor menézik a 3. házifeladatot is, és annak a pontszámának egy részét is beleszámítják a jegybe! &lt;br /&gt;
by Fityusz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zh előtti konzultációra feltétlen menjetek be, nagyon hasznos! &lt;br /&gt;
by Fityusz&lt;br /&gt;
&lt;br /&gt;
Kis tapasztalat: póton szigorúbban osztályoznak (sokkal!) 2013 tavaszi félévben volt, ahol részpontszámot sem adtak, tehát érdemes a rendes ZH-kra tervezni az átmenetelt.&lt;br /&gt;
&lt;br /&gt;
{{Lábléc_-_Mérnök_informatikus_alapszak}}&lt;/div&gt;</summary>
		<author><name>Bolla Dávid</name></author>
	</entry>
</feed>