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