Sei sulla pagina 1di 3

Elaborato 2: Gestione dei processi.

Consegna entro: 15/6/2011.

Testo dellelaborato
Si vuole realizzare un programma in C che utilizzi le system call, ove possibile, per implementare lo scheletro i un simulatore i una piatta!orma multiprocessore. "l progetto eve essere commentato in !ormato #o$ygen, e corre ato i uno script con!igurazione per tale tool e i uno script %a&e!ile per la sua compilazione. "l programma ovr' leggere un !ile i con!igurazione, contenente: 1. "l numero i processori a simulare. 2. (a traccia ei task a simulare. (a traccia a simulare avr' un coman o per ogni riga. Sono possibili tre coman i: 1. )i le*: se la riga contiene solo un numero, esso rappresenta il coman o idle. +sso in ica un tempo i attesa in cui non ci sono nuovi tas& a simulare. 2. 0 )loa *: se la riga contiene ue numeri, i cui il primo , zero, allora essa in ica un tas&. -uesto tas& pu. essere eseguito su un /ualsiasi processore, ovvero sul primo che iventa libero. 0. )proc* )loa *: se la riga contiene ue numeri, i cui il primo , iverso a zero, allora essa in ica un tas&. -uesto tas& pu. essere eseguito solo sul processore numero )proc*, non appena iventa libero. 1gni processore sar' simulato a un processo, e eseguir' una routine i /uesto tipo: 1. 2ttesa su un sema!oro per eseguire un tas&. 2. 3icezione ei parametri el tas& a eseguire, al processo pa re. 0. Simulazione el tas&, tramite l4attesa i un numero i secon i pari al parametro )loa * a eseguire. 5. Segnalazione al pa re che ha !inito i eseguire il tas&. 5. 6loccaggio sullo stesso sema!oro al punto 1, per atten ere il tas& successivo. "l processo pa re simulera4 lo scheduler, e comunichera4 con i processori tramite memoria con ivisa. "l processo pa re eseguir' in /uesto mo o: 1. Setup ella simulazione, leggen o al !ile i con!igurazione il numero i processori a simulare, crean one i processi relativi, e crean o e inizializzan o le eventuali strutture i supporto /uali sema!ori e memoria con ivisa. 2. +ntra in un ciclo che per ogni tas& a simulare, e e!!ettua /uanto segue: 1. Se l4istruzione , i i le, e!!ettua una sleep pari a i le.

2. Se l4istruzione , i tipo )proc* )loa *, atten e che il processore numero )proc* sia libero, e poi interagisce con lui passan ogli il tempo )loa * a simulare. "l processo pa re non deve attendere che il processore abbia completato la simulazione el loa relativo. 0. Se l4istruzione , i tipo 0 )loa *, trova il primo processore libero e in caso interagisce con esso, come al punto 2. 2ltrimenti atten e che almeno un processore sia libero, e poi interagisce con esso come al punto 2. 0. 7assati tutti i tas& ai processori, atten e che i processori abbiano simulato tutti i loro tas&. 5. 8a terminare i processi relativi ai processori. 5. (ibera eventuali risorse. 6. +sce. Si aggiungano ai processori e al processo pa re elle stampe a vi eo, per poter seguire la simulazione. 7er ogni chiamata a una system call, si eve controllare che tale !unzione abbia successo.

FAQ
1. E possibile inserire il codice su file separati? -uesta ecisione , lasciata allo stu ente, che pu. scegliere il mo o pi9 opportuno. (4importante , che il co ice sia ben strutturato e leggibile. 2. Si possono usare funzioni quali la printf, fscanf, etc.? :o. (4elaborato richie e i usare le system call ove possibile, e tali !unzioni sono rimpiazzabili tramite le system call open, write, etc. 3. uale dei due stili presentati a lezione biso!na usare per il "akefile? (o stu ente pu. usare /uello che pre!erisce. :.6.: ;utto /uanto non esplicitato in /uesto ocumento pu. essere implementato liberamente.

Esempio di file di configurazione


Contenuto del file 5 00 12 05 50 5 00 05 2 5< Significato Simulazione i 5 processori. ;as& lungo 0, sul primo processore libero. ;as& lungo 2, sul processore numero 1. ;as& lungo 5, sul primo processore libero. ;as& lungo 0, sul processore numero 5. :essun tas& per lunghezza 5. ;as& lungo 0, sul primo processore libero. ;as& lungo 5, sul primo processore libero. :essun tas& per lunghezza 2. ;as& lungo <, sul processore numero 5. 0 )loa * )proc* )loa * 0 )loa * )proc* )loa * )i le* 0 )loa * 0 )loa * )i le* )proc* )loa * Tipo di comando

Potrebbero piacerti anche