Opre vizsga, 2008. június 11. megoldással
Beugró
Megjegyzés: ez az oldal jelenleg félkész, ha tudsz valamihez hozzáírni, akkor nyugodtan. Érdemes mindenhez forrást is írni (tankönyből, wikipédiából, diasorokból, stb.), hogy akit érdekel, hozzáolvashasson még az itt leírtakhoz.
Hiányzik még:
- beugró 10. kicsit részletesebben, érthetőbben
- nagykérdés 4. c) rész magyarul
1. Mi a virtuális gép koncepció lényege?
- 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.
- Könyv 19. oldal
2. Definiálja a hosszútávú ütemezés fogalmát!
- A hosszútávú ütemező feladata az elindított feladatok rendszerbe, illetve a "futásra kész" 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.
- Wikipédia: hosszútávú ütemező
- Könyv 140. oldal
3. Mikor fut a rövidtávú ütemező és mikor jár környezetváltással?
- 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.
- 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.
- Wikipédia: rövidtávú ütemező
- Könyv 413. oldal
4. Hogyan lehet Test_and_Set utasítással kritikus szakaszba lépést (entry) és kilépés (exit) megvalósítani?
- Egy változót kijelölünk "lock object"-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.
- Wikipédia: kölcsönös kizárás TestAndSet-tel
- Könyv 73.-74. oldal
5. Mit nevezünk vergődésnek és hogy lehet védekezni ellene?
- 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.
- 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.
- Wikipédia: vergődés
- Könyv 182.-186. oldal
6. 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 "jobb" byte hozzáférést?
- 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 lassabbb a többinél, ezért lényegében ez határozza meg a teljes hozzáférési időt.
- 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.
- Könyv 175.-177. és 186. oldal
7. 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?
- 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.
- Wikipédia: időszelet
- Windows ütemezés diasor, 8. dia
8. Melyik az az alrendszere a Windowsnak, ami nélkül nem tud futni?
- A Windows alrendszer, avagy Client/Server Runtime SubSystem (csrss.exe). Ennek kilövése kékhalált eredményez.
- Wikipédia: CSRSS
- Windows bevezető diasor, 25. dia
9. Mely utasításokkal és miért történik a memóriafoglalás két lépésben Windows alatt?
- 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 fizikai memóriát.
- (MZ): "a már lefoglalt címtartományhoz rendel fizikai memóriát" --> virtuális memóriát. A lefoglalt lap lehet a fizikai memóriában vagy a lapozófájlban.
- 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.
- Windows memóriakezelés diasor, 9. dia
10. Milyen részekből áll az RPC technológia?
- RPC: Remote Procedure Call, távoli eljáráshívás. Magas szintű folyamatok közti kommunikációt tesz lehetővé. Részei:
- interfész leírás
- programgenerátor
- kommunikációs infrastruktúra
- Unix folyamatok kommunikációja diasor, 12. dia
11. UNIX alatt milyen rendszerhívásokra van szükség ha a user elindít egy programot ( folyamat létrehozása és programkód betöltése)?
- Folyamatot létrehozni a fork() hívással, majd betölteni a programkódot pedig az exec() hívással lehet
12. Soroljon fel legaláb 4 UNIX folyamatok között kommunikációs megoldást!
- System V IPC: szemafor, osztott memória, üzenetsor
- Csővezeték és nevesített csővezeték
- Jelzések
- Socketeken keresztüli kommunikáció
- RPC
- Folyamat-nyomkövetés
- Unix folyamatok kommunikációja diasor, 2. dia
- Könyv 312.-322. oldal
Nagyfeladatok
1. Ismertesse a multiprogramozott rendszerek működését. Vezesse le ebből a multiprogramozott operációs rendszerek fő feldatait. Mutassa be a legfontosabb különbségeket a SPOOLING rendszer és a multiprogramozott rendszer között.
- A multiprogramozott operációs rendszerek feladatai:
- Tárgazdálkodás: annak biztosítása, hogy több folyamat és a rendszer kódja és adatai megfelelően el legyenek helyezve a rendelkezésre álló memóriában illetve háttértáron.
- Ütemezés: a folyamatok állapotának nyilvántartása, és közülük bizonyos alkalmakkor a futtatandó kiválasztása; folyamatok indítása és leállítása.
- Védelem: annak biztosítása, hogy a folyamatok csak ellenőrzött módon befolyásolhassák egymás és a rendszer működését.
- Erőforrások adminisztrálása: az eszközök nyilvántartása, annak felügyelete, hogy mikor ki férhet hozzájuk. Bizonyos erőforrások esetén kölcsönös kizárás biztosítása, a holtpont kezelése vagy megelőzése.
- Kommunikáció: lehetőség nyújtása a folyamatoknak az egymással, a hardverrel, a felhasználóval, a hálózattal illetve más gépekkel való kommunikációra. Folyamatok közti szinkronizációs eszközök biztosítása.
- Felhasználóbarát környezet biztosítása.
- _FIXME_: különbségek
- Könyv 129. oldal
2. Ismertesse a holtpont (deadlock) kezelésénél alkalmazható ún. "elkerülés" módszerét. Térjen ki a módszer jellemzőire, az alkalmazásához szükséges feltételekre illetve a módszer megvalósításánál alkalmazott algoritmusokra.
- A holtpont problémájára négyféle megközelítés létezik:
- Nem veszünk róla tudomást (strucc algoritmus);
- Megpróbáljuk észrevenni, ha létrejön, és megszüntetjük (detektálás, feloldás);
- Magát a rendszert úgy tervezzük meg, hogy ne alakulhasson ki (megelőzés);
- Csak akkor teljesítjük az erőforráskérelmeket, ha biztosan nem vezet holtpontveszélyre (elkerülés).
- Elkerülés: a rendszer a folyamatok kéréseit csak akkor teljesíti, ha a teljesítés után kialakuló állapot biztonságos. Egy állapot akkor biztonságos, ha legrosszabb esetben (hirtelen mindenki a maximális igénnyel jelentkezik) sem alakul ki holtpont.
- A biztonságosság eldöntéséhez folyamatoknak előre be kell jelenteniük a maximális erőforrásigényüket; valamint az algoritmus nincs felkészítve arra, hogy új folyamatok indulnak el.
- Megvalósítani a bankár-algoritmus segítségével lehet, amit minden kérésnél eldönti, biztonságos-e teljesíteni:
- Ellenőrizzük, hogy van-e annyi, amennyit kérnek; ha nem, leállunk.
- Ellenőrizzük, hogy nem kér-e többet, mint szabadna (az előzetes bejelentés alapján). Ha igen, hibával leállunk.
- Az aktuális erőforrás-foglaltsági táblázat alapján készítünk egy másikat: hogy milyen helyzet alakulna ki a kérés teljesítése esetén.
- Az új állapotról eldöntjük, biztonságos-e. Ha igen, a kérést teljesítjük, ha nem, elutasítjuk.
- A biztonságosságot a Coffman-algoritmushoz hasonlóan ellenőrizzük:
- Az adott állapotban megpróbálunk olyan folyamatot keresni, aki tovább futhat (mert kielégíthető az igénye), és frissítjük a táblázatot úgy, mintha lefutott volna, és felszabadította volna az erőforrásait.
- Ezt ismételgetjük; ha elfogynak a folyamatok, akkor a kiinduló állapot nem volt holtponton a maximális kérések ellenére sem, tehát az állapot biztonságos.
- Ha marad néhány folyamat, akik közül senki nem futhat tovább, akkor elég nagy kérés esetén az állapotból kialakulhat holtpont, tehát nem biztonságos.
- Ha minden erőforrásfajtából csak 1 van, akkor van egyszerűbb módszer is: az állapot akkor biztonságos, ha a foglaltsági gráfban nincs kör, még ha minden lehetséges kérés élét berajzoljuk, sem.
- Wikipédia: bankár-algoritmus
- Könyv 87. és 94.-98. oldal
3. Magyarázza el a változó méretű memória partíciók lefoglalásánál használt
- a, first fit
- b, next fit
- c, best fit
- d, worst fit
- algoritmusokat. Egy rendszerben az adott pillanatban 300K, 650K, 100K, 600K, 200K és 1500K méretű szabad területek vannak. Hogyan fog a fenti négy algoritmus sorrendben 377K, 220K, 159K, 429K és 120K méretű partíciónak helyet foglalni?*
- First fit: az első olyan szabad blokkból foglal helyet, amelyikben elfér. Gyors, kb. 30% marad kihasználatlan.
- 377K foglalása: a 650-esben fér el, marad: 300, 273, 100, 600, 200, 1500.
- 220K foglalása: a 300-asban fér el, marad: 80, 273, 100, 600, 200, 1500.
- 159K foglalása: a 273-masban fér el, marad: 80, 114, 100, 600, 200, 1500.
- 429K foglalása: a 600-asban fér el, marad: 80, 114, 100, 171, 200, 1500.
- 120K foglalása: a 171-esben fér el, marad: 80, 114, 100, 51, 200, 1500.
- Next fit: az első olyan szabad blokkból foglal helyet, amelyikben elfér, de nem az elejétől, hanem a legutolsó lefoglalttól kezdi. Kb. 30% marad kihasználatlan.
- 377K foglalása: első foglalás, az elejétől kezdjük a keresést. A 650-esben fér el, marad: 300, 273, 100, 600, 200, 1500.
- 220K foglalása: az előzőleg használt második blokktól kezdjük a keresést, abban el is fér. Marad: 300, 53, 100, 600, 200, 1500.
- 159K foglalása: a második blokktól kezdjük a keresést, a 600-asban fér el, marad: 300, 53, 100, 441, 200, 1500.
- 429K foglalása: a negyediktől kezdjük a keresést, abban el is fér, marad: 300, 53, 100, 12, 200, 1500.
- 120K foglalása: a negyediktől kezdjük a keresést, a 200-asban fér el, marad: 300, 53, 100, 12, 80, 1500.
- Best fit: a legkisebb helyre teszi be, ahova még befér. 30%-nál több marad kihasználatlan.
- 377K foglalása: a 600-asben fér el, marad: 300, 650, 100, 223, 200, 1500.
- 220K foglalása: a 223-asban fér el, marad: 300, 650, 100, 3, 200, 1500.
- 159K foglalása: a 200-asban fér el, marad: 300, 650, 100, 3, 41, 1500.
- 429K foglalása: a 650-esben fér el, marad: 300, 221, 100, 3, 41, 1500.
- 120K foglalása: a 221-esben fér el, marad: 300, 101, 100, 3, 41, 1500.
- Worst fit: a legnagyobb helyre teszi be. Kb. 50% marad kihasználatlan.
- 377K foglalása: az 1500-as a legnagyobb, marad: 300, 650, 100, 600, 200, 1123.
- 220K foglalása: az 1123-as a legnagyobb, marad: 300, 650, 100, 600, 200, 903.
- 159K foglalása: a 903-as a legnagyobb, marad: 300, 650, 100, 600, 200, 744.
- 429K foglalása: a 744-es a legnagyobb, marad: 300, 650, 100, 600, 200, 315.
- 120K foglalása: a 650-es a legnagyobb, marad: 300, 530, 100, 600, 200, 315.
- Könyv 165.-166. oldal
4. A Windows memóriakezelése
- a) Milyen és mekkora részekből épül fel egy folyamat virtuális címtartománya 32 bites Windows operációs rendszeren? Mik tárolódnak az egyes részeken?
- b) Hol tárolhatja az operációs rendszer egy folyamat által lefoglalt virtuális memórialapokat? Mi alapján dönti el, hogy melyik lehetőséget válassza?
- c) Vázolja, hogy egy fizikai memórialapnak milyen állapotai lehetnek, milyen típusú memórialistán szerepelhet! Jellemezze az egyes állapotok közötti átmenetet!
- a) 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. A felhasználói rész minden folyamatnak különálló, itt tárolódik a folyamat kódja, adatai, és a (user módú) verme. A kernel terület csak kernel módból érhető el, és minden folyamat ugyanazt látja. Itt található az Executive, a kernel és a HAL kódja, a rendszerszintű adatok, a kernel módú driverek, és minden szál kernel módú verme.
- Windows memóriakezelés diasor 5.-8. dia
- b) A memóriakezelő kevés szabad fizikai memória esetén háttértárra mentheti az egyes lapokat. Ezt a műveletet nevezzük lapozásnak (paging). A folyamatok a memórialapokat foglalhatják a rendszer ún.
- lapozott memória tárából (paged memory pool) és a
- nem lapozott memória tárából (nonpaged memory pool).
- A két memóriatár közötti különbség a lapozásnál van. A nem lapozott memória tárából történt memóriafoglalás esetén a kért memórialapot a rendszer állandóan a fizikai memóriában tartja, sosem menti háttértárra. Ezzel lehet biztosítani, hogy valamilyen szempontból fontos (például driverek által használt) memóriaterületek akkor is a fizikai memóriában maradjanak, ha ritkán használják őket.
- (MZ): a paged és nonpaged memory pool kernel módú memóriafoglalásra való csak, ez a válasz nem jó. Ráadásul az első kérdés nincs is explicite megválaszolva.
- c) lásd Windows memóriakezelés diasor 12. dia
5. Rajzolja fel a UNIX NFS kliens és szerver megvalósításának vázlatos felépítését, majd a rajz alapján ismertesse a virtuális fájlrendszerek működését és előnyét!
- A virtuális fájlrendszerek lényege, hogy a sokféle módon, fájlrendszerben tárolt fájlokat ugyanúgy kezelhessem, ne kelljen mindegyiket máshogy. Ez úgy oldható meg, hogy a konkrét FS-eket kezelő eszközök fölé rakok egy közös interfészt, ez a vnode/vfs interfész. Ha fájlt akarok megnyitni, az interfésztől kérem, és ő továbbpasszolja annak a kezelőnek, akihez tartozik, majd a választ vissza nekem.
- NFS: Network File System. Lényege, hogy másik gépen lévő fájl is ugyanúgy megjelenhet a helyi fájlrendszerben, mint a fizikailag itt lévők. Ehhez kell egy olyan eszköz, amitől ha fájlt kér valaki, akkor a kérést közvetíti a másik gépnek.
- A kliensben a vfs-től kérek egy másik gépen lévő fájlt. A vfs látja, hogy a kért fájl NFS fájlrendszeren van tárolva, ezért a NFS klienstől kéri. Ő a hálózati kapcsolaton keresztül RPC-vel kapcsolatba lép a másik gép NFS szerverével, és kéri tőle a fájlt. A szerver a saját gépe vfs-éhez fordul, aki a helyi fájlrendszertől (pl. ext2) kéri azt. A válasz ugyanezen az úton visszafele halad végig.
- Wikipédia: virtuális fájlrendszer
- UNIX fájlrendszerek diasor, 18. dia
- Könyv 339.-342., 366.-368., 372.-373. oldal