scheduler : Analisi e progettazione - Owanesh/unifi-eos GitHub Wiki

Il programma è stato progettato e diviso in moduli separati, ognuno logicamente individuato attraverso le operazioni eseguibili nei confronti di un task (o lista di task). Nella pratica ciò si traduce nella realizzazione di:

  • un file <nome_modulo>.h, che dichiara l’interfaccia del modulo, cioè i servizi resi disponibili;
  • un file <nome_modulo>.c, che implementa tali operazioni.

Lista dei moduli:

main: funzione di avvio e diramazione delle chiamate agli altri moduli, in base alla scelta dell’utente;

task: contiene la dichiarazione e definizione di una struttura rappresentante un task;

readyQueue: contiene la dichiarazione e definizione di una struttura rappresentante una lista di task, oltre ad operazioni utili come isEmpty(), printList() ecc;

insert: operazione di inserimento nella lista attraverso l’ID specificato;

delete: operazione di cancellazione dalla lista attraverso l’ID specificato;

execute: operazione di esecuzione di un task, sia attraverso la politica corrente che attraverso un ID;

modify: modifica la priorità del task specificato;

changeScheduling: realizza l’ordinamento della lista dei task e cambia la politica corrente;

utilities: funzioni generiche riutilizzabili in altri contesti (printMenu(), getLine(), selectOption() ecc).

Si riportano le dipendenze dei moduli (sintassi simile ad un file .make, dove a sinistra in grassetto è presente il modulo oggetto e a destra la lista delle dipendenze):

scheduler: main.o insert.o execute.o delete.o changeScheduling.o modify.o readyQueue.o task.o utilities.o
main.o: main.c task.h utilities.h readyQueue.h insert.h execute.h delete.h modify.h changeScheduling.h
insert.o: insert.c insert.h readyQueue.h utilities.h
execute.o: execute.c execute.h readyQueue.h delete.h
delete.o: delete.c delete.h readyQueue.h
changeScheduling.o: changeScheduling.c changeScheduling.h utilities.h readyQueue.h
modify.o: modify.c modify.h utilities.h readyQueue.h
readyQueue.o: readyQueue.c readyQueue.h task.h
task.o: task.c task.h
utilities.o: utilities.c utilities.h