Sei sulla pagina 1di 78

Hovcntoxqtokc

Hoooct

Ep,oozqpio Aeizoop,iuov
2oozquzov

Ko0. H. Ttovxoov

2003







Mco 1
o



Hooootok Actxovytk
Lvoxqoxo


Kcoto 1. Etooyeyq oc Actxovytk
Lvoxqoxo
1.1 Ieviu
Luotqutu Yaooiotev: CPUs, RAM, Aiokoi, Tcputiku, poo,... (Auto civui to
hardware).
Xepi to oioiko, uutoi oi aopoi civui ocoov upqoioaoiqtoi.
Luotqutu Aoioikou: SW Lvoxqoxo (A.L., Compilers, Editors) kui Eupoc. To
system s/w uaotcci tq uoq auve otqv oaoiu otqpiovtui oi cupoc.
Hoctyo:
Miu cupoq pqoioaoici tov editor iu vu tiuci cvu upcio aou acpicci cvu
apopuu. Mctu pqoioaoici tov compiler iu vu oqioupq0ci to object code,
oquoq o keoiku aou aopci vu tpcci otq quvq. Otuv o keoiku tpcci, to A.L.
kucitui vu pqoioaoiqoci tou uaupuitqtou aopou iu vu apoocp0ouv oi
kutuqc uaqpcoic.
Hcqq Ekxccoq Hoyoxo
1. To apopuu oqioupcitui, ivctui compiled, aupuctui o object code o oaoio
uao0qkcuctui oc cvu upcio (otq ocutcpou0iu vqq).
2. Otuv to apopuu qtcitui vu tpcci, (cpo tou) apcaci vu uao0qkcutci otq
kupiu vqq.
3. Ku0c cvtoq tou apopuuto otcvctui (optevctui) oto kcvtpiko
caccpuotq ui c tu ocoocvu (aou aopci vu uao0qkcutouv otou registers
tou CPU) kui cktccitui.
! uauitcitui oiucipioq kupiu vqq, ocutcpou0iu vqq, kui tou CPU. Tctoiou
cioou oiucipqoci uvuuuvci to A.L.
Lvncooo:
Aao tu aupuauve apokuatci oti to A.L. civui to kcvtpiko kouti oioikou cvo
ouotquto computer to oaoio oiucipictui tou uikou aopou tou.
Autq q 0cepqoq oe ocv upkci!
Hoctyo: I/O c okov

Ocepciotc cvu apopuu aou 0cci vu oqioupqoci cvu upcio c ocoocvu. Tu


upciu (Iiles) uao0qkcuovtui oc uvqtikou oiokou, oi oaoioi, cv oioi,
uaotcouvtui uao cvu qcktpoviko tqu (cvu controller - caccpuotq) kui cvu
uvqtiko tqu (caiuvcic oiokev auve oti oaoic puouv kcuc).
O caccpuotq occtui cvtoc iu vu puci (write) q vu uvuktqoci ocoocvu (read)
oc (uao) oukckpicvc oicu0uvoci, vu ctukivqoci ti kcuc oc kuivoupic
oicu0uvoci, k.a. H caikoiveviu c tov controller uauitci to puio cioikev cvtoev
ku0e kui to puio tev aupuctpev oc oukckpicvc oicu0uvoci otq RAM. H
ooq kui q opq uutev tev cvtoev oiucpci uao controller oc controller. Eaiacov,
otuv o controller ckaqpeoci iu cvtoq caiotpcci cioikou keoikc oc cioikq opq oi
oaoioi apcaci vu uvuu0ouv iu vu cauq0cu0ci oti ou aquv kuu, k.a. Autoi oi
keoikc caikoiveviu civui aouaokoi, kui tu apopuutu caikoiveviu c tctoic
ouokcuc acpicpciu civui caioq aouaoku (kui cuu)!
To A.L. uvuuuvci vu uauuci tov apopuutiotq uao oc uutc ti ouokoic,
caitpcaovtu tou vu uooq0ci c ti ouokoic tou apopuuto aou puci.
Aao uutq tq ocutcpq 0cepqoq, apokuatci oti to A.L. cvcpci ouv iu quvq uuipcoq
(abstraction machine) q oaoiu uuipci oc ti catocpcic aou ku0iotouv tqv pqoq
tev aopev cvo uaooiotq aouaokq.
Ao, xo A.L. nocct o ootkc oqqcvc cvvotc:
1. Aicpuoic (Processes)
2. Apciu (Files)
Mc tqv cvvoiu tq oicpuoiu uooouvtui ckcivc oi oiuoikuoic tou A.L. aou
kuouvtui vu oiucipiotouv tov CPU, RAM, Aiokou, Tcputiku, k.a. Autq q
oiucipioq cotiuci otqv ioq kutuvoq tev uikev aopev tou uaooiotq oc ou tu
apopuutu aou tpcouv oc iu ocoocvq otiq.
Mc tqv cvvoiu tou upciou uooouvtui oi oiuoikuoic tou A.L. aou aupcouv tqv
ouvutotqtu oqioupiu q-apooepivev ocoocvev (aou uao0qkcuovtui otq
ocutcpou0iu vqq). Autc oi oiuoikuoic uooouvtui caioq kui c tqv caikoiveviu
c ti acpicpciukc ouokcuc.
1.2 O nopqvo zoo A.2. (Kernel)
O Kernel tou A.L. uvucpctui oto kupio tqu tou A.L. to oaoio uoaoici ti ouo
uoikc ovtotqtc (processes kui Iiles) tou A.L. Auto o keoiku civui apootutcucvo,
c tqv cvvoiu oti ocv uvqkci oc kuvcvu pqotq (user process). Aiuopctiku, o ku0c
pqotq 0u aopouoc vu uuci uuto tov keoiku kui ctoi vu ovoaeqoci tou aopou
tou ouotquto, CPU, RAM, oiokoi, tcputiku, k.a.
Autq q apootuoiu caituuvctui pqoioaoievtu ouo tpoaou citoupiu: user mode
kui kernel mode. To ouotqu piokctui uao apootuoiu otuv piokctui oc kernel mode.


Aquoq, cioikc cvtoc aou oiucipiovtui tou aopou tou ouotquto aopouv vu
cktcco0ouv ovo otuv to ouotqu citoupci oc kernel mode.
To A.L. civui to ovo system s/w to oaoio cktccitc oc kernel mode.
System Calls.
Iiu vu aopcoci cvu user process vu pqoioaoiqoci tou aopou apcaci vu kucoci ti
kutuqc poutivc tou kernel. Auto caituuvctui coe system calls. Etoi, uaupouv
system calls oae Iork(), exec(), malloc(), read(), printI() tu oaoiu uopouv otq
oqioupiu cvo process, stqv cktccoq uao kuaoio process cvo apopuuto, otqv
aupoq vqq, otqv uvuktqoq tquto upciou, otqv cktuaeoq otqv o0ovq, k.a. To
ku0c system call uoaoicitui coe iu poutivu q oaoiu piokctui oc iu iio0qkq
aou ivctui linked c to keoiku tq user process. Oc oi poutivc uutq tq
iio0qkq cktcouv iu cioikq cvtoq, aou ovouctui RAP. H cvtoq RAP civui uutq
q oaoiu uuci to ouotqu uao user mode oc kernel mode, uuovtu cvu bit oc cvu
CPU register to oaoio kutuocikvuci tov tpoao citoupiu tou ouotquto.
Eaiacov, q poutivu aou kuci RAP civui uacu0qvq vu toao0ctqoci ti aupuctpou tou
system call oc iu apoouevqcvq oicu0uvoq, (ouvq0e, CPU registers q ukou kui
oto stack) oaou o kernel 0u ti pci.
Otuv o kernel tccieoci, totc toao0ctci caiotpcocvc aqpoopic oc registers kui
cktcci cvu REUR FROM RAP cvcpoaoievtu aui tq poutivu tq iio0qkq. Autq q
poutivu, caiotpcci tqv aqpoopiu uao tou registers otq user process.
1.3 Booiu Ovzzqze
Oi uoikc ovtotqtc civui: Processes kui Files.
Atcyooc (Processes).
ku0c oicpuoiu uvtiapooeacuci cvu cktcoucvo apopuu. Mc uutq tqv cvvoiu to
A.L. apooau0ci vu opuveoci tqv citoupiu tou c uoq to ti cci kuvci kui to ti
apcaci vu kuvci iu to ku0c process. Oi uoikc aqpoopic aou uopouv iu oicpuoiu
civui: to object code, tu ocoocvu tou apopuuto, to stack, to program counter, to
stack pointer, kui oi tic tev uev uoikev registers. O kernel kputuci uutc ti
aqpoopic oc kutuqc ooc.
Miu uao uutc ti ooc cctui process table. Lc uutov tov aivuku, uaupci iu
cpuq iu ku0c process.
Oi oicpuoic aopouv vu couv kui iu icpupikq ocq (autcpu, auioi, apoovo,
k.a.). H ocoq uutq oqioupcitui coe tou system call Iork().


Tuaiku system calls uopouv tqv oqioupiu kui tcputioo oicpuoiev (Iork() kui
kill()). Eaioq, uaupouv kui tu wait(), malloc(), exec(), ka.
Tco, ouvu pciuctui vu koivoaoiqoci o kernel oc cvu process aqpoopiu. Auto
caituuvctui c tqv pqoq tev signals. Iiu aupuociu, otuv iu oicpuoiu oiuipci oiu
tou , totc cvu signal otcvctui c uutq tq aqpoopiu.
Aco (Files).
H ocutcpq uoikq ovtotqtu civui tu upciu. Luvocovtui c system calls aou
oqioupouv, oiupuouv, oiuuouv, cvqcpevouv, (create(), rm(), read(), write()),
k.a. upciu. Luvq0e, cvu upcio apcaci apetu vu uvoi0ci (open()) apiv oiuuo0ci q
cvqcpe0ci kui ctu vu kcio0ci (close()).
Tu upciu civui opuvecvu oc ouoc aou ovouovtui directories. Evu directory
aopci vu acpicci cvu uo directory, kui ctoi oqioupcitui cvu icpupiko Iile system.
Mc ku0c upcio ouvocctui caioq kui iu iotu ccou apoouoq (access control list)
q oaoiu ku0opici aoio aopci vu cci apoouoq oto upcio. Otuv kuaoio caicipci vu
uvoici cvu upcio, cctuctui q access control list kui uv ou civui cvtuci, totc to
ouotqu caiotpcci cvu capability aou ovouctui caioq Iile descriptor q Iile handle.
Oi cvtoc read(), write(), kui close() aou 0u ukoou0qoouv ocovtui ouv aupuctpo
uuto to descriptor kui ctoi uaocuctc q povoopu oiuoikuoiu cauvcctuoq tev
oikuieutev apoouoq tou pqotq iu ku0c system call oto upcio.
cpu uao tqv pqoioaoiqoq tev Iiles uao tou pqotc iu q-apooepivu ocoocvu,
tu Iiles apoocpouv kui cvu tpoao uqou-caiacoou apoouoq oc acpicpciukc
ouokcuc (a.. oiokou, tcputiku, k.a). Oi ouokcuc uutc aupouoiuovtui ouv cioiku
upciu (deice special Iiles). H oiuouvocoq (interIace) c tu deice special Iiles ivctui
c tov ioio tpoao oae kui c tu aupuoooiuku upciu. Etoi oqioupcitui cvu
abstraction iu uutc ti ouokcuc aou kpuci oc ti aouaokc catocpcic aou
uopouv otq pqoq tou.
Pipes.
Pipes civui cvu quvioo o oaoio octictui c Iiles kui c processes.
Xpqoioaoicitui eotc ouo oicpuoic vu uvtuuouv aqpoopic. O tpoao
uvtuuq aqpoopiev ivctui coe cvo Iile interIace. Aquoq, to pipe
aupouoiuctui ouv cvu cioiko upcio, to oaoio aopci vu uvoi0ci,
cvqcpe0ci/oiuuo0ci, kui vu kcio0ci. Miu oicpuoiu A1 iu vu otcici aqopoopic
oc iu uq A2, uvoici cvu pipe kui to cvqcpevci. H A2 caioq to uvoici kui to
oiuuci. Etoi caouc oti to Iile uaotcci cvu abstraction iu aou cioq /O: c
acpicpciukc ouokcuc (a.., oiokou, tcputiku) kui c oiu-oicpuotikq caikoiveviu
(interprocess communication).



1.4 Booiu Evvoie
Batching.
Miu cvvoiu aou uvuatu0qkc acpiaou oti upc tq ockuctiu tou . Aopu otqv
oqioupiu ouoev apopuutev ti oaoic cvu cipiotq optevc ui otov
uaooiotq tev qcpev. Auto qtuv iu ctieoq oc ocoq c to apoqoucvo tpoao
citoupiu, oaou o cipiotq optevc ku0c job (to apopuu tou pqotq, tov
compiler, ka) cepiotu, cvu-cvu - iu povoopu oiuoikuoiu.
Multiprogramming.
ou cioq apopuutev acpicouv upkcto /O (ovouovtui /O bound). Otuv
kuouv kuaoiu /O oiuoikuoiu (a.. apoouoq oc oioko) ocv pcuovtui tov kcvtpiko
caccpuotq. Av uaupci ovo cvu apopuu aou tpcci oto ouotqu, totc
oautucitui epi oo cvu oquvtiko aopo (CPU cycles). H cvvoiu tou
multiprogramming (aou uvuatu0qkc otu tcq tou ) caitpcaci tqv ouieoq aoev
apopuutev aou tpcouv. Otuv to cvu apopuu kuvci /O, totc to CPU oivctui
oc kuaoio uo apopuu aou to pciuctui, k.o.k. Etoi uuuvctui oquvtiku q
uaooooq tou ouotquto.
H upikq uoq aou oo0qkc cotiuc otq oqioupiu tqutev tq vqq, oaou oc ku0c
tqu uaqpc cvu oiuopctiko apopuu. Apotcpu uuto ctie0qkc, oae 0u oouc.
H tcvikq tou multiprogramming ouvouuotqkc caitue c tqv tcvikq tou spooling.
Mc uutq tq tcvikq, apopuutu oiuuovtuv kutcu0ciuv oto oioko tou ouotquto,
aupuqu c to tpcio tev apopuutev aou piokovtuv otq vqq tou
uaooiotq. Otuv kuaoio uauutu tu apopuutu tccievc, totc kuaoio uo
oiuuotuv uao tov oioko oto tqu tq vqq aou ccivc kcvo, kui upic vu tpcci.
To apoqu c tu aupuauve ckcitui oto cuo povo uaokpioq (uao tq otiq aou
o pqotq coivc to apopuu tou otov cipiotq, cpi vu aupci tu uaotccoutu). Etoi
apockuc q cvvoiu tou timesharing.
Timesharing.
pokcitui iu iu opq multiprogramming, oaou o ku0c pqotq cci otq oiu0coq tou
cvu tcputiko. uputqpq0qkc oti aooi pqotc ouvq0e okctovtououv ti caocvc
kivqoci tou kui ctoi ocv pcuovtuv tov CPU. o CPU oipuotuv otou pqotc
acpiooiku. Lc ku0c acpiooo cvu pqotq cic to CPU cpi vu tccieoci q acpiooo,
ckto kui uv acpicvc iu /O, q okctotuv.
Movxcvo Lvoxqoxo.
Autu tu ouotqutu ckctucuovtui kupie ti ouvutotqtc cvo oiktuou uaooiotev.
Yaupouv ouo uoikc cvvoic: network operating systems kui distributed operating
systems.



Network operating systems.
Lc uutu tu ouotqutu to A.L. oivci tqv ouvutotqtu caikoiveviu c uc quvc
ouvococcvc c to ioio oiktuo. Iiu aupuociu, oicpuoic oc cvu uaooiotq aopouv
vu qtqoouv upciu vu ctucp0ouv uao cvu uo uaooiotq. Akou aopouv vu
kuvouv remote login oc uou uaooiotc kui vu pqoioaoiqoouv tou aopou tou.
Distributed operating systems.
Tu kutuvcqcvu A.L. aupcouv caioq ti aupuauve ouvutotqtc. Au c tpoao
toovq. Aquoq, o pqotq ocv pciuctui vu vepici aoio upcio cci uao0qkcutci oc
aoio uaooiotq k.a. q cviku vu vepici tiaotu acpi kutuvoq. Etoi uivctui oti to
A.L. civui cvu kcvtpiko kui oi kutuvcqcvo A.L. O tpoao apoouoq oc oou tou
uikou kui oioikou aopou civui uvcuptqto tq kutuvoq.
1.5 Aouq zoo A.2.
To A.L. uaotccitui uao cvu upi0o poutivev (procedures). H 0ccieoq cpetqoq coe
civui uv uaupci kuiu ooq/opuveoq uutev tev poutivev, c uoq ti uaqpcoic
aou apoocpouv. Iiu aupuociu, oc oi poutivc aou octiovtui c tqv aupoq
apoouoq oc upciu aopouv vu uaotccoouv cvu module (citoupikq ovuou) tou
A.L. Lc uutq tq acpiateoq, q ovuou aupcci ovo cvu interIace otu uu modules tou
A.L. - oquoq, iu aupuociu, iu poutivu tou module oiucipioq vqq ocv
aopci vu kucoci ucou iu poutivu tou module ouotqu upciou, uu apcaci vu
pqoioaoiqoci to interIace aou aupcci to module.
Movot0tk A.L.
Lc uutu tu ouotqutu ocv uaupci kuiu ooq ooov uopu tqv opuveoq tev
poutivev tou A.L. Oaoiuoqaotc poutivu aopci vu kq0ci uao oaoiuoqaotc uq. Iiu
vu tiotci to object code tou A.L. ku0c poutivu ivctui compiled cepiotu kui ctu
linked oc cvu cvviuio executable image.
H oiuoikuoiu kqoq tev poutivev tou aupqvu tou A.L. aou apouvucpuc (coe
system calls aou uuouv tov tpoao citoupiu tou ouotquto uao user mode oc
kernel mode) iouci coe.
upuociutu ovoi0ikev ouotqutev civui to U (A kui ).
Mtko-Hvqvc.
Autq q apoocioq uoictui otq ioooiu o aupqvu tou A.L. vu civui ooo tov
ouvutov ikpotcpo. outivc oi oaoic aupuoooiuku piokovtuv oto kernel tepu
piokovtui ce uauutov. Mc uutq tq ioooiu, oqioupouvtui cepiotc
oicpuoic, uaotcoucvc uao oiku octiocvc poutivc. Oi oicpuoic uutc
tpcouv oc user mode kui aupcouv uaqpcoic (kui iuuto ovouovtui server


processes - cvnqcxqxc) oti oicpuoic tev pqotev, oi oaoic ovouovtui client
processes - ncxc.
Oi client processes caikoivevouv c ti serer processes coe poutivev aou uoaoiouv
cvu caikoiveviuko aukcto oioikou (interprocess communication - PC). O kernel ctoi
uoaoici ovo ti poutivc tou PC aukctou a.. sendmsg() kui recmsg() kui
apoocpci apoouoq oto uiko.
Lc uuto to ovtco (aou ovouctui client-serer model) tu aupuoooiuku system calls
uvtiku0iotouvtui uao ti PC poutivc.
Tu acovcktqutu uutq tq apoocioq uaoppcouv apetu uao to modular
programming. Ku0c uaqpcoiu tou A.L. uaoovevctui kui ctoi kutuvocitui kuutcpu.
Eaiacov, ocv uaupci cvu kui ovuoiko object code tou A.L., apuu aou ooqci oc
cuutcpq otontoxo (reliability). Etoi, uv uaupci oc kuaoiu poutivu cvu bug, totc
ovo o serer aou acpicci tqv poutivu 0u acoci kui oi oo to A.L. Eaioq, ctoi
apoocpctui tovcto koxovoq - distribution transparency. Aquoq, o Iile serer,
iu aupuociu, aopci vu ctukivq0ci oc uo L.E. aou ouvocctui c cvu oiktuo
uaooiotev, epi vu pciuotci vu uu0ci kuvcvu apopuu cacioq to interIace
aupucvci to ioio (otcic qvuu, uc qvuu, k.a).
pooctc, oti cooov citoupic tou A.L. aupcovtui tepu uao user-mode processes
oi pqotc aopouv vu puouv tou oikou tou serers, uv ocv civui ikuvoaoiqcvoi c
tou serers aou aupcci to A.L. Eaiacov, aupuauve tou cvo serer aopouv vu
ouievouv oto ouotqu. Iiu aupuociu, aopci vu apokuouv ouotqutu c ouo
oiuopctikou Iile serers.


Kcoto 2. Atcyooc (PROCESSES)
2.1 Eioo,o,q
Miu uao ti ouo kcvtpikc cvvoic kui abstractions cvo A.L. Aaotcci cvu ovxco yto
cvo nyoo nov ckxccxot
Oae ciauc, tu arocess cktcouvtui aupuqu: oq. oi ocipiuku. Yaupouv ouo
tpoaoi:
! Ooo iu acpicpciukq ouokcuq (a.. oioko) cktcci iu cvtoq, to A.L. oivci
(dispatches) to CPU o cvu uo ctoio (ready) apopuu.
! Otuv to CPU oivctui o cvu process, to process ouvq0e ocv kputuci to CPU
cpi vu tccieoci, ukou kui otuv to process ocv kuvci /O. Ku0c io (a..
1ms) to CPU oivctui o uo process.
Etoi apokuatci oti oc ku0c otiq o cvuv uaooiotq cktcouvtui aoc aupuqc
cvcpcic. Iiu v uvticteaioouv ti ouokoic aou apokuatouv, tu A.L. pqoioaoiouv
tqv cvvoiu tou process. -~ ou tu apopuutu aou tpcouv uvtiapooeacuovtui uao
cvu process.
multiprogramming: uopu oto covo oti aou processes tpcouv uvu auou otiq.
oiu q oiuopu ctuu process apopuu
Evu process uvtiapooeacuci iu oiuoikuoiu q oaoiu cktccitui c uoq cvu apopuu,
input/output kui cci kui iu kutuotuoq (state - oq. oi tic tev ctuqtev tou
apopuuto, CPU registers, PC, P, stack, ...) (Koitutc to aupuociu ouvtuq kui
oiuoikuoiu ucipcuto aou oivci to iio).
Tu process oqutiouv iu icpupiu autcpu-auioiou (q apoovou-uaoovou) coe tou
fork system call.
Kutuotuoq cvo process (e apo tqv cktccoiotqtu tou)
! tpcci (running): cci to CPU
! ctoio (ready): aopci vu tpcci, uu to CPU oo0qkc uou.
! aokupiocvo (blocked): acpicvci cetcpiko covo.



1. acpicvci /O
2. CPU oivctui o uo process
3. CPU oivctui o uuto to process
. /O civc
Iiu tqv ctuuoq (1) uaupci ouvq0e cvu block system call. Oi ctuuoci (2) kui (3)
apokuatouv uao aupcuoci tou scheduler (opoooqtq) tou A.L.
e kui aotc tpcci o scheduler (aoio tov kuvci schedule)
- clock interrupts: cuv to time slice tou process cci aupc0ci.
- block: otuv to tepivo process aokupci.
Xpqoioaoievtu to ovtco tev processes aopouc cukootcpu v uvuaupiotouc ti
cvcpcic aou cktcouvtui ku0c otiq o cvu ouotqu.

L uuto to ovtco o scheduler civui to kutetcpo caiacoo tou A.L. kui kpuci
catocpcic aou uopouv to otuutqu kui tpcio processes kui oiucipioq
interrupts.

2.2 Yzonoqoq zoo PROCESS
cpiqq aqpoopiu iu ku0c process:


! PC, P, CPU registers, P, signals
! Page ables kui uc aqpoopic aou uopouv vqq (a.. swap space),
pointers oc text, data, bss ...
! pid, parent pid, uid, gid, kutuotuoq cktccoiotqtu
! root dir, Iile descriptors iu open Iiles.
Yaupci cvu aivuku (process table) aou ouvq0e (otu ouotqutu U) uoaoicitui
ouv cvu linked list oI structs. To struct iu to ku0c process cci ti aupuauve
aqpoopic.
e caituuvctui o aupuqioo (concurrency - oq. oti uaupouv aou processes
aou tpcouv) otuv uaupci cvu kui ovuoiko CPU
1. Aoe tou oiuoipuoou CPU coe tev time slices (oq. to timesharing) uv
cctuoouc to ouotqu iu iu povikq otiq cuutcpq cvo time slice 0u
oouc oti o uutq tq povikq otiq tpcouv ~ 1 processes.
2. oc ouokcuc acpicpciu (peripheral deices) couv oikou tou
caccpuotc. Etoi ooo /O (a.. oc oioko) cktccitui ck cpou cvo process,
cvu uo process cktccitui uao to CPU.
Atoctoq interrupts:
Interrupt Vector: Kuuatci ti uqotcpc oicu0uvoci tq vqq. Aaotccitui
uao iu ocipu oicu0uvocev, iu iu ku0c ouokcuq, aou ocivouv oti poutivc aou
apcaci vu kq0ouv iu vu cuaqpctq0ci to interrupt tq ku0c ouokcuq (-~ oq. iu
poutivu iu oioko, uq iu tcputiko, uq iu to poo, k.a). Autc oi poutivc
covtui interrupt service routines (R).
Aopi0o iu ctucipioq interrupt:
1. ardware:
! toao0ctqoc (push) oto stack ti tic tev PC, P, P, kui kuaoiev CPU
registers
! pc tqv kutuqq oicu0uvoq oto interupt ector kui opteoc tqv oto PC.
Etoi, cktccitui q R.
2. oItware:
! H R uao0qkcuci tu CPU registers oto kutuqo struct tou Process able
(assembly lang).
! Mctu, to P cvqcpevctui vu ocivci o cvu uo apooepivo stack (assembly
lang)
! Mctu, kucitui iu C poutivu aou piokci aoio process uopu uuto to interrupt.
Auto to process tepu ivctui ctoio (oq. to process struct cuci uao tqv
leep iotu kui aquivci otqv Ready iotu).


! Kucitui o scheduler vu oiucci cvu Process
! H C poutivu caiotpcci otqv assembly lang. poutivu aou optevci tu CPU
Register kui Page ables tou process aou oiucc o scheduler.

2.3 Eniuoivovo Aiep,ooiov (Interprocess Communication)
Race Conditions: acpipuci kutuotuoci oaou ~ 1 processes oiuuouv q puouv oc
koivu ocoocvu kui to tciko uaotccou cuptutui uao to aotc tpcci to ku0c process.
To apoqu civui: cco apoouoq oc koivq vqq.
upuociu:
Auo processes kuvouv kui oi ouo uvuqci uao cvu tpuaciko oupiuoo (koivo) - q
iu a.. otov ouuo kui q uq uvtiotoiu otq ouuo. H poutivu ANAAHTH kucitui
kui uao ti ouo processes.
ANAAHTH: read (accbal) write (accbal accbal - amount): To P1 cktcci to read()
kui ctu to CPU oivctui oto P2 to oaoio cktcci read() kui write(). Mctu, to CPU
oivctui oto P1 aou cktcci to write(). To uaotccou civui oti ovo q iu uvuqq
uivctui - q uq u0qkc. Auto civui cvu tuaiko race condition.
Critical ections:
e aopouc v uaououc race conditions pcaci vu pouc cvu tpoao oute eotc
ovo cvu process vu cci apoouoq otu koivu ocoocvu oc ku0c otiq. Autq q ioiotqtu
cctui kui mutual exclusion (uqocuipcoq). To apoqu tou mutual exclusion
civui koiko iu cvu A.L.
Evu uo tpoao 0cepqoq tou apoquto civui vu cotiuoci otqv cktccoq cvo
process kui v uaooveoouc to tqu tou keoiku to oaoio puci/oiuuci koivq
vqq. Auto to tqu ovouctui critical section. H uoq tou apoquto ckcitui oto
vu oioupcouc oti ovo cvu process aopci vu aci oto critical section tou oc ku0c
otiq.
2.3.1 Ancvcyonoqoq (Disabling) Atokonev (Interrupts)
A uao0coouc oti cvu process ocv aopci vu aokupci cou oto critical section. Totc
o ovo tpoao iu vu oo0ci to CPU o cvu uo process civui coe cvo clock interrupt
aou 0u oquvci to tco tou time slice tou process.
Av kuvouc interrupt disabling oi aouc oto critical section kui enabling oi
apiv ouc totc kuvcvu uo process ocv apokcitui vu piokctui tuutopovu c u
oto critical section tou.


Au: oivovtu tq ouvutotqtu oc user processes vu kuvci interrupt disabling civui
caikivouvo (a.. bugs ~ interrupts cvouv disabled ...) ~ uutq q uoq oto mutual
exclusion ocv civui uaoocktq.
2.3.2 Mcxoqxc kcteoxo (Locks)
Miu uq uoq aopci vu uoio0ci oc lock ars. piv cvu process aci oto critical
section, cctuci cvu lock ar.
! Av q tiq tou civui 1, totc acpicvci aokupci cpi vu ivci .
! Av civui , totc to kuvci 1 kui ctu ciouci oto critical section tou.
To apoqu oe ocv u0qkc, uae ctutc0qkc. Ti ivctui uv 2 processes
oiuuoouv tqv tiq tou lock ar tqv ioiu otiq
2.3.3 H oq xov Peterson.
Aaotccitui uao 2 poutivc ti oaoic oi processes kuouv oivovtu to process id tou
iu vu aouv kui vu ouv oc/uao critical section: enterregion (process) kui
leaveregion(process).
Yaupci caioq cvu Ilag, turn, to oaoio pqoioaoicitui iu vu oeoci tqv ocipu oc cvu
ovo cvoiucpocvo process, kui cvu aivuku uao Ilags, interested aou ocivci tqv
cai0uiu cvo process vu aci oto critical section tou.
enterregion (process) leaeregion (process)

other 1 - process interestedprocess FAE
interestedprocess RUE
turn process
while (turn process
interestedother RUE)

Av q P1 cktccoci enterregion() apetq, iu kui to interested other " RUE ocv 0u
acpicvci (c busy waiting) kui 0u ouvcioci. Otuv ctu cvoiucp0ci q P2 to
interestedP1 RUE kui to P2 0u ouvcici vu cktcci to while loop.
Av kui oi ouo processes kucoouv enterregion() (ocoov) tuutopovu, totc, iu kui
couc cvu CPU, kuaoiu uao ti 2 processes 0 cktccoci tccutuiu tqv cvtoq
turnprocess. Autq q process ocv 0u aopcoci vu aci oto critical section kui 0u kuvci
busy wait oto while loop. Etoi, ovo q uq process 0u aci oto critical section tq.



2.3.4 Aoq c Test kot Set Lock (TSL)
ou computers aupcouv instructions oi oaoic cctuouv (read) cvu register to
oaoio optevctui cvu memory word, kui ctu uao0qkcuouv iu " tiq oto memory
word uuto (write). Oi apuci read write o uuto to register civui atomic (oq. kuvci
uo ocv aopci vu apooacuoci to register cpi to (read write) vu cci
cktccotci). H aopci, oiaov vu cktccotci o cvu Ilag, to oaoio civui cvu koivo
ariable. Otuv to Ilag , totc cvu process aopci vu cktcoci oto Ilag kui vu to
kuvci 1. Eacioq to civui atomic, ctoi oiuouictui to mutual exclusion.
enterregion:

reg, Ilag / reg -- Ilag Ilag 1 /
cmp reg, / Ilag /
jn enterregion / try again /
ret

leaeregion:
mo Ilag, / Ilag /
ret
Evu process aou kuci enterregion 0u aci ovo uv to Ilag qtuv . Aoie 0u kuvci
ouvcciu jump cpi to Ilag . pooctc oti q uoq civui q ioiu c tqv lock
ariables. To apoqu tq tccutuiu ocv uiotutui coe cacioq to hardware ocv
caitpcaci ouo process vu oiuuoouv tqv tiq tou Ilag apiv kuvcvu uao tu ouo tqv kuvci
1.
pooctc oti:
1. oi ouo tccutuic uoci uauitouv busy waiting.
2. Av cvu process apooau0qoci vu apooacuoci to Ilag epi vu pqoioaoiqoci to
enterregion q ocv pqoioaoiqoci to leaeregion totc q uoq kutuppcci. a..
cvu process aopci vu cktccoci mo Ilag, apiv kucoci enterregion...
o busy waiting cci ouo upvqtikc caiateoci:
! Lautuq CPU cycles.
! Priority inersion.
! .X. O scheduler cvo A.L. apooau0ci vu tpcci auvtu processes uqq
apotcpuiotqtu, u aouc P1. Av uaupci kuaoio P2, uqq apotcpuiotqtu,
kui aci oto critical section aopci vu apokuci apoqu uv kui to P1 0cci vu
aci oto critical section. o P1 0u kuvci busy wait kui ocv 0u oeoci aotc tqv
cukuipiu oto P2 vu tpcci eotc vu ci uao to critical section ~ to P1 0u kuvci
busy wait iu aou.




Aoct e BUS WAIT
Buoikq ocu: Processes aokupouv uvti iu busy wait. Otuv aokupci cvu process, o
scheduler tou A.L. opoooci uu processes kui ctoi uaocuovtui tu apoqutu
tou busy wait.
Yaupouv 2 systems calls: EEP AKEUP (kuiu opu uaokuouvtui kui A
GA, uvtiotoiu). Otuv cvu process kuci EEP totc uao tqv kutuotuoq
RUG acpvuci otq kutuotuoq OCKE. Otuv kuaoio uo process kucoci
AKEUP(P) totc to process P, 0u acpuoci otq kutuotuoq REAY.
2.3. To Hqo Hooyeyo-Koxovoexq
Kuooiko aupuociu apoquto PC, mutual exclusion, race conditions, k.a.
Yaupouv 2 processes o aupueo, P, kui o kutuvuetq, C.
O P aupuci aqpoopiu kui tqv uao0qkcuci o cvu buIIer . O C apooacuuvci tov
kutuvuevovtu tqv aqpoopiu.
poqutu apo uoq:
! Ti ivctui otuv to B civui cuto: aou 0u uci tu ocoocvu o P
! Ti ivctui otuv to B civui uocio kui o C caicipci vu kutuvueoci aqpoopiu
Lqcieoq:
cpu tq oiucipioq/ccou tq koivq vqq, coe uauitcitui kui oupovioo
(synchroniation).
Oi uoci uoiovtui otu cq:
! O P koiutui otuv o B civui cuto. Tov uavuci o C.
! O C koiutui otuv o B civui uocio. Tov uavuci o P.
! Yaupci iu ctuqtq N aou ocivci to cc0o tou B.
! Yaupci iu ctuqtq count aou ocivci tov upi0o aqpoopiukev ovuoev
otov B.
Producer Consumer

while (1) while (1)
proditem() iI (count )
iI (count) sleep()
sleep() remoeitem()
putitem() count count - 1
count iI (count - 1)
iI (count 1) wakeup (producer)
wakeup(consumer) consitem()



Etoi o P koiutui otuv o B civui cuto kui uavuci tov C oi o B auuci vu civui
uocio. Eve, o C koiutui otuv o B civui uocio kui uavuci tov P otuv o B auuci vu
civui cuto.
Maopci vu apokuci apoqu, oe, oe tou oti P C apooacuuvouv to count
epi acpiopioo.
Eioikotcpu: civui ouvutov o C vu oci oti count , kui apiv apouci vu kucoci sleep()
to CPU vu oo0ci oto P o oaoio aupuci, kuvci count 1 kui kuci wakeup. Oe o C
ocv koiutui ukou ~ to wakeup uvctui. Apotcpu, to CPU 0u oo0ci otov C o
oaoio 0u kucoci sleep() kui 0u koiq0ci. Tepu, otuv o P cioci tov B, 0u kucoci
sleep() kui uuto ~ P C koiouvtui tov uievio uavo...
To apoqu apokuatci oioti to wakeup u0qkc. Ou aopououc vu
pqoioaoiqoouc cvu wakeup bit. Otuv oiaov, caicipcitui cvu wakeup iu kuaoio
process aou ocv koiutui, totc to bit ivctui 1 ~ ocv uvctui q aqpoopiu tou
wakeup.
Otuv upotcpu cvu process apokcitui vu kucoci sleep() uv to bit civui cvu totc to
process ocv kuci sleep() kui uvukuvci to bit .
Eivui oeotq uutq q uoq (c to wakeup bit)
2.3. Lqoot (Semaphores)
Evu tuao ctuqtev. Ltqv ouoiu ctpuci ou tu wakeup iu cvu process.
Auo apuci: UP O (cvikcuoq tev AKEUP EEP).
O(s) : 1 atomic action

iI s then sleep()
else s s - 1


UP(s):
s: s 1
Av ctu tqv cktccoq tou UP(s), s 1 kui uaupci kuaoio process aou koiutui iuti to
s qtuv , totc to ouotqu oiucci kuaoio ua tu koiecvu processes kui to uavuci.
Ou uutu aou cktcouvtui oto UP() civui caioq atomic.
e oiaov, aopouc vu uoouc to Prod-Cons apoqu Tu UP O
uoaoiouvtui ouv system calls. To atomicity uoaoicitui e cq: Mc 1 CPU : interrupt
disabling. Mc CPUs: interrupt disabling
Ou pqoioaoiqoouc 3 semaphores:
! Iull: ctpuci aoou items cci o B
! empty: ctpuci aooc 0coci tou B civui uocic


! mutex: oiuouici oti ovo o P q ovo o C apooacuuvouv to . O mutex civui
binary semaphore: auipvci tic kui 1 ovo.
Oi upikc tic tou civui: , , kui 1, uvtiotoiu.
pooctc oti tu semaphores apoocpouv cvu tpoao caiuoq apoqutev
oupovioou (Iull, empty) kui cvu tpoao caiuoq apoqutev uqo-cuipcoq
(mutual exclusion):
mutex: iu mutual exclusion
Iull, empty: iu vu otuutu o P (C) otuv o B civui cuto (uocio).
semaphore mutex 1
semaphore Iull
semaphore empty

producer ()
while (1)
proditem ()
down (empty)
down (mutex)
putitem ()
up (mutex)
up (Iull)


consumer ()
while (1)
down (Iull)
down (mutex)
consitem ()
up (mutex)
up (empty)

Ti 0u ouvcuivc uv o P uuc tq ocipu tev 2 O
Ti 0u ouvcuivc uv o C uuc tq ocipu tev 2 O
2.3. Monitors
Av kui uivocviku cukoq, q pqoq tev semaphores ouvq0e kpuci ouokoic (a.. q
ocipu c tqv oaoiu kq0qkuv tu O oto ProdCons apoqu).
Tu monitors oqioupq0qkuv iu oupovioo oc uqotcpo caiacoo - oi
apopuutiotc ocv uooouvtui acov c tctoiu low-leel 0cutu oae q ocipu tev
O, k.a.
Evu monitor civui cvu cioiko module: oiuoikuoic, ctuqtc, ooc ocoocvev. Oi
oiuoikuoic tou monitor civui oi ovc aou caqpcuouv tqv kutuotuoq tev ctuqtev


kui tev ocoocvev ~ cvu process iu vu apooacuoci tu ocoocvu cvo monitor apcaci
vu kucoci ti oiuoikuoic tou.
H aio oquvtikq ioiotqtu tou monitor civui oti vo cvo process noc vo okcxot
coo oxo monitor oc k0c oxtyq.
To monitor civui cvu quvioo aou apoocpctui uao iu eoou apopuutioou.
O compiler uvuvepici calls oc monitor oiuoikuoic kui tu cipictui oiuopctiku. Oi
apetc cvtoc oc iu monitor oiuoikuoiu, ccov uv piokctui kuaoio uo process
cvcpu cou oto monitor. Av vui, to process aou kuci to monitor 0u ivci suspended.
Aoie to process 0u aci oto monitor.
O compiler, oiaov, uoaoici to mutual exclusion (ouvq0e pqoioaoievtu a binary
semaphore). Oe, oae ciouc aio auve, mutual exclusion civui ovo cpo tou
apoquto (uauitcitui kui oupovioo).
Tu apoqutu oupovioou uvovtui uao tov monitor coe condition ariables.
Cond. ars ocovtui cvtoc A GA
Otuv cvu monitor procedure ocv aopci vu ouvcioci (a.. o P otuv o B civui cuto)
totc kuci A(c), oaou c civui cvu cond. ar. Etoi q process aou kuci A
aokupci. Eaioq, caitpcaci oc kuaoio uo process, aou cic caicipqoci vu aci oto
monitor kui uactuc, vu aci tepu oto monitor. pooctc oti ovo cvu cvcpo process
civui oto monitor.
Auto to uo process aopci vu uavqoci to process aou ckuvc A coe tou
GA(c). Tepu oe apcaci v uaououc tqv ai0uvotqtu vu civui kui tu 2, acov
cvcpu, processes oto monitor. ~ ouvq0e to GA() caitpcactui ovo ouv q
tccutuiu cvtoq o cvu monitor procedure.
Av aou processes couv cktccoci A(c), totc q cvtoq GA(c) 0u uavqoci
ovo cvu c uutev. To GA(c) uvctui uv kuvci ocv cci A(c). Tu A
GA civui ooiu c tu EEP AKEUP aou ciouc apiv. e oiaov,
uaocuctui to apoqu aou cctuouc c to EEP AKEUP
Tu monitors uaoaoiouv aou to cpo tev apopuutiotev ! To ovo aou kuvouv oi
apopuutiotc civui vu acpikcioouv o cvu monitor procedure tu critical section tou.
monitor ProdCons
condition Iull, empty
integer count
procedure enter
iI count then wait(Iull)
enteritem
count
iI count 1 then signal(empty)




procedure remoe
iI count then wait(empty)
remoeitem
count --
iI count - 1 then signal(Iull)


count
enter monitor


procedure producer procedure consumer
while (1) do while (1) do
proditem() ProdCons.remoe
ProdCons.enter consumeitem()
} }
2.3. Avxooyq Mqvvxev (Message Passing)
Processes caikoivevouv cvtuuq qvuutev: system calls E kui RECEVE:
send(dest, msg) rec(source, msg).
Icviku iu msg-passing ouotqutu:
Mqvuutu uvovtui: Ii uuto ouvq0e o uaoocktq ctu tqv qq, otcvci cvu cioiko
qvuu aou cctui acknowledgement. Otuv o uaootocu uuvci to ACK totc cpci
oti ou aquv kuu. Aoie, uvuotcvci to qvuu.
Av u0ci to uck totc to ioio qvuu 0u otuci ~ 1 opc ~ apcaci o uaoocktq vu
aopci vu cepici t uvtipuu. uuto ivctui covtu tov uaootocu vu pqoioaoici
cvuv counter oto msg kui uv cci uci cvu qvuu uao tov ioio uaootocu c tqv ioiu
tiq otov counter totc cpci oti civui uvtipuo.
Ovoutu tev processes: apcaci vu civui ovuoiku, uoie to qvuu u aopci vu
otuci o uo process. Auto civui ouokoo apoqu. Luvq0e:
processmachine.domain
Authentication: e cpe oti uuto aou caikoiveve civui apuuti uuto aou
ioupictui oti civui Encryption kui kcioiu uvouv to apoqu uuto: to kcioi iu to
qvuu toci ovo o oeoto uaoocktq - kuvci uo ocv aopci vu kuvci decrypt.
e otcve qvuutu otqv ioiu quvq (oq. uaootocu kui uaoocktq tpcouv otqv
ioiu quvq). upuoooiukc uoci uoiovtui otqv uvtipuq tou qvuuto uao to
address space tou uaootocu oto address space tou uaoocktq. Auto kootici aou
(ioiuitcpu iu cuu qvuutu).


2.3. Hooyey-Koxovoexq -- Producer-Consumer kot msg passing
Tepu ocv couc koivou buIIer. Tu N buIIers uvtiku0iotuvtui uao N msgs.
Ltqv upq, o cons otcvci uociu qvuutu otov prod. Ku0c opu aou o producer
aupuci cvu item, auipvci cvu uocio qvuu, to cici, kui to otcvci aioe otov
consumer. O prod aokupci cpi vu uci uociu qvuutu uao tov cons. O cons
aokupci cpi vu uci cutu qvuutu ua tov prod.
producer consumer
while (1) For i: 1 to send(producer,m)
proditem ( item) while (1)
rec (consumer, msg) rec (producer, msg)
make\msg (msg, item) getitem (item)
send (consumer, msg) send (producer, msg)
consumeitem (item)

pooctc, oti tu send()/rec() civui blocking system calls. Aquoq aopci vu
apokucoouv to aokupiou tou process. otc ukpie aokupouv cuptutui uao
tqv uoaoiqoq tou msg passing.
Yoaoiqoq c Mailboxes. Avti tu qvuutu vu otcvovtui oc process names, aopouc
vu oqioupqoouc cvu mailbox iu ku0c process, oaou otcvovtui tu qvuutu.
To ku0c process totc cktcci rec uao to oiko tou mailbox.
To mailbox cvo process acpicci ou tu qvuutu aou otu0qkuv oto process kui ocv
couv ivci receied uao to process. Processes aokupouv otuv apooau0ouv vu
oiuuoouv/uouv uao uocio mbox q vu otciouv oc cuto mbox.
H uoq c mbox uauitci uoiku buIIering (epo otq K.M.). Miu cvuuktikq uoq
uoictui otqv cvvoiu tou puvtcou (rendeous).
onoqoq c ovxco (Rendevous)
To send() aokupci cpi vu ivci to uvtiotoio rec() uao to uo process.
Eaioq, to rec() aokupci cpi vu ivci to uvtiotoio send().
Autq q uoq ocv uauitci ku0oou buIIering: to qvuu ctucpctui kut cu0ciuv uao
tov uaootocu otov uaoocktq. H uoq c rendeous civui aio uaq, uu oi cuciktq.
a.. ti ivctui uv o producer civui aou aio pqopo uao tov consumer, q uvtiotpou
2.3.10 t tooot nov ycvoxovv - Dining Philosophers
To nqo:
5 iooooi ku0ovtui o cvu tpuaci c 5 aiutu uqto (oouoi). Iiu vu uci cvu
ioooo pciuctui 2 uukiu (chopsticks) - ociu kui upiotcpu ku0c aiutou piokctui
uao cvu uuki. O ku0c ioooo acpvuci tqv eq tou okcatocvo kui tpeovtu,


cvuu. To apoqu civui vu puci cvuv uopi0o iu tqv eq tev ioooev aou
ocv kouci aotc. a..
philosopher (i)
while (1)
think
takeIork(i)
takeIork(i1 mod 5)
eat
putIork(i)
putIork(i1 mod 5)

O aupuauve uopi0o ocv ikuvoaoici! Av ooi oi iooooi acivuoouv tqv ioiu
otiq kui cktccoouv tov uopi0o totc ooi 0u aupouv to uuki otu upiotcpu tou.
Oe kuvci ocv 0u kutucpci vu aupci to oci uuki -~ ooi 0u ac0uvouv tq acivu.
Auto civui cvu cvikotcpo kui aou oquvtiko apoqu iu tqv oqioupiu
ouotqutev oioikou kui cctui otcoo (deadlock). Luuivci otuv ~1 processes
oqioupouv iu kukikq uuoiou: kui oaou to ku0c process iu vu ouvcioci pciuctui
cvuv aopo aou tov kutcci to caocvo process k.o.k.
Miu uoq civui v uvukuoouc tov ku0c ioooo, oi aupci to upiotcpo uuki vu
cctuoci uv to oci civui oiu0coio. Av vui, cvtuci. Aoie, uqvci to upiotcpo
uuki kui ookiuci aui ctu uao kuaoio poviko oiuotqu.
To apoqu uutq tq uoq civui io oiuopctiko. Av ooi oi iooooi upioouv
tqv ioiu otiq, 0u aupouv to upiotcpo tqv ioiu otiq, 0u t uqoouv tqv ioiu otiq
k.o.k. Auto to uivocvo ovouctui cn otoxov ovooq (indefinite postponement
q starvation): tu processes ouvciouv vu tpcouv uu ocv oqcievouv kuiu
apoooo...
Miu uq uoq civui vu oqioupqoouc cvu critical section otov uopi0o tev
ioooev (ctu to think) o oaoio vu apootutcuctui uao cvu semaphore (mutex 1).
piv aci oto critical section kuci O(mutex) kui oi ci kuci UP(mutex).
H uoq uutq civui oeotq uu 0cepcitui q uaoootikq! Iiuti
Mto koxcq oq:
Xpqoioaoicitui cvu semaphore (mutex 1) iu apootuoiu tou critical section.
Xpqoioaoicitui cvu semaphore iu ku0c ioooo s1..5, upiku si .
Tco uaupci kui cvu ar aou uvtiapooeacuci tqv kutuotuoq cvo ioooou (c tic
uao: LKE4TETA, ENAE, TOE).
Iiu vu uci cvu ioooo, kuvci uao tou 2 citovc tou ocv aopci vu piokctui otq
kutuotuoq TOE.



philosopher (i)
while (1)
think
takeIorks(i)
eat
putIorks(i)

takeIorks(i) putIorks(i)
down (mutex) down (mutex)
statei: hungry statei: thinking
test (i) testi-1mod 5
up (\mutex) testi1 mod 5
down ( si) up (mutex)

test (i)
iI (statei hungry statei-1 mod 5 ! eating
statei1 mod 5 ! eating)

statei eating
up ( si)
}
2.3.11 To Hqo Avoyveoxev/Eyyoev (Readers Writers)
Xpqoioaoicitui kupie iu tqv ovtcoaoiqoq apoqutev tuutopovq apoouoq
oc uoci ocoocvev.
ooi uvuveotc (readers) aopouv tuutopovu vu apooacuuvouv cvu uvtikcicvo.
Av oe uuto apooacuuvctui uao cvuv cpucu, totc kuvci uo (reader q writer)
ocv aopci vu apooacuoci to uvtikcicvo.
a..
tpuacikoi oupiuooi data items -- cpetqoci iu uo uaooiaou readers --
uvuqci, kutu0coci writers
reader writer
while (1) while (1)
down (mutex) createdata()
readcount down ( item)
iI (readcount1) writedataitem()
down (item) up (item)
up (mutex)
readitem()
down (mutex)
readcount --
iI (readcount )
up (item)
up (mutex)

Apiku, mutex 1 kui item 1. Yaupci kuaoio apoqu uutq tqv uoq


2.4 Xpovonpoypdppdrop CPU - SCHEDULING
Otuv aou processes piokovtui otqv kutuotuoq RUAE / REAY, aoio process
0u aupci tov CPU Auto to uaouoici ckcivo to tqu tou A.L. aou cctui scheduler
(scheduling algorithm).
oio povoapopuutici tov povoapopuutiotq O scheduler kucitui:
1. uao tqv poutivu cuaqpctqoq oiukoaq pooiou (clock interrupt serice routine) kui
2. uao tqv poutivu block() tou kernel (aou kucitui otuv to tpcov process 0u
aokupci).
otc cvu uopi0o opoooqoq civui kuo
! Aikuio: iookutuvoq CPU kukev otu processes
! Aaoootiko:
o CPU utiliation (aooooto pqoq tou CPU)
o response time (povo uaokpioq - interactie)
o turnaround time (povo uaokpioq - batch)
o throughput ( processes/ovuou povou)
Acv aopouc vu ikuvoaoiqoouc ou uutu tuutopovu !
(batch cvuvtiov interactie).
Process Tuao: / - bound q CPU bound
Lc ku0c tik to clock interrupt serice routine kuci tov scheduler o oaoio cctuci uv
to tpcov process cci pqoioaoiqoci tov CPU upkctu. Av vui, totc kuaoio uo
process (uuto aou 0u oiucci o uopi0o opoooqoq 0u tpcci).
Av oe to tpcov process civui /O-bound totc ouvq0e 0u aokupci ouvu, kui ctoi
0u pqoioaoici iotcpo to CPU ua oti cvu CPU-bound process.
Preemptive Scheduling:
Otuv o uopi0o caitpcaci to CPU vu oo0ci o uo process apiv to tpcov process vu
cci tccieoci.
on-preemptie uopi0oi oivouv to CPU o cvu process cpi vu tccieoci, ctu
oiucouv uo process ... k.o.k.
o preemptie scheduling oqioupci tu apoqutu aou ciouc octiku c tuutopovq
apoouoq oc koivq vqq. Aa tqv uq cpiu, non-preemptie scheduling uivctui q
cupooio iu ti aio aoc cupoc (aou couv aou processes oto ouotqu
tuutopovu).



Round - Robin Scheduling:
Aao, oikuio, kui aio aou-pqoioaoiqcvo uopi0o. To ku0c process cci cvu
time quantum (q time slice). Etoi 0u tpcci iu cvu oiuotqu ioo c to time slice, ctu
to CPU 0u oo0ci oc kuaoio uo process, k.o.k. Av to process aokupci apiv to time
slice aupc0ci, totc aui to CPU 0u oo0ci o uo process.
Aaq uoaoiqoq!
H oiuoikuoiu kutu tqv oaoiu oivctui to CPU o uo process uaokucitui CPU switch,
process switch, contet switch. O povo aou uauitcitui iu to context switch civui
oquvtiko: uuq acpiuovto : oeoio regs, PC, P, ... otq ooq iu to tpcov
process oto Process able, opteu tev regs, PC, P uao tq ooq iu to caocvo
process oto Process able, uuq Page ables, ...k.o.k.
H uaoootikotqtu tou Round-Robin uopi0ou cuptutui uao tqv oiupkciu tou
quantum (oc ocoq kui c tov povo aou uauitcitui iu context switch).
Mcuo quantum ! cuo povo uaokpioq iu interactie pqotc. Mikpo quantum
! iu cuu aooootu tou povou to CPU pqoioaoicitui iu context switch.
ovonoyooxto Mc Hoxcotoxqxc
O uopi0o Round-Robin civui pqoio otuv ou tu processes couv tqv ioiu
oaououiotqtu. Auto oe ocv iouci ouvu!
Lc cpikc cupoc, processes kuaoiev pqotev couv cuutcpq apotcpuiotqtu
(a.. otputqev, kuev acutev). Icviku, o uopi0o oiucci to process c tqv
cuutcpq apotcpuiotqtu.
Luvu, q apotcpuiotqtu cvo process ctuuctui c to povo kui cuptutui uao to
aoou CPU cycles cci qoq pqoioaoiqoci.
Lc aou ouotqutu uaupouv upkctu I/O-bound obs. Autu apcaci vuouv
cuutcpq apotcpuiotqtu! Etoi, 0u aupouv to CPU kui aou ouvtou 0u qtqoouv
/O. Totc to /O process kui t uu CPU-bound process tpcouv aupuqu. Auto o
aupuqioo cievci tov coo povo uaokpioq kui uuuvci to throughput tou
ouotquto.
Evu uao tpoao uaooioou apotcpuiotqtu: 1/p, oaou p civui to aooooto tou time
slice aou pqoioaoiqoc to process tqv tccutuiu opu aou ctpcc. /O-bound processes
couv uqo p ~ uqq apotcpuiotqtu.
ttk oyot0o: Round-Robin kot noxcotoxqxc
To ouotqu aupcci N oiuopctikc apotcpuiotqtc oi oaoic oqutiouv M ouoc,
ku0ciu c N/M apotcpuiotqtc.


O uopi0o oiucci auvtu cvu process uao tqv ouou c ti cuutcpc
apotcpuiotqtc.
Lc ku0c ouou pqoioaoicitui Round-Robin scheduling a.. NM1: Av uaupci
kuaoio process c apotcpuiotqtu 1 totc uuto tpcci, uoie kuaoio process c
apotcpuiotqtu 2, k.a. Ou tu processes c apotcpuiotqtu 1 tpcouv c Round-Robin
k.a. Mc to acpuou tou povou oi apotcpuiotqtc apcaci vu uuouv. Aoie
cpiku processes ocv 0u tpcouv aotc.
O upioiko uopi0o uoaoicitui ouvq0e cvu multi-leel queue. To 1o queue cci
processes tq 1q ouou, k.a. O uopi0o piokci to apeto q uocio queue,
oiucci to process otqv kopuq tou queue kui otuv tccieoci to quantum tou process
to toao0ctci oto tco tou ioiou queue. To A.L. U pqoioaoici uuto tov uopi0o
(c N128, M32, quantum1 Msec).
Eivui ouvutov ku0c ouou vu octictui c oiuopctiko quantum. Aq. q kutetcpq
ouou vuci 1 quantum, q ucoe caocvq vuci 2 quanta, k.a. Etoi cvu process c
apotcpuiotqtu tpcci iu x quanta povo.
Eivui caioq ouvutov oi apotcpuiotqtc tev processes vu uaoppcouv uao tov tuao tou
processes.
a..
processes aou acpicvouv iu terminal /O -~ 1
processes aou acpicvouv iu disk /O -~ 2
processes tev oaoiev to quantum tccieoc -~ 3
processes aou couv pqoioaoiqoci aou quanta -~ .
L uutu tu ouotqutu uaupouv queues cvu iu ku0c apotcpuiotqtu. O uopi0o
oiucci auvtu to process otqv kopuq tou queue c tqv cuutcpq apotcpuiotqtu.
Etoi, interactie pqotc/processes kui disk /O processes apotiouvtui.
Ooi oi aupuauve uopi0oi ocoiuotqkuv iu ouotqutu c aou interactie
processes. Av to ouotqu u cci batch jobs, totc kuti uo pciuctui.
H Mtkxcq Aovct Hexq (SORTEST OB FIRST) (SF)
JF civui pqoio otuv o povo CPU aou pciuctui to ku0c process civui veoto
uao apiv (a.. cupoc oae uouiotikc, ucpoaopikc ctuipcic, k.a).
JF oiucci auvtu to process aou pciuctui iotcpo to CPU.



o aupuociu ocici oti to JF civui ctioto (aopci v uaooci0ci cukou).
Miu kui to JF cuiotoaoici tov povo uaokpioq civui cai0uqto vu tov
pqoioaoiqoouc kui iu interactie ouotqutu. Iiu vu ivci oe uuto apcaci vu
aopouc vu uaooioouc aooo CPU povo uauitci ku0c process (q uov ku0c
cvtoq aou cvu pqotq aqktpooqoc oto tcputiko tou).
Eote oti cktiq0qkc oti cvu job pciuctui povo .
Otuv tpcci oqcievctui oti pqoioaoiqoc to CPU iu povo 1. Totc oqcievouc
tqv cktiqoq u c uoq T T1. a.. T uT (1-u)T1 uaotcci tqv kuivoupiu
cktiqoq. Tqv caocvq opu aou tpcci to ioio job oqcievouc oti aqpc povo 2.
Totc cvqcpevouc tqv cktiqoq u c uoq T 2. a.. T u T (1-u) 2
Av u1/2 ! T (T / 2) (T1 / 2), T (T / ) (T1 / ) (T2 / 2), ....
Ooo aio ikpq q tiq tou u, tooo aio pqopu cviouvtui oi auic cktiqoci....
Auotue to JF ocv civui ctioto otuv ou tu jobs aou 0u opoooq0ouv ocv civui
veotu ck apoiou. 4tiuc cvu oiko ou aupuociu aou vu ocivci uuto.
ovonoyooxto c cyyvqoct - uaranteed Sched.
Buoikq iocu: Aeoc cuqoci oc ku0c pqotq uvuopiku c to aoou CPU cycles 0u
oo0ouv oto process tou. a.. Av uaupouv N pqotc, totc ooi 0u aupouv 1/N tev CPU
cycles.
H uoaoiqoq:
1. To A.L. uaooici aooo CPU povo cci aupci to ku0c process.
2. Eaioq, uaooici aooo povo capcac vu cic aupci (login time/).
3. Mctu uaooici tov oo tev (1) kui (2).
. O uopi0o oiucci to process c tov ikpotcpo oo, to oaoio tpcci cpi o
oo tou vu ivci cuutcpo kuaoiou uou process.



Atoeto Hotxtkq Mqovtoo ovonoyooxtoo
O oiuepioo uuto civui kuq iocu cviku kui oi ovo iu scheduling.
H aoitikq uvucpctui otqv ioooiu tou uopi0ou. O quvioo uvucpctui
kupie otqv uoaoiqoq tou uopi0ou.
upuociu: Evu pqotq aopci v uaouoici iu ti octikc apotcpuiotqtc tev
oicpuoiev tou. O kernel ti opoooci uvuou uutc ti apotcpuiotqtc.
upooie, cvu parent process oivci apotcpuiotqtc otu auioiu tou.
! o uopi0o aou cktccitui uao to A.L. cci aupuctpou aou ti oivouv user
processes.
Hov-Ennco ovonoyooxto (2-Level Scheduling)
Movtcpvu ouotqutu ouvq0e couv aou (aoc opc) cuu processes aou
0couv vu tpcouv. Eacioq K.M. kootici aou, civui ouvq0e ikpq ~ ocv epuvc ou
tu processes otqv kupiu vqq.
H opoooqoq tev processes o uutu tu ouotqutu ivctui e cq:
1. short-term scheduling: Aopu tqv opoooqoq aou couc oci cpi tepu. Aq.
oiucci aoio uao tu processes aou piokovtui otqv K.M. 0u tpcci
2. ong-term scheduling: Yacu0uvo iu vu ku0opici aoiu uao ou tu processes aou
0couv vu tpcouv 0u cioc0ouv otqv kupiu vqq.
Etoi, uvti vu couc cvuv ovoi0iko uopi0o aou uuvci ua oiv tou to kooto
iu context switch cvo process aou piokctui oto oioko, uaupci o aupuauve
oiuepioo cu0uvev.
Luvq0e o pqoioaoici (cpiku uao) tu cq kpitqpiu:
- povo aupuovq oto oioko q K.M.
- povo CPU aou oo0qkc oto process
- apotcpuiotqtu tou process
- cc0o tou process (ouvq0e tu cuu processes otcvovtui oto oioko iu vup0ouv
aou ikpu ...).


Kcoto 3. Atoctoq Kto Mvqq

3.1 Anzq Aioepioq: op Swapping uoi Paging
! O Atocttoxq Mvqq (AM) (memory manager) apcaci vu:
- cpci aoiu tqutu tq KM pqoioaoiouvtui
- aopci v uvu0ctci vqq oc processes otuv tqv pciuovtui
- auipvci aioe vqq aou ccu0cpevctui uao processes
- oiucipictui to swapping processes ctuu KM oiokou.
! Oi AM epiovtui oc kutqopic uvuou c to uv caitpcaouv, paging, swapping
(oq. ctuopu tqutev q ookqpev processes ctuu KM kui oiokou).
! Xepi swapping kui paging o AM civui uao.
Movonoyooxto (Monoprogramming)
! Movo cvu process piokctui otq KM ku0c opu
! H KM epictui oc 2 cpq: cvu iu to A.L. kui cvu iu to user process aou tpcci
K.M.
K.M. A.L. user program
! Moi o pqotq qtqoci coe terminal vu tpcci cvu apopuu, to A.L. to
optevci otq KM kui to tpcci
! To monoprogramming ocv upkci oti aio aoc acpiateoci:
- /O-bound jobs: ! to CPU uaouauoocitui ! kukq uaooooq.
- ou interactie processes: ! povo uaokpioq aou cuo.
- oc cupoc 0couv tqv ouvutotqtu oqioupiu aoev processes aou
tpcouv tuutopovu.

! !! ! ctoooxc multiprogramming ! q ovct xov A.M. yvcxot no nto
okoq
Movxco yto Hovnoyooxto (multiprogramming)
- Eote P q ai0uvotqtu oti oc iu povikq otiq cvu process piokctui otq kutuotuoq
/O-wait
- Eote caioq oti uaupouv N tctoiu processes
- To CPU utiliation oivctui uao tqv opouu:


CPU utili:ation 1 - P
N

! c P 8 to CPU utiliation civui:
1 2 3
CPU util. 2 3 9 59
! to multiprogramming cci ooupc cucpctikc ouvcacic.
Lqcieoq: To aupuauve ovtco civui uacpuaouotcucvo. Iiuti
Atoctoq Mvqq c Mq-cxoocvo Tqoxo (Partitions)
! To partitions civui cvu tqu, otu0cpou cc0ou, vqq. Aiuopctiku
partitions aopci vuouv oiuopctiko cc0o.
! To ku0c partition aopci vu iocvci processes (to cc0o tev oaoiev apcaci
vu civui tou cc0ou tou partition).

! O A.M. cci iu oupu uao processes aou acpicvouv vu aouv o cvu partition.
Maopci vu uaupci iu oupu iu ou tu partitions q iu oupu iu ku0c partition.
- Ltq tccutuiu acpiateoq aopci vu uaupci oiu0coiq vqq kui vu q tpcci
kuaoio process oto oiu0coio partition.
- Ltq 1q acpiaeoq o A.M. apcaci vu apoocci vu qv oautuci vqq.
a.. Av cvu ikpo process aci oto Part.3 totc uv kui uaupci aou oiu0coio
epo oto Part.3 ocv aopci vu pqoioaoiq0ci. Auto ovouctui coexctk
koxokcoxto (internal fragmentation (uvucpctui otov upqoioaoiqto
epo tou partition).
- H uoq o uuto to apoqu ocv civui apouvq. Iiu aupuociu uv ku0c opu
o A.M. uvci iu to process otqv oupu aou cuiotoaoici to internal
Iragmentation, totc ikpu processes 0 uoikouvtui (0uq0citc tu acovcktqutu
tou JF uopi0ou kui oti ikpu, oiuopuotiku (interactie) processes apcaci vu
couv uqq apotcpuiotqtu).
- Miu uoq civui to ku0c ikpo process vu octictui c iu ctuqtq, , aou
uvtiapooeacuci aooc opc o scheduler ocv coeoc to partition oto process.
Mctu uao opc, to partition oivctui oto process.


ccteq Hoqoxo xev PARTITIONS
! Akou kui c monoprogramming uaupouv 2 partitions.
! O linker kui o loader ouvcpuovtui kui aupuouv ti oicu0uvoci tev cvtoev
kui tev ocoocvev tou apopuuto. O linker aupuci oytkc tcv0voct
kot t votkc, - oq. q apetq oicu0uvoq civui , k.a.
Oe, otq uoikq oicu0uvoq piokovtui cvtoc q ocoocvu tou A.L. Aqoq
x0cxot 0co nooxooo xov A.L.
! H oq coxtct oxq cxooq xev oytkev addresses oc votkc
addresses.
Iiu aupuociu uv to process cci aci oto Part1 totc o oc ti oicu0uvoci aou
aupuovtui kutu tqv cktccoq tou process, to hardware apoo0ctci 1 K.
! Luvq0e q aupuauve otputqikq uoaoicitui c tqv pqoioaoiqoq cvo
cioikou koxoeqxq: base register. Lto aupuauve aupuociu, otuv to process
opte0ci oto Part. 1 kui ucoe apiv tou oo0ci to CPU to base register auipvci
tqv tiq 1 K. Auto ivctui uao tov kernel tou A.L. (oq. oi user processes ocv
couv apoouoq o uutov tov register).
! Etoi caituuvctui to cai0uqto uaotccou.
koxoeqxq oq (base register) e cv okc
Ltqv acpiateoq tou multiprogramming apcaci to ouotqu vu cuutui oti ku0cvu
apopuu 0u apootutcuctui uao t uu aou civui otq K.M.
! uauitcitui cco octiku c tu addresses aou aopci vu aupuci cvu process.
a.. to process oto Part1 ocv aopci vu aupuci oicu0uvoci ~ 2K iuti totc 0u kuvci
qiu oto process aou tpcci oto Part2.
Auto to apoqu uvctui cvu uo cioiko koxoeqxq oov (limit register). O
limit register acpicci tqv ciotq oicu0uvoq tou partition oto oaoio tpcci to process.
Ku0c oicu0uvoq aou aupuctui, oiaov, apooti0ctui oto base register kui to uaotccou
oukpivctui c to limit register: uv civui cuutcpo, to process ac0uivci.
Lqcieoq: Mc base kui limit registers tu apopuutu aopouv vu ctukivq0ouv otqv
K.M. (oquoq v uvutc0ouv oc oiuopctiku partitions kutu tqv oiupkciu tq cktccoq
tou).
Auto ovouctui relocation.
3.2 Swapping
! Ti ivctui otuv uaupouv aio aou processes ua oou aopci vu uaootqpici q
K.M.
Mc batch systems upkci kuti ouv multiprogramming c Iixed partitions.
Mc interactie systems, oe, ocv upkci.
! H ctuopu processes ctuu KM kui swap space oto oioko ovouctui
swapping.


Atoctoq Mvqq c Mcxoocvo Tqoxo (Multiprogramming with variable
partitions)
! H cvvoiu tev Iixed partitions ocv oq0u aou: Luvu, oautucitui aou epo
KM iuti ocv ivctui kuo tuipiuou ctuu cc0ev partition process.
! variable partitions (ctuuocvou cc0ou tqutu).
! Buoikq iocu: oi oicu0uvoci, o upi0o, kui tu cc0q tev partitions
ctuuovtui uvuou c ti uvukc.
! To oquvtiko uaotccou civui oti tu ctuuocvu partitions cuiotoaoiouv
tqv oautuq epou otq KM. Aao tqv uq acupu, oe, q uvu0coq KM oc
processes kui cviku to cpo oiucipioq KM ouokocuci.
! Hoctyo: Variable Partitions
K.M. Kernel P1 Moi qp0c to process P1
~~ Kernel P1 P2 Moi qp0c kui to process P2
~~ Kernel P2 1uc to process P1
~~ Kernel P3 P2 1p0c to process P3
~~ Kernel P3 P2 P 1p0c to process P
! Bcaouc oti uaupouv 2 uociu tqutu tq KM, cote c cc0o 3MB kui
1MB uvtiotoiu. Av tepu cp0ci cvu process P5 aou pciuctui MB, ocv aopci
vu ivci ockto, aupoti uaupci MB ccu0cpo epo otq KM. Auto to
uivocvo ovouctui cexctk koxokcoxto (eternal fragmentation).
! Miu uoq oto apoqu tou external Iragmentation civui to storage compaction
aou ouvocci oou tou uociou epou tq KM o cvu ouvcocvo tqu tq
KM. a..

Lauviu oe pqoioaoicitui uiti uauitci povoopo memory-to-memory
copying (CPU time) ( 1M/sec).
! Hoq vqq ovox0cxot o cvo process
H ouokoiu ckcitui oto oti ouvq0e to cc0o cvo process ctuuctui kutu
tqv cktccoq tou. Evu process cci tpiu tqutu:
- tet: to object code - ocv ctuuctui
- data: tu ocoocvu -ctuuctui . malloc()
- stack: to stack caioq ctuuctui



To data tqu cuevci apo to stack kui uvtiotpou.
! pooctc: uv oivuc ukpie ooo epo pciuctui cvu process otuv kuvuc
swap in totc 0 uauitcitui mem-to-mem copying iu vu ctucpouc cvu process
aou cuevci oc kuaoio uo partition.
Atoctoq Mvqq
! Occieoc 0cu civui:
- aoiu civui tu uociu tqutu tq vqq
- aoio process cci aoio partition tq vqq
! Oi uauvtqoci o uutu tu cpetqutu oivovtui pqoioaoievtu 3 cvuuktikou
tpoaou:
- Bit Maps: aivukc (ectors) aou acpicouv cvu bit uvu partition
- Linked Lists: iotc tev oaoiev oi kooi uvtiotoiouv oc partitions
- Buddy Systems: uoictui oc oiuopctikc iotc, oi kooi tev oaoiev
uvtiotoiouv oc partitions tev oaoiev to cc0o civui oiuopctikc ouvuci
tou 2.
Bit Maps
! H kupiu vqq epictui oc ovuoc uvu0coq (allocation units) tev oaoiev
to cc0o civui iu bytes q iu Kbytes.
! To cc0o tev ovuoev uvu0coq civui otu0cpo.
! Lc ku0c ovuou uvu0coq uvtiotoici cvu bit otov it Map. Av q I 0coq civui 1,
totc q ovuou uvu0coq I ocv pqoioaoicitui uao kuvcvu process.
! Ooo aio cuo civui to cc0o tev ovuoev uvu0coq tooo aio ikpo civui to
it Map. Aao tqv uq cpiu oe, cuc ovuoc uvu0coq couv ouv
uaotccou oautuq epou, oe internal Iragmentation (q tccutuiu ovuou
uvu0coq ocv 0u pqoioaoicitui oq).
! To uoikotcpo acovcktqu tev it Maps civui q uaotqtu tou (cukoiu
uoaoiqoq).
! To uoikotcpo ciovcktqu ckcitui oto kooto uvu0coq. Otuv cvu process
ivctui swapped in, apcaci vu pc0ouv oto it Map upkctu ouvcocvu - iu
povoopu oiuoikuoiu.
Linked Lists
! Ltqv aio uaq opq tou, ku0c koo uvtiotoici citc oc tqu aou
pqoioaoicitui uao kuaoio process, citc o cvu ccu0cpo tqu.


! Oi kooi tq iotu civui tuivoqcvoi c uoq tq oicu0uvoq tou 1ou byte tou
tquto aou uvtiapooeacuouv.
H tuivoqoq oq0u otqv oiucipioq:
- otuv cvu process tccieoci q ivci swapped out q cvqcpeoq tq iotu civui
pqopq: apcaci vu cctuotouv o caocvo kui o apoqoucvo koo oute eotc vu
caitcu0ci q ouevcuoq tev uociev tqutev (holes) - oq. ~2 ouvcocvu holes
(uociu tqutu) vu ouevcu0ouv o cvu.
Tu acoiu cvo koou civui: 1 bit (process q hole), 1 upi0o (upikq oicu0uvoq tou
tquto), 1 upi0o (cc0o tou tquto), 2 pointers (oc apoqoucvo kui caocvo
koo).
Ayt0ot Av0coq Mvqq oc Processes
Ektcouvtui kutu tqv oiupkciu oqioupiu cvo process q kutu to swap in cvo
process.
Mc0oo First-Fit: Bpiokci tov 1o hole aou epuci to process
Mc0oo Net-Fit: Luv tov Iirst-Iit, ovo aou ku0c opu ckivu to uio uao to
apoqoucvo hole aou pqkc
Mc0oo Best-Fit: Bpiokci to hole c to ikpotcpo internal Iragmentation
Mc0oo Worst-Fit: Bpiokci to hole c to cuutcpo Iragmentation
H est-Fit civui aio upq, apouve, uao to Iirst-Iit iuti uauitci aio aou uio.
H uoikq iocu tou worst Iit civui v uqvci ooo to ouvutov cuutcpu tqutu apo
covtikq pqoioaoiqoq. cipuutiku, oe, cci uaooci0ci oti to worst Iit ocv civui
uaoootiko.
To best Iit cci uqotcpo memory utiliation oc ocoq c to Iirst Iit. Auto cqcitui
oioti to best Iit cci tqv tuoq v uqvci aou ikpu holes aou ocv aopouv vu
epcoouv processes.
Evu tpoao vu uuq0ci q caioooq tev aupuauve uopi0ev civui vu
pqoioaoiouvtui 2 oiuopctikc iotc c processes kui c holes (uuto oe uuuvci
to kooto otuv cvu process tccievci q ivci swapped out).
Av q iotu tev holes civui tuivoqcvq c uoq to cc0o totc best Iit Iirst Iit civui
cioou pqopu.



O uopi0o uick fit:
- kputu aoc iotc holes q ku0c iu uvtiapooeacuci holes c oiuopctiku
cc0q.
- ctoi piokctui aou pqopu cvu hole cvo oukckpicvou cc0ou.
- to ciovcktqu tou ckcitui oto oti otuv cvu process tccieoci q ivci swapped
out, totc civui aio povoopo v cctuo0ouv oi acpiateoci iu ouevcuoq
holes.
Buddy Systems
! Avticteaici to ciovcktqu tou quick Iit. Aiucipictui holes tev oaoiev to
cc0o civui 1,2,,8,1,32... bytes (oq. ouvuci tou 2). Etoi pciuovtui
oupi0iko upi0o uao iotc.
! Apiku uaupci ovo iu iotu, cvu hole ioo c to cc0o tq vqq.
! Aitqoci iu vqq ivovtui auvtu iu tqutu c cc0o aou civui ouvuq tou
2. (oq. cvu process 7K 0u qtqoci 128K vqq).
! Av ocv uaupci hole c to kutuqo cc0o totc cvu cuutcpo hole
oiuoautui e cq:
Evu hole a.. 512K oiuoautui oc 2 holes buddies 25K ckuoto.
o cvu ck tev ouo holes tev 25K oiuoautui oc 2 buddies 128 K ckuoto, to cvu ck tev
oaoiev 0u oo0ci oto process.
Aquoq, ku0c opu piokctui to ikpotcpo hole, h, aou aopci vu ikuvoaoiqoci iu
uitqoq a. Av pciuctui, totc to h oiuoautui oc ouo iou tqutu kui cauvuuuvctui q
oiuoikuoiu.
Otuv tqutu ccu0cpevovtui uao processes totc q ouevcuoq ivctui ovo oc 2
buddies ~ oq. ovo q iotu c tu kutuqou cc0ou holes apooacuuvctui iu tqv
ouevcuoq.
Tu ciovcktqutu ckcitui oto internal fragmentation (uou tu holes civui ouvuci
tou 2) kui oto eternal fragmentation.

3.3 Eiuoviuq Mvquq (Jirtual Memory)
Ti ivctui otuv apopuutu civui cuutcpu tq KM Aquoq to ouvoo tev cc0ev
tev text, data kui stack uacpuivci to opio/cc0o tq KM
H uoq civui q tcvikq virtual memory: To A.L. kox ctk xqoxo cv process
oxq KM cve o xqoxo okovxot oxo swap space.


! Luvq0e iu koutiu tou text, data stack civui otq K.M. Autu tu koutiu
uopouv ti cvtoc, kui ocoocvu aou pciuovtui ucou ku0e kui uutu aou
uvucvctui vu pqoioaoiq0ouv oto cu cov.
! Etoi uuto aou ivctui swap in out civui koutiu tev text, data, stack
tqutev cvo process, kui oi ookqpu processes.
3.3.1 Lctonoqoq (PAIN)
Miu tcvikq uoaoiqoq tou irtual memory.
H cvvoiu tou Page uvucpctui oto kouti ckcivo cvo process aou ivctui swapped in
out - oquoq civui q ovuou swap. Xpqoioaoiouvtui caioq kui oi cvvoic pagein
pageout
To ouvoo tev memory addresses aou aupuovtui kutu tqv cktccoq cvo
apopuuto ovouctui address space. Eacioq, otq cvikq acpiateoq, uuto to
address space civui cuutcpo tq KM, ocv aopci vu uaupci ovooquvtq
uvtiotoiiu ctuu cvo address aou aupuci cvu apopuu kui cvo physical address.
Exot xo addresses nov noyovxot on cvo nyoo cyovxot virtual addresses ! !! !
virtual address space.
Xepi irtual memory, ouvcae, oti oicu0uvoq aupuctui oivctui oto memory bus to
oaoio apooacuuvci tqv oicu0uvoq. Otuv oe uaupci irtual memory, uauitcitui q
aupuocvq oicu0uvoq vu ctupuotci apiv oo0ci oto memory bus.
Autq q ctupuoq ivctui uao cioiko hardware aou cctui memory management unit
(MMU).
To irtual address space epictui/oiuipcitui oc ovuoc vqq aou covtui pages.
To ku0c page (ociou) otuv pciuotci uao0qkcuctui oc iu ociou (page frame) tq
KM. Pages Irames, ouvcae, couv to ioio cc0o ouvq0e uao 512 bytes cpi 8 K
bytes).
H ovuou vqq aou ivctui swap civui to page.
Hoctyo: Ocepciotc cvu koaioutcp c 1-bit addresses (oq. irtual address space
K), c 32 KB vqq kui c page sie 8K



To MMU ctupuci ti aupuocvc oicu0uvoci e cq:
-8K ! 8K-1K
8K-1K !
1K-2K ! K-8K
2K-32K ! k.o.k

Tu cpetqutiku oquivouv oti uutc oi ocioc apcaci vu ivouv page in
uvtiku0iotevtu iu uq ociou.
Otuv to MMU piokci oti q ociou aou acpicci iu oicu0uvoq ocv uaupci otq
K.M., totc kuvci cvu trap oxo A.L. Auto to trap ovouctui page fault.
To A.L. cuaqpctci cvu page Iault e cq:
o uao kuaoic ooc aou oiucipictui iu to process aou tpcci piokci
aou uaupci uutq q ociou oto swap space tou oiokou.
o piokci iu ociou aou piokctui qoq otq K.M. (ouvq0e tqv iotcpo
pqoioaoiqcvq) -0o. Av cci cvqcpe0ci, totc tqv puci otq
0coq tq oto swap space.
o Kutoaiv, cpvci tqv qtoucvq ociou oto Irame aou ccu0cpe0qkc.
o Tco cvqcpevci to memory map:
" tqv cpuq aou ocivci otu Irame aou pqoioaoiq0qkc - oq.
tqv cpuq tq ociou 0uu.
" tqv cpuq tq qtoucvq ociou.
o Tepu, uvukucitui q cvtoq aou apokucoc to trap.



H cxooq virtual -> physical:
Lto aupuociu u, ku0c irtual address cci 1 bits.
Aou q ociou civui 8K ! uauitouvtui 13 bits iu ti oicu0uvoci tev bytes cou otq
ociou (offset). Mc K irtual address space kui 8K ocioc aopouc vu couc 8
ocioc irtual address ! uauitouvtui 3 bits.

! Tu 3 apetu bits cvo irtual address opiouv tqv irtual ociou, kui tu uaooiau 13
bits cvo irtual address opiouv cvu byte cou otq irtual ociou.

Av q q irtual ociou toao0ctq0ci oto Irame 3 totc q ctupuocvq oicu0uvoq
physical civui: 11... oIIset. To uaotccou civui 15 bits.
3.3.2 Hvokc Lcev (Page Tables)
! Ltqv ouoiu, tu Page ables civui uuto aou couc ovouoci ce tepu Memory
Maps.
! H citoupiu tou oq. civui q ioiu:
o o irtual address epictui oc irtual page number (high-order bits) kui
oIIset (low-order bits).
o To irtual page number pqoioaoicitui ouv index oto P.
o (ioe ctu uao page Iault) to Irame number otqv cpuq tou P
uaotcci tu high-order bits aou uvtiku0iotouv tu high-order bits iu to
irtual page number. Etoi aupuctui to oeoto physical address.
! pokuatouv oe 2 oquvtiku apoqutu:
o Tu Ps aopci vu civui aou cuu. Lqcieotc oti ku0c process cci
oiko tou P!
o H citoupiu apcaci vu civui aou pqopq iuti pqoioaoicitui iu
ku0c oicu0uvoq aou aupuctui!


! Avuoiotcitc oti ocoov ou tu ovtcpvu ouotqutu couv ~32-bit address !
~G irtual addr. space. Av page sie K !to ku0c P cci cvu ckutoupio
cpuc ...
! Eaioq, oe tou cc0ou tev, Ps uao0qkcuovtui otq K.M. (kui oi oc
registers) ctoi touuiotov oiauoiuovtui oi apoouoci otq KM aou
uauitouvtui iu vu cktccotci iu cvtoq ...! Luvq0e caicipouvtui uoci aou
uotc uoiovtui oc h/w (CPU registers) iu to mapping q oc tcvikc aou
ikpuivouv to cc0o tev Ps.
Hov-cntncot Hvokc (Multi-level Page Tables)
! Miu tcvikq aou uaookoaci oto vu tqutoaoiqoci to P (aou civui aou
cuo) ctoi eotc vu uauitouvtui iu (kui ikpu) tqutu tou otq KM oc ku0c
otiq.
! upuociu: 32-bit address

Tu 1 bits tou P1 opiouv cvu P c 12 cpuc. H ku0c iu ua uutc ti cpuc
ocivouv o cvu uo Page able (oto 2o caiacoo) otq K.M. Etoi q tiq tou P1
pqoioaoicitui e index oto high-leel P q cpuq tou oaoiou ooqci o cvu P oto
2o caiacoo.
H tiq tou P2 pqoioaoicitui e index oto P aou pc0qkc oto apoqoucvo qu.
H cpuq oto 2o P ocivci otu Irame tq KM iu to qtoucvo page. To 12-bit oIIset
pqoioaoicitui iu vu pc0ci to kutuqo byte oto Irame tou apoqoucvou quto.
Lto aupuociu:
! Ku0c page civui K (uou oIIset civui 12 bits)
! Ku0c P oto 2o caiacoo kuvci map M
! To P oto 1o caiacoo kuvci map G (32 bits -~ G).
Etoi uv tu text, data, kui stack tqutu tou process civui to ku0cvu MB totc
pciuouotc vu couc otq kupiu vqq ovo 3 Ps tou 2ou caiacoou.
Aou to text tqu ocv cuevci, totc q uvu0coq irtual oicu0uvocev oto process
aopci vu ivci e cq:
! -M ! text
! M - 8M ! data
! tu tccutuiu MB ! stack (cuevci apo tu kute))


! 0u pciuotouv acpioootcpu Ps otq KM ovo uv to data q to stack tqu cueoci
auve uao MB to ku0cvu.
H Aoq xev Eyyoev xev Page Tables
Luvq0e q ukpiq ooq civui machine-dependent. Au, tu aio aou P entries
(cpuc) couv ti cq aqpoopic:
Protection bits: opiouv uv q ociou uutq aopci vu ivci read/write/execute

Modify bit: oqevci uv cci cvqcpe0ci q ociou uao totc aou civc page in.
Reference bits: oqevouv aooc opc to tccutuio poviko oiuotqu civc uvuopu o
uutq tq ociou.
Present bit: oqevci uv q ociou piokctui otq KM.
Page Frame bits: opiouv oc aoio Irame tq KM piokctui uutq q ociou.
pooctc oti q oicu0uvoq tq ociou oto swap space (oioko) ocv piokctui oto P
entry.
ModiIy bit: pqoioaoicitui otuv uaouoictc vu ckoie0ci iu ociou ua tqv KM iu
vu ccu0cpe0ci epo iu iu uq ociou. Av to bit uuto civui 1 totc q ociou
puctui oto swap space - uoie ocv pciuctui uuto to disk write.


ReIerence bit: Xpqoioaoicitui iu v uaouoio0ci aoiu ociou (0uu) 0
uvtikutuotu0ci.
Kvq Mvqq yt xov Hvokc (PAE TABLE CACES)
Aou tu Ps civui aou cuu iu vu epcoouv oc CPU registers, ae aopouc vu
cieoouc to kooto apoouoq o uutu (otq KM)
H uauvtqoq uoictui otq pqoq associative memory aou citoupci ouv cache.
H 0ccieoq auputqpqoq civui oti q ouacpiopu tev acpioootcpev apopuutev
civui tctoiu eotc vu auputqpouvtui cuoi upi0oi uvuopev oc ic ocioc (aou
uuouv upu c to acpuou tou povou) a.. - oc oi cvtoc oc iu ociou cvtoev
(cac loops).

Etoi pqoioaoicitui cioiko hardware aou uaotccitui uao registers to ouvoo tev
oaoiev kuouvtui translation lookaside buffer. O upi0o uutev tev registers civui
ikpo (ouvq0e ).
O ku0c register cci tqv ioiu aqpoopiu aou uaupci o cvu P entry kui caiacov cci
kui to irtual page number.
To MMU cctuci apetu uv to qtoucvo irtual page number piokctui otqv
associatie memory (ooi oi registers cctuovtui aupuqu).
! Av vui, totc uaocuctui q apoouoq tou P otq KM.
! Av oi, totc apooacuuvctui to P kui to kutuqo P entry uvtiku0iotu
kuaoio uo otqv associatie vqq.
Hoocxc xt ov yvct process/contet switch, xxc 0o ncnct vo qcvto0c q
associative memory
3.3.3 Avxtkoxoxooq Lcev (Page Replacement)
Otuv oqcievctui cvu page fault totc to A.L. apcaci (cpikc opc - uv ocv uaupci
ccu0cpo Irame) vu oiucci iu ociou (victim) 0uu aou 0u uvtikutuotu0ci uao tqv
qtoucvq ociou.
Av to 0uu civui dirty (oq. cci cvqcpe0ci ooo qtuv otq K.M.) totc to A.L. apcaci
vu tqv uvupuci aui oto swap space. Miu ociou civui dirty uv to P entry aou
ocivci o uutqv cci to M bit 1.
pouve q uaooooq tou ouotquto civui kuutcpq uv to 0uu ocv civui iu aou-
pqoioaoiqcvq ociou. ! To cuo apoqu kootou aquci uao tqv uvukq
apoouoq oto oioko iu uvtikutuotuoq ocioev.
H cxtoxq oxoxqytkq: Av cpuc ctu uao aooo povo (a.. upi0o cvtoev) q ku0c
ociou otq KM 0u cauvuapooacuo0ci, totc aopouc vu oiucouc ouv 0uu tqv
ociou aou ocv 0u pciuotci iu to cuutcpo poviko oiuotqu. Oe, oc apuutiku
ouotqutu, tctoiou cioou aqpoopiu ocv uaupci, outc aopci vu aupu0ci.


Lc cpikc acpiateoci civui ouvutov vu uaoq0ci cvu apopuu oc kuaoio cioou
tracer to oaoio kutuepci tqv ouacpiopu tou apopuuto uvuopiku c ti
apooacuoci oc ocioc. Autq q aqpoopiu pqoioaoicitui otuv to apopuu
tpcci apuutiku kui ctoi aopouc vu uoaoiqoouc tq ctiotq otputqikq...
Ayt0o Not Recently Used
Luvoatiku, uutq q c0ooo oiucci ouv 0uu iu ociou aou ocv cci pqoioaoiq0ci
apooutu. pcaci oiaov vu uaupouv aqpoopic octiku c to aooo apooutu
pqoioaoiq0qkc q ku0c ociou. Ii uuto to okoao pqoioaoiouvtui tu R kot M bits
aou ouvq0e uaupouv oti cpuc tev Page ables. (To R ivctui cvu otuv q
uvtiotoiq ociou apooacuuvctui. To M ivctui 1 otuv q uvtiotoiq ociou
cvqcpevctui.) Ti cvqcpeoci tev R, M bits ti kuvci to hardware.
Ayt0o
1. Otuv upici cvu process totc ou tu R, M bits tev cpuev tou P auipvouv
tqv tiq .
2. Lc ku0c clock interrupt to R bit ivctui aui . Etoi uv cctuoouc iu P
cpuq kui oouc to R 1 ! oti uaqpc uvuopu o uutq tq ociou ctu to
tccutuio clock tick.
3. Otuv oqcievctui cvu page fault: To A.L. oqioupci kutqopic ocioev c
uoq ti tic tev R M bits.

K1 R M
K2 R M 1 (vnct ovxq q koxqyoo A)
K3 R 1 M
K R 1 M 1
To A.L. oiucci ouv 0uu iu uao ti ocioc otqv kutetcpq, q-uociu,
kutqopiu.
pooctc oti apotiuci 0uutu uao K1 kui oi uao K2, oe tou kootou tq
uvtikutuotuoq iu ociou otq kutqopiu K2.
NRU cvot on, cvkoo-vonotqoto kot cct koq onooq.
Ayt0ot ootocvot oc FIFO
pouve q ku0upouiq FFO otputqikq cci apoqutu. Iiuti
O Ayt0o Acxcq Evkoto (Second - Chance)
! Buoictui otq otputqikq FFO


! Au, uvti vu uvtiku0iotu tqv aio auiu ociou, cctuci to R bit. Av R totc
tqv uvtiku0iotu.
! Av R 1 totc
o R
o q ociou toao0ctcitui oto tco tq iotu (oq. utictui ouv q aio
apooutq ociou otq KM)
o q uvuqtqoq 0uuto ouvcictui otqv caocvq aio auiu ociou.
! Av R1 iu oc ti ocioc, totc second-chance civui otqv ouoiu FFO (Iiuti )
O Ayt0o ot (Clock)
! To oquvtikotcpo ciovcktqu tou second-chance civui oti ouvce cvqcpevci
tqv iotu - povoopu oiuoikuoiu.
! Ltov uopi0o clock, oi ocioc opuvevovtui o cvu circular list aou
apooocievci cvu poo, oquoq uaupci cvu ociktq aou ocivci otqv aio auiu
ociou.
! Otuv oqcievctui cvu page Iault:
o cctuctui q ociou tou ociktq:
o Av R, totc totc uutq civui to 0uu o ociktq ocivci otqv caocvq
ociou.
o Av R1, totc R o ociktq ocivci otqv caocvq ociou kui q
uvuqtqoq ouvcictui.
Ayt0o Least-Recently Used (LRU)
ootkq tco: ocioc aou apooacuotqkuv oto apoouto aupc0ov 0u cauvu-
apooacuo0ouv kui oto cu cov (kui uvtiotpoe). Etoi, to 0uu civui q ociou
aou ocv cci pqoioaoiq0ci iu to cuutcpo poviko oiuotqu.
! Miu apoocioq uoaoiqoq civui c iu iotu oev tev ocioev otq KM c
tqv aio-apooutu-pqoioaoiqcvq ociou otqv upq tq iotu kui tqv RU
ociou oto tco.
! Aaq c0ooo, uu q iotu pciuctui cvqcpeoq oc ku0c uvuopu otq vqq
(aou ivctui ~ 1 opc iu ku0c cvtoq) ! to kooto civui uauopcutiko!
! Miu apoocioq uaouq tou aupuauve kootou civui vu pqoioaoiq0ci
cttk hardware. Miu c0ooo pqoioaoici cvuv -bit counter q tiq tou
oaoiou uuuvctui oc ku0c cvtoq. Eaioq, ku0c cpuq tou P cci bits
aupuauve, ctoi eotc ctu uao ku0c uvuopu oc iu ociou tq KM q tiq tou
counter vu uao0qkcuctui otqv uvtiotoiq cpuq tou P. Exot, q c0oo
tocyct oov 0o xqv oco xq onoo q cyyoq oxo PT cct xqv
tkxcq xtq xov counter.
! To aupuauve cioiko h/w kootici, uoiku, kui aopci vu qv
uaupci/apoocpctui uao kuaoio ouotqu. Etoi aooi ocoiuotc A.L.
kutucuouv oc uoci soItware c ti oaoic apooau0ouv vu apooooieoouv
tqv otputqikq RU.


Miu apooooieoq tou RU civui Not-Freuently-Used (NFU).
! Mc ku0c ociou ouvocctui kui cvu soItware counter (upiku cci tqv tiq ).
! Mc ku0c clock interrupt to A.L. apooacuuvci oc ti ocioc otqv K.M. Iiu
ku0c ociou:
o o counter ivctui shift right
o q tiq tou counter totc apoouuuvctui c tqv tiq tou R ( q 1) tq ioiu
ociou.
o To R apooti0ctui oto aio oquvtiko bit tou counter.
! Otuv oqcievctui cvu page Iault, q ociou c tq ikpotcpq tiq tou counter
caicctui ouv 0uu.
! O aupuauve uopi0o civui iu oukckpicvq opq FU aou ovouctui
aging.
a..


Counters


1

1

1
1 1 11 11 11
1 11 111 111 1111
Av iu ociou ocv cci pqoioaoiq0ci iu N ticks ! tu apetu bits . To 0uu 0u
civui q ociou 1.
Auto o uopi0o oiucpci kutu 2 tpoaou uao tov RU:
1. Av kui q ociou 1 civui to 0uu, civui ai0uvo vu cic pqoioaoiq0ci ctu
tqv ociou 2 oto clock tick 2.
2. Yaupci cvu acacpuocvo upi0o (iu tov counter) bits (a.. uv ou tu
bits 2 ocioev civui totc oiucouc otqv tuq ctuu tou).
Auto oe ocv oqioupci ioiuitcpu apoqutu!
3.4 2eioou 2oozquzov 2ezionoqoq
Otuv upici cvu process to A.L., aopci vu caicci:
! vu qv cpci kuiu ociou tou otq K.M. (oquoq vu uqoci to Paging ouotqu
vu cpci tqv ku0c ociou ua tov oioko otuv uaupci q apetq uvuopu o
uutqv). Autq q otputqikq ovouctui demand paging.
! vu opteoci kuaoic ocioc tou process ua tov oioko apiv to process upioci
vu tpcci. Autq q otputqikq ovouctui prepaging.


t cvvotc Working Set kot Locality of Reference.
Luvq0e q ouacpiopu tev apopuutev aou tpcouv upuktqpictui uao oiuopc
uoci. Lc ku0c uoq oi uvuopc vqq aou ivovtui ua to apopuu cvtoaiovtui
o cvu ikpo ouvoo ocioev tou (locality oI reIerence) aou civui cvu aou ikpo
uaoouvoo tou address space tou apopuuto.
Auto to ouvoo tev ocioev aou pqoioaoici cvu apopuu otq tepivq uoq tou
ovouctui working set.
Av oo to working set cvo process piokctui otq KM totc to process uuto 0u
oqioupci page Iaults ovo kutu tq ctuuoq otqv caocvq uoq. Av to working set
civui aou cuo kui ocv epuci otq oiu0coiq ccu0cpq vqq totc to apopuu
0u tpcci aou upu.
To otvcvo thrashing: Otuv cvu process oautuci cvu cuo cpo tou ouvoikou
povou oc page Iaults (a.. cvu process ctpcc iu 15 secs, tu 1 uao tu oaoiu qtuv iu
page Iaults). pooctc:
- ku0c cvtoq auipvci 1
- ku0c apoouoq oto oioko auipvci ~ 1 ms
To Movxco Working Set (WS)
A.L. aou cupoouv uuto to ovtco apcaci vu:
! cpouv aoio civui to working set ku0c process, kui
! apiv tpcouv to process (citc otqv upq, citc ctu uao swap in) vu couv cpci
to working set otq K.M., (oq. cupoouv prepaging).
e aopci to A.L. vu cpci aoio civui to Miu c0ooo uoictui otov uopi0o
aging aou ciouc aupuauve. To cvo process uaotccitui ua oc ti ocioc tev
oaoiev tu apetu bits tev counter ocv civui . Aq. uv otu tccutuiu N clock ticks cci
oqcie0ci uvuopu otq ociou, totc q ociou uvqkci oto tou process.
To ovtco aopci vu ouvouuotci c tov uopi0o clock: Avti vu caicctui e
0uu q ociou otqv oaoiu ocivci o ociktq uv to R :
apetu cctuctui uv q ociou uutq uvqkci oto .
! Av vui, totc ocv ivctui 0uu, kui ouvcictui q uvuqtqoq.
! Aie, caicctui e 0uu.
Auto o uopi0o ovouctui Clock




Tontkq kot Ko0otkq Avxtkoxoxooq (lobal kot Local Page Replacement)
Occieoq cpetqoq: Otuv oqcievctui cvu page Iault, kui uvuqtouc cvu 0uu, 0u
acpiopioouc tqv cpcuvu u ovo oti ocioc tou process aou apokucoc to page Iault,
q 0u cctuoouc oc ti ocioc tq K.M. uvcuptqtu uao to oc aoio process uvqkouv
Ltqv apetq acpiateoq q otputqikq ovouctui local cve otq ocutcpq acpiateoq
ovouctui global. Mc global uopi0ou, o upi0o tev Irames aou couv oo0ci oc
ku0c process oiucpci.
! Luvq0e apotiouvtui oi global uopi0oi oioti ouvq0e to cc0o tou
uuci c tqv aupooo tou povou. Mc local uopi0ou: Av to ikpuvci
totc oautuutui (otqv ouoiu) epo tq K.M. cciq tou oaoiou oqioupci
page Iaults o uu processes. Avti0ctu, uv to cueoci, aopci vu ouci
thrashing.
! Oi global uopi0oi ocv couv uutu tu apoqutu. Oe apcaci v
uaouoioouv aoou Irames vu oeoouv oc ku0c process. Luvq0e, uvuou c to
cc0o tou process, uvu0ctctui kui cvu upi0o Irames. Au kui uuto aopci
vu oqioupqoci thrashing. To apoqu aopci vu u0ci ctpevtu tq page
fault ouvotqtu (Irequency) ku0c process kui pqoioaoievtu 2 kuteiu:
igh PFF kui Low PFF. Otuv ctpictui to PFF cvo process p:
o Av PFFp ~ PFF totc to A.L. oivci aio aou Irames
o Av PFFp PFF totc to A.L. aopci vu aupci Irames uao to process p.
Mcyc0o Lco
! Kutu coo opo, q tccutuiu ociou ku0c segment (text, data, q stack) civui uociu
! !! ! tkc occ cvot koxco.
! Eaioq otuv cvu page civui cuo totc aopci to process vu pciuctui ovo cvu
uaoouvoo tq aqpoopiu oto page kui ctoi oautucitui K.M. ! ikpc
ocioc civui kuutcpu.
! Aao tqv uq cpiu:
o ikpc ocioc ! cuu Ps ! oautucitui K.M.
o ikpc ocioc ! q uaoootiko /O kutu tq oiupkciu page Iaults.
Auto ouuivci iuti ocioc otuv ivovtui swap in/out o cuutcpo
povo aou uauitcitui ocictui otq pqoioaoiqoq tou oiokou iu seek
(oq. vu toao0ctq0ci q kcuq tou oiokou otq oeotq ociou) !
oucpci vu ctucpouc cuc ocioc !!!
3.5 Zqzquozo Yzonoqoq
Htoeytoo Evxoq (Instruction Back-Up)
! Ocepciotc tqv cvtoq aou apokuci page Iault. To page Iault aopci vu
apokq0qkc otuv civc uvuopu otq ociou tq cvtoq, q oc iu uao ti ocioc
aou acpicouv ti aupuctpou. Moi to A.L. cpci cou tqv qtoucvq ociou
apcaci vu cauvuq0ci q cvtoq uao tqv upq ! to A.L. apcaci vu pci aou


civui to 1o byte tq cvtoq. Luvq0e oi cvtoc civui aou bytes (a.. 2 bytes
iu opcode kui 2 iu ku0c aupuctpo) ! ocv civui cukoq uao0coq.
! Mcpiku ouotqutu citc kputouv uutq tq aqpoopiu oc cioikou registers, citc
to microcode tq cvtoq tqv kuvci push oto stack, oaou to A.L. tqv piokci!
Kceo Lcev (Page Locking)
Yaupci uqcaiopuoq ctuu /O kui irtual Memory ouotqutev.
Ocepciotc cvu process, P, aou cktcci read (Id, buI, ...). To A.L. oivci tqv cvtoq otov
disk controller vu cpci to qtoucvo disk block otqv ociou (c) aou pikctui o buI. To
P aokupci kui to CPU oivctui oto P1. To P1 apokuci page Iaults kui ouv 0uu to
paging system caicci iu uao ti ocioc oaou piokctui o buI tq P kui tqv optevci
c tqv cai0uqtq ociou tq P1. Apotcpu o disk controller cpvci tqv uauvtqoq uao
tov oioko iu tqv P kui pqoioaoievtu MA tqv uao0qkcuci otq oicu0uvoq oaou
tepu uaupci q ociou tq P1 ... kutuotpoq.
H uoq oto apoqu civui vu pqoioaoiq0ci cvu lock bit iu ku0c Irame.
Otuv to lock bit civui 1 totc uutq q ociou ocv aopci vu caic0ci ou 0uu uao tov
pager. Etoi, uv oc oi ocioc aou cackovtui oc /O couv to lock bit 1 totc to
aupuauve apoqu uaocuctui.
Atootoo Lctev (Page Sharing)
Luvq0e ~1 process tpcouv to ioio apopuu (a.. i)
! oucpci oi ocioc vu oiuoipuovtui, uvti vu uaupci cvu uvtipuo tou koivou
apopuuto iu ku0c process. ! otuv cvu process ivctui swap out (q tccievci)
apcaci oi ocioc (text) aou pqoioaoiouvtui uao uu processes vu qv ivouv swap
out (kui to swap space vu qv ccu0cpe0ci)
Swap Space
! Luvq0e civui cvu cioiko partition oto oioko.
! Yaupci cvu free list ctoi eotc kuivoupiu processes vu piokouv swap space.
! Otuv cvu process upici, to A.L. tou uvu0ctci tooo swap space ooo civui kui to
cc0o tou.
! Ltqv cpuq tou Process able tou A.L. iu to process P uaupci cvu acoio aou
ocivci otqv oicu0uvoq oto oioko iu to process P (swap space). Etoi uv
apoo0coouc to irtual page number o uutq tqv oicu0uvoq piokouc aou civui
q kutuqq ociou oto swap space.
! Luvq0e tu segments oae to stack kui to data cvo process couv oiuopctiku
swap spaces, oe kuuivocvou cc0ou.
t Aoovc PAER
! Lc aou ouotqutu paging deamons (cioiku processes) oiuouiouv oti
uaupouv upkctu ccu0cpu page Irames.


! cpiooiku, o paging deamon uavuci, ccci uv uaupouv upkctu ccu0cpu
Irames.
Av vui, uvukoiutui. Av oi, tpcci tov uopi0o page replacement cpi etou
upkctu Irames ivouv ccu0cpu.
! Etoi to ouotqu cci kuutcpq uaooooq. Iiuti
ctto A0ov (Page Fault Handling)
Aopi0o
1. Eouc kernel trap. O kernel oeci PC kui oicu0uvoq cvtoq (1o byte)
2. kernel oeci general-purpose regs.
3. Bpiokci aoiu irtual page apokucoc page Iault (aopci vu pciuotci vu kuvci
parse tqv cvtoq).
. Av oi ccoi base limit registers kui tev protection bits acpuoouv, to A.L.
apooau0ci vu pci ccu0cpo Irame (tpcovtu ioe tov page replacement
uopi0o).
5. Av to 0uu cci M1, totc qtuci ua tov disk controller to puio tou page kui
opoooci uo process (uou kcioeoci tqv ociou).
. Aou putci q ociou, o kernel piokci aou oto swap space civui q qtoucvq
ociou kui qtu ua tov disk controller vu tqv cpci.
7. Otuv cp0ci q ociou tu Ps cvqcpevovtui kui q ociou ckcioevctui.
8. O kernel pikci to 1o byte tq cvtoq aou apokucoc to page Iault.
9. o process aou apokucoc to page Iault uvutpcci (o cco caiotpcci otqv
assembly-code poutivu tou quto 2).
1. H assembly poutivu cauvutoao0ctci ti kutuqc tic tev general-purpose
CPU regs kui caiotpcci. To process tepu tpcci ouv to page Iault vu qv cic
ouci.



Kcoto 4. Lvoxqoxo Atoctoq
Acev
4.1 Hepzqyq
Aco (File): Evu abstraction aou uopu cvu ouvoo oiku ouoctiocvev
ocoocvev, uao0qkcucvo oc uvqtikou oiokou.
Lvoxqoxo Acev (File Systems): Mcpo cvo A.L. Aoocitui c tqv opuveoq,
uao0qkcuoq, apooacuoq, apootuoiu, oiuoipuoo kui ovouoiu (naming) tev
upciev. poocpci to file abstraction: kpuci oc ti catocpcic oiucipioq kui
apooacuoq uvqtikev oiokev, opuveoq ocoocvev cvo upciou, ka.
Koxoyo (Directory): Eaitpcaci ovoutu uqou caiacoou (a.. AC strings) v
uvutc0ouv o uuto to storage abstraction a.. peter/Ioo -~ oc kuaoio coetcpiko Iile id
(ouvq0e cvu cuo upi0o aou opici to upcio peter/Ioo oto ouotqu).
voooo (File naming): H oiuoikuoiu ctupuoq cvo uqou-caiacoou (user-name)
ovouto cvo upciou oto uvtiotoio Iile .
cyo noooq (Access Control): acpiopici apoouoq oc upciu. Movo
couoioootqcvoi pqotc aopouv vu apooacuoouv oukckpicvu upciu.
yveoq cv File System
nqcoo Koxoyov (Directory Service):
! irectory Module: Yqou caiacoou ovoutu -~ File ds
! Access Control Module: cco uociu apoouoq
nqcoo Acev (File Service):
! File Module: File s -~ Iiles
! File Access Module: pooacuoq upciou
nqcoo Ano0qkcvoq (Block Service):
! lock Module: Aiucipioq epou oto oioko
! eice Module: disk /O buIIering
File erice: - Yoaoici cvuv caiacoo epo ovoutev (flat file namespace). pcaci
vu aopci vu apoooiopici tqv tuutotqtu tou qtoucvou upciou (ovooquvtu) !


uniue file ids (UFIDs). Acoocvou tou UF q aqpoopiu tou uvtiotoiou upciou
aopci vu cvtoaiotci.
Files ata attributes. Attributes Metadata (oq. aqpoopiu iu tqv
aqpoopiu). Luvq0e tu attributes cvo upciou acpipuouv to cc0o, ioioktqtq,
iotu access control, k.a. Mcpiku attributes civui apooacuoiu uao tou pqotc.
lock erice: Aiucipictui disk blocks: Avu0ctci/ccu0cpevci blocks oc/uao Iiles kui
apooacuuvci/cvqcpevci blocks.
irectory erice: Aiucipictui directories (aou ouvq0e uoaoiouvtui ouv cioiku
upciu). ! o directory server civui acutq tou Iile serer.Avu0ctci UFs, otuv
oqioupouvtui upciu, aou caiotpcovtui otou pqotc. Eacitu, oi pqotc
uvucpovtui otu upciu pqoioaoievtu tu UFs.
UFs aopci vu civui capabilities: oq. pqoioaoiouvtui uao tou kutcovtu ouv
uaoociq apo tov File erer oikuieuto apooacuoq upciev.
! o directory serer apiv oeoci UFs oc pqotc apcaci apetu vu ccci oti oi
pqotc oiu0ctouv tu uvuou oikuieutu apoouoq.
O oiuepioo tou irectory erice uao to File erice aopci vu oqioupqoci
apoqutu! a.. otuv oiupuouc cvu upcio, apcaci vu: 1) oiupuci directory inIo
kui 2) oiupuouv Iile blocks Av to apopuu, oe uq, ocv cktccoci to qu (2)
totc couc cvu q-apooacuoio upcio to oaoio ocv aopouc vu oiupuouc.
4.2 Ynqpeoo Kozoz,oo (Directory Service)
ACCE CORO: O dir. erer uao0qkcuci cuq (Iile name, UF). piv
caiotpcci cvu UF, apcaci vu ccci uv o pqotq cci oikuieu apoouoq !
access control.
User Ids: apoooiopiouv tqv tuutotqtu pqotev aou apooacuuvouv upciu.
Ku0c pqotq octictui c cvu user id ctu uao iu oiuoikuoiu authentication
(cukpieoq otoiciev) (a.. passwords). Maopci vu uaupci cepioto authentication
serer.
Access Controll Lists (ACs) a..
Operation Users
Read
rite
Aiotu c pqotc
Aiotu c pqotc
Eaioq ouoc pqotev (c ouoiku oikuieutu apoouoq) aopouv vu
oqioupq0ouv
Luvoq: Acoocvou cvo user id kui cvo Iile name o dir. serer apooacuuvci to AC
tou Iile kui, uv ooi oi ccoi cktccotouv ouu, caiotpcci cvu UF otov pqotq.


Lc oc ti ctcacitu uitqoci tou o pqotq apookoici ovo to UF iu v uaoocici
to oikuieu apoouoq tou oto upcio.
Buoikq Yaqpcoiu Kutuoev:
! Ovouoiu kui cco apoouoq (access control) Aiucipictui directories
(cioiku upciu) Eaiotpcci cvu UF c ku0opiocvu oikuieutu apooacuoq
q u0o! Tu directories caioq ovouovtui c tu UFs.
Actxovyc:
! LookUp(DirUFID, Name, Access Mode, Userld, UFID) - Lc caituiu
ccou apoouoq caiotpcci to UF tou named Iile
! AddName(DirUFID, Name, UFID, UserId)
poo0ctci to cuo (ame, UF) oto directory
! UnName (DirUFID, Name)
To cuo aou acpicci to ame oiupuctui uao to irUF
! ReName (DirUFID, Old Name, New Name)
Auci to cuo (Oldame, UF) -~ (ewame, UF)
! etName (DirUFID, pattern)
Eaiotpcci ou t ovoutu to irUF aou tuipiuouv oto pattern.
To irectory serice apcaci caioq vu aopci vu uuci attributes cvo Iile - a.. to
AC iu vu uaootqpici citoupic chmod. Eaioq apcaci vu aupcci citoupic iu vu
cctuovtui tu attributes.
To directory serice civui o ioioktqtq oev tev directories. Iiu koivopqotu (shared)
directories apcaci vu oqeoouc cvu pqotq ouv owner kui iu otputqikq access-
permission aupooiu c uutq iu tu koivopqotu Iiles.
ucvu Apciu: Iiu citoupiu create-Iile: kuouc to create system call (citoupiu
File erice) kui kutoaiv Addame (citoupiu irectory erice).
4.3 Ynqpeoo Apeov (File Service)
Actxovyc (otu ocoocvu)
! Create (UFID): Aqioupci cvu vco (uocio) Iile kui caiotpcci cvu UF
! Delete (UFID) : Aiupuci to Iile
! Length (UFID) : Eaiotpcci to qko tou Iile
! Read (UFID, position, number, buffer): Aiuuci number bytes upiovtu
uao tq 0coq position tou upciou UF kui tu toao0ctci oto buIIer.
! Write (UFID, position, buffer): Ipuci tu ocoocvu tou buIIer oto Iile UF
otq 0coq position.


Autc oi citoupic, oae opiovtui civui cauvuqic (repeatable). Ouq0citc tq
ouqtqoq (tou RPC) kui apooctc oti clients tou Iile serice aopouv vu apooacuoouv
Iiles pqoioaoievtu to RPC! Oi cauvuqic citoupic caitpcaouv stateless Iile
serers. To U oiutqpci cvuv r/w pointer iu ku0c uvoito Iile uvu process - uuto
civui state. File serercrash ! upici uao tqv upq, o pointer tou serer civui u0o.
nqcxc c Mvqq (Stateful servers): Tou pciuovtui aoc cupoc
upuociutu:
1) Kcioeutu iu oupovioo oc tuutopovq apoouoq.
2) O serer pciuctui vu cpci aoio cci uvtipuo (otqv cache) aoiev Iile blocks.
Acitoupic otu atributes:
- SetAttributes (UFID, attributes)
- etAttributes (UFID, attributes)
UFIDs: pcaci vu civui:
! ovuoiku (ctuu oev tev Iiles kui oev tev hosts aou uoaoiouv to F..)
! ouokoo vu uvtcu0ci
8 bits 32 bits 32 bits
serer host id Iile number random number
serer host id -~ nternet address, (aopci vu civui ikpotcpo iu cvu ethernet)
random number -~ iu vu civui ouokoo vu uvtcu0ci.
Iiu shared Iiles aooi oiuopctikoi tuaoi apoouoq (iu oiuopctikou clients) civui
ouvutoi !Tu UFs apcaci vu civui acpioootcpo cuciktu. Tu UFs aopouv vu
acpicouv cvu permission Iield (a.. r, w, ...) ! oiuopctiku UFs iu oiuopctikou
tuaou apoouoq iu to ioio Iile. upuociu: 2 bits (iu r-o, w-o, rw) iu
permission Iield.
! Xpciuctui aou apoooq c uuto to oqu: To permission Iield apcaci vu
ouvouuctui c to tuuio kouti. Aie kuaoio cukou 0 uuc permissions iu aio
uuotqpq apoouoq.
! Encrypt permission Iield random number pqoioaoievtu cvu kpuo kcioi!
(veoto oto serer).
onoqoq - Aauitcitui ouvuikq uvu0coq (de) allocation tev blocks tou oiokou
eotc vu caitpcaovtui ouvuikc uuc otu upciu.
To Iile cviku kutuuuvci q ouvcocvu disk blocks (Iiuti) To Iile serice oiutqpci
iu ooq ocoocvev, to file inde. To Iile index acpicci tu attributes tou Iile kui iu
ukoou0iu uao pointers otu block aou acpicouv tu ocoocvu tou Iile. To Iile index
apcaci vu uaootqpici sequential random access cvo Iile.


Iiuti tu attributes ocv uao0qkcuovtui oc blocks ui c tu ocoocvu
(Eouv oiuopctikc uauitqoci ccou apoouoq).
Evxonovxo cocvo ocev
nput: UF
Output: Toao0coiu tou Iile index
To kuvci to File Location Map
Ltqv apuutikotqtu ku0c request aou cpctui oto Iile serice acpicci cvu UF kui
cvu oIIset !
(a) UF -~ block pointer oI Iile index
(b) oIIset -~ block pointer to required page
(a)(b) : wo step translation
Tu File ocation Maps kuvouv to (a). E uitiu tq uaupq tou tu Iiles aopouv vu
ctucp0ouv. o (b) ivctui pqoioaoievtu to Iile index.
One step translation: UF oIIset -~ block ptr iu reIerenced block
Auto ouvouuci to File ocation Map kui to Iile index oc iu ooq.
upuociu File index

To Iile index uauooci caioq blocks
Maopouc vu couc Iile index aouaev caiacoev a.. Iile index 2 caiacoev :



To U cci iu ooq aou ovouctui i-node (Iile index).


4.4 Ynqpeoo Ano0queooq (Block Service)
! ococuoq kui uaoococuoq blocks tou oiokou
! ctuopu ocoocvev uao kui apo tu blocks tou oiokou
! ociktc oc blocks: diskid oicu0uvoq oto oioko
Actxovyc
! Allocate Block (blockptr) -- ococuci cvu vco block oto oioko kui caiotpcci
cvu ociktq oc uuto to block
! Free Block (blockptr) -- ccu0cpevci to block aou ocivctui uao to blockptr.


! etBlock (blockptr, buffer) -- oiuuci tu acpicocvu tou block aou
ocivctui uao to ociktq blockptr kui t uao0qkcuci oto buIIer.
! Put Block (blockptr, buffer) -- puci tu acpicocvu tou buIIer oto disk
block aou ocivctui uao to blockptr
Oi aupuauve citoupic uoaoiouvtui pqoioaoievtu acpioootcpo otoicieoci
citoupic tou oiokou (primitive disk ops), oi oaoic aupcovtui uao to deice
module.
Mcyc0o Movo Hqooo (Block Sie)
Tradeoff: ciecvq pqoq uao0qkcutikou epou oto oioko (cuu blocks) cvovxt
kuutcpq pqoq uao0qkcutikou epou oto oioko (ikpotcpu blocks: 0uq0citc tqv
uaupq aoev ikpotcpev upciev). (H ctuopu tev ocoocvev uao to oioko otqv
kupiu vqq civui acpiaou 1 opc aio pqopq uao to kooto uvuqtqoq kooto
acpiotpoq ~ ooo iotcpu blocks uvuqtouc tooo to kuutcpo.
Kuaoiu aio oupovu ouotqutu pqoioaoiouv aouau block sies (U .2.
): Evu block epictui oc tqutu (Iragments) 2,, kui 8. Evu upcio tev bytes
uaotccitui uao ( / b) blocks kui uao kuvcvu q cvu tqu uao ku0c cc0o (b/2, b/,
b/8) (b civui o upi0o tev bytes/block) Euv b civui 8K, aou ikpu upciu aoopuv vu
uao0qkcutouv o cvu uao block (pqoioaoievtu tu tqutu tou). Auto qtuv o
kupio oo tq caituuovoq tou ouotquto upciev tou U uao 2-5 oc
3-7 tou raw disk bandwidth.
4.4.1 Actxovyc xov File Service kot Entkotvevo c xo Block Service
Create: aupuci UF ococuci epo iu to Iile index upikoaoici
oioupuktqpiotiku (attributes) apoo0ctci iu vcu cioooo (entry) oto File ocation Map
caiotpcci to UF.
Delete: oqvci tqv cioooo uao to FM ccu0cpevci ou tu blocks tou upciou ku0e
kui t uvtiotoiu blocks tou Iile index.
Read: pqoioaoicitui q Getlock
Write: (Allocate lock(oto tco tou upciou) Putlock) q (Getlock(oerwrite)
Putlock)
4.5 Aveuziuzqzo oe z0q
Icviku, ctoi apouuooouotc uao uaotuiu (crashing) tou ouotquto, s/w bugs tou
citoupikou ouotquto, apooepivu u0q h/w kutu tq oiupkciu uvuveoq/cpuq
oto oioko.



Hoockxtkq Mvqq (Careful Storage: CarefulPut and Carefulet)
1. Aao0qkcuoq cvo checksum ui c ku0c block ku0c opu aou ctuuovtui
tu acpicocvu tou block.
2. Read: cauvuapoooiopioo tou checksum tev ocoocvev aou oiuuouc kui
oukpioq ckcivo aou civui uao0qkcucvo ui c to block. Euv oiucpouv
totc: cauvcuc - ckutccic kui cacotpcc qvuu u0ou
3. rite: Mctu tqv cpuq, uvuoiuuoc to block uao to oioko kui oukpivc to c
to apetotuao. Eauvcuc, cuv pciuctui. Euv to apoqu ccvci, oqcieoc
to block ec bad qtqoc cvu vco block uao to block serice, kui uvuookiuoc.
uputqpqoq:
Euv to ouotqu uaotuci kutu tq oiupkciu kuaoiu cpuq, totc tu ocoocvu
uvovtui, a.. cvu block ioe cpuci kutu cvu cpo tou. Euv oe to block civui
tqu tou Iile index, totc to upcio uvctui (to ioio c to FM)
Lxo0cq Mvqq (Stable Storage)
Eivui cvu abstraction aou pqoioaoicitui iu v uaocu0ci to aupuauve apoqu
(uoictui oc apoocktiku (careIul) put (careIul) get). pokcicvou to ouotqu v
uvuppeoci uao uaotuic cpuev, pciuctui kuaoio acovuoo. Aoiku, to
ouotqu 0 uaotuci ku0e cpuctui cvu uao tu ouo uvtipuu ~ to uo 0u
aupucivci uvcauo ~ aopouc vu pqoioaoiqoouc to uvcauo uvtipuo iu vu
cauvucpouc to block otqv kutuotuoq aou qtuv apiv to write Iailure.
Evu otu0cpo uao0qkcutiko epo (stable storage) uaotccitui uao otu0cpu blocks
(stable blocks). Ku0c otu0cpo block uvtiapooeacuctui uao ouo oiuopctiku blocks tou
oiokou kui oi citoupic cpuq oicuovtui kui otu ouo blocks (civui apotiotcpo
vu toao0ctouvtui tu ouo uvtipuu oc oiuopctikou oiokou).
Stableet: read one block with CareIulGet cuv ouci u0o totc oiuuoc to uo
block c tqv CareIulGet.
StablePut: puc oc ku0c block c uuotqpq ocipu pqoioaoievtu (careIul) Putlock.
To ocutcpo block cpuctui MONO cuv to apeto (careIul) Putlock qtuv caituc.
Iiu aupuqc citoupic tablePut, pqoioaoicitui monitor q mutex.
4. Apeo "ozo uiupoounio"
Iiuti Apciu 3 kupioi ooi:
1. Iiu vu aopouv apopuutu vu pqoioaoiqoouv aqpoopiu cuutcpq uao
to cc0o tou irtual address space.
2. Iiu vu uaupouv aqpoopic/ocoocvu uvcuptqtu uao tqv eq tev
apopuutev aou tu pqoioaoiouv.


3. Iiu vu aopouv ocoocvu vu oiuoipuovtui ctuu apopuutev.
To F.. civui uacu0uvo iu tqv ooqoq/opuveoq, apooacuoq, apootuoiu, ovouoiu,
kui uoaoiqoq oto oioko.
H ovouoiu uvucpctui otq oiuoikuoiu ctupuoq cvo uqou-caiacoou AC
ovouto oc coetcpiku Iile ids c uoq tu oaoiu to ouotqu aopci vu apooacuoci to
upcio. Autq q oiuoikuoiu uoaoici/apoocpci to abstraction tou Iile (oq. kpuci
catocpcic uoaoiqoq tou Iile).
H ooq tev Iiles aoikici:
! Luvq0e cvu Iile civui uae iu ocipu uao bytes epi kuiu ooq,
touuiotov oc oti uopu to A.L.
! Lc cpiku F.. cvu Iile civui iu ocipu uao records (aou uaotcouvtui uao cvu
oukckpicvo upi0o bytes). Read write citoupic tepu caiopouv oc records
kui oi oc tuuiu bytes.
! L uu F.s cvu Iile cci iu ocvopikq opuveoq, oaou oi coetcpikoi q ooi oi
kooi civui records. Ku0c record cci kui cvu kcioi/kcioocq c uoq tqv
oaoiu to F.. aopci vu apooacuoci tu oukckpicvu records aou couv tqv
qtoucvq kcioocq.
Tuaoi Files:
ata Files: acpicouv user-data
irectory Iiles: acpicouv kupie cuq oae (AC Iile name, coetcpiko Iile id).
lock pecial Files: pqoioaoiouvtui iu vu ovtcoaoiqoouv oiokou ouv upciu !
ua cu0ciu apoouoq oc cvu oioko ivctui c open(), read(), write(), close()...
Character pecial Files: Movtcoaoiouv ocipiukc ouokcuc oae terminal, printers,
h/ws, k.a.
ata Files caioq, aopci vu civui q AC q binary Iiles. AC Iiles acpicouv text
(kcicvo uao AC chars, CR~, k.a). inary Files ouvq0e civui executable images
(oq. apopuutu ctu to compilation (linking) q compiled poutivc iu
iio0qkq aou acpicvouv vu ivouv linked c apopuutu.
Tuaoi apooacuoq: equential Random Access. Ou tu bytes cvo Iile
apooacuuvovtui kutu ocipu (uao to 1o cpi to tccutuio) otuv to Iile
apooacuuvctui c sequential mode. Otuv tu bytes/records cvo Iile apooacuuvovtui
kutu iu tuuiu ocipu totc couc random access.
H tuuiu apooacuoq uoaoicitui c 2 tpoaou:
! Ku0c read() write() apoooiopici aou ukpie oto Iile 0u caiopuoci q
citoupiu - oq. aoio 0u civui to 1o byte read/written.


! To F.. kputuci cvuv read/write pointer (iu ku0c process aou apooacuuvci cvu
Iile). To 1o byte read/written civui uuto oto oaoio ocivci o read/write pointer.
Yaupci kui cvu system call seek() c to oaoio o pqotq aopci vu cvqcpeoci
tov oiko tou r/w pointer.
Acitoupic aou aupcovtui ouvq0e uao cvu F..: open(), close(), read(), write(),
append(), seek(), create(), delete(), get/set-attributes)(, rename().
Oi ovc citoupic aou pciuovtui oikuiooqoq uaupq civui oi open() close(). O
kupio oo uaupq civui perIormance. O pqotq oqevci oti apokcitui vu
apooacuoci cvu Iile c to open(). To F., ccci tu oikuieutu apoouoq tou pqotq
oto upcio kui uaotuicuci otq K.M. tou F pqoic aqpoopic, oae oc aoiu disk
blocks piokovtui uao0qkcucvu tu ocoocvu tou upciou kui tu attributes. Autc oi
aqpoopic ctoi 0u piokovtui otq K.M. kui ctoi ku0c read() write() ocv 0u
pciuotci oiao kooto /O, outc to kooto ccou apoouoq.
Memory mapped files
ooi uaootqpiouv oti to aupuauve interIace tou F.. civui... uoo. Miu
cvuuktikq uoq civui memory-mapped Iiles. O pqotq aopci vu kucoci to Map
(Iilename, irtual address), oaou to irtual address uvtiapooeacuctui uao iu ctuqtq
tou apopuuto tou (a.. char ). To A.L., cktcevtu uutq tqv cvtoq, cvqcpevci
tou aivukc aou kputouv ti oicu0uvoci tev disk blocks aou uaotcouv to swap
space iu to process. Etoi to swap space iu to irtual address space oto oaoio ivctui
map to Iile civui tu disk blocks tou Iile ! tu page Iaults cuaqpctouvtui
apooacuuvovtu tu kutuqu disk blocks ! to process apooacuuvci cvu Iile oae
oaoiuoqaotc data structure tou apopuuto tou (a.. c cvu Ior loop...).
Eaitpcaovtu memory-mapped Iiles oqioupci apoqutu oiuoipuoou. a.. cvu
process cci cvqcpeoci cvu upcio uu tu octiku pages tou upciou ocv couv
uao0qkcutci oto oioko ukou. Evu uo process totc apooacuuvci to upcio
pqoioaoievtu iu aupuociu to kuvoviko File ystem interIace ! ocv 0u oci tqv
aio apooutq aqpoopiu).
4.7 Kozzo,oi "ozo uiupoounio"
Eouc aci oti directories ouvq0e uoaoiouvtui ouv Iiles - directory Iiles.
Icviku oi cpuc cvo directory (directory entries) civui cuq: (Iilename, UF).
Eioikotcpu uuto to UF apoooiopici ti oicu0uvoci tev disk blocks aou uaotcouv
to Iile ku0e kui tu attributes.
Luvq0e, citc to dir. entry acpicci kut cu0ciuv tqv aqpoopiu iu disk block
addresses attributes, citc to dir. entry acpicci cvu pointer oc kuaoio kernel data
structure aou acpicci tqv aupuauve aqpoopiu.


Otuv to F.. cuaqpctci tqv cvtoq open(Iname, ...) uvci to directory cpi vu pci
tqv cpuq iu to Iname. Mctu cvqcpevci cvuv kernel aivuku c tu attributes kui tu
disk block addresses tou Iile Iname. Ou tu read()/write() tou ioiou pqotq i uuto to
upcio pqoioaoiouv uutov tov kernel aivuku iu vu cktccotouv.
Luvu, oi pqotc 0couv vu opuveoouv oiku tu upciu tou. Auto cci ouvq0e e
uaotccou tqv oqioupiu icpupikev F.. Aq. uaupouv directories tu oaoiu
acpicouv uu directories k.o.k. Auto c tq ocipu tou cci e uaotccou tu Iiles vu
ovouovtui c pathnames oae /usr/peter/Ioo. To apeto / civui to root directory tou
F.. Kuaoio dir. tou root cci oou tou pqotc, usr. Evu pqotq civui o peter o
oaoio cci to oiko tou dir to oaoio c tq ocipu tou cci cvu upcio c to ovou Ioo.
Lc tctoiu ouotqutu uaupouv 2 tpoaoi ovouoiu cvo upciou: absolute relatie
path name. To absolute ovou civui ovuoiko iu ku0c upcio kui auvtu upici c to
root directory. To relatie ovou octictui c tqv cvvoiu tou current (q working)
directory. Av to tepivo dir civui to /usr/peter, totc tu ovoutu Ioo /usr/peter/Ioo
uvucpovtui oto ioio upcio. Ku0c process uoiku cci to oiko tq current directory
(oq. civui iu per-process ctuqtq). Etoi uv iu tov pqotq dora to current dir.
civui /usr/dora kui iu tov pqotq peter to current dir civui /usr/peter totc to ovou
Ioo uvucpctui oc oiuopctiku upciu, uvuou c tov pqotq.
Oi aio ouvq0q citoupic aou aupcovtui uao directory serices civui: opendir(),
closedir(), create(), delete(), read-dir(), rename(), link(), unlink().
To readdir() aopci uoaoiq0ci pqoioaoievtu to read() iu to octiko dir. Iile. Au
ouvq0e uoaoicitui oiuopctiku, ctoi eotc vu caiotpcci tqv caocvq cpuq tou
dir. Etoi uauuoctui o apopuutiotq uao tqv uvukq vu cpci ukpie tqv
uoetcpikq ooq tev dir.entries (a.. aoou bytes kui aou civui to Iilename, tu attributes,
disk blocks, k.a).
o link() caitpcaci oc aou directories vu acpicouv to ioio upcio - ctoi caitpcactui
o oiuoipuoo tou upciou uao oiuopctikou pqotc aou to toao0ctouv oto oiko
tou directory.
To unlink() oiupuci cvu directory entry. Av uuto qtuv to ovuoiko dir. entry aou
uvucpctui oto upcio totc to upcio oiupuctui caioq.
4.8 2quovziu Ouozo Yzonoqoq

Atoctoq xev disk blocks cv ocov
Luvq0e o tpoao oiucipioq tev disk blocks cuptutui uao tov tpoao uvu0coq
blocks o cvu upcio.
Yaupouv 3 cvikc otputqikc: contiguous, linked-list, indexed allocation


Lvvctcvq Av0coq (Contiguous): O aio uao tpoao.
Otuv cvu Iile pciuctui disk blocks, totc N ouvcocvu blocks uvuti0cvtui
oto upcio uuto. cpuv tq uaotqtu, uutq q otputqikq cci to acovcktqu
oti iu vu oiuuotci ookqpo to upcio uauitcitui vu aqpe0ci to kooto iu to
disk seek kui to disk rotational delay ovo iu opu. Auto civui aou
oquvtiko!!!
Tu ciovcktqutu ckcitui oto oti ouvu ocv civui veoto uao apiv to cioto
cc0o tou upciou kui upu to F ocv aopci vu cpci aoou disk blocks v
uvu0coci.
Eaioq (kupie otuv tu upciu oiupuovtui) oqioupouvtui apoqutu
Iragmentation. Aq. cvu oioko aopci vu cci ouvoiku Iree blocks kui cvu
upcio aou pciuctui blocks vu qv aopci vu oqioupq0ci oe tou oti tu
Iree blocks tou oiokou ocv civui ouvcocvu.
Auto to apoqu uvctui ovo coe compaction uu uuto otoiici aupu
aou (disktodisk copying...). Maopci oe vu ivci oII-line oq. tqv vutu
otuv to ouotqu ocv pqoioaoicitui.
Linked List Allocation:
M uutq tq otputqikq tu upciu civui iu iotu uao blocks, c cpiku bytes tou
ku0c block vu ocivouv oto caocvo block tq iotu. Etoi uaocuctui to
apoqu Iragmentation. Eaioq to dir. entry uao0qkcuci ovo to address tou
1ou block tou upciou.
To uoiko apoqu uutq tq c0ooou civui oti otuv cai0ucitui random
access, q uaooooq tou ouotquto civui u0iu! a.. Iiu vu apooacuotci to N-
ooto block apcaci vu ivouv N-1 aupuauvioiu disk block /Os.
To apoqu uuto aopci vu u0ci pqoioaoievtu cvu index otq K.M. aou
acpicci tou pointers iu tu disk blocks (uqvovtu tu disk blocks vu acpicouv
ovo data).
Indeed Allocation:
H apetq caioq uopu oto uv uaupci per Iile index q cvu index iu ou tu
upciu oto ouotqu. To U F pqoioaoici per-Iile index cve to M-O
pqoioaoici global index.
Mc global index, to index piokctui auvtu otq KM ! aupuauvioiu disk /Os
cuiotoaoiouvtui. To apoqu oe civui oti to global index kutuvuevci
aou K.M. iuti oiu0ctci cvu entry iu ku0c block tou oiokou.
Evu aupuociu per-Iile index civui tu inodes aou pqoioaoici to U. o inode
apetu acpicci tu attributes. Kutoaiv 1 ptrs oc disk block iu tu apetu 1 blocks tou
Iile. Kutoaiv cvu ptr aou ocivci o cvu disk block (single indirect block) aou c tq ocipu


tou ocivci otu caocvu 25 disk blocks tou Iile. Kutoaiv cvuv ptr oc double indirect
block Kutoaiv cvuv ptr oc triple indirect block.

onoqoq Koxoyev

H ooq tev dir. entries oiucpci uao F oc F oae ciauc. Lto U cci tq opq
(Iname, inode). Ou tu inodes (iu ou tu F) civui uao0qkcucvu otqv upq tou
oiokou aou uao0qkcuci to F, kui ovouovtui c inode1, 2, 3, ...

Mctupuoq Ovouto (Pathname translation): H oiuoikuoiu aou occtui ouv cioooo cvu
pathname (a.. /d1/d2/d3/Ioo) kui aupuci ouv cooo to inode tou upciou.
H oiuoikuoiu uutq cci e cq:
1)
a) To inode iu to root directory / uvuktutui uao tov oioko. (Auto to inode
piokctui o cvu disk address veoto kui q cvqcpeoio).
b) Aa to inode tou root piokovtui tu disk blocks (aou acpicouv tu
dir.entries) uvuktevtui kui uvovtui iu to entry d1. Otuv piokctui to
dir. entry iu to d1 totc pikctui kui to inode tou d1.
2)
a) To inode iu to d1 uvuktutui ua tov oioko.
b) Tu disk blocks tou dir Iile d1 uvuktevtui kui uvovtui iu to entry
d2..
c) Tco to inode disk blocks tou dir3 uvuktevtui kui uvovtui iu to
entry Ioo. Etoi piokctui to inode iu to Iile Ioo to oaoio uvuktutui kui
toao0ctcitui otq vqq (o cvu cache cioiko iu inodes aou cctui inode
table).
3) Aou toao0ctq0ci to inode oto inode table tou kernel o Iile descriptor
aivuku tou process cvqcpevctui. Miu cpuq tou pqoioaoicitui iu
cvuv ptr ukoou0evtu tov oaoio aopci o kernel vu pci to inode oto
inode table. Tco caiotpcctui o ociktq ...





Atootocvo Aco SARED FILES
Iiu vu oicukouv0ci o oiuoipuoo upciev ouvu cvu Iile cuvictui oc aou
oiuopctiku dir. (a.. o cvu dir iu ku0c pqotq aou to oiuoipuctui). Auto
caituuvctui c links aou ouvocouv cvu dir. entry cvu upcio oc kuaoio uo
directory.
Av tu dir. entries cvacpicouv tu disk block addresses totc oto dir. aou opictui to link
o cvu upcio F1 0u apcaci vu ivci cvu uvtipuo tev disk block addresses tou F1. Av
uutu uuouv (a.. append()) totc apokuatci apoqu oiucipioq uvtipuev.
Lto U to apoqu uvctui e cq: ir. entries ocv acpicouv disk block addresses
uu pointers oc kernel data structures aou ti acpicouv (oq. tu inodes).
Miu uq uoq uoictui otqv cvvoiu symbolic link. Otuv oqioupcitui cvu link 1
oto Iile F1, to 1 civui cvu cioiko upcio tuaou link. Tu acpicocvu upciev tuaou link
civui ovo to pathname tou upciou oto oaoio civui links. Oae civui apouvc,
symbolic links apoo0ctouv aupuauve oerhead.
pcaci caioq vu apooc0ci vu qv oqioupouvtui inIinite loops oc apopuutu tu
oaoiu apooacuuvouv ou tu upciu cvo directory tree (q ukou, vu qv
apooacuo0ouv cpiku upciu ~1 opc: iu uao to kuvoviko dir. kui iu coe tou
link).
Av0coq Movev Aokov oc Aco
Oae apociauc, upciu ouvq0e ocv uao0qkcuovtui oc ouvcq sectors tou oiokou.
Auto ouuivci iu vu uaocu0ouv tu apoqutu Iragmentation kui disktodisk
copying.
! upciu epiovtui o cvu upi0o blocks kui to ku0c Iile block uao0qkcuctui oc
ouvcocvu disk sectors.

Mcyc0o BLOC
ooo cuu apcaci vu civui tu Iile blocks Oae apociauc, oc aou acpiuovtu tu
upciu civui ikpu.
! Av to Iile block civui cuo totc 0u oautucitui disk space. Av, uvti0cte, tu Iile
blocks civui ikpu, totc iu vu uvuktq0ci cvu ookqpo upcio 0u pciotouv aou disk
seeks (cvu iu ku0c block).

! H uaooooq (throughput) tou ouotquto 0u civui kukq iuti iu cuu poviku
oiuotqutu o oioko kuvci seek (kui oi pqoic citoupic).

! caouc cvu trade-oII ctuu space eIIiciency throughput.



Atoctoq Ecv0cev Movev oxo Aoko
Luvq0e, pqoioaoiouvtui 2 c0oooi:
Linked List:
Ku0c koo tq iotu civui cvu disk block.
Ku0c koo acpicci:
! tqv oicu0uvoq tou caocvou koou tq iotu
! kui N-1 oicu0uvoci ccu0cpev (Iree) blocks, oaou N civui o upi0o tev disk
block oicu0uvocev aou epouv o cvu disk block. (a.. c cc0o disk blocks
2K kui c 3-byte disk block addresses, 28/3).

Bit Map:
Evu aivuku/oiuvuou (bit map) c N cpuc uauitcitui iu cvu oioko c blocks.
Tu ccu0cpu blocks uvtiapooeacuovtui c tqv tiq 1 oto bit map.
! iu ku0c block kputcitui aqpoopiu cc0ou 1 bit kui oi cpiku bytes oae otq
c0ooo linked list
! (ckto cpikev acpiateocev) q c0ooo bit map civui apotiotcpq, uao acupu
epou. Eaioq, cacioq to bit map civui ikpotcpo ! uaupci cuutcpq ai0uvotqtu vu
epuci otq K.M.
! Av vui, totc q c0ooo bit map apotiutui
! Av oi, totc ku0c block/koo tq iotu (linked list) acpicci ouvq0e aio
aou ccu0cpu blocks ua oti cvu block tou bit map ! ioe vu civui
apotiotcpq q c0ooo linked list.

4.9 Bezziovovzo zqv Anooq zoo 2oozquozo
Oae couc aci, ku0c apoouoq otq K.M. kootici 1 s, cve ku0c apoouoq oto
oioko kootici cpikc ockuoc ms.
! o F 0u cci tq v kuutcpq ouvutq uaooooq ooo aio ic opc pciuctui disk
/O!!!
H caitcuq tou otoou uutou uoictui otqv cvvoiu tou buffer cache. To buIIer cache
civui cvu tqu tq K.M. (oto kernel space) to oaoio uao0qkcuci apooepivu cpiku
disk blocks.
Otuv kuaoio user process qtci apoouoq oc kuaoio block, o kernel optevci apetu
uuto to block otq buIIer cache kui ctu to oivci oto user process address space.
! oi ctucvcotcpc uitqoci (uao to ioio q uu user processes) iu to ioio block 0u
cuaqpctq0ouv uao tq uIIer Cache
! to disk /O uaocuctui!


Etoi, ku0c opu aou qtcitui kuaoio disk block, o kernel apetu uvci tq uIIer Cache
kui ovo uv ocv to pci uacu0uvctui oto oioko.
4uoiku, uauitcitui kuaoio uopi0o replacement iu otuv cici q uIIer Cache.
Auto o uopi0o civui ouvq0e RU (c cpikc uuc).
! piv cvu block tq uIIer Cache iocvqoci cvu kuivoupio disk block, 0u
apcaci to upiko block vu cpuci oto oioko uv cci cvqcpe0ci ooo qtuv otq
uIIer Cache (oq. uv civui dirty).
Autq civui q uvuoq cvcpciu aou ouuivci uao tov paging system, aou
puci cvu page oto swap space apiv to ioio Irame iocvqoci kuaoio
kuivoupio page.
! Oi uuc otov uopi0o RU pciuovtui:
1. iu vu uaocu0ouv ooo to ouvutov acpioootcpu disk /Os.
2. iu vu uaocu0ouv apoqutu uouvcaciu tou F.. q uoio
ocoocvev otuv ououv uc.
! Otuv kuaoio block otq uIIer Cache acpicci cuuio0qtu ocoocvu, ooov uopu
tqv ouvcaciu tou ouotquto, totc otuv uuto to block cvqcpe0ci cpuctui
ucoe oto oioko.
Euuio0qtu ocoocvu civui: inode blocks, directory blocks, kui cviku blocks aou
ocv couv user data.
a.. Lkc0citc ti 0u ouci uv to inode block cvo upciou cvqcpe0ci kui apiv
putci oto oioko, acoci to ouotqu.
! Otuv kuaoio block otq uIIer Cache civui ovo cpike cvqcpecvo totc
toao0ctcitui oto tco tq RU iotu ! uou ocv uvuaqpevctui ucoe
uaupci ai0uvotqtu otuv, ctu uao povo, uvuaqpe0ci, vu cci cvqcpe0ci
ookqpo kui ctoi 0u ouci cvu disk /O iu oc ti cvqcpeoci cvo block.
! Eaioq ouvq0e uaupci kuaoio uve opio, ooov uopu tov povo kutu tov oaoio
cvu cvqcpecvo block aupucvci otq uIIer Cache epi vu cpuci oto
oioko.
! Iiu vu qv u0ouv ocoocvu otuv ououv uc, aou ouotqutu aupcouv
cioiku system calls (a.. Ilush() q YC) tu oaoiu puouv ou cvqcpecvu
blocks otq uIIer Cache oto oioko.
Lto U F.. uaupci cvu background program to oaoio cktccitui ku0c 3 secs to
oaoio cktcci YC ! tu ucvu data aopci vu civui uutu aou putqkuv ovo tu
tccutuiu 3 secs.




oonoqoq (Clustering)
Miu uq tcvikq iu vu ctie0ci q uaooooq cvo F.. uoictui otqv cvvoiu tou
clustering. M uutq tq tcvikq, blocks aou uvuktevtui/ qtouvtui ouvq0e to cvu ctu
to uo, toao0ctouvtui kovtu oto oioko (a.. oto ioio q kuaoio kovtivo kuivopo).
! to seek aou uauitcitui iu v uvuktq0ci to caocvo block apoo0ctci cuioto
oerhead (uou to kooto tou seek civui ouvuptqoq tou oiuotquto aou oiuvuouv oi
kcuc tou oiokou).
pooctc oti otuv q oiucipioq tev Iree blocks ivctui c bit maps oicukouvctui q
uvu0coq ouvcocvev blocks oc kovtivu disk blocks. e aopci vu caitcu0ci kuti
uvuoo c Iree lists
Tono0cxqoq ovovxo vntv xqv nctoxoq okov (Rotationally-optimal
Placement)
Ltputqikc uvu0coq Iree blocks oc Iiles apooau0ouv caioq vu cieoouv tov povo
acpiotpoq (rotational delay). Etoi, otuv ouvcocvu Iile blocks toao0ctouvtui otov
ioio track (q cylinder tou oiokou) uaupci cvu kcvo to cc0o tou oaoiou cuptutui
uao tov povo aou uauitcitui iu tqv ikuvoaoiqoq cvo get-disk-block-request.
a.. uv iu ookqpq acpiotpoq tou oiokou ivctui oc 1 ms kui uao tqv otiq aou
uvuktutui cvu disk block acpvouv 3 ms apiv o oioko uci tqv uitqoq iu to caocvo
block, totc to cc0o tou kcvou civui 3 ms.
Lcxtkq Tono0cxqoq inode kot Data
Lc auiu U F.. tu blocks tev inodes toao0ctouvtui otu upiku blocks tou oiokou.
! uauitcitui cuo seek ctuu tou inode block cvo upciou kui tev data blocks tou
upciou.
Miu uoq oto apoqu uuto uoictui otqv cvvoiu tev cylinder groups. Ku0c cylinder
group uaotccitui uao N ouvcocvu cylinders kui acpicci inodes, blocks iu data, kui
tqv oikq tou Iree list.
Otuv oqioupcitui cvu upcio caicctui oaoiooqaotc inode uao kuaoio cylinder group.
Ku0e to cc0o tou upciou cuevci, to ouotqu kutuuci apooau0cic oute
eotc tu data blocks tou upciou vu piokovtui oto ioio cylinder group c to inode
block.


Kcoto . Lvoxqoxo Etoov -
Eov (INPUT/OUTPUT)
5.1 I/O Yziu
o /O ouotqu uaotcci cvu aou cuo tqu cvo A.L.
Luvq0e oicu0uvci oc ti ouokcuc /O (a.. oiokou, tcputiku, cktuaetc, oiktuu,
...). Kupie apcaci cvu /O ouotqu vu ckoioci cvtoc oti ouokcuc, v uvuvepici kui
vu cuaqpctci tu interrupts tev ouokcuev, kui vu cipictui uc kui u0q octiku c
/O.
piv cctuoouc cvu /O (soItware) ouotqu, u oouc apetu to /O hardware uao
kovtu. Ou cotiuoouc tqv apoooq u oc cvikc aqpoopic iu /O ouokcuc, iu
controllers ouokcuev (deice controllers) kui iu irect Memory Access.
.1.1 I/O Lvokcvc (Devices)
Oae oiokoi, tcputiku, cktuaetc, oiktuu, aovtikiu, tuivic, ... Icviku, epiovtui oc 2
cuc kutqopic block deices kui character deices.
! lock deices uao0qkcuouv aqpoopiu oc ovuoc otu0cpou cc0ou ( bytes)
aou covtui blocks. Ku0c block aqpoopiu cci oikq tou oicu0uvoq kui
aopci vu cpuci q v uvuktq0ci uvcuptqtu uao t uu blocks.
Eaioq, to block uaotcci tqv ikpotcpq ovuou aqpoopiu aou ctucpctui
uao (apo) tqv ouokcuq.
! Character deices oiucipiovtui uooqtq aqpoopiu - oq. uae iu ocipu
uao chars. Acv uaupci q ouvutotqtu oicu0uvoioaoiqoq aqpoopiu kui
uvcuptqtq apoouoq. pcaci vu oqcie0ci apetov oti uaupouv oiuopc
cpqvcic iu tu upuktqpiotiku aou apcaci vu couv blocks kui char. deices.
Acutcpov, oti ukou kui block deices couv cvu character interIace (a.. disks
oc U).
Ooi ouevouv oti oi oiokoi civui block deices kui oti tcputiku, cktuaetc, oiktuu,
aovtikiu civui character deices. ooi caioq 0cepouv ti uvqtikc tuivic e block
deices.
.1.2 Ecykxc Lvokcvev (CONTROLLERS)
! oc ouotkcuc /O couv ouo oiuopctiku tqutu: cvu qcktpoviko kui cvu
quviko. To qcktpoviko tqu, aou civui otqv ouoiu cvu caccpuotq,
ovouctui controller (q adapter).
! O controller civui iu kuptu aou auivci otov uaooiotq. Autq q kuptu cci
cioooc iu ouvococi c /O ouokcuc.
! H caikoiveviu tou controller c ti ouokcuc ivctui coe cvo /O bus. To /O
bus civui oiuopctiko uao to system bus aou ouvocci tov CPU, memory kui
controllers.


! H apetq cu0uvq cvo disk controller civui vu kuvci error checking. petu
opuvevci tu bits aou cpovtui uao tqv ouokcuq oc bytes kui ctu aiotoaoici to
checksum aou acpicci q aqpoopiu. Kutoaiv, q aqpoopiu aopci vu
ctucp0ci otq K.M.
! Luv uo aupuociu cvu terminal controller civui uacu0uvo vu oiuuci tu
bytes (chars) uao tqv K.M. kui vu ku0ooqci tqv uktivu tou CR (o0ovq) iu vu
tuae0ouv oi uvtiotoioi AC upuktqpc. Eaioq, uvuou cipictui
citoupic oae scrolling, k.a.
Entkotvevo c Ecykxc
! O aio oiuocoocvo tpoao uoictui otqv cvvoiu tou memory-mapped /O. Evu
cpo tou address space tou uaooiotq civui uooiecvo (dedicated) vu aupcci
cioikou registers (deice registers - Control and tatus Registers (CR)).
! To A.L. caikoivevci c tov Controller pqoioaoievtu uutou tou registers.
a.. aopci vu puci cvtoc (oivovtu cioikc tic) kui vu opioci tic
aupuctpev oae aio disk block apcaci vu apooacuotci, oicu0uvoq otq K.M.
oaou apcaci v uao0qkcutci, k.a.
! Aou oc0ci iu cvtoq o controller 0u tqv cktccoci kui 0u puci aqpoopic
octiku c tqv cvtoq oc cioikou registers aou 0 cctuotouv uao to A.L. (a..
iu vu oiuaiote0ci uv q cvtoq cktccotqkc caitue).
! Kutoaiv, o controller 0u apokucoci cvu interrupt eotc vu cktccotci to
kutuqo tqu tou A.L. kui vu ouvcioci tqv acpuitcpe caccpuoiu tou /O
call.
.1.3 An Ev0co Hoooq oxq Mvqq (Direct Memory Access -- DMA)
MA uvucpctui otqv ikuvotqtu tev controllers vu cktccoouv aqpe iu /O cvtoq
epi tqv uvuciq tou CPU.
a.. cvu disk controller aopci v uvuktqoci to qtoucvo block uao to oioko kui ctu
vu to ctucpci otqv kutuqq oicu0uvoq otq K.M. Xepi tqv uvukq vu cacci o
CPU vu kuvci tqv uvtipuq uao tov buIIer tou controller otq K.M.
Autq q ikuvotqtu MA cvo controller kpivctui aou oquvtikq iuti c ooov ivctui q
aupuauve uvtipuq, to CPU cktcci cvtoc kuaoiou uou apopuuto ! q
uaooooq tou ouotquto civui kutu aou kuutcpq.
Eiouc ae oi disk controllers couv oikou tou buIIers. Iiuti uutoi pciuovtui
O kupio oo uaoppcci uao tqv uvukq pqoioaoiqoq tou system bus iu vu
ctucp0ci aqpoopiu uao tov oioko otq K.M. To system bus pqoioaoicitui uao to
CPU iu apoouoq otq vqq kui iu caikoiveviu CPU. Etoi, tqv otiq aou tu bits
cvo disk block kutu0uvouv otov controller, to system bus aopci vu qv civui
oiu0coio (oq. vu ctucpci kuaoiu uq aqpoopiu) ! Oi buIIers cvo controller


uaocuouv tctoiu apoqutu. Evu uo apoqu apokuatci uao tqv uvikuvotqtu
cpikev controllers vu kuvouv input kui output tuutopovu.
a.. otuv upiouv MA iu cvu block otov buIIer tou, to caocvo qtoucvo block
tou oiokou acpvu kute uao tqv kcuq kui ov aopci vu uao0qkcutci o cvuv uo
buIIer. Moi tccieoci to 1o MA, totc 0u apcaci vu acpicvci o controller cpi to
caocvo qtoucvo block vu uvuacpuoci kute uao tqv kcuq - iu oquvtikq
ku0uotcpqoq.
Miu uoq oto apoqu uuto uoictui otqv cvvoiu tou block interleaing: Avti tu
blocks cvo track tou oiokou v uao0qkcuovtui c tqv ocipu 1, 2, 3, ... uao0qkcuovtui c
tqv ocipu 1, 5, 2, , 3, 7, , 8
! uvti iu ku0uotcpqoq iu ocoov-ookqpq acpiotpoq iu v uvuktq0ci to
block2, (ooo to block1 ivctui MA) uaupci ovo q ku0uotcpqoq vu acpuoci to
block5 kute uao tqv kcuq.
5.2 Ao,iouiu I/O (Software)
To oioiko cvo /O ouotquto civui aou aouaoko. O ck toutou, ouvq0e,
opuvevctui c tqv oq0ciu aoev caiacoev. Ku0c caiacoo civui uaokciotiku
uacu0uvo iu tqu tq ouvoikq citoupikotqtu kui aupcci interIace kui
oukckpicvc uaqpcoic oto ucoe aio auve caiacoo. Luvq0e to oioiko cvo /O
ouotquto opuvevctui e cq:
user leel s/w
deice independent s/w
deice driers
interrupt handlers

3
2
1
oe q aio oquvtikq cvvoiu octiku c /O s/w vu civui deice independence. Eivui
cku0upo oti cpo tou /O s/w cuptutui uao to cioo kui tu upuktqpiotiku tq /O
ouokcuq. Eivui oe c ioou cai0uqto tu apopuutu aou apooacuuvouv upciu o
cvu Iloppy vu aopouv vu tpcouv uv uutu tu upciu ctucp0ouv oto okqpo oioko.
Miu uq cai0uqtq ioiotqtu civui uniIorm naming: Aq. oc oi ouokcuc
kutuvouovtui ooioopu (a.. oto U t ovoutu ouokcuev civui cvu pathname).
Tco, to /O s/w apcaci vu kpuci tqv uoupovq ouacpiopu/ioiotqtu tou /O (oq.
uoiovtui oc interrupts, kui otuv uutu ououv, to CPU tpcci kuaoio uo
apopuu covtu aokupci to apopuu aou qtqoc to /O ! to process aou kuvci
/O voici oti to /O civui blocking kui oi asynchronous.



.2.1 ctto Atokonev (Interrupts)
Bpiokovtui oto kutetcpo caiacoo tou /O s/w eotc tu uvetcpu caiacou vu qv
pciuctui vu cpouv oc ti ououpcotc catocpcic. Auto caituuvctui c to vu
aokupouv oaoio process caicipci /O (iu to oaoio pciuctui caikoiveviu c tov
controller).
Otuv o controller tccieoci, 0u apokucoci interrupt kui o handler 0u caokupci to
process (a.. uovtu to uao cvu A kui uovtu to oto REAY aou
cctuctui uao tov CPU scheduler - oto U).
.2.2 qyo Lvokcvev (Device Drivers)
cpicci tov keoiku aou civui cuptecvo uao tqv ouokcuq (deice-dependent). O
ooqo cci tqv uoikq cu0uvq vu caikoivevci c tov controller (coe tev CR tou
controller o cvu memory-mapped /O system, oae ciouc apiv).
O ooqo ouvq0e cci cvu work queue oaou cvuaoti0cvtui uitqoci iu /O. H ocipu c
tqv oaoiu oi oiuopc uitqoci uao0qkcuovtui oto work queue cvo drier civui aou
oquvtikq iu tqv uaooooq tou ouotquto iuti ku0opici a.. tqv ocipu c tqv oaoiu
tu qtoucvu disk blocks 0 uvuktq0ouv ( ! coe couc cvu uo cioo scheduling -
disk scheduling).
O drier caioq kputuci upkctc aqpoopic iu tqv ouokcuq aou oiucipictui.
a.. iu cvu oioko apcaci vu cpci tqv cectpiu tou a.. aoou disk platters, aoooi
kuivopoi, aoou tracks oc ku0c kuivopo, aoou sectors oc ku0c track, k.a. Eaioq
apcaci vu cpci oc aoio kuivopo piokctui tepu q kcuq (a.. iu vu cktiqoci uv
pciuctui vu qtqoci uao tov controller vu kuvci eek.
A q otiq ckoeoci tqv cvtoq otov controller, aokupci. Ou tov caokupci o
interrupt handler tou interrupt aou 0u apokucoci o controller otuv oickacpuieoci tqv
cvtoq iu /O. Eu0u ucoe 0u cctuoci tov kutuqo CR register iu tuov u0q.
Av cci uaupci u0o, 0u apooau0qoci vu to uvticteaioci. Aie, 0u caikoivevqoci
c to ucoe uvetcpo caiacoo (oq. to deice indep. s/w) ouvq0e iu vu tou acpuoci
aqpoopiu, oae a.. cvu disk block aou uvuktq0qkc, error message, k.a.
Kutoaiv, uv to work queue ocv civui uocio, 0u uuipcoci tqv caocvq /O uitqoq kui 0u
otcici tqv uitqoq otov controller. Av civui uocio, totc 0u acpicvci tqv caocvq uitqoq
(a.. 0u aokupci uv o drier civui process q ue 0u caiotpcci (oq. kuci return).



.2.3 Aoytotk Avcxqxo Lvokcvev (Device-Independent I/O S/W)
Oi kupic citoupic o uuto to caiacoo civui: ovouoiu (naming), apootuoiu,
buIIering, uvu0coq blocks, oiuitqoiu apoouoq oc uooiecvc ouokcuc kui
uvuopu u0ev, kui buIIering.
Oae ciauc apcaci vu uaupci uniIorm naming. Lto U ku0c deice cci cvu Iile
name (oto oaoio uvtiotoici cvu cioiko inode) - deice special Iile.
To cioiko inode acpicci ouo upi0ou: major deice number, minor deice number. O
major deice number tuutoaoici tov drier (a.. disk drier, tape drier, ...). O minor
deice number tuutoaoici tqv ouokcuq aou cackctui oto /O (a.. aoio oioko).
4uoiku, uou aoc ouokcuc pqoioaoiouvtui uao aoou pqotc, oi ouokcuc
pciuovtui apootuoiu a.. o ku0c pqotq ocv aopci vuci ua cu0ciu apoouoq oc
oaoio oioko 0cci (iuti a.. ocv apcaci vu aopci vu apooacuoci cvq aqpoopiu).
Lto U uuto caituuvctui c tqv pqoq tev rwx bits.
Luvq0e to /O ouotqu s/w pciuctui buIIers otq K.M. Iiu block deices, ciauc oti
q ovuou apooacuoq aqpoopiu civui to block - to h/w ocv caitpcaci tiaotu uo.
Xpqoioaoievtu buIIers to A.L. caitpcaci oc pqotc (user processes) vu
apooacuoouv oaoiooqaotc tqu aqpoopiu 0couv ! kpuctui uutq q h/w
uauitqoq/acpiopioo uao pqotc.
Lc block deices, oae oiokoi, uuto to ouotqu buIIering cci cucpctikc ouvcacic iu
tqv uaooooq tou ouotquto. Iiuti, uv to qtoucvo block civui o cvu buIIer totc
uaocuctui to disk /O.
Lc character deices, oi buIIers pciuovtui iuti a.. input uao aqktpooio aopci vu
0uoci apiv vu aopci vu ivci output.
O uopi0o kui oi ooc ocoocvev, iu vu uvu0ctouv ccu0cpu (Iree) disk blocks,
civui cvu uo cpo tou deice indep. /O s/w.
Mcpikc ouokcuc (a.. cktuaetc) aopouv vu pqoioaoiq0ouv ovo uao cvu process
ku0c opu. Etoi, uitqoci iu q-oiu0coic ouokcuc citc uaoppiatovtui citc
aokupouv.
Otuv o drier ocv aopcoc v uvticteaioci kuaoio u0o (ouvq0e,
apooau0evtu/cauvuuuvovtu to /O call cpikc opc) totc ciooaoici to deice
indep. /O s/w iu to u0o. Auto, uvuou c to cioo tou u0ou, citc to uvucpci oto
User process, citc tcputici to A.L. (iu aio ooupu u0q).



.2.4 Aoytotk oxo Ennco xov qoxq (User-level I/O S/W)
Evu cuo cpo uutou tou tquto acpicci ti library routines (a.. read(), write(),
open(), close(), seek(), printI, getc, ...).
Evu uo cuo cpo civui spooling s/w. Auto to oioiko cci tqv cu0uvq vu
oiucipictui uooiecvc ouokcuc oc multiprogramed ouotqutu (a.. cktuaetc:
ovo cvu pqotq apcaci vu aopci vu cktuaevci ku0c opu).
O spooler civui cvu cioiko process (ouiovu) aou oiucipictui cvu spooling directory.
Iiu vu cktuae0ci cvu upcio, to process to uci oto spooling directory.
O spooler civui to ovo process tou printer. O spooler oi tccieoci iu uitqoq,
auipvci cvu uo upcio uao to spooling directory kui to cktuaevci.
o spooling pqoioaoicitui caioq kui iu uc citoupic: a.. network transIer.
.2. oq Hqooo oxo / s/w

5.3 Mo,vqziuo Aouoi
Aao ti aio oquvtikc ouokcuc cvo oupovou uaooiotq. To acovcktqu tou:
! aou cuutcpq epqtikotqtu uao K.M.
! aio 0qvq vqq
! otu0cpq vqq (non-olatile): otuv kutupcuoci q quvq, tu acpicocvu ocv
uvovtui.
Icecxo:
Kuivopoi acpicouv tracks aou acpicouv sectors. Ku0c oioko tou drie cci 2
caiuvcic. Iiu ku0c caiuvciu uvtiotoici iu kcuq (head). Ooi oi sectors acpicouv
tov ioio upi0o bytes. Av kui tu coetcpiku tracks civui ikpotcpu uao tu cetcpiku,
ou tu tracks couv tov ioio upi0o sectors (oned disks).
(pooutu aupouoiuotqkuv oiokoi, oaou uuto ocv iouci acov ! cetcpiku tracks
couv aio aou sector).


Luvq0e, otuv cvu controller ccci ~ 1 oiokou, totc uaupci q ouvutotqtu iu
oerlapped seeks (oq. o controller qtci ua cvu oioko cvu seek kui apiv tccieoci qtci
kui 2o seek ua uov oioko). Eaioq ouvu aopci vu qtq0ci cvu read/write uao cvu
oioko ku0 ooov uo oioko cktcci iu cvtoq seek. Auotue, oe, aupuqu
read/write oc ouo oiokou cvo controller, ocv civui ouvuto).
4uoiku, tu aupuauve couv cucpctikc ouvcacic iu tqv uaooooq tou ouotquto.
.3.1 Ayt0ot ovonoyooxtoo Hoooq oc Aokov (Disk
Scheduling)
oItware: o uopi0o c uoq tov oaoio o disk drier caicci tqv caocvq uitqoq iu
vu cuaqpctqoci o oioko.
Ltoo tev uopi0ev uutev civui q ctiotoaoiqoq tq uaooooq.
Buoiku ouotutiku kootou apooacuoq otov oioko:
! seek time: kooto ctukivqoq tou puievu (c ti kcuc) oto oeoto
kuivopo. Euptutui uao tqv uaootuoq aou oiuvuctui ! oucpouv ikpu
seeks.
! rotational delay: o povo aou uauitcitui (ctu to seek) eotc to cai0uqto sector
vu cp0ci kute uao tqv kcuq.
! transIer time: o povo aou uauitcitui iu tqv uvuktqoq/ctuopu ocoocvev
(ctu uao seek kui rotational delay) uao/apo tov oioko.
Mc tepivq tcvooiu, to seek time ouvciocpci to cuutcpo kooto ! uuto civui to
kooto aou oi disk scheduling uopi0oi apooau0ouv vu cuiotoaoiqoouv.
Ayt0o FIFO
O drier oiucipictui iu oupu. Kuivoupic uitqoci toao0ctouvtui oto tco tq
oupu.
Mctu uao ku0c interrupt ua tov oioko, aou oqevci to acpu tq apoqoucvq
uitqoq, o drier oivci otov oioko tqv uitqoq otq kopuq tq oupu. 4uoiku, c FFO
ocv apoocpovtui ouvutotqtc cuiotoaoiqoq tou seek time. Iiu vu caituouc uuto
to otoo apcaci vu uioaoiqoouc ti cq veoci tev drier/controller:
! tepivq 0coq (oq. upi0o kuivopou) tev kcuev
! cai0uqto kuivopo iu ku0c uitqoq otqv oupu.
O Ayt0o SORTEST SEE FIRST
Eaocvq uitqoq opictui e uutq aou uvucpctui otov kovtivotcpo kuivopo (oc
ocoq c tov kuivopo aou piokovtui oi kcuc).


O uopi0o oioupu cuiotoaoici to seek time kui civui cukou uoaoiqoio.
To apoqu tou F ckcitui oto oti ocv civui oikuio kui ctoi aopci vu apokuci
staration. a.. q kcuq piokctui otq coq tou oiokou kui iu kuivoupiu uitqoq
kutu0uvci iu tov 1o kuivopo. Mcpi vu cuaqpctq0ci uutq q uitqoq civui ai0uvo
auvtu vu kutu0uvci kuivoupiu uitqoq aio kovtu otq coq tou oiokou (cci
auputqpq0ci oti oi kcuc couv tqv tuoq vu aupucvouv aio aou otou couiou
kuivopou aupu otou ukpuiou).
Ayt0o SCAN
Acctui kui (uvckuotqpu) eleator. Oi kcuc okouaiouv tou oiokou:
! Apiouv cuaqpctevtu tqv uitqoq iu tov aio ikpo kuivopo
! ouvciouv vu kivouvtui otqv ioiu kutcu0uvoq cuaqpctevtu tqv uitqoq iu tov
kuivopo aio kovtu otq tepivq 0coq.
! Otuv cuaqpctqoouv tqv tccutuiu uitqoq, uuouv kutcu0uvoq,
ukoou0evtu tqv ioiu c0ooo.
Ltqv ouoiu CA civui ioio c tov F, ovo aou uaupci q cvvoiu tq kutcu0uvoq.
! acpicvouc (kui ctoi civui) oti o CA civui io cipotcpo uao tov F.
Mc iu ikpq tpoaoaoiqoq o uopi0o ivctui circular CA (q C-CA): Avti v
uuci q kutcu0uvoq, ctu to tco cuaqpctqoq tq tccutuiu uitqoq, upici to
okouaiou aui uao tqv upq (oq. oi kcuc cauvutoao0ctouvtui oto ikpotcpo
kuivopo).
To acovcktqu tou C-CA civui oti cievctui acpuitcpe to ariance (q uaokioq
uao tov coo opo). Iiuti
cpuitcpe ai0uvotqtc ctieoq uaupouv otuv ckkpcouv uitqoci iu oiuopctiku
sectors tou ioiou kuivopou. Otuv o controller cuci tqv aqpoopiu iu to aoio sector
acpvu kute uao tqv kcuq totc o drier cuaqpctci apetu tqv uitqoq iu to sector aou
0u acpuoci kute uao tqv kcuq apetu.
Otuv uaupouv aou dries, ooov ivctui kuaoio transIer, o drier ckoioci cvtoc seek
ot uu dries eotc vu ivouv ooo to ouvutov acpioootcpc citoupic aupuqu.
Aooyqoq c noc ovokcvc
Otuv iu cvtoq cpuq q uvuktqoq tccieoci, o drier aopci vu ccci uv iu
kuaoio drie iouci oti oi kcuc tou civui toao0ctqcvc oc kuivopo iu tov oaoio
uaupci uitqoq oto ork Queue tou drie kui ctoi opooocitui uutq q uitqoq uou
ocv pciuctui vu ivci seek kutu auou ai0uvotqtu to seek civc aupuqu c tqv
apoqoucvq uvuktqoq/cpuq.


pcaci vu oqcie0ci oti oi aio aou-uoaoiqcvoi uopi0oi uoiovtui oc
aupuuc tou CA. Aquoq ivctui apooau0ciu cuiotoaoiqoq tou seek time.
Av q tcvooiu oiokev uuci kui to seek time auuoci vu civui to kupiupo kooto,
totc 0u apokuci q uvukq iu kuivoupiou uopi0ou iu disk scheduling.



Kcoto . Atcoo (DEADLOCS)

.1 Movzzo Aieov
Atcoo cvu ouvoo uao oicpuoic aou oqioupouv iu kukikq uuoiou oaou
ku0c process otqv uuoiou ocv aopci vu apoepqoci kui acpicvci iu kuaoio covo
aou aopci vu apokq0ci ovo uao kuaoio uo co tq uuoiou.
Tu covotu iu tu oaoiu acpicvouv oi oicpuoic civui q uaccu0cpeoq kuaoiou
resource.
Iiu vu pqoioaoiqoouv kuaoio aopo oi oicpuoic apcaci apetu vu:
1. qtqoouv tou aopou: Av ocv civui oiu0coio (oq. kuaoiu uq oiuoikuoiu to
pqoioaoici) totc q oicpuoiu aou to qtuci aokupci.
2. Xpqoioaoiouv tov aopo, uv civui ccu0cpo
3. Aaccu0cpevouv tov aopo.
Avoykoc Lvv0qkc yto Atcoo
Oi caocvc ouv0qkc apcaci vu iououv iu vu oqioupq0ci cvu deadlock:
! mutual exclusion (uoiuio uaokcioo): Movo iu oicpuoiu aopci vu
pqoioaoici cvu resource.
! hold wait: Oi oicpuoic aou ouctcouv oto uoicooo apcaci kui vu
kutcouv kuaoio resource uu kui vu acpicvouv iu kuaoio resource.
! o preemption: Movo q kutcouou oicpuoiu aopci v uaccu0cpeoci to
resource - oq. to resource ocv aopci v uuipc0ci uao tq oicpuoiu.
! circular wait: kukikq uuoiou ~ 2 oicpuoiev, oaou ku0c oicpuoiu acpicvci
iu cvu resource aou to kutcci q caocvq oicpuoiu otqv uuoiou.
Nu oqcie0ci, oti tu resources aopci vu civui oioiko kui uiko (a.. mutex, kcioiu
iu upciu, q oiokoi, cktuaetc, k.a).
To apoqu deadlock ovtcoaoicitui e cq:
! Aqioupcitui cvu puo kutcu0uvocvo.
! Kooi tou puou civui oi oicpuoic kui oi aopoi.
! H ukq P ! R oquivci oti to process P acpicvci iu to resource R.
! H ukq R ! P oquivci oti to process P kutcci to resource R.
! Lto ouotqu uaupci deadlock cuv kui ovo cuv o kutcu0uvocvo puo
acpicci cvu kuko!


Etoi, to ouotqu aopci vu pqoioaoici cvu tctoio puo iu vu uvivcuci deadlock.
Yaupouv cvikc otputqikc iu tqv uvticteaioq tou apoquto:
! Ltpou0okuqioo: Kuvc tiaotu.
! Avivcuoq kui uvuvqq (pqoq tou puou).
! Aaouq deadlock (apoocci aotc oivovtui tu resources oti oicpuoic)
! poqq (oioupcuci oti iu uao ti uvukuic ouv0qkc ocv aopci vu
iouci).
Lxov0okoqto:
To apoqu civui oti q uvticteaioq tou apoquto kootici ukpiu. Ii uuto,
aou A.L. caicouv vu qv uvticteaiouv ku0oou to apoqu - outc kuv
uvivcuoq!!!
To U uvqkci o uutq tqv kutqopiu.

.2 Avveooq uoi Avvqyq
H otputqikq uutq uoictui otq pqoq tou kutcu0uvocvou puou aou
aupouoiuouc apiv, u cvo. A ctcpou, uoictui otqv uaupq cvo uopi0ou aou
ocoocvou cvo kutcu0uvocvou puou, piokci uv uaupci kuko.
E ooov uvivcu0ci cvu kuko-deadlock, q uvuvqq aopci vu uoio0ci (kui ouvq0e
uoictui) otov tcputioo (killing) cpikev oicpuoiev.
H caioq tq oicpuoiu-0uuto: aopci vu ivci uvucou oti oicpuoic aou
ouctcouv oto deadlock. (Tu kpitqpiu aou pqoioaoiouvtui ouvq0e civui, q qikiu
q o upi0o resources aou kutcci, k.a).
q
aopci vu ivci uvucou kui oc uc oicpuoic a.. aopci vu tcputio0ci iu
cuq oicpuoiu aou kutcci aou resources iu tu oaoiu acpicvci kuaoiu
oicpuoiu aou civui oc uoicooo.

.3 Anoo,q Aieov
A uao0coouc oti iu ku0c oicpuoiu, otuv uutq upici, to ouotqu vepici tov
cioto upi0o kui tov tuao ku0c resource aou 0u pciuotci q oicpuoiu.
O veoto ankers algorithm aopci vu pqoioaoiq0ci totc


! uoictui otqv cvvoiu tev saIe states (uouci kutuotuoci). Evu ouotqu
piokctui o cvu saIe state uv:
o ocv uaupci deadlock, kui
o uaupci tpoao ikuvoaoiqoq tev uitqutev iu resources c to vu
opoooqoci ti oicpuoic (c kuaoiu ocipu).
upuociu:
1ci Max
P1 3 9
P2 2
P3 2 7
Ecu0cpu resources: 3
Auto civui cvu saIe state iuti:
! aopouc vu oeoouc 2 (ua tu 3) ccu0cpu resources oto P2.
! otuv tccieoci 0uouc 5 ccu0cpu resources aou tu oivouc oto P3 kui otuv
tccieoci oivouc resources oto P1 kui ctoi ou tccievouv epi deadlock.
Av tepu to P1 cic (uvti iu 3) resources to ouotqu ocv 0u qtuv oc saIe state. Iiuti
Etoi o uopi0o (ankers algorithm) civui:
! Iiu ku0c uitqoq iu cvu resource:
o Ectuoc, uv oivotuv to resource, uv to ouotqu 0u civui o cvu saIe state:
" Av vui, totc oeoc to resource
" Av oi, totc to resource ocv oivctui
o Iiu vu cc0ci uv to ouotqu civui o cvu saIe state:
" cctuctui to: uv oo0ouv tu ccu0cpu resources oc kuaoio process,
totc kuuatovtui oi uvukc tou process
" Av uaupci kuaoio tctoio process, totc uuto to process 0cepcitui
oti tccieoc (ccu0cpevovtu resources). Mctu, cauvuuuvctui
q aupuauve oiuoikuoiu kui uv ou tu process 0cepq0ouv
tcciecvu totc to ouotqu civui oc saIe state. Aoie, to
ouotqu civui oc unsaIe state.
O aupuauve uopi0o pqoioaoicitui iu ouotqutu cvu ovo tuao resources.
O uopi0o aopci cukou vu tpoaoaoiq0ci iu aoou tuaou resources. Avti iu
iu ukcpuiu ctuqtq iu tu resources, uaupouv aivukc:
! as oaou N civui o upi0o tuaev resources oq. asi iu to process P
ocivci aoou resources tuaou i to P kutcci.


! ants aou opictui ooiu kui ckpuci aoou resources ku0c tuaou pciuctui
ku0c process.
! Free: oqevci aoou resources ku0c tuaou civui ccu0cpu.
To cuutcpo apoqu tou ankers algorithm civui q uao0coq tou: Eivui aou
oauvio vu cpouc uao apiv ti uitqoci ku0c process iu tu resources aou apokcitui vu
ckoo0ouv uao tu process upotcpu!
.4 Hpzqyq Aieov
Euevtui, uutc oi otputqikc, oti iu uao ti uvukcic ouv0qkc ocv aopci vu
ouci/iouoci.
! Mutual Exclusion: aou resources uauitouv mutual exclusion (a.. tuivic,
cktuaetc) ! ocv aopouc oc cvikc puc v uaououc mutual
exclusion.
! old ait: uaocuctui uv otq upq tev process ivouv oc oi uitqoci iu
ou tu resources tou process.
Au, oae apociauc, uutq q aqpoopiu ocv uaupci. Eaioq preemption oc
aou resources (a.. cktuaetc) preemption civui uouvuto.
! Circular ait: Maopci v uaocu0ci c tov cq tpoao:
o o ou tu resources oivctui kui cvu uuovtu upi0o.
o ou tu process uvukuovtui vu qtouv tu resources c tqv ocipu aou
uvtiotoici otou upi0ou tev resources ! ctoi ocv aopci vu apokuci
kukikq uuoiou.

Potrebbero piacerti anche