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