Operációs rendszerek vizsga 2008. május 20. megoldással

A VIK Wikiből
A lap korábbi változatát látod, amilyen Ferrero (vitalap | szerkesztései) 2013. január 25., 17:19-kor történt szerkesztése után volt.
(eltér) ← Régebbi változat | Aktuális változat (eltér) | Újabb változat→ (eltér)

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.

Beugró kérdések

1. Milyen rendszereket nevezünk "szorosan csatolt" rendszereknek?

  • 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 "közös erőforrást használnak" definícióra csak fél pontot adtak.
  • Könyv 137. oldal

2. Holtpont megelőzése (prevention) esetén milyen módszerrel lehet a foglalva várakozás előfordulását kizárni?

  • 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.
  • Könyv 93. oldal

3. Mikor lehet két tevékenységet (utasítássorozatot) párhuzamosan végrehajtani (Bernstein)?

Ha Pi és Pj az utasítássorozatok, Ii és Ij a bemeneti, Oi és Oj a kimeneti változóik halmaza, az alábbi feltételeknek kell teljesülniük: Ij és Oi, Ii és Oj, valamint Oi és Oj metszete üres halmaz.Ekkor a két tevékenység párhuzamosan végrehajtható.

4. 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?

  • Gondolom az a lényeg itt, hogy 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.

5. Sorolja fel a RAID technika leglényegesebb elemeit!

  • Redundant Array of Inexpensive Disks: több lemez összekapcsolása.
  • 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).
  • 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.
  • 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.
  • [[1]]

6. 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)?

  • 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.
  • [[2]]
  • Könyv 171. oldal

7. Melyek a Windows hardverfüggő részei?

  • A kernel egyes részei és a HAL.
  • Megjegyzés: én ide a drivereket is beírtam, nem vontak le érte pontot, de azt mondták, azokat nem szokás a rendszer részének tekinteni.
  • Windows bevezetés diasor, 17. és 19. dia

8. Mit jelentenek a számok és szavak a következő verzióleírásban: "Microsoft (R) Windows (R) 5.01.2006 Service Pack 2 Uniprocessor Free"?

  • (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ó.
  • Most computers run a "uniprocessor free" version of Windows, which is a version that runs on a single CPU and does not contain extra errorchecking.
  • http://google.com

9. Hasonlítsa össze az általános célú (asztali) és a beágyazott operációs rendszereket az indulás szempontjából!

  • 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.
  • Beágyazott rendszerek 2008-as diasor, 43. dia

10. Mi a Solaris DTrace?

  • Hibakereső, nyomkövető eszköz, amivel a rendszer és a programok működését valós időben lehet megfigyelni.
  • [[3]]

11. Milyen futási módban és kontextusban zajlik a UNIX rendszerhívások kiszolgálása?

  • Kernel módban fut a kód, és a rendszert hívó folyamat kontextusában.
  • Könyv 286. oldal

12. Mi a UNIX inode?

  • A fizikai állományokhoz tartozó leíró, azonosító.
  • Könyv 328. oldal

Nagy kérdések

1. Milyen paraméterek alapján lehet a különböző CPU ütemezési algoritmusokat értékelni? Definiálja a különböző paraméterek jelentését, majd hasonlítsa össze az FCFS (First-Come-First-Served), RR (Round Robin) és SJF (Shortesh-Job-First) algoritmusokat a fenti paraméterek szempontjából.

  • *Központi egység kihasználtság (CPU utilization)*: Alapvető cél, hogy a CPU lehetőleg minél több időt fordítson „hasznos” munka végzésére. A CPU-kihasználtság azt mutatja, hogy a CPU-idő hány százaléka fordítódik ténylegesen a folyamatok utasításainak végrehajtására. A kihasználtságot csökkenti, ha a CPU henyél (idle), azaz nincs olyan folyamat, amelyik futhat, illetve amikor rendszeradminisztráció, ütemezés stb. történik (rezsi, overhead)
  • *Átbocsátó képesség (throughput)*: Az egy időegység alatt elvégzett munkák számát mutatja.
  • *Körülfordulási idő (turnaround time)*: Egy-egy munkára vonatkozóan a rendszerbe helyezéstől a munka befejeződéséig eltelt időt mutatja.
  • *Várakozási idő (waiting time)*: Értéke azt mutatja, hogy egy-egy munka összességében mennyi időt tölt várakozással. A várakozó és futásra kész állapotokban töltött időn kívűl ide számítódik a felfüggesztett állapotok ideje, valamint a hosszú távú ütemezésig eltelő előzetes várakozás is
  • *Válaszidő (response time)*: Időosztásos rendszerekben nagyon fontos, hogy a felhasználók érezzék, hogy a rendszer reagál a parancsaikra. A válaszidő az az idő, amely az operációs rendszer kezelői felületének – esetleg egy felhasználóval kommunikáló folyamatnak – adott kezelői parancs után a rendszer első látható reakciójáig eltelik, vagyis amennyi idő alatt a rendszer válaszolni képes.
  • FCFS: nagy átlagos várakozási idő
  • RR: ?; túl nagy időszeletet alkalmazva FCFS-be megy át
  • SJF: Az algoritmus kiküszöböli a FCFS-nél tapasztalható konvoj hatást, és ennél az algoritmusnál optimális az átlagos várakozási és körülfordulási idő.

2. Egy igény szerinti lapozást alkalmazó rendszerben futó folyamat 4 fizikai memória lap területet kap. Futása során sorban a következő virtuális lapokra történik hivatkozás: 1,2,3,4,2,3,5,6,2,1,2,3,1,6,3,1.

  • a) Legrégebbi lap, First In First Out (FIFO),
  • b) legrégebben nem használt, Least Recently Used (LRU),
  • c) újabb esély, Second Chance (SC),
  • d) optimális
  • lapcsere stratégiák alkalmazása esetén hány laphiba következik be? A négy fizikai lap kezdetben üres, nem tartalmazza egyik virtuális lapot sem.*

összedobtam egy táblázatot, remélem nincs benne hiba: %ATTACHURL%/lapcsere.png

3.

  • a) Ismertesse és definiálja a kritikus szakasz megvalósításánál megkövetelhető kritériumokat. Sorolja fel, milyen eszközöket ismer a kritikus szakasz megvalósítására!
  • b) Kritikus régió (critical region) segítségével mutasson megoldást a termelő-fogyasztó (producer-consumer) problémára.

szerintem ide ez kell:

  • a) A kölcsönös kizárás megoldásaival szemben a következő általános elvárásokat támasztjuk:
    • minden körülmények között teljesüljön a kölcsönös kizárás,
    • a belépési protokoll döntéshozatala csak a belépésben érdekelt folyamatok részvételét igényelje, azaz a többi folyamat nyugodtan haladhasson anélkül, hogy foglalkozniuk kellene a kérdéssel,
    • véges időn belül minden belépni szándékozó folyamat bejuthasson (ettől esetenként eltekinthetünk).
  • Kézenfekvő megoldásnak tűnik kritikus szakaszonként egy foglaltságjelző bit elhelyezése a közös memóriában szabad kezdőértékre állítva. A kritikus szakaszba belépni szándékozó folyamat teszteli a jelzőt, ha szabad, akkor átállítja foglaltra és belép a kritikus szakaszba, kilépéskor pedig visszaállítja szabadra.
  • b) a probléma:
    • A rendszerben egymással párhuzamosan egy termelési folyamat, valamint egy fogyasztási folyamat zajlik. A Termelő saját ritmusában és algoritmusa szerint előállít valamit (például adatokat), amit egy raktárba tesz (Buffer).
    • A Fogyasztó saját ritmusában, saját algoritmusa szerint működve felhasználja a termelő által előállított terméket (adatokat), a soron következőt mindig a raktárból véve elő.
    • A Termelő és a Fogyasztó sebességére nincs kikötésünk. A Buffer kiegyenlítő hatású, kisebb sebességingadozások esetén nem akadnak fenn a folyamatok, legfeljebb a Termelő lelassulása esetén a raktárkészlet fogy, a Fogyasztó lelassulása esetén pedig növekszik. Mivel a Buffer kapacitása véges, elvárjuk, hogy ha megtelt a Buffer, a Termelő várjon a következő elem betételével, amíg felszabadul egy hely, illetve ha üres a Buffer, a Fogyasztó várjon, amíg érkezik egy elem. Ugyancsak elvárjuk, hogy az elemeket a Fogyasztó ugyanabban a sorrendben dolgozza fel, ahogyan a Termelő előállította azokat.
  • Talán a legáttekinthetőbb Lamport megoldása (1974) a pékség és egyéb sorállásra alkalmas üzletek és szol­gál­ta­tóhelyek működésének analógiájára (bakery algorithm). Bakery algoritmus adatszerkezetek közös tárban:
  • var számot_kap: array [0..n-1] of Boolean := false; (jelzi, hogy egy folyamat éppen sorszámot kap) sorszám: array [0..n-1] of integer := 0; (tárolja a sorszámokat)*Pi folyamat: belépési protokoll:* Sorszámot kér: számot_kap[i]:=true; sorszám[i]:=max(sorszám)+1; számot_kap[i]:=false; Amíg van nála kisebb sorszámú, helybenjár: for j:=0 to n-1 do begin while számot_kap[j] do üres_utasítás;
  • while sorszám[j]ą0 and (sorszám[j],j)< (sorszám[i],i) do üres_utasítás; e*nd; kilépési protokoll:* sorszám[i]:=0;


4. A Windows ütemezése

  • a) Jellemezze röviden, kulcsszavakkal a Windowsban használt ütemezőt!
  • b) Milyen algoritmus alapján választja ki az ütemező, hogy ki fog legközelebb futni, és az meddig futhat?
  • c) Milyen prioritási tartományokat kezel a kernel, mi ezek között a különbség?
  • d) Hogyan védekezik az ütemező a kiéhezés ellen?
  • e) Milyen különbség van szerver és kliens verziójú Windowsok között az ütemezés alapbeállításaiban?
  • a) Prioritásos, minden módban preemptív, szálakat ütemez (nem ügyel a folyamatok közti egyenlőségre), események hatására történik ütemezés, prioritások változhatnak, legmagasabb prioritásúak futnak, köztük Round-Robin.
  • b) A legmagasabb prioritásúak közül az egyik, Round-Robin szerint váltogat köztük. Mindegyik annyit futhat, amekkora a quantumja, ez a rendszer beállításaitól függ, valamint a blokkoló rendszerhívást végzőkét az ütemező módosíthatja. Ha felébred egy nagyobb prioritású, az megszakíthatja a futást.
  • c) 32 szint(0-31): Zero page (0), Dinamikus (1-15) és real-time (16-31). User és kernel folyamatok is lehetnek mindkettőben, viszont a real-time folyamatoknak nem változtatja a prioritását, a dinamikusaknak pedig igen. Zero page szál: felszabadított memórialapok kinullázása.
  • d) A Balance Set Manager által: egy másodpercenként megnézi a folyamatokat, ha valaki 300 óraütés óta nem futott, az megkapja a legmagasabb dinamikus prioritást (15), és nagyobb quantumot is kap. Miután végetért a quantumja, visszaáll normálisra.
  • e) Szerveren nagyobb a szálak quantumja; így egy lekérés miatt felébredő szerver nagyobb eséllyel végez a quantum lejárta előtt. A kliensnél az interaktivitás általában fontosabb: minél hamarabb kerüljön sorra mindegyik szál, még ha kis időre is, hogy ne akadjon meg semmi.
  • (MZ) a d)-nél: "megnézi a folyamatokat" --> "megnézi a szálakat", hisz mint az fentebb is szerepel a Windows szálakat ütemez, és nem folyamatokat
  • (MZ) az e)-ből hiányzik a változó hosszú kvantumok a kliensen
  • Windows ütemezés diasor 18., 19., 26. és 34. dia

5. Írja le a UNIX System V IPC közös részeit, majd röviden ismertesse az egyes kommunikációs megoldásokat, azok előnyeit és hátrányait!

  • A közös részek:
    • Kulcs: egyedi azonosító, a user határozza meg.
    • Létrehozó folyamat UID-je és GID-je
    • Birtokos folyamat UID-je és GID-je. Azért van, hogy a létrehozón kívül egy másik folyamat is minden jogot megkaphasson rá (ha kell).
    • Olvasási és egyéb jogosultságok
    • Létrehozó és egyéb függvények (pl. ...get(), ...ctl())
  • Szemafor
    • Egy azonosítóhoz egy szemafortömb tartozik, az egész tömb egy hívással hozható létre és módosítható
    • Kölcsönös kizárásra jó, egyéb adatok átvitelére nem
    • Problémák az atomicitással (semget() és semctl() közt más is próbálhat ugyanazzal az azonosítóval szemafort csinálni)
  • Üzenetsor
    • FIFO alapú, blokkokban továbbítja az információt
    • Nem lehet címzettet megnevezni, bárki kiolvashatja az üzenetet
    • Lassú, ugyanazt az adatot kétszer is kell mozgatni
    • Kevés információ vihető át vele
  • Osztott memória
    • Gyors, és sok adatot lehet vele átvinni
    • Nincs szinkronizálva az írás/olvasás
    • Strukturálatlan, nyers információátvitel
  • Könyv 315.-318. oldal