Skip to content

Instantly share code, notes, and snippets.

@luxxi
Last active January 18, 2022 16:33
Show Gist options
  • Save luxxi/520b508b5710570ade847a20308496fe to your computer and use it in GitHub Desktop.
Save luxxi/520b508b5710570ade847a20308496fe to your computer and use it in GitHub Desktop.

2013

Načini komunikacije med procesi. Katera dva modela komunikacije obstajata?

  • IPC (del OS) Posreden - OS skrbi za posredovanje sporočil med procesoma.

    realizacija s pomočjo sporočil

      1) P in Q vzpostavita povezavo (P: open_conn() Q:accept_conn())
      2) P zavije sporočilo in ga pošlje Q (P: send())
      3) Q čaka na sporočilo (Q: receive())
      4) Končata ko en od njiju prekine (P/Q close_conn())
    

    ✔️ hitro programiranje, varnejši in zaneslivejši (OS skrbi), enostavnejši iz strani programa in programerja

    ➖ več dela za OS zaradi sistemskih klicev -> ki so počasni

    vrste povezav:

    • neposredne / posredne
    • simetrične / asimetrične
    • s kopičenjem / brez kopičenja
    • s pošiljanjem kopij / referenc
  • model s skupnim pomnilnikom

    Neposreden

    unix

    1. P zaprosi naj OS poišče pomnilnik ustrezne velikost shmget
    2. OS najde prostor, P-ju vrne indentifikator prostora S
    3. vsak proces (P in npr. Q), ki želi uporabljati skupni prostor si ga mora najprej priključiti v svoj naslovni prostor shmat`
    4. ko ga ne potrebuje več se od njega loči

    ✔️ hitrejši, saj razen dodelitve skupnega prostora OS ne pomaga.

    ➖ podpora OS je minimalna (OS samo upošteva, da se je nasl. prostor procesa spremenil). Zato morata P in Q (oziroma njun programer) sama poskrbeti za usklajeno in varno komunikacijo (npr. poskrbeti, da Q ne bo poskušal brati podatka prej, preden ga je P pripravil).

Razlika med multiprogramiranjem in večopravilnostjo in definiciji?

Večopravilnost je multiprogramiranje s časovnim dodeljevanjem (uporablja časovne rezine za dodeljevanje CPE-ja procesom).

Komponente OS

  • upravljanje procesov
  • upravljanje glavnega pomnilnika
  • upravljanje datotek
  • upravljanje V/I sistema
  • upravljanje zunanjega pomnilnika
  • delo v omrežju
  • zaščita
  • interpretacija uporabnikovih ukazov
  • varnost

Naloge sodobnih OS?

  • Upravljanje procesov
  • Upravljanje glavnega pomnilnika
  • Upravljanje datotek
  • Upravljanje V/I sistema
  • Upravljanje zunanjega pomnlnika
  • Delo v omrežju
  • Zaščita in varnost
  • Interpretacija uporabnikovih ukazov.

storitve operacijskega sistema

  • izvrsevanje programov,
  • v/i operacije,
  • delo z datotecnim sistemom,
  • komuniciranje med procesi,
  • detekcija in odprava napak,
  • rezervacija virov,
  • evidenca uporabnikov,
  • zascita podatkov in procesov.

Kriterij razvrščanja procesov in kateri se najpogosteje uporabljajo?

  • Izkoriščenost CPE
  • Propustnost
  • Čas obdelave
     čas od nastanka procesa do njegovega konca = t1+t2+t3+t4
     
     	t1...čakanje, da se ustvari,
     
     	t2...čakanje v vrsti pripravljenih
     
     	t3...izvajanje
     
     	t4...čakanje, ker je onemogočen
    
  • Čakalni čas. t2
  • Odzivni čas
  • Pravičnost

Kateri sistemski klici se zgodijo ko bash lupina zažene program v ospredju?

  • Zagon v ospredju:

    Program:

    • se zažene
    • ima nadzor nad konzolo
    • vrne izhodni status lupini.

    Lupina:

    • ga čaka, da se konča
    • prevzame izhodni status.

    izhodni status je shranjen v spremenljivki $?

    Sistemski klici ko bash lupina zažene program v ospredju:

    fork(), exec(), waitpid()

  • Zagon v ozadju z &.

    Program:

    • se zažene,
    • nima nadzora nad tipkovnico
    • vrne izhodni staus lupini.

    Lupina:

    • ne čaka, da se program konča
    • ob prejmu signal SIGCHLD, prevzame izhodni status programa.

    izhodni status je shranjen v spremenljivki $!

    Sistemski klici ko bash lupina zažene program v ozadju:

    fork(), exec()

  • Zagon v podlupini

    ( read line; echo $line )

    Sistemski klici:

    fork(), waitpid()

  • Zagon v podlupini v ozadju

    ( echo {24..42} >fri.txt ) &

    Sistemski klici:

    fork()

Sistemski klici za brisanje datoteke

unlink()

Razlika med ravrščevalnikom in dodeljevalnikom. V katero komponento OS sodita?

  • razvrščevalnik izbere enega od pripravljenih procesv
  • dodeljevalnik izbranemu procesu v resnici dodeli procesor, izvede menjavo okolja.

Spadata v komponento za upravljanje s procesi

Naštej 3 vrste zgradbe OS (jedra)

  • enostavna zgradba - neurejenost, napake, veliko kode v enem kosu

  • večplastna - vsaka plast odvisna od spodnje, veliko režije za prenos med plastni -> neučinkovitost

  • mikrojedro - majhno, prenosljivo, razširljivo, osnovne funkcije, če del odpove ostalo še funkcionira

Kaj so signali v Linuxu in zakaj se uporabljajo? Naštej 4 signale, ki se jih ne da ignorirati.

Signal je kratko sporočilo procesu oz. programska prekinitev procesa. Jedro uporablja signale za sporočanje izjemnih dogodkov izvajajočemu procesu: division by zero, invalid opcode, alarm, child termination. Vsak signal ima svoj rokovalnik in ga lahko spreminjamo. Nastavljanje rokovalnikov:

  • Otroci dedujejo rokovalnike starša. fork()

  • Nov program dobi privzete rokovalnike. exec()

  • Nastavljanje uporabniškega rokovalnika. signal(signum, sighnadler)

Signal pošljemo z ukazom kill(pid, SIG___)

  1. Programske napake (Privzeti odziv je končanje in zapis core datoteke)

    • SIGFPE – aritmetična napaka;
    • SIGILL – napačen strojni ukaz;
    • SIGSEGV – kršenje pomnilniške zaščite;
    • SIGBUS – napačen pomnilniški naslov;
    • SIGABRT – resna napaka oz. kilc abort();
  2. Ukinjanje procesa (Privzeti odziv je končanje procesa)

    • SIGTERM – generična ukinitev procesa;
    • SIGINT – prekinitev procesa s Ctrl+C;
    • SIGQUIT – prekinitev procesa s Ctrl+, core dump;
    • SIGKILL – brezpogojna ukinitev procesa;
    • SIGHUP – sporočilo o končanju pripadajočega terminala.
  3. Nadzor poslov

    • SIGCHLD – sporočilo staršu o končanju otroka;
    • SIGCONT – nadaljevanje zaustavljenga procesa;
    • SIGSTOP – brezpogojna zaustavitev procesa;
    • SIGTSTP – zaustavitev procesa s Ctrl+Z;
    • SIGTTIN – posel (proces v ozadju) je bral s terminala;
  4. Medprocesna komunikacija (Signala namenjena za splošno komunikacijo, Privzeti odziv je končanje procesa)

    • SIGUSR1 – prvi uporabniški signal;
    • SIGUSR2 – drugi uporabniški signal.

SIGILL, SIGABRT, SIGBUS, SIGFPE

Napiši ukaz za:

dodajanje uporabnika useradd

izpiše cilj simbolične povezave readlink [ime_povezave]

sredi cevovoda hkrati pišemo v datoteko in naprej po cevovodu tee

spremenljivka (znak) ki kaže na uporabniški direktorij (domaci imenik)

~ ali $HOME

kaj vrne true || true && false || return 42

vrne 42

2012

Stanje procesa v CPU

  • nov
  • pripravljen
  • teče
  • čaka
  • končan

Pojasni signale v UNIX. Razlogi zakaj so lahko nezanesljivi?

  • S signalom pošiljatelj zahteva programsko prekinitev prejemnika.
  • Signal je programska prekinitev s strani sistema, drugega programa ali sebe.
  • Signal je kratko sporočilo namenjeno procesu.

Signal je možno poslati, prestreči, prezreti ali obravnavati. Nosijo malo informacije - predvsem za javljanje nenavadnih okoliščin ali napak. Signali so lahko nezanesljivi, ker se lahko v izjemnih okoliščinah obnašajo drugače ko je predvideno.

Rezidentni monitor?

Uporabljal se je za avtomatizacijo poslov. Ob koncu vsakega posla prevzame nadzor in kliče naslednjega. Ob zagonu se sam naloži v pomnilnik in ostane tam celi čas. Bil je prvi preprost OS.

✔️ izkoriščenost sistema zaradi avtomatskega nadaljevanja

➖ še vedno ni bil interaktiven med uporabnikom in tekočim programom.

Prekrivanje operacij?

Procesor je veliko hitrejši kot pa V/I in je bila zelo slaba izkoriščenost CPE pri branju/pisanju V/I.

Ločen V/I pojavili so se magnetni trakovi

✔️ izkoriščenost procesorja, saj so tudi hkrati potekale V/I in računske operacije

➖ še vedno ni bil interaktiven med uporabnikom in tekočim programom.

Spooling pojavili so se magnetni diski (neposreden dostop) Trdi disk se je uporabil kot velik vmesnik za začasno hranjenje V/I podatkov

✔️ Še boljša izkoriščenost procesorja zaradi prekrivanja

➖ CPE je težko dobro izkoristiti. ni interakcije

Multiprogramska paketna obdelava?

  1. V pomnilniku je OS ter nekaj pripravljenih poslov

  2. OS enega od njih izbere in ga požene

  3. Če se tekoči posel zaustavi (bodisi ker se je končal, ali pa nekaj čaka) prevzame nadzor zopet OS, ki izbere kak drug pripravljen posel in ga požene

✔️ še boljša izkoriščenost CPE in drugih virov (pomnilnik, V/I) zaradi preklaplanja.

➖ ni interakcije med uporabnikom in tekočim poslom. Poslednica je premajhna storilnost programerja.

Razloži semafor?

Orodje za časovno usklajevanje procesov (reševanje problema kritičnih odsekov). Celoštevilčna spremenljivka S.

Vrste semaforjev:

  • Krožni semafor

     wait(S): while S ≤ 0 do no_op;
     S := S-1; 
    

    atomarni obe operaciji! (Izvede se vse brez prekinjanja)

     signal(S): S:=S+1
    

    atomarna

    ✔️ enostavno

    wait trati procesorski čas. (se vrti v zanki)! izkoriščenost procesorja je slaba (koristen čas / porablenj čas < 50%)

  • Posplošeni semafor

    Izboljšava:

    če ukaz wait(S) ugotovi, da je S≤0, potem naj ne kroži (v zanki while), temveč raje blokira proces P ( -> sprosti procesor). P se postavi v vrsto čakajočih (na semafor S). Ta proces P bo obudil nek drug proces Q, ki bo izvršil ukaz signal(S).

     wait: nekoga da spat
     signal: nekoga obudi
    

    ✔️ špara procesorski čas

➖ Neprevidna raba semaforja lahko vodi do mrtvih zank (procesi čakajo en na drugega)

Razloži spooling? Kakšne prednosti nudi?

Spooiling je branje v naprej - s tem omogočimo da je na disku več pripravljenih poslov hkrati. Omogoča, da se disk uporabi kot velik vmesnik za začasno hranjenje V/I podatkov. S tem omogočimo prekrivanje branja V/I in računske operacije. Boljša izkoriščenost CPE.

Razloži kritične odseke. Katere kriterije bi morali upoševati za splošno rešitev problema kritičnega dela.

Kritični odsek je del procesa ki dostopa do skupnega prostora (v primeru proizvajalec-porabnik je to register kjer oba spreminjata števec - eden povečuje, drugi zmanjšuje -> dobimo napačen rezultat).

Potrebno je zagotoviti sočasno izvajanje procesov da bodo pri tem izpolnjene naslednje kriterije:

  1. Vzajemno izključevanje procesov:

    sočasno se lahko izvaja kvečjemu en kritični odsek Denimo da proces P1 vstopi v svoj kritični odsek. Če med izvajanjem odseka pride do prekinitve, P1 sicer lahko izgubi procesor in ne dokonča svojega kritičnega odseka. Proces P2, ki je prevzel procesor, pa sme teči le po svoji 'običajni' kodi, preprečiti pa mu moramo, da bi vstopil v kak svoj kritični odsek, vse dokler P1 ne dokonča svojega (ko kasneje zopet pridobi procesor)

  2. Omejeno čakanje na vstop:

    procesu se ne sme neomejeno dolgo preprečevati vstopa v k.o. Zanimajo nas le rešitve, ki procesu dajejo realna zagotovila, da bo omejeno dolgo čakal na vstop v kr.odsek

  3. Omejen vpliv na izbor:

    na to, kdo bo naslednji vstopil v kr. odsek, vplivajo le kandidati za vstop. Procesi, ki ne kandidirajo za vstop v svoj kritični odsek, ne vplivajo na izbor tistega, ki bo vstopil naslednji.

  4. Splošnost rešitve:

    rešitev naj bo neodvisna od števila procesov in hitrosti posameznih komponent

Trije načini kako se rešuje problem kritičnih odsekov:

  • algoritmi (vstopni in izstopni del časovno potratna),

  • posebni ukazi (Test and Set, Swap)

  • uporaba posebnih sinhronskih orodij (semaforji, monitorji)

Razlike med vtičnicami in cevmi?

  • Cevi: enosmerni kanal (za komunikacijo sta potrebni dve). lahko obstaja le med dvema procesoma v sorodstvu (npr. oče-sin)

  • Vtičnica: dvosmerni kanal. relacija ni potrebna.

Vtičnice

Programski vmesnik za komunikacijo med procesi na istem ali različnih računalniku. P in Q morata ustvariti vsak svojo vtičnico z istim naslovom. Komunicirata s sistemskimi klici (send, recv, read, write, ...)

Razloži razvrščanje - prekinjeno in neprekinjeno?

tri vrste razvrščanja:

  • na procesorju (kratkoročno - teče, pripravljen)
  • razvrščanje poslov (dolgoročno - nov)
  • menjavanje (srednjeročno - pripravljen)
  1. razvrščanje na procesorju

    • preklop

      Na enoprocesorskem sistemu v nekem trenutku teče kvečjemu en proces. Ostali procesi bodisi čakajo (na nek dogodek) ali pa so pripravljeni (čakajo na CPE). Med pripravljenimi se slednjič enega izbere in sedaj se njemu dodeli CPE. Pravimo, da je procesor zamenjal okolje svojega delovanja. Tak preklop imenujemo tudi menjava okolja

    • preklopni čas

      Menjavanje okolja je za uporabnike čista režija, izguba časa, saj CPE med menjavanjem okolja zanje ne počne nič neposredno koristnega. Če je preklapljanje procesov pogosto, je važno, da je preklopni čas kratek!

      Na preklopni čas vplivajo:

      • Hitrost pomnilnika (kjer je shranjen PCB)
      • Število registov procesorja (ki se morajo shraniti v PCB oz. obnoviti iz njega)
      • (ne)obstoj ukazov za shranitev/obnovo vseh registrov naenkrat
      • Zgradba procesorja (npr.obstoj skupine registrov. Če je vsaka skupina dodeljena svojemu procesu, preklop povzroči le preusmeritev kazalca z ene skupine na drugo.
      • Zapletenost komponent OS
    • s/brez preklapljanja ali brez/z odvzemanjem

      Ločimo dva pristopa:

      • Razvrščanje povzročita le 1 in 4.

        Proces bo torej izgubil CPE le, če je bil onemogočen ali pa se je končal. V nasprotnem pa bo tekel nemoteno. Zato to imenujemo razvrščanje brez prekinjanja

      • Poleg 1 in 4 razvrščanje sproži še vsaj ena od 2,3,5.

        Za odvzem sedaj zadošča tudi iztek dodeljenega časa ali pa sprememba v vrsti pripravljenih procesov. V tem primeru proces lahko izgubi CPE, četudi bi še lahko tekel. Torej je lahko res prekinjen. To je razvrščanje s prekinjanjem

    Algoritmi za razvrščanje:

    • prvi pride prvi melje
    • krožno razvrščanje
    • razvrščanje po prioriteti
    • najkrajši nemoten čas
    • najkrajši nemoten tek + prekinjanje
  2. razvrščanje poslov

    Pri paketni obdelavi je lahko na vhodu veliko več poslov, kot se jih lahko hkrati obdela. Zato se 'odvečni' posli preusmerijo (spool) na disk, kjer počakajo na kasnejšo obdelavo.

    Razvrščevalnik poslov izbere enega od poslov na disku, ki se bo naslednji obdelal

    Procesi so v grobem dveh vrst: procesorsko zahtevni (CPU-bound) in V/I procesi (V/I bound). Če je preveč procesorsko zahtevnih, so V/I naprave slabo izkoriščene, če pa je preveč V/I zahtevnih, pa je slabo izkoriščen procesor.

    Razvrščanje poslov naj skrbi za uravnoteženo obremenitev sistema.

  3. menjavanje

    Včasih je koristno začasno odstraniti nek program iz gl.pomnilnika in iz tekme za vire. To stori srednjeročni razvrščevalnik, ki izbere enega od pripravljenih procesov in ga v celoti prenese na disk. Namesto njega lahko z diska prenese v igro kak drug proces; izgnani proces kasneje zopet vrne v pomnilnik, da nadaljuje, kjer je ostal.

    ✔️ OS lahko vzdržuje uravnoteženo obremenitev sistema (OS po določenem času za vsak proces lahko ve, ali je ta bolj procesorsko zahteven, ali pa bolj V/I zahteven), OS lahko zadosti posebnim potrebam drugih procesov po virih.

Sistem za dodeljevanje časa - večopravilni OS?

Multiprogramiranje + časovno dodeljevanje

  1. Hkrati dela več uporabnikov, vsak s svojim poslom, toda vsak posel se sme neprekinjeno izvajati omejen čas

  2. OS izbere posel, mu dodeli čas za izvajanje in ga požene

  3. Če mine dodeljeni čas, ali pa se posel ustavi (končal, čaka na človeka) prevzame nadzor OS, ki izbere drug posel, mu dodeli čas, in ga požene.

Ob ustreznem času ter izbiranju poslov se s preklapljanjem procesor dovolj pogosto vrne k vsakemu poslu, tako da njegov lastnik ne opazi, da je procesor medtem opravljal tuje naloge, uporabnik ima občutek, da računalnik dela le zanj.

✔️ več uporabnikov interaktivno uporablja računalnik, pri čemer je tudi procesor dobro izkoriščen!

krmilnik

Nadzoruje ustrezno napravo ali več naprav. Krmilnik in CPE delujejo sočasno, pri dostopu do skupnega pomnilnika tekmujejo

Bootstrap

Majhen enostaven program ki inicializira OS (registre CPE, pomnilnik, krmilnike). Naloži jedro OS v pomnilnik in mu nato preda nadzor.

Strojna prekinitev

Če jo zahteva/sproži strojna oprema:

Npr. naprava pošlje po vodilu prekinitveno zahtevo in z njo prekine tekoče delo na CPE, konec V/I operacije, neveljaven poseg v pomnilnik

Programska prekitive

Sistemski klic, s katerim tekoč program zahteva pomoč OS.

Pooling - programsko izpraševanje?

Ko se pojavi prekinitev CPE prekine delo, zažene PSP ki ugotovi katera naprav je zahtevala prekinitev (izpraševanje). Nato zažene ustrezen PSP program za prekinitev. Po končanem PSP CPE nadaljuje z delom.

Vektorsko prekinjanje

Naprava zahteva prekinitev. V CPE pošlje tudi index i, s pomočjo katerega CPE v prekinitvenem vektorju (tabeli v pomnilniku) poišče ustrezen PSP in ga zažene.

Sinhroni V/I

Proces ki je zahteval V/I operacijo, čaka da se ta konča. Čaka lahko na več načinov: izvede zanko, ukaz wait, ali pa sam spremlja status v regirstu.

Asinhroni V/I

Proces ki je zahteval V/I operacijo, nadaljuje izvajanje. Če ne more nadaljevati dela, ker čaka na podatke, sam sebe blokira. Je primeren za počasnejše naprave.

DMA krmilnik

Prenos med pomnilnikom in V/I napravo brez posredovanja CPE.

Sistemski klici? Zakaj so potrebni?

Z njegovo pomočjo programer zaprosi OS, da v njegovem imenu izvede priviligiran ukaz. Sistemski klic je programska prekinitev. Potrebni so ker le OS pozna stanje sistema in vsak sistemski klic je možno poganjati v določenih okoliščinah.

  • stat branje atributov datoteke
  • chown nastavljanje lastnika
  • chmod nastavljanje dovoljenj
  • access preverjanje dovoljenj
  • link ustvarjanje trde povezave
  • unlink brisanje datotek
  • rename preimenovanje datotek
  • symlink, readlink simbolične povezave
  • getcwd trenutni delovni imenik
  • mkdir, rmdir ustvarjanje in brisanje imenika
  • opendir, readdir, closedir branje imenika

Niti

Tok izvajanja programa od danega trenutka. Zaporedje ukazov programa, ki so se izvedli od danega trenutka. Sled izvajanja programa do danega trenutka.

Podobnosti in razlike med nitmi in procesi?

Podobnosti: tudi nit je lahko v stanjih (nova, prekinjena, teče, čaka, končana), ustvari hčere ter jih konča in uniči.

Razlike: komunikacija med istorodnimi nitmi je hitrejša kot med procesi, istorodne niti niso zaščitene ena pred drugo tako kot procesi. Ustvarjanje / ubijanje niti je hitrejše kot pri procesih.

2011

cev (nanonimna)

Cev je enosmerni komunikacijski kanal med dvema procesoma. V lupini ga ustvarimo z ukazom P|Q, v programu pa s sist. klicem pipe. Standardni izhod P stakne s št.vhodom Q. Vse kar P izpisuje, gre (avtomatično in za uporabnika nevidno) na vhod procesa Q.

➖ le med procesi, ki imajo skupnega prednika (oče-sin). obstajajo le dokler živita oba procesa

Naloge krmilnika pri trdem disku

  1. CPE vpiše podatke v registre krmilnika (ukaz, parametri,...)

    ♥ Za branje z diska:

    • naslov sektorja, ki naj se bere
    • ukaz 'beri'

    ♥ za izpis na disk krmilnik:

    • podatki za izpis
    • kam naj se izpišejo
    • ukaz 'izpiši'
  2. krmilnik razpozna, kaj zahteva ta V/I operacija in jo prične izvajati

    ♥ branje:

    • krmilnik poskrbi za pomik glave
    • prepoznavanje začetka zahtevanega sektorja
    • sestavljanje bitov v besede
    • kontrola pravilnosti prebranega
    • prenašanje v vmesni pomnilnik krmilnika

    ♥ izpis: podono pri izpisu na disk

  3. ko je V/I operacija končana, kmilnik pošlje CPE prekinitveno zahtevo (obvestilo, da je končal)

Multiprogramiranje


omogoča sočasen obstoj več procesov, tj. programov v izvajanju. Seveda ti procesi tekmujejo za skupne vire (CPE,pomnilnik, V/I naprave,...) zato obstaja nevarnost, da si pri tem škodijo (ne le da se ovirajo)

2014

1. in 3. naloga s semaforji.

Naštej prednosti mikrojedernih OS?

Jedro ohrani le bistvene komponente (npr. osnovno upravljanje s procesi in pomnilnikom, podpora komunikaciji s sporočili). Vse ostale naloge gredo med sist. ali celo upor. programe. Rezultat je majhno jedro, njegova glavna naloga je posredovanje sporočil med programom- odjemalcem in sist.servisi (tudi ti tečejo v uporabniškem prostoru). Program-odjemalec namreč ne more neposredno do servisov, pač pa le s pošiljanjem sporočil (preko jedra) tem servisom.

✔️ Jedro je majhno, razširljivo, obvladljivo, prenosljivo. Celoten sistem pa enostavno razširljiv, zanesljiv, varen. Npr. če eden od servisov 'izpade', to ne prizadene celotnega sistema.

Katere funkcije OS opravlja mikrojedro?

  • upravljanje s procesi
  • upravljanje s pomnilnikom
  • podpora komunikaciji s sporočili

Vrste datotečnih sistemov

  • Diskovni

    • ext2, ext3, ext4 (Linux),
    • ufs (BSD)
    • hfs (Mac)
    • msdos (Dos)
    • vfat (Win 95)
    • ntfs (Win NT)
  • Mrežni

    • nfs (Network)
    • AFS (Andrew)
    • smbfs (Samba)
    • Coda
  • Posebni:

    • proc (/proc/)
    • sysfs (/sys/)
    • umsdos (Unix in DOS)
    • userfs
    • udev (/dev/)
    • FUSE (fs in userspace)

V katerem direktoriju se na Linuxu nahajajo datoteke, ki predstavljajo bločne naprave?

/dev/

Zanimivejši imeniki

  • /boot/ Datoteke, potrebne za zagon sistema. Vsebuje enega ali več jeder.
  • /bin/ Izvršljive datoteke sistemskih programov: ls, cat, cp, mv, rm
  • /sbin/ Izvršljive datoteke sistemskih programov za administracijo: useradd, usermod, grupdel
  • /lib/ Deljene knjižnice (shared libraries, *.so).
  • /etc/ Nastavitvene datoteke programov.
  • /var/ Datoteke s spremenljivo dolžino (logi)
  • /tmp/ Začasne datoteke
  • /media/ Montiranje CDROM in podobnih naprav.
  • /mnt/ Začasno montiranje datotečnih sistemov.
  • /dev/ Bločne in znakovne naprave.
  • /proc/ Informacije o procesih.
  • /root/ Domači imenik sistemskega adinistratorja.
  • /home/ Vsebuje domače imenike uporabnikov sistema.
  • /usr/ Namenjen za uporabniške programe.
  • /opt/ Opcijska programska oprema, npr. openoffice, firefox

Kakšne vrednosti lahko vrne funkcija v bashu-u?

z return lahko vrnes 8 bitno vrednost (podobno kot exit, sam da za funkcijo) lahko pa vrnes kako drugo vrednost z echo pa pol prestrezes vrednost

Napiši pot do datoteke, kjer so shranjena uporabniška gesla?

/etc/shadow

Znak trenutnega direktorija

.

Zapiši ukaz, s katerim preusmerimo datotečni deskriptor 42 na standardni izhod za napake.

/dev/fd/42 > &2

Zakaj je pomemben setuid?

setuid - set user ID upon execution Če je setuid bit nastavljen nad datoteko, user ki zažene executable datoteko dobi pravice za čas izvajanja

2016

Kaj stori ukaz Test_and_Set(x)? Kaj stori ukaz Swap(x,y)? Kaj morata zagotoviti njuni implementaciji?

To sta ukaza za reševanje problema kritičnih odsekov z uporabo posebnih ukazov. Njuna naloga je sestavljanje vstopnega in izstopnega dela za kritični odsek.

Test and Set

Test_and_Set(x) {
	Test_and_Set = x;
	x = true;
}

Podani spremenljivki (po referenci) nastavi vrednost true, hkrati pa vrne prvotno vrednost spremenljivke.

Pomembno je da je funkcija implementirana tako da se izvede atomarno (v celoti brez preklopa). V času izvajanja funkcije so vse prekinitve onemogočene, samo tako lahko garantiramo da se bo izvedla v celoti.

Pi :
	repeat
	 while Test&Set (Nekdo_v_krit_ods) do no_op;

		// kritični odsek

		Nekdo_v_krit_ods := false;
	until

Swap

Swap(a,b) {
	t = a;
	a = b;
	b = t;
}

Podanima spremenljivkama med seboj zamenja vrednosti.

Pomembno je da je funkcija implementirana tako da se izvede atomarno (v celoti brez preklopa). V času izvajanja funkcije so vse prekinitve onemogočene, samo tako lahko garantiramo da se bo izvedla v celoti.

Pi :
	počakaj := true;
 	repeat
		Swap(Nekdo_v_krit_ods, počakaj)
	until počakaj = false; 

	//kritični odsek
	
	nekdo_v_kri_ods := false;

Kaj se tipično hrani v direktoriju /var/?

Datoteke spremenljive dolžine. Vsebuje podatke kot so sistemski logi, mail in printer spool datoteke, temporary datoteke

Katere navidezne naprave omogočajo montiranje datotek, ki hranijo datotečne sisteme?

loop devices. Navidezna naprava, ki omogoča montiranje navadne datoteke kot bločne naprave.

Kateri objekti navideznega datotečnega sistema hranijo imena datotek?

Dentry

  • Superblock

    Predstavitev montiranega datotečnega sistema:

    • naprava na kateri se nahaja DS, tip DS
    • velikost bloka, zastavice (read-only, dirty)
    • kazalec na korenski imenik,
    • nizko nivojske operacije nad DS in inode-i.
  • Inode (index node)

    Datoteka (poljubnega tipa) v datotečnem sistemu:

    • vse razen imena datoteke in njene vsebine,
    • št. inode-a, število trdih linkov, velikost datoteke,
    • lastnik, skupina, dovoljenja,
    • datum in čas dostopa/spremembe vsebine/spremembe metapodatkov,
    • Operacije: create(), lookup(), link(), unlink(), symlink(), readlink(), mkdir(), rmdir(), mknod(), rename(), llseek(), read(), write(), open(), flush(), lock()
  • Dentry (directory entry):

    Imenski vnos, preslikava med imeni in inode-i:

    • ime datoteke, kazalec na inode-a, ki predstavlja datoteko
    • kazalec na starševski imenik, števec uporabe,
  • File

    Odprta datoteka s strani procesa

    • dentry objekt, datotečni sistem, števec uporabe
    • uid, gid, pozicija v datoteki

V kateri datoteki se hranijo nastavitve za montiranje korenskega datotečnegha sistema?

Nastavitve za montiranje korenskega datotečnega sistema / so v /etc/fstab

Kdaj ne moremo narediti trde povezave na neko datoteko?

Takrat ko je datoteka montirana na drugem datotečnem sistemu. Kadar gre za datoteko s posebnim načinom dostopa (bločne, znakovne napreve, cevi) - do teh je mogoče ustvariti le simbolično povezavo.

Kaj se zgodi z datoteko če brišemo trdo povezavo na to datoteko in kaj se zgodi če brišemo simbolično povezavo na to datoteko?

Če zbrišemo trdo povezavo zbrišemo tudi podatke. Če zbrišemo simbolično povezavo podatkov ne zbrišemo

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment