18.08.2013 Views

UNIVERSITA' DEGLI STUDI DI PAVIA - Robotica

UNIVERSITA' DEGLI STUDI DI PAVIA - Robotica

UNIVERSITA' DEGLI STUDI DI PAVIA - Robotica

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Un secondo ed efficiente meccanismo per lo scambio di informazioni tra<br />

processi è dato dall'uso dei CAB (Cyclic Asynchronous Buffer).<br />

Nei prossimi paragrafi vengono descritte le due tecniche dal punto di vista<br />

dell'utilizzatore, tralasciando i dettagli teorici.<br />

A.6.1 Stack Resource Policy<br />

Gli SRP devono essere usati dichiarando una costante che identifica la<br />

risorsa, e racchiudendo entro una coppia di primitive apposite le istruzioni che<br />

fanno uso della risorsa; è però necessario dichiararlo preventivamente, al<br />

momento della creazione del task.<br />

Le funzioni che sono state predisposte per l'utilizzo del protocollo sono le<br />

seguenti:<br />

• task_use_res(model, resource, ms) permette di indicare che il task in<br />

via di creazione, descritto da model utilizza la risorsa di indice<br />

resource, e che la sezione critica relativa alla risorsa ha una durata<br />

massima pari a ms microsecondi;<br />

• void srp_wait(resource) apre la sezione critica relativa alla risorsa<br />

resource;<br />

• void srp_signal(resource) chiude la sezione critica relativa alla risorsa<br />

resource.<br />

A questo punto vorrei sottolineare un aspetto che non viene affatto<br />

evidenziato nel manuale utente di HARTIK, e che può causare notevoli noie e la<br />

perdita di molto tempo per il debugging.<br />

L'utilizzo di una risorsa avviene in genere dichiarando una costante, che<br />

funge da indice all'interno di un vettore nel kernel di HARTIK, vettore che serve a<br />

tenere traccia dell'uso della risorsa da parte dei task. Ora, il vettore è dichiarato<br />

staticamente, ed ha una dimensione di 20 elementi (dipende comunque dal valore<br />

172

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!