2013
-
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
- P zaprosi naj OS poišče pomnilnik ustrezne velikost
shmget
- OS najde prostor, P-ju vrne indentifikator prostora
S
- vsak proces (P in npr. Q), ki želi uporabljati skupni prostor si ga mora najprej priključiti v svoj naslovni prostor shmat`
- 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).
- P zaprosi naj OS poišče pomnilnik ustrezne velikost
Večopravilnost je multiprogramiranje s časovnim dodeljevanjem (uporablja časovne rezine za dodeljevanje CPE-ja procesom).
- upravljanje procesov
- upravljanje glavnega pomnilnika
- upravljanje datotek
- upravljanje V/I sistema
- upravljanje zunanjega pomnilnika
- delo v omrežju
- zaščita
- interpretacija uporabnikovih ukazov
- varnost
- 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.
- izvrsevanje programov,
- v/i operacije,
- delo z datotecnim sistemom,
- komuniciranje med procesi,
- detekcija in odprava napak,
- rezervacija virov,
- evidenca uporabnikov,
- zascita podatkov in procesov.
- 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
-
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()
unlink()
- razvrščevalnik izbere enega od pripravljenih procesv
- dodeljevalnik izbranemu procesu v resnici dodeli procesor, izvede menjavo okolja.
Spadata v komponento za upravljanje s procesi
-
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
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___)
-
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();
-
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.
-
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;
-
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
dodajanje uporabnika
useradd
izpiše cilj simbolične povezave
readlink [ime_povezave]
sredi cevovoda hkrati pišemo v datoteko in naprej po cevovodu
tee
~ ali $HOME
vrne 42
2012
- nov
- pripravljen
- teče
- čaka
- končan
- 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.
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.
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
-
V pomnilniku je OS ter nekaj pripravljenih poslov
-
OS enega od njih izbere in ga požene
-
Č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.
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)
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:
-
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)
-
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
-
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.
-
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)
-
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.
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, ...)
tri vrste razvrščanja:
- na procesorju (kratkoročno - teče, pripravljen)
- razvrščanje poslov (dolgoročno - nov)
- menjavanje (srednjeročno - pripravljen)
-
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
-
-
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.
-
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.
Multiprogramiranje + časovno dodeljevanje
-
Hkrati dela več uporabnikov, vsak s svojim poslom, toda vsak posel se sme neprekinjeno izvajati omejen čas
-
OS izbere posel, mu dodeli čas za izvajanje in ga požene
-
Č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!
Nadzoruje ustrezno napravo ali več naprav. Krmilnik in CPE delujejo sočasno, pri dostopu do skupnega pomnilnika tekmujejo
Majhen enostaven program ki inicializira OS (registre CPE, pomnilnik, krmilnike). Naloži jedro OS v pomnilnik in mu nato preda nadzor.
Č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
Sistemski klic, s katerim tekoč program zahteva pomoč OS.
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.
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.
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.
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.
Prenos med pomnilnikom in V/I napravo brez posredovanja CPE.
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
Tok izvajanja programa od danega trenutka. Zaporedje ukazov programa, ki so se izvedli od danega trenutka. Sled izvajanja programa do danega trenutka.
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 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
-
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'
-
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
-
ko je V/I operacija končana, kmilnik pošlje CPE prekinitveno zahtevo (obvestilo, da je končal)
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
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.
- upravljanje s procesi
- upravljanje s pomnilnikom
- podpora komunikaciji s sporočili
-
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)
/dev/
- /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
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
/etc/shadow
.
/dev/fd/42 > &2
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;
Datoteke spremenljive dolžine. Vsebuje podatke kot so sistemski logi, mail in printer spool datoteke, temporary datoteke
loop devices. Navidezna naprava, ki omogoča montiranje navadne datoteke kot bločne naprave.
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
Nastavitve za montiranje korenskega datotečnega sistema / so v /etc/fstab
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