UL/FRI/UNI-RI/OS1/Izpiti/Ustni

Iz E-študij, proste zakladnice študentskega znanja

< UL | FRI | UNI-RI | OS1 | Izpiti
Skoči na: navigacija, iskanje
  1. Katera je glavna prednost multiprogramiranja?
    Glavna prednost multiprogramiranja je učinkovitejša izraba CPU in I/O, za uporabnike pa predvsem odzivnost na zunanje zahteve.
  2. Katere so glavne razlike med OS velikih računalnikov in osebnih računalnikov?
    Pri velikih računalnikih (mainfraimih) je najpomembnejša računska moč. Ker so ljudje, ki take računalnike uporabljajo strokovnjaki, sama prijaznost ni kjučnega pomena, bolj je pomembna fleksibilnost, ki omogoča izkušenemu uporabniku povečati produktivnost.
    Pri osebnih računalnkih je pomembna odzivnost sistema na zunanje zahteve, sama računska moč ni tako pomembna. Pomemben je tudi izgled in prijaznost do uporabnika.
  3. Kaj pomeni porazdeljevanje časa?
    Porazdeljevanje časa pomeni, da se en procesor s pomočjo operacijskega sistema porazdeli med n procesov. Operacijski sistem med procesi ponavadi prekljaplja tako hitro, da se uporabniku zdi, kot da bi procesi tekli vzporedno. Če govorimo o enakovrednih procesih, se zdi, kot da bi vsak tekel na procesorju z približno 1/n hitrosti dejanskega procesorja.
  4. V okolju z multiprogramiranjem in porazdeljevanjem časa si več uporabnikov deli sistem. Na katere varnostne probleme naletimo? Ali lahko na sistemu s porazdeljevanjem časa zagotovimo enako stopnjo zaščite kot na namenskem računalniku?
    Problemi so lahko namensko škodljivi (virus, razni vohunski programi, vdori) ali pa nenamensko škodljivi (nepravilno napisan program ki piše po naslovnem prostoru drugega procesa, nevarnost deadlocka pri zaseganju resoursov, stradanje procesov). V sistemu z porazdeljevanjem časa se lahko tem problemom najlažje izognemo, če imamo na voljo priviligirani in nepriviligirani način delovanja. Najpomembneje pa je, da imamo pravilno napisan operacijski sistem, ki zna ščititi posamezne procese pred posegi drugih procesov v njihov prostor in učinkovito razdeljevati resourse. Če tega nebi mogli zagotoviti, bi bili taki sistemi neuporabni za večino opravil.
  5. Podajte bistvene lastnosti naslednjih OS: paketni, interaktivni, sistemi s porazdeljevanjem časa, sistemi v realnem času, mrežni, distribuirani?
    • Paketni: opravilo se izvrši kot celota, slaba izraba CPUja zaradi počasnih I/O operacij
    • Interaktivni: neposredna komunikacija z uporabnikom, zahtevan je kratek odzivni čas
    • Time-sharing: več uporabnikov si deli računalnik, vendar ima vsak občutek, da je na računalniku sam.
    • RTS: pomembno je zadostiti rokom, ki so bolj pomembni kot sama hitrost izvajanja, roki so dobro definirani
    • Mrežni: vsak računalnik v mreži deluje neodvisno od ostalih, deljenje datotek, komunikacija
    • Distribuirani: manj neodvisni kot mrežni sistemi, na vsakem računalniku teče svoj OS a na zunaj izgleda, kot da bi z omrežjem upravlja samo en OS.
  6. Katera je glavna težava, ki jo mora premagati snovalec OS za sistem, ki naj bi deloval v realnem času?
    V RTS moramo določenim procesom zagotoviti determinističnost izvajanja (določen del procesa se mora izvršiti v določenem časovnem okvirju, drugače je isto, kot da se sploh ne izvrši). Za zagotavljanje pravočasnega izvajanja je ključnega pomena razvrščanje opravil.
  7. Kaj pomeni pojem selitve značilnosti? (features migration)
    Z razvojem računalnikov so se značilnosti selile iz mainframe-ov na miniračunalnike, nato na mikroračunalnike in nato na dlančnike.
  8. Razloži pomen opažanja (v razvoju vrst) da ontogeneza sledi filogenezi?
    Ontogeneza sledi filogenezi pomeni, da posameznik v svojem razvoju ponovi razvoj vrste, kateri pripada. Izraz izvira iz biologije, vendar pa lahko enako zakonitost opazimo tudi pri razvoju operacijskih sistemov. Vsak tip operacijskega sistema v svojem razvoju načeloma ponovi razvojne faze strojne kode, multiprogramiranja, time-shariga, virtual-memory-ja ... ki so bile značilne tudi za razvoj splošnega pojma operacijski sistem.
  9. Katere so razlike med prekinitvijo in pastjo? Za kaj se posamezna funkcija uporablja?
    Prekinitve in pasti so signali, ki povedo procesorju, da se je nekaj zgodilo in da se mora na to odzvati. Razlika med prekinitvijo in pastjo je, da imajo prekinitve svoj izvor izven procesorja in so strojne narave (prožijo jih večinoma I/O naprave), pasti, ki jih včasih imenujemo tudi programske prekinitve, pa imajo izvor v samem procesorju.
    Prekinitve se uporabljajo za signaliziranje procesorju, da je določena naprava končala določeno operacijo (komunikacija z I/O napravami) ali za obveščanje procesorja o zgrešitvi v pomnilniku (v primeru navideznega pomnilnika). Pasti se uporabljajo za reagiranje ob napakah delovanja procesorja (npr. deljenje z 0) in za realizacijo sistemskih klicev (klic uporabniškega programa v operacijski sistem).
  10. Za kakšne operacije uporabljamo DMA?
    DMA (Direct Memory Access) se uporablja za prenose podatkov v in iz vhodo/izhodnih naprav. Pri navadnem prenosu bi moral vse podatke prenesti procesor, kar je lahko zelo potratno (velika polja podatkov). Pri DMA pa nadzor prenosa prevzame DMA krmilnik, ki po končanem opravilu o tem obvesti procesor s prekinitvijo.
  11. Kateri od spodnjih izrazov morajo biti privilegirani?
    • nastavitev časovnika (priviligiran ukaz)
    • branje sistemske ure (vsak proces lahko bere sistemsko uro)
    • brisanje spomina (obvisno katerega spomina - vsak proces lahko briše podatke v svojem naslovnem prostoru, brisanje spomina na splošno pa je mogoče le v priviligiranem načinu)
    • izklop prekinitev (priviligiran ukaz - v nasprotnem primeru bi lahko vsak proces enostavno izklopil prekinitve in s te 'pohabil' sistem)
    • preklop iz uporabniškega v privilegiran način delovanja (v osnovi je možno preiti tudi nepriviligiranim procesom, vendar ta preklop ni tako enostaven)
  12. Nekateri računalniški sistemi ne zagotavljajo privilegiranega načina dela strojne opreme. Ali je za te sisteme možno zasnovati varen OS? Podajte argumente za in proti.
    Proti: Vsak program lahko uporablja vse ukaze, piše po celem pomnilniku in podobno. To je zelo nevarno, še posebej če je program narejen z namenom da povzroči škodo.
    Za: Kjub temu lahko, če smo dovolj previdni naredimo operacijski sistem tudi na takem računalniku. Če programi ne izvršujejo priviligiranih ukazov sami, ampak preko operacijskega sistema, lahko implementiramo samo programsko zaščito. Seveda pa se moramo izogibati nepoznanih programov, ki tega dogovora morda ne spoštujejo.
  13. Da se v OS izognemo vplivu škodljivih nepreizkušenih uporabniških programov, moramo računati na določeno pomoč strojen opreme. Naštejte razpoložljiva pomagala.
    • prioritetni način delovanja
    • določanje in ščitenje naslovnega prostora posameznega programa
  14. Katere aktivnosti so povezane z upravljanjem s sistemi?
    Upravljanje (kreiranje, brisanje, preklapljanje, sinhronizacija, medsebojna komunikacija) s procesi (uporabniškimi in tistimi, ki so del operacijskega sistema), upravjanje z I/O napravami in drugimi viri (dostop in reševanje smrtnih objemov), upravljanje s pomnilnikom.
  15. Katere aktivnosti OS so povezane z upravljanjem spomina!
    Dodeljevanje in odvzemanje spomina posameznemu procesu, beleženje zasedenega spomina, ščitenje spomina, ki ga zaseda posamezen proces pred drugimi procesi, v primeru navideznega pomnilnika tudi odločanje o tem katere strani so v primarnem spominu.
  16. Katere aktivnosti OS so povezane z upravljanjem sekundarnega spomina ?
    Upravljanje z nezasedenim prostorom, dodeljevanje prostora.
  17. Katere aktivnosti OS so povezane z upravljanjem datotečnega sistema?
    Kreiranje, brisanje in manipulacija map in datotek, upravljanje z nezasedenim prostorom, preslikava datotek v spomin (mapping).
  18. Kaj je namen ukaznega interpreterja? Zakaj običajno ni del jedra?
    Ukazni interpreter je program, ki izvršuje ukaze, ki mu jih poda uporabnik. Najpomembnejša vrsta ukaza je zagon programov. Je neke vrste most med uporabnikom in operacijskim sistemom.
    Ukazni interpreter običajno ni del jedra iz več razlogov. Najpomembnejši so varnostni razlogi - če program teče v nepriviligiranem načinu, je sistem boj odporen v primeru, da ima program varnostno luknjo ali kakšno drugo napako. Poleg tega je jedro na ta način manjše (ukazni interpreter se požene šele ko se uporabnik prijavi v sistem) sistem pa bolj pregleden in obvljadljiv.
  19. Naštej usluge, ki jih nudi OS. Razloži zakaj so koristne za uporabnika. Razloži še v katerih primerih se uslug ne bi dalo realizirati na nivoju uporabniških programov.
    Upravljanje s procesi (možnost, da imamo večopravilni sistem), zaščita procesov pred posegom drugih procesov v njihov naslovni prostor, lažja uporaba I/O naprav, delo z datotečnim sistemom, detekcija in odpravljanje napak.
    Operacijski sistem nam omogoča boljšo in bolj varno izrabo računalnika. Na nivoju uporabniških programov se ne bi dalo realizirati večopravilnega sistema, zaščite spomina in time-sharinga.
  20. Kaj je namen sistemskih klicev?
    Namen sistemskih klicev (SVC) je nudenje uslug jedra uporabniškim procesom. Sistemski klici predstavljajo vrata preko katerih lahko procesi posredno dostopajo do storitev, ki so jim v splošnem nedosegljive (I/O operacije, zaščita pomnilnika). Ta vrata so navadno zaščitena tako, da lahko do storitev dostopajo samo določeni procesi (zaščita implementirana v operacijskem sistemu).
  21. Opišite faze sistemskega klica in potrebe podatkovnih struktur.
    Ustrezen sistemski klic se navadno nahaja v sistemski knjižnici v določeni funkciji, ki nam olajša uporabo klica. Tako program najprej kliče funkcijo, ki vhodne parametre prilagodi zahtevam ustreznega sistemskega klica, nato pa s posebnim ukazom (TRAP), ki sproži prekinitev pove procesoru naj se izvrševanje prenese na priviligiran nivo (Procesor skoči na določen naslov, ki je definiran za to vrsto prekinitve; na tem naslovu se nahaja PSP oeracijskega sistema). Operacijski sistem shrani stanje procesa, ki je izvedel sistemski klic, nato pa izvede skok na ustrezni sistemski klic (lokacijo dobi iz tabele sistemskih klicov, lokacijo v tabeli sporoči proces). Po izvršenem klicu se lahko izvajanje vrne v uporabniški program, lahko pa je za dokončno izvršitev klica potrebno čakanje (I/O naprava). V tem primeru operacijski sistem proces začasno premakne v stanje čakanja, dodeljevalnik pa izbere ustrezni proces, ki se lahko izvaja. Ko je dokončna izvršitev klica možna, operacijski sistem spet zbudi proces in izvajanje se lahko nadaljuje.
  22. Kako izvesti kodo sistemskega klica (ki je v jedru), če vemo, da se uporabniški program izvaja v uporabniškem načinu dela ?
    Iz nepriviligiranega načina lahko v priviligirani način prestopimo samo preko prekinitev. Ob prekinitvi procesor namreč sam preklopi v priviligiran način delovanja, operacijski sistem pa mora samo ustrezno nastaviti vektorje za posamezne prekinitve, da se delovanje preusmeri na ustrezno mesto. Programsko je možno sprožiti prekinitev (past) z ukazom TRAP ali podobnim, ki ni priviligiran in ga tako lahko izvajajo tudi nepriviligirani procesi.
  23. Opišite menjavo konteksta (context switch) za poznani procesor.
    (tole sm samo prepisal) M 6802: menja se : PC (program counter), SP (stack pointer), registri A, B, CCR, indeksna registra INX in INY
  24. Kakšno vlogo ima pri menjavi konteksta jedro ?
    Jedro sistema pri menjavi konteksta naredi praktično vse, posamezni proces sploh ne opazi, da je bil prekinjen. Jedro odreagira na urino prekinitev, shrani stanje trenutnega procesa, izbere nov proces in restavrira njegovo stanje. Potem prepusti procesor novemu procesu.
  25. Opišite stanja procesa in okoliščine prehajanja med njimi.
    Vsak proces je lahko v enem izmed treh stanj: ready, running, blocked. V ready stanje preide ko se kreira, ko ga dodeljevalnik začasno prekine (prej se je izvajal - running stanje) in ko so na voljo podatki, na katere je čakal (blocked stanje). Running stanje je stanje izvajanja - proces je trenutno aktiven. V to stanje lahko pride samo, ko ga izbere dodeljevalnik. V blocked stanje pride proces, ko zahteva neke podatke, ki pa v danem trenutku niso na voljo. Operacijski sistem ga v tem primeru ustavi, ko pa so podatki na voljo, proces preide v ready stanje in caka, da bo prisel na vrsto.
  26. Opiši krmilni blok ( PCB ) procesa.
    PCB posameznega procesa vsebuje: stanje procesa in (v primeru da proces teče so ti podatki najverjetneje zastareli)
  27. Naštej razvrščevalne vrste (scheduling queue).
    FCFS, SJF, trinivojsko razvrščevanje, razvrščevanje po prioriteti, Round-Robin, razvrščevanje z nivojskimi vrsticami, razvrščevanje v sistemih v realnem času.
  28. Kakšna je, glede na rabo I/O in CPU, narava procesa?
    Procese delimo na dve skupini: CPU-bound procese, ki večino časa računajo, vmes pa imajo kratke intervale ko zahtevajo podatke iz I/O naprav in I/O-bound procese, ki procesorja ne izrabljajo veliko, imajo pa dolge cikle izrabe I/O naprav.
  29. Naštej kriterije razvrščanja.
    • Vsi sistemi: poštenost, izvrševanje zadane strategije, uravnoteženost.
    • Paketni sistemi: propustnost, čas obravnave (turnaround time), CPU izkoriščenost.
    • Interaktivni sistemi: odzivni čas, proporcionalnost.
    • Sistemi v realnem času: zadostitev rokom, napovedljivost.
  30. Definirajte razliko med razvrščevanjem s prekinjanjem in razvrščevanjem brez prekinjanja (preemptive, nonpreemptive)
    Pri nonpreemptive razvrščanju se dodeljevalnik sproži samo, ko proces zaključi svoje delo ali, ko sistemski klic procesa ne more biti končan takoj in se za ta čas aktivira drug proces. Preemptive razvrščanje pa se poleg tega zanaša še na periodično urino prekinitev, ob kateri se sproži dodeljevalnik, ki izbere nasledni proces, ki bo tekel.
  31. Kakšno je razvrščanje FCFS?
    Kot pove že samo ime (First Come First Served), se najprej izvrši proces, ki je prišel v čakalno vrsto prvi.
  32. Kakšno je razvrščanje SJF? Kakšni problemi nastopijo pri takem razvrščanju in kako se jih rešuje?
    Shortest Job First je razvrščanje, ki da prednost procesom s krajšim časom preostanka izvajanja. Problem tega načina razvrščanja je, da ne vemo kako dolgo se bo proces še izvajal. Ta problem rešujemo z modeliranjem bližnje prihodnosti na osnovi bližnje preteklosti.
  33. Kakšno je razvrščevanje po prioriteti? Problemi in rešitve.
    Razvrščevalnik izbere vedno proces z najvišjo prioriteto. Problem pri tem načinu je, da lahko pride do izstradanja (starvation) nižjeprioritetnih procesov, ki ne pridejo nikoli na vrsto, zato moramo vpeljati še staranje, to je nižanje prioritete s časom.
  34. Kakšno je razvrščanje s časovnim prepletanjem (RR)? Predstavite potrebne podatkovne strukture in obravnavajte zahteve za implementacijo.
    Round Robin razvrščanje pri katerem dobjo vsi procesi enak interval procesorskega časa. Ko proces porabi svoj interval se vrne na konec čakalne vrste. Podatkovna struktura, ki jo rabi RR razvrščanje je vrsta, dodaten pogoj pa je, da ima računalniški sistem realizirane urine prekinitve, ki nam omogočajo da proces omejimo samo na določen interval (preemtive scheduling).
  35. Razloži razlike med razvrščevalnimi algoritmi v razvrščanju malih procesov.
    Najboljši je SFJ, najslabši je FIFO. Pri kratkih procesih razlike niso velike.
  36. Kaj je nit, nitkanje? Zakaj sploh potreba po nitih?
    Nit je osnovna enota pri uporabi CPU. En proces ima v klasičnem sistemu eno nit izvajanja. V večnitnih sistemih je v posameznem procesu združenih več niti (lahko je tudi samo ena), ki imajo vsaka svojo ID številko, PC, nabor registrov in sklad ter si delijo med seboj deli naslovni prostor, odprte datoteke, globalne spremenljivke, signale itd. Zaradi te značilnosti imenujemo niti tudi lightweight procesi.
    Nitkanje je implementacija in izvajanje niti.
    Prednost niti je v tem, da omogočajo to, kar omogočajo procesi znotraj enega samega procesa. To vodi k enostavni izmenjavi podatkov in hitrejšemu prekljapljanju med posameznimi nitmi (boljša izkoriščenost CPU).
  37. Katere so razlike med nitmi uporabniškega nivoja in nitmi na nivoju jedra?
    Prednost niti na uporabniškem nivoju je, da lahko niti na ta način impelementiramo tudi na OS, ki sam po sebi ne podpira niti. Vsak proces hrani tabelo niti v svojem prostoru, za manipulacijo niti pa največkrat skrbi RTS knjižnica. Dodatna prednost tega načina implementacije niti je tudi, da ima lahko vsak proces svoj način izbiranja niti.
    Če so niti realizirane na nivoju jedra, potem jedro skrbi za dodeljevanje procesorja nitim. Prednost tega načina je, da ena nit ne zablokira celega procesa. Pojavi pa se problem preklapljanja med jedrom in uporabniškim procesom, kar se odraža v velikih izgubah časa.
  38. Katere nevšečnosti vpeljemo z nitmi?
    Pri vpeljavi niti se pojavijo problemi hierarhije niti (odnos starš/sin), vprašanje dodelitev podatkovnih struktur ter alokacije pomnilnika
  39. Podajte kakšen primer uporabe niti.
    Primer, kjer je uporaba niti smiselna so strežniške aplikacije (npr. spletni strežnik). Vsaka nit streže določenemu klientu, vse skupaj pa si delijo cache podatke. Naslednji primer je pisarniški program: ena nit skrbi za sprejemanje podatkov iz tipkovnice, druga za formatiranje teksta, previrjanje črkovanja ... Tretji primer so računalniške igre: ena nit skrbi za izris grafike, druga za procesiranje in krmiljenje logike.
  40. Primerjaj zmogljivosti, ki so uporabljene ob kreiranju niti s tistimi, ki so uporabljen ob kreiranju procesa.
    Za kreiranje niti je potrebno precej manj časa, kot za kreniranje procesa, saj posamezna niti potrebuje samo nekaj osnovnih podatkov (PC, SR, SP, registre, sklad), ostale podatke pa si niti istega procesa delijo.
  41. Podrobneje opišite niti v uporabniškem prostoru.
    Vsak proces ima svoj run-time system, ki skrbi za niti tega procesa.
    • Prednosti: Ni klicev v jedro, ni brisanja predpomnilnika, vsak proces ima lahko svoje razvrščevanje.
    • Slabosti: Problem se pojavi, če nit ne odstopi; niti lahko uporabijo blokirajoče sistemske klice, kar povzroči blokado celotnega procesa.
  42. Podrobneje opišite niti v jedru.
    Pri tem načinu za vse skrbi jedro, vsi ukazi za niti (create, wait, yield, exit) so implementirani kot sistemski klici, kar predstavlja visoko ceno in tudi glavno slabost. Jedro je tudi precej večje, ker mora hraniti tabelo in informacije vseh niti. Dobra stran implementacije v jedru pa je, da jedro z lahkoto zaznava blokirane niti in jih nadomešča z drugimi nitmi (istega ali drugega procesa). Zaradi visoke cene je uporabno končane niti reciklirati.
  43. Kaj pomeni izraz aktivno čakanje (busy-waiting)? Kakšne so v OS druge vrste čakanj? Ali se aktivnega čakanja lahko popolnoma znebimo?
    Busy waiting pomeni, da nek proces ali nit čaka na sprostitev nekega vira v zanki in s tem po nepotrebnem troši procesorski čas. V računalniških sistemih je bolj zaželjen način čakanja blokiranje procesa in njegova ponovna aktivacija, ko se ovira sprosti, vendar pa aktivnega čakanja ni mogoče v celoti odpraviti.
  44. Kako lahko pride do tekmovalnih okoliščin (race condition)?
    Tekmovalne okoliščine nastopijo, ko dva ali več procesov (ali niti) dostopa (bereta in pišeta) do istih skupnih podatkov in je vrednost podatkov odvisna od točnega razporeda ukazov obeh provesov.
  45. Opišite problem kritičnega odseka (Critical section, CS). Katerim pogojem mora zadoščati rešitev?
    Kritični odsek je problem ki sledi neposredno iz tekmovalnih okoliščin. Del kode, ki bere in piše skupne podatke je kritičen.
    Rešitev problema mora zadoščati štirim pogojem: v kritičnem sdseku je lahko naenkrat le en proces, ne smemo delati nobenih sklepanj o hitrosti procesorja, procesi izven kritičnega odseka ne morejo blokirati procesa, ki se nahaja v tem odseku in noben proces ne sme za vstop v kritični odsek čakati neskončno dolgo.
  46. Opišite Bakery algoritem.
    Imamo n procesov, urejeni pa so po id številkah. Preden kateri od njih vstopi v kritični odsek, dobi vsak proces številko. Proces z najmanjšo številko vstopi v kritični odsek. Če imata dva procesa isto številko, vstopi tisti, ki ima nižji id.
  47. Opišite razpoložljivo strojno opremo za sinhronizacijo. Ali nam omogoča omejitev čakanja? Opišite koncept nedeljivosti.
    Najpogostejša strojna podpora sinhronizaciji je implementacija posebnih procesorskih ukazov tipa test and set. Ukaz je sam po sebi nedeljiv, opravi pa več opravil. Ukaz prebere pomnilniško lokacijo (lock) v register, preveri nek bit, ki predstavlja semafor in ga postavi na ena. V primeru, da je že bil ena, je že nek drug program zasedel semafor, če pa je bil nič, lahko nov ukaz vstopi v kritično sekcijo. Če imamo tekmovalne pogoje, je občasno čakanje neizogibno, lahko pa čakajoči procesi namesto aktivnega čakanja zaspijo. Drugi procesi pa ob istem času, ko sprostijo semafor, še zbudijo čakajoči proces. Nedeljivost pomeni, da nekega postopka ni mogoče prekiniti z drugim procesom (onemogočanje prekinitev).
  48. Opišite sinhronizacijsko strukturo semafor.
    Semafor se uporablja za ekskluzivni dostop do določenih spremenljivk oz. ločeno izvajanje kritične sekcije. Če eden izmed procesov postavi semafor na vrednost različno od 0, morajo drugi procesi počakati, da ga postavi nazaj.
  49. Opišite rešitev sinhronizacije vstopa v CS. Podajte shemo procesa.
    Ena izmed rešitev (po Petersonu) je, če vsak proces najprej postavi nek bit, ki izraža njegovo zanimanje za vstop v kritično sekcijo. Nato še v neko globalno spremenljivko (ki si jo delijo vsi procesi) zapiše svojo identifikacijsko številko, da je na vrsti. V naslednjem koraku pa mora le še preveriti, če lahko nadaljuje v kritično sekcijo - če se noben izmed drugih procesov ne zanima zanjo oz. je v globalni spremenljivki še vedno zapisan, da je na vrsti.
  50. Kako odpravimo aktivno čakanje procesa na vstop v CS? Opišite implementacijo (Kaj pomeni spinlock – prednosti slabosti?)
    Aktivno čakanje odpravimo, tako da proces zaspi, drugi procesi pa ga ob prosti kritični sekciji zbudijo. Spinlock pomeni, da nek semafor uporablja aktivno čakanje (predvsem pri izmenjevanju vira med dvema procesoma). Aktivno čakanje ni dobro, če je predolgo, saj je procesor tako slabo izkoriščen.
  51. Opišite binaren semafor. Kako lahko števni semafor realiziramo z binarnim?
    Binarni semafor ima samo dve stanji (up, down), za števni semafor imamo lahko binarni semafor, ki omogoča dostop do števca.
  52. Naštejte in opišite klasične probleme sinhronizacije!
    Problem obedujočih filozofov, problem bralcev in pisalcev, problem spečega brivca, bounded buffer problem.
  53. Opišite pasti uporabe semaforjev!
    Če branje in sprememba semaforja ni nedeljiv postopek, lahko pride do problema na isti način kot brez semaforja (dva procesa hkrati dostopata do semaforja in ga oba postavita - oba prideta v kritično sekcijo). Pri uporabi večih semaforjev naenkrat pa je najpogostejši problem smrtni objem.
  54. Podajte definicijo smrtnega objema in naštejte 4 potrebne pogoje za njegov nastop!
    Smrtni objem je stanje, ko dva ali več procesov čaka en na drugega (ker rabi vir, ki ga trenutno zaseda drugi proces). V takem primeru bodo vsi čakali v neskončnost. Štirje potrebni pogoji za nastanek smrtnega objema so: viri morajo biti take narave, da jih mora proces ekskluzivno zaseči; proces lahko zasede en vir in nato zaprosi še za drugega; Virov ne moremo odvzeti določenemu procesu in jih dodeliti drugemu (nonpreemptive); v grafu alokacije virov obstaja cikel.
  55. Predstavite graf alokacije virov (RAG) in njegovo povezanost z DL!
    Graf alokacije virov je orodje s katerim grafično prikažemo zaseganje virov s strani procesov in želje procesov po določenih virih. Procese predstavimo s krogi, vire s kvadrati. Če je nek vir zasežen vnesemo usmerjeno povezavo od vira do procesa, ki vir zasega. Če proces čaka na sprostitev vira, vnesemo usmerjeno povezavo od procesa do vira. V sistemu je nastopil smrtni objem, če v takem grafu obstaja cikel.
  56. Kako se DL izognemo s preverjanjem varnega stanja?
    Če lahko vsi procesi naenkrat zahtevajo maksimalno število virov, pa še vseeno obstaja sekvenca, da se vsi procesi končajo, smo v varnem stanju. DL se izognemo tako, da pred odobritvi vira nekemu procesu preverimo, če bi bilo novo stanje še varno. Če ne bi bilo, vira ne dodelimo.
  57. Opišite Bankirjev algoritem. Kje ga lahko uporabimo? Opišite algoritma za preverjanje varnega stanja in obdelavo zahteve po virih!
  58. Opišite sinhronizacijski konstrukt monitor! Kakšen pomen imata operaciji nad condition spremenljivko? Kaj je drugače v primerjavi s semaforjem?
    Monitor prestavlja konstrukt, znotraj katerega se lahko izvaja le eden izmed procesov. Če mora eden izmed procesov čakati na nek vir, uporabo monitorja prepusti drugemu procesu. Condition spremenljivke predstavljajo neke vrste semaforje, preko katerih se signalizira čakajočim procesom, da lahko nadaljujejo z delom. Drugače kot pri semaforjih je, da tu za celotno zaporedje in vstopanje v kritične sekcije skrbi monitor, kar ščiti pred napačno implementacijo in pojavom smrtnih objemov.
  59. Opišite razliko med fizičnim in logičnim naslovom
    Fizični naslov je dejanski naslov v pomnilniku (RAM). Logični naslov je naslov v navideznem pomnilniku in je lahko daljši kot fizični naslov. Programi operirajo z logičnimi naslovi, ki pa jih nato procesor preslika v fizične, ko dostopa do pomnilnika.
  60. Opišite razliko med interno in eksterno fragmentacijo pomnilnika
    Interna fragmentacija - pri ostranjevanju; fragmentacija znotraj strani; zadnja stran ponavadi ni polna ker podatki niso večkratnik strani, preostali prostor je neuporaben
    Eksterna fragmentacija - nastopi pri segmentaciji; intervali nezasedenega spomina se zmerom bolj drobijo in postajajo poslednično neuporabni
  61. Opišite naslednje alokacijske algoritme: FF (first fit), BF (best fit) in WF (worst fit)
  62. Opišite osnovno metodo ostranjevanja (paging)
Osebna orodja
Imenski prostori
Različice
Dejanja
navigacija

Tiskanje/izvoz
orodja