Lezione_14_ Memoria Condivisa e Semafori

Transcript

Lezione_14_ Memoria Condivisa e Semafori
Mem oria Condivisa
e
Sem afori
M. Guarracino - IPC
1
&RPXQLFD]LRQHWUDSURFHVVL
Si è vist o che per far com unicare processi che hanno
un ant enat o in com une si può ut ilizzare una pipe.
Si è anche vist o che le FI FO risolvono alcuni dei
problem i legat i alle pipe.
Se due processi hanno bisogno di scam biarsi dei dat i,
è ut ile fare in m odo che essi condividano delle aree di
m em oria.
M. Guarracino - IPC
2
0HPRULDFRQGLYLVD
La m em oria condivisa è un sem plice ed efficient e
st rum ent o di com unicazione int erprocesso ( I PC) : un
processo crea un segm ent o di m em oria da condividere
con alt ri processi.
Un processo crea un segm ent o di m em oria condiviso
con VKPJHW.
Quest o processo può concedere i perm essi di accesso
al segm ent o e rim uoverlo con VKPFWO.
Una volt a creat o, un segm ent o di m em oria condivisa
può essere collegat o allo spazio di indirizzam ent o del
processo con VKPDW e scollegat o con VKPGW.
M. Guarracino - IPC
3
0HPRULDFRQGLYLVDFRQW
Un segm ent o di m em oria condivisa è descrit t o da una
st rut t ura di cont rollo con un unico ident ificat ivo VKPLG
che punt a ad un'area di m em oria fisica.
Una volt a collegat o con VKPDW, quest o segm ent o può
essere let t o o scrit t o, am m esso che il processo abbia i
perm essi necessari.
Quando più processi hanno il perm esso di scrivere su
di un segm ent o di m em oria, è necessario ut ilizzare un
m eccanism o per evit are inconsist enze e collisioni.
M. Guarracino - IPC
4
0HPRULDFRQGLYLVDDFFHVVR
LQFOXGHV\VW\SHVK!
LQFOXGHV\VLSFK!
LQFOXGHV\VVKPK!
LQWVKPJHWNH\BW NH\ LQWVL]H LQWVKPIOJ
VKPJHW è ut ilizzat a per ot t enere l'accesso ad un
segm ent o di m em oria condivisa e rit orna un
ident ificat ivo del segm ent o di m em oria condivisa.
L'argom ent o NH\ è il valore di accesso al segm ent o di
m em oria condivisa.
L'argom ent o VL]H è la grandezza in byt e del segm ent o
richiest o.
VKPIOJ specifica i perm essi di accesso iniziali e i flag
M. Guarracino - IPC
5
di creazione.
0HPRULDFRQGLYLVDFRQWUROOR
LQFOXGHV\VW\SHVK!
LQFOXGHV\VLSFK!
LQFOXGHV\VVKPK!
LQWVKPFWOLQWVKPLG LQWFPG VWUXFWVKPLGBGV EXI
La funzione VKPFWO m odifica i perm essi e le alt re
carat t erist iche di un segm ent o di m em oria condiviso.
M. Guarracino - IPC
6
0HPRULDFRQGLYLVDFRQWUROOR
LQFOXGHV\VW\SHVK!
LQFOXGHV\VLSFK!
LQFOXGHV\VVKPK!
LQWVKPFWOLQWVKPLG LQWFPG VWUXFWVKPLGBGV EXI
L’argom ent o FPG è uno dei seguent i com andi:
6+0B/2&.
6+0B81/2&.
,3&B67$7
,3&B6(7
,3&B50,'
blocca il segm ent o.
sblocca il segm ent o.
rit orna lo st at o cont enut o in EXI.
inizializza l'effect ive user e group I D
e i perm essi di accesso.
rim uovi
il segm ent o
M. Guarracino - IPC
7
0HPRULDFRQGLYLVDFRQWUROOR
LQFOXGHV\VW\SHVK!
LQFOXGHV\VLSFK!
LQFOXGHV\VVKPK!
LQWVKPFWOLQWVKPLG LQWFPG VWUXFWVKPLGBGV EXI
EXI è una st rut t ura di t ipo VWUXFWVKPLGBGV, definit a in
V\VVKPK!.
M. Guarracino - IPC
8
0HPRULDFRQGLYLVDFROOHJDPHQWR
LQFOXGHV\VW\SHVK!
LQFOXGHV\VLSFK!
LQFOXGHV\VVKPK!
YRLG VKPDW LQWVKPLG FRQVWYRLG VKPDGGU LQWVKPIOJ LQWVKPGW FRQVWYRLG VKPDGGU
Le funzioni VKPDW e VKPGW servono per collegare e
scollegare i segm ent i di m em oria condivisa, creat i o
apert i con VKPJHW, allo spazio di indirizzam ent o del
processo.
VKPDW rit orna un punt at ore alla prim a locazione di
m em oria del segm ent o associat o con l’ident ificat ivo
VKPLG.
M. Guarracino - IPC
9
0HPRULDFRQGLYLVDFROOHJDPHQWR
LQFOXGHV\VW\SHVK!
LQFOXGHV\VLSFK!
LQFOXGHV\VVKPK!
YRLG VKPDW LQWVKPLGYRLG VKPDGGU LQWVKPIOJ LQWVKPGW FRQVWYRLG VKPDGGU
VKPDGGU può essere ut ilizzat o per specificare a quale
indirizzo collegare il segm ent o di m em oria. Per m ot ivi
di port abilit à VKPDGGU è 0.
I l segm ent o è collegat o in let t ura e scrit t ura. Se si
vuole un segm ent o a sola let t ura, si pone VKPIOJ
uguale a 6+0B5'21/<.
VKPGW scollega il segm ent o di m em oria punt at o da
M. Guarracino - IPC
VKPDGGU.
10
:H
OOQDPHRXUVKDUHGPHPRU\VHJPHQW
NH\ &UHDWHWKHVHJPHQW LI VKPLG VKPJHWNH\6+06=,3&B&5($7_^
SHUURUVKPJHW
H[LW
`
M. Guarracino - IPC
1RZZHDWWDFK WKH VHJPHQWWRRXU GDWDVSDFH
(VHPSLR
LQFOXGHV\VW\SHVK!
LQFOXGHV\VLSFK!
LQFOXGHV\VVKPK!
LQFOXGHVWGLRK!
GHILQH 6+06=
LQWPDLQVHUYHU ^
FKDU F
LQWVKPLG
NH\BW NH\
FKDU VKPV
11
1RZZHDWWDFK WKH VHJPHQWWRRXU GDWDVSDFH
LI VKP VKPDWVKPLG18// FKDU ^
SHUURUVKPDW
H[LW
`
1RZLQL]LDOL]H WKHPHPRU\VHJPHQW
V VKP
IRU F D
F ]
F
V F
V 18//
(VHPSLR
`
)LQDOO\ ZHZDLWXQWLO WKH RWKHUSURFHVVFKDQJHV WKHILUVW FKDUDFWHU
RIRXUPHPRU\WR LQGLFDWLQJWKDWLWKDVUHDGZKDW ZHSXWWKHUH
ZKLOH VKP VOHHS
`
H[LW
M. Guarracino - IPC
12
(VHPSLR
LQFOXGHV\VW\SHVK!
LQFOXGHV\VLSFK!
LQFOXGHV\VVKPK!
LQFOXGHVWGLRK!
GHILQH 6+06=
LQWPDLQFOLHQW ^
LQWVKPLG
NH\BW NH\
FKDU VKPV
:HQHHGWRJHW WKH VHJPHQWQDPHG NH\ /RFDWHWKH VHJPHQW LI VKPLG VKPJHWNH\6+06=^
SHUURUVKPJHW
H[LW
M. Guarracino - IPC
`
13
1RZZHDWWDFK WKH VHJPHQWWRRXU GDWDVSDFH
LI VKP VKPDWVKPLG18// FKDU ^
SHUURUVKPDW
H[LW
`
1RZUHDGZKDW WKHVHUYHU SXW LQWKH PHPRU\ IRU V VKPV 18//V
SXWFKDUV
SXWFKDU
?Q
(VHPSLR
`
H[LW
)LQDOO\ FKDQJH WKHILUVW FKDUDFWHU RIWKH VHJPHQWWR VKP `
H[LW
M. Guarracino - IPC
14
/HFKLDYL
Com e si può concordare una chiave?
1. Un processo può creare un sem aforo con la chiave
,3&B35,9$7(, scrivere l'ident ificat ivo in un file da cui
gli alt ri possono leggerlo. Per i processi genit ore/ figlio
l'ident ificat ivo viene ot t enut o dal genit ore m ediant e
una chiave e passat o al figlio con una H[HF.
2. I processi possono leggere una chiave, definit a in
un file.
3. I processi possono accordarsi su un nom e di file ed
un ident ificat ivo di proget t o ( un carat t ere) ed ut ilizzare
IWRN per convert ire t ali valori in una chiave.
M. Guarracino - IPC
15
6LQFURQL]]D]LRQH
Quando più processi condividono delle risorse, è
necessario ut ilizzare dei m eccanism i per evit are
inconsist enze e collisioni.
Tra quest i m eccanism i vi sono i sem afori.
M. Guarracino - IPC
16
6HPDIRUL
I n un t rat t o di linea ferroviaria c'è un singolo binario
sul quale un t reno alla volt a può passare.
A guardia di quest o t rat t o vi è un sem aforo. Un t reno
deve at t endere che il sem aforo perm et t a il t ransit o.
Quando il t reno at t raversa il t rat t o, il sem aforo cam bia
st at o per evit are che alt ri t reni ent rino in quel t rat t o.
Quando il t reno lascia il t rat t o, il sem aforo cam bia
st at o per perm et t ere ad un alt ro t reno di ent rare in
quel t rat t o.
M. Guarracino - IPC
17
6HPDIRULFRQW
Nella program m azione, i sem afori vengono ut ilizzat i
per cont rollare la disponibilit à di risorse che possono
essere condivise e un sem aforo è un int ero.
Un processo at t ende che il sem aforo divent i 0 per
eseguire un'operazione.
Quando il processo esegue un'operazione, increm ent a
il sem aforo di 1. Quando il processo ha finit o, aggiorna
il valore del sem aforo sot t raendo 1.
M. Guarracino - IPC
18
6HPDIRULFRQW
I sem afori possono essere ut ilizzat i sia singolarm ent e,
sia com e insiem i.
Un insiem e di sem afori:
• viene inizializzat o con VHPJHW
• le operazioni vengono eseguit e con VHPRS
• i perm essi o il propriet ario sono m odificat i con VHPFWO
Quando si crea un sem aforo, deve essere specificat a
una chiave NH\ che deve essere not a a t ut t i i processi
che vogliono ut ilizzare la st rut t ura.
M. Guarracino - IPC
19
6HPDIRULLQL]LDOL]]D]LRQH
La funzione VHPJHW inizializza o fa accedere ad un
sem aforo.
LQFOXGHV\VW\SHVK!
LQFOXGHV\VLSFK!
LQFOXGHV\VVHPK!
LQWVHPJHW NH\BW NH\ LQWQVHPV LQWVHPIOJ VHPJHW rit orna un int ero, l’ ident ificat ivo del sem aforo,
ut ilizzat o dalle funzioni VHPRS e VHPFWO.
L’argom ent o NH\ è un valore di accesso associat o con il
sem aforo.
QVHPV specifica il num ero di sem afori nell'insiem e; se
si st a accedendo ad un insiem e esist ent e e t ale
M. Guarracino
- IPC
20
num ero non è not o, si può
passare
0.
6HPDIRUL LQL]LDOL]]D]LRQH FRQW
L’argom ent o VHPIOJ specifica i perm essi di accesso
iniziali e i flag di cont rollo sull’accesso.
3HUPHVVL
'HVFUL]LRQH
6(0B5
let t ura ut ent e
6(0B$
6(0B5!!
6(0B$!!
6(0B5!!
6(0B$!!
scrit t ura ut ent e
let t ura gruppo
scrit t ura gruppo
let t ura alt ri
scrit t ura alt ri
M. Guarracino - IPC
21
6HPDIRUL
I valori possibili per VHPIOJ sono una com binazione di
6(0B5 e 6(0B$ con:
,3&B&5($7 per creare un nuovo sem aforo. Se il flag
non è usat o, VHPJHW cerca il sem aforo associat o alla
chiave e cont rolla i perm essi dell'ut ent e.
,3&B(;&/ viene ut ilizzat o con ,3&B&5($7 affinché
VHPIOJ rit orni un errore se il sem aforo esist e.
M. Guarracino - IPC
22
# include "unpipc.h"
int main(int argc, char **argv)
{
int c, oflag, semid, nsems;
(VHPSLR
}
oflag = (SEM_R | SEM_A | SEM_R>>3 | SEM_R>>6) | IPC_CREAT;
while ( (c = getopt(argc, argv, "e")) != -1) {
switch (c) {
case ’e’:
oflag |= IPC_EXCL;
break;
}
}
if (optind != argc - 2)
err_quit("usage: semcreate [ -e ] <pathname> <nsems>");
nsems = atoi(argv[optind + 1]);
semid = semget(ftok(argv[optind], 0), nsems, oflag);
exit(0);
M. Guarracino - IPC
23
2SHUD]LRQLVXLVHPDIRUL
LQFOXGHV\VW\SHVK!
LQFOXGHV\VLSFK!
LQFOXGHV\VVHPK!
LQWVHPRS LQWVHPLG VWUXFWVHPEXI VRSVXQVLJQHGQVRSV VHPRS esegue operazioni su di un insiem e di sem afori.
L’argom ent o VHPLG è l'ident ificat ivo di sem aforo
rit ornat o da VHPJHW.
L'argom ent o VRSV è un punt at ore ad un array di
st rut t ure, ciascuna cont enent e:
• il num ero di sem aforo,
• l'operazione da eseguire,
• i flag di cont rollo, se necessari.
QVRSV specifica la lunghezza dell'array.
M. Guarracino - IPC
24
2SHUD]LRQLVXVHPDIRULFRQW
La st rut t ura VHPEXI specifica un’operazione su
sem aforo, com e definit o in V\VVHPK!
VWUXFWVHPEXI ^
VKRUWBW VHPBQXP
VHPDSKRUHQXPEHU VKRUW VHPBRS
VHPDSKRUHRSHUDWLRQ VKRUW VHPBIOJ
RSHUDWLRQIODJV ,3&B12:$,7
6(0B81'2
`
VHPBQXP è il num ero del sem aforo su cui eseguire
l'operazione.
M. Guarracino - IPC
25
2SHUD]LRQLVXVHPDIRULFRQW
L’operazione da eseguire su VHPBQXP è det erm inat a
da VHPBRS com e segue:
• un valore int ero posit ivo increm ent a il sem aforo di
quel valore.
• un valore int ero negat ivo decrem ent a il sem aforo di
quel valore. I l t ent at ivo di assegnare un valore
negat ivo ad un sem aforo o fallisce o blocca, a
seconda che ,3&B12:$,7 è in effet t o.
• un valore zero m et t e il processo in at t esa fino a
quando il valore del sem aforo ha raggiunt o il valore
0.
M. Guarracino - IPC
26
2SHUD]LRQLVXVHPDIRULFRQW
Ci sono due flag di cont rollo che possono essere usat i
nel cam po VHPBIOJ della st rut t ura VHPEXI:
,3&B12:$,7 La funzione rit orna senza alt erare nessun
valore del sem aforo se una qualsiasi operazione non
può essere eseguit a.
6(0B81'2 Perm et t e di annullare le operazioni
eseguit e sull'array quando il processo t erm ina.
M. Guarracino - IPC
27
2SHUD]LRQLVXVHPDIRULFRQW
VRSV è un punt at ore ad un array di st rut t ure di
operazioni su sem aforo.
Ciascuna st rut t ura nell'array cont iene i dat i per
eseguire un'operazione su sem aforo. Se un'operazione
fallisce, nessuno dei sem afori è alt erat o.
I l processo si blocca ( se non è st at o specificat o
,3&B12:$,7) fino a che:
• le operazioni sui sem afori sono t ut t e com plet at e,
• il processo riceve un segnale,
• l'insiem e dei sem afori è rim osso.
M. Guarracino - IPC
28
2SHUD]LRQLVXVHPDIRULFRQW
Solo un processo alla volt a può aggiornare un
sem aforo. Richiest e sim ult anee eseguit e da processi
diversi, vengono eseguit e in un ordine arbit rario.
Quando viene chiest o di eseguire un array di
operazioni, le m odifiche non vengono eseguit e fino a
che t ut t e le operazioni nell'array sono com plet at e.
M. Guarracino - IPC
29
LQWPDLQLQWDUJF FKDU DUJY
^
LQWFL IODJ VHPLG QRSV
VWUXFWVHPEXISWU
(VHPSLR
LQFOXGHXQSLSFK
IODJ ZKLOH F JHWRSWDUJF DUJYQX ^
VZLWFK F^
FDVH
Q
IODJ _ ,3&B12:$,7 IRUHDFKRSHUDWLRQ EUHDN
FDVH
X
IODJ _ 6(0B81'2 IRUHDFKRSHUDWLRQ EUHDN
`
`
M. Guarracino - IPC
30
LI DUJF RSWLQG DUJF RSWLQG DUJVUHPDLQLQJ HUUBTXLWXVDJH VHPRSV >Q@>X@SDWKQDPH!RS
EUHDN
`
`
LI DUJF RSWLQG DUJF RSWLQG DUJVUHPDLQLQJ HUUBTXLWXVDJH VHPRSV >Q@>X@SDWKQDPH!RS
VHPLG VHPJHWIWRNDUJY>RSWLQG@
RSWLQG
QRSV DUJF RSWLQG
`
DOORFDWH PHPRU\WRKROGRSHUDWLRQV VWRUHDQG SHUIRUP SWU FDOORFQRSV VL]HRIVWUXFWVHPEXI
IRU L L QRSVL^
SWU>L@VHPBQXP L
SWU>L@VHPBRS DWRLDUJY>RSWLQG L@RU!
SWU>L@VHPBIOJ IODJ
`
VHPRSVHPLG SWU QRSV
H[LW
M. Guarracino - IPC
31
&RQWUROORGHLVHPDIRUL
LQFOXGHV\VW\SHVK!
LQFOXGHV\VLSFK!
LQFOXGHV\VVHPK!
LQWVHPFWO LQWVHPLG LQWVHPQXP LQWFPG
XQLRQ VHPXQDUJ
VHPFWO cam bia i perm essi ed alt re carat t erist iche di un
insiem e di sem afori.
La funzione deve essere chiam at a con un ident ificat ivo
di sem aforo VHPLG valido ( rit ornat o da VHPJHW) .
I l valore di VHPQXP perm et t e di selezionare un
sem aforo in un array at t raverso il suo indice.
M. Guarracino - IPC
32
&RQWUROORGHLVHPDIRULFRQW
L’argom ent o FPG è uno dei seguent i flag:
*(79$/ rit orna il valore di un singolo sem aforo.
6(79$/ assegna il valore di un singolo sem aforo.
*(7$// rit orna il valore di t ut t i i sem afori; arg è
arg.array, punt at ore ad un array di unsigned short .
6(7$// inizializza il valore di t ut t i i sem afori in un
insiem e; DUJ è DUJDUUD\.
*(73,' rit orna il pid del processo che ha eseguit o
l'ult im a operazione sul sem aforo.
*(71&17 rit orna il num ero di processi che at t endono
che il valore del sem aforo increm ent i.
*(7=&17 rit orna il numM.ero
di -processi
che at t endono
Guarracino
IPC
33
che il valore del sem aforo sia zero.
&RQWUROORGHLVHPDIRULFRQW
,3&B67$7
rit orna le inform azioni sullo st at o del
sem aforo e le pone nella st rut t ura punt at a da DUJEXI,
un punt at ore ad un buffer di t ipo VHPLGBGV.
,3&B6(7 inizializza gli user e group I D e perm essi. I n
quest o caso DUJ è DUJEXI.
,3&B50,' rim uove il set di sem afori specificat o da
VHPLG.
M. Guarracino - IPC
34
&RQWUROORGHLVHPDIRULFRQW
I l quart o argom ent o DUJ è opzionale, e dipende
dall'operazione che si com pie.
Se richiest o, è di t ipo XQLRQ VHPXQ, che deve essere
esplicit am ent e dichiarat a nell'applicazione com e:
XQLRQVHPXQ ^
LQWYDO
YDOXHIRU 6(79$/
VWUXFWVHPLGBGV EXIEXIIRU ,3&B67$7,3&B6(7
XQVLJQHG VKRUW LQW DUUD\DUUD\IRU *(7$//6(7$//
VWUXFWVHPLQIR BBEXIEXIIHU IRU ,3&B,1)2
`
M. Guarracino - IPC
35
LQWPDLQLQWDUJF FKDU DUJY
^
LQWVHPLG
LI DUJF (VHPSLR
LQFOXGHXQSLSFK
HUUBTXLWXVDJH VHPUPLG SDWKQDPH!
VHPLG
VHPJHWIWRNDUJY>@
VHPFWOVHPLG,3&B50,'
`
H[LW
M. Guarracino - IPC
36
LI DUJF HUUBTXLWXVDJH VHPVHWYDOXHV SDWKQDPH!> YDOXHV @
(VHPSLR
LQFOXGHXQSLSFK
LQWPDLQLQWDUJF FKDU DUJY
^
LQWVHPLG QVHPVL
VWUXFWVHPLGBGVVHPLQIR
XQVLJQHG VKRUWSWU
XQLRQ VHPXQDUJ
ILUVW JHW WKH QXPEHU RI VHPDSKRUHV LQWKHVHW
VHPLG VHPJHW)WRNDUJY>@
DUJEXI VHPLQIR
VHPFWOVHPLG,3&B67$7 DUJ
QVHPV DUJEXI!VHPBQVHPV
QRZJHW WKH YDOXHVIURP WKH FRPPDQG OLQH
LI DUJF QVHPV HUUBTXLWG VHPDSKRUHV LQVHWG YDOXHVVSHFLILHG
M. Guarracino - IPC
QVHPV DUJF
37
LI DUJF HUUBTXLWXVDJH VHPVHWYDOXHV SDWKQDPH!> YDOXHV @
ILUVW JHW WKH QXPEHU RI VHPDSKRUHV LQWKHVHW
VHPLG VHPJHWIWRNDUJY>@
DUJEXI VHPLQIR
VHPFWOVHPLG,3&B67$7 DUJ
QVHPV DUJEXI!VHPBQVHPV
QRZJHW WKH YDOXHVIURP WKH FRPPDQG OLQH
LI DUJF QVHPV HUUBTXLWG VHPDSKRUHV LQVHWG YDOXHVVSHFLILHG
QVHPV DUJF
DOORFDWH PHPRU\WRKROGDOO WKH YDOXHV LQWKHVHWDQGVWRUH SWU FDOORFQVHPV VL]HRIXQVLJQHG VKRUW
DUJDUUD\ SWU
IRU L L QVHPVL
SWU>L@ DWRLDUJY>L@
VHPFWOVHPLG6(7$// DUJ
H[LW
M. Guarracino - IPC
`
38
LQWPDLQLQWDUJF FKDU DUJY
^
LQWVHPLG QVHPVL
VWUXFWVHPLGBGVVHPLQIR
XQVLJQHG VKRUWSWU
XQLRQ VHPXQDUJ
(VHPSLR
LQFOXGHXQSLSFK
LI DUJF HUUBTXLWXVDJH VHPJHWYDOXHV SDWKQDPH!
ILUVWJHW WKH QXPEHU RI VHPDSKRUHV LQWKHVHW
VHPLG VHPJHWIWRNDUJY>@
DUJEXI VHPLQIR
VHPFWOVHPLG,3&B67$7 DUJ
QVHPV DUJEXI!VHPBQVHPV
DOORFDWHPHPRU\WRKROGDOO WKH YDOXHV LQWKHVHW
SWU FDOORFQVHPV VL]HRIXQVLJQHG
M. Guarracino VKRUW
- IPC
DUJDUUD\ SWU
39
LI DUJF HUUBTXLWXVDJH VHPJHWYDOXHV SDWKQDPH!
ILUVWJHW WKH QXPEHU RI VHPDSKRUHV LQWKHVHW
VHPLG VHPJHWIWRNDUJY>@
DUJEXI VHPLQIR
VHPFWOVHPLG,3&B67$7 DUJ
QVHPV DUJEXI!VHPBQVHPV
DOORFDWHPHPRU\WRKROGDOO WKH YDOXHV LQWKHVHW
SWU FDOORFQVHPV VL]HRIXQVLJQHG VKRUW
DUJDUUD\ SWU
IHWFK WKH YDOXHV DQG SULQW VHPFWOVHPLG*(7$// DUJ
IRU L L QVHPVL
SULQWIVHPYDO>G@ G?QL SWU>L@
`
H[LW
M. Guarracino - IPC
40
>PDULRJ@ WRXFK WPSULFK
>PDULRJ@ VHPFUHDWH HWPSULFK >PDULRJ@ VHPVHWYDOXHV WPSULFK VHPDSKRUHV LQVHW YDOXHVVSHFLILHG
>PDULRJ@ VHPVHWYDOXHV WPSULFK >PDULRJ@ VHPJHWYDOXHV WPSULFK
VHPYDO>@ VHPYDO>@ (VHPSLRFRQW
Eseguendo gli esempi su una macchina Linux, si ottiene:
VHPYDO>@ >PDULRJ@ VHPRSV XWPSULFK
M. Guarracino - IPC
41
>PDULRJ#GHQHE VYVHP@ VHPJHWYDOXHV WPSULFK
VHPYDO>@ VHPYDO>@ VHPYDO>@ >PDULRJ@ VHPRSVWPSULFK
>PDULRJ@ VHPJHWYDOXHV WPSULFK
VHPYDO>@ (VHPSLRFRQW
Eseguendo gli esempi su una macchina Linux, si ottiene:
VHPYDO>@ VHPYDO>@ >PDULRJ@
M. Guarracino - IPC
42
6HPDIRUL326,;
I sem afori POSI X sono singoli sem afori, non array.
Le operazioni POSI X sui sem afori sono:
VHPBRSHQ connet t e o crea un sem aforo,
VHPBLQLW inizializza un sem aforo,
VHPBFORVH chiude la connessione con un sem aforo,
VHPBXQOLQN chiude la connessione e rim uove il
sem aforo quando l’ult im o processo lo chiude,
VHPBJHWYDOXH copia il valore di un sem aforo in una
variabile int era,
VHPBZDLW e VHPBWU\ZDLW aspet t a che il sem aforo sia
rilasciat o da un alt ro processo,
VHPBSRVW increm ent a ilM.cont
at- ore
del sem aforo.
Guarracino
IPC
43
3URJHWWL
I l proget t o, relat ivo a ciascuno st udent e e scelt o t ra i t re
proget t i allegat i, andrà consegnat o al docent e non olt re il
giorno previst o per la prova prat ica di Laborat orio di Sist em i
Operat ivi dell'appello di cui si int ende discut erlo, insiem e ad
una docum ent azione cont enent e:
Una relazione di non piu'di 6 pagine ( font 10pt , spaziat ura
18pt , m argini 2,5 cm , una facciat a a pagina) che cont enga:
1. I l t it olo ( 1 riga m ax) ,il som m ario, l'int roduzione, le
t ecniche, i risult at i, le conclusioni e i riferim ent i.
2. un m anuale sullo st ile UNI X che descriva le m odalit à di
im piego del sist em a, dal punt o di vist a dell’ut ent e.
3. alcuni esem pi di esecuzione del program m a che m et t ano
in evidenza la robust ezza.
4. il list at o com plet o del program m a su floppy disk,
M. Guarracino - IPC
opport unam ent e com m ent at o.
44
3URJHWWR,
Progettare e realizzare in ambiente UNIX/ Linux una shell, utilizzando il linguaggio C e
le primitive POSIX, che permetta all’utente:
1. l’esecuzione di una qualunque utility (file eseguibile) si trovi nel $path. L’utility deve
essere eseguita in foreground, e quindi ogni eventuale segnale generato a tastiera,
tipo ^ C, deve essere effettivamente diretto all’utility in esecuzione in quel momento,
senza interrompere l’esecuzione dell’interprete.
2. l’esecuzione di comandi in background con la notazione:
back < comando1> arg1 ... argN - < comando2> arg1 ... argM - ...
3. la terminazione dei processi in foreground con < CTRL-C> e di quelli in background,
intercettando il < CTRL-C> e chiedendo l’identificativo del processo in background da
terminare.
4. l’esecuzione di comandi in pipe per il caso di 2 o piu’ comandi:
pipe < comando1> , < comando2> , ..., < comandoN>
cioè lo standard output di comando1 è collegato con lo standard input di
comando2, il cui standard output è collegato con ... lo standard input di comandoN
5. l'
esecuzione dei comandi ricorsivamente nelle sottodirectory:
reco < comando>
esegue comando ricorsivamente, traversando il sottoalbero radicato nella
directory corrente.
M. Guarracino - IPC
45
3URJHWWR
Scopo del progetto è di eseguire delle misure di prestazioni di un sistema operativo.
Si scelga una piattaforma hardware/ software e su questa piattaforma si effettuino le
seguenti misure:
I) Precisione del clock: si misuri la precisione del clock misurando l'
elapsed time
necessario all'
esecuzione di un semplice loop. Si inizi con una singola iterazione e se
ne aumenti man mano il numero, fino a quando la differenza tra i valori del clock
iniziali e finali non diventano maggiori di zero. Si prenda in considerazione il piu'
piccolo numero non nullo.
II) Chiamata di sistema: si misuri l'
elapsed time di tre semplici chiamate di sistema,
come ad esempio getpid. (attenzione al caching dei risultati per chiamate
ripetute).
III) Context switch: si misuri il tempo di context switch tra due processi con:
1)Segnali: il processo A manda un segnale al processo B che, alla ricezione
del segnale, manda ad A un altro segnale. Si ripeta per un numero sufficiente di
volte.
2)Pipe: A manda a B 1 byte e B, alla ricezione manda ad A un altro byte. Si
M. Guarracino - IPC
46
ripeta per un numero sufficiente di volte.
IV) Lettura/ scrittura su file: si misuri il tempo per leggere e scrivere dei file di
grandi dimensioni con:
1) chiamando read,
2) usando le funzioni della libreria standard di I/ O,
64K.
Per ciascun caso si utilizzino letture a blocchi di 8, 64, 512, 1024, 4096, e
(attenzione al caching dei file).
Per ottenere delle misure credibili, bisogna ripeterle varievolte e dividere il risultato
per il numero delle ripetizioni.
Si riassumano i risultati mediante grafici e tabelle.
M. Guarracino - IPC
47
(VHUFL]L
1. Realizzare una rout ine shellm enu in C che, ut ilizzando le
chiam at e di POSI X, st am pa un m enu di com andi ed esegue
quello scelt o dall’ut ent e.
2. Realizzare una rout ine t im eout in C che, ut ilizzando le
chiam at e di POSI X, lancia un figlio che st am pa qualcosa e si
sospende per 50 sec. I l genit ore set t a una sveglia per < n>
secondi ( valore di default 2) e allo scadere arrest a il figlio.
Sint assi: t im eout [ - < n> ]
3. Realizzare una rout ine m ypipe in C che, ut ilizzando le
chiam at e di POSI X, crea una pipe t ra due com andi < cm d1> e
< cm d2> .
Sint assi: m ypipe < cm d1> < cm d2>
che equivale a < cm d1> | < cm d2>
M. Guarracino - IPC
48
4. Realizzare una com unicazione in C e POSI X, di t ipo
client - server, creando due processi P1 e P2 che com unicano
t ram it e un file < nom efile> passat o com e argom ent o ad
ent ram bi. I l prim o processo P1 crea una pipe ed un figlio
F1. I l secondo processo P2 ogni secondo genera un num ero
casuale da 1 a < m axnum > e lo scrive in < nom efile>
seguit o dal proprio pid. P1 dopo < n> secondi dalla
creazione del figlio scrive nella pipe il pid di P2, seguit o dal
num ero - 1, poi st am pa un m essaggio sullo st dout e t erm ina
la sua esecuzione. Durant e gli < n> secondi P1 legge i
num eri nel file e scrive sulla pipe il proprio pid con il
num ero che ha let t o. F1 leggera‘ dalla pipe i pid seguit i dal
num ero. Se il num ero e'- 1 uccide P2 e poi t erm ina;
alt rim ent i, st am pa il proprio pid seguit o dal num ero che ha
let t o. Sint assi: P1 < nom efile> < n>
P2 < nom efile> < m axnum >
5. Risolvere l'esercizio precedent e ut ilizzando una FI FO al
post o del file < nom efile> ed una FI FO al post o della pipe
t ra padre e figlio.
M. Guarracino - IPC
49