Real Time Scheduler Simulator

di Antonio Balloni


Indice:

1. Introduzione
2. Scopo del programma
3. Installazione
4. Funzioni 5. Risultati

Introduzione:

Questo programma rappresenta il mio lavoro di tesi. Realizza un simulatore di uno scheduler real time in grado di utilizzare i principali algoritmi presentati nel corso di sistemi operativi avanzati. E' stato realizzato basandolo sul testo "Hard Real-Time Computing Systems" di Giorgio C.Buttazzo e sui lucidi del professor G.Pravadelli che accompagnano il suddetto corso di sistemi operativi. Mi ha impegnato per tre lunghi mesi soprattutto a causa del linguaggio di programmazione da me scelto: il C++. Proprio per questo motivo vorrei avvisare tutti coloro che intendono impiegare questo linguaggio per i loro progetti. Pensateci Bene. Solo se avete molto tempo, molta pazienza e sapete come si programma in modo ordinato e ben strutturato potete permettervi di usare C++. Personamlente apprezzo il linguaggio, ma lo ritengo molto complesso.

Scopo del programma

Lo scopo del programma e' quello di fornire all'utente uno strumento in grado di simulare i principali algoritmi di scheduling per sistemi real time che operano su ipotetici processi scelti dall'utente stesso. Il risultato dello scheduling e' mostrato tramite un semplice ma efficace grafico a barre.

Installazione:

Per installare questo programma e' sufficiente scompattare il file rtss.zip in una qualsiasi cartella assicurandosi che venga mantenuta la struttura delle sotocartelle.
Questo e' possibilie con un comando come questo:
unzip source_folder/rtss.zip -d destination_folder
dove source_folder e destination_folder sono le cartelle sorgenti e destinazione.
Avviare poi l'applicazione rtss in questo modo:
./rtss

Funzioni:

New:

Questo menu ospita due funzioni:
New Schedule: permette di scegliere un nuovo schedule basato su uno degli algoritmi indicati. Vengono completamente cancellati i dati riguardanti un eventuale schedule precedente
Quit: permette di uscire dal programma

Processes:

Questo menu ospita 3 funzioni:
Add Process:
Permette di creare un nuovo processo le cui proprieta' dipendono dal tipo di algoritmo scelto.Il processo verra' aggiunto all'elenco dei processi correnti, visibile al centro della finestra.
I dati richiesti sono:
tempo di rilascio: l'istante in cui il processo viene rilasciato
deadline ( relativa o assoluta ): l'istatnte entro cui il processo deve terminare la sua computazione
tempo di computaizone: intervalli di tempo necessari al processo per eseguire il proprio lavoro
periodo: il periodo com cui viene rilasciato il processo
Modify Process: Permette di modificare il primo (dall'alto) processo selezionato tramite le apposite caselle di spunta a fianco di ogni processo
Delete Processes: Permette di eliminare tutti i processi selezionati

Dependencies:

Questo menu offre una sola scelta. Permette di impostare le dipendenze tra i processi. Ossia permette di indicare, definita una coppia di processi (A,B) che A deve essere eseguito prima di B. Queste relazioni sono esprimibili tramite una tabella tipo "battaglia navale". Spuntando la casella di coordinate (I,J) si indica che il processo I verra' eseguito prima del processo J. In caso le relazioni impostate creassero un ciclo, il problema verra' evidenziato al momento della simulazione con un opportumo messaggio

Actions:

Sono possibili due scelte:
"Simulate" permette all'utente di dare il via alla simulazione dello scheduling, i cui risultati saranno visibili in un'apposita finestra.
"Change Algorithm..." permette invece di applicare ai processi attuali un diverso algoritmo di scheduling. La scelta e' limitata ai soli algoritmi compatibili con i dati. A questo proposito certe scelte richiedono una modifica del tempo di rilascio dei processi o delle relazioni di dipendenza, situazione indicata all'utente da un apposito messaggio.
In ogni caso non sara' mai possibile applicare un algoritmo periodico a processi aperiodici e viceversa.

Esempio:
Algoritmo di partenza EDF
Algoritmo di arrivo EDD
Ai processi viene assegnato il tempo di rilascio t = 0, mantenendo la stessa deadline relativa.
All'utente viene chiesto di confermare il cambio algoritmo a causa delle suddette operazioni sui dati.

?

Questo menu permette 2 scelte:
help: mostra questo documento
about: apre una finestra che contiene alcune informazioni su questo software

Risultati:

Il risulato fornito dal programma e' composto da tre elementi:
Intestazione:
Vengono riportati i dati dei processi (eventualmente modificati dall'algoritmo (EDF con precedenze) ) interessati dalla simulazione
I simboli hanno il seguente significato: Analisi fattibilita':
Vengono indicati i passaggi dell'analisi di fattibilita' dello scheduling, dato un certo algoritmo e un insieme di processi.Per i dettagli sui metodi di analisi si rimanda al testo di G.Buttazzi nominato nell'introduzione e al materiale fornito dal professor G.Pravadelli.
Grafico dello scheduling:
Per ogni processo viene mostrata una linea orizzontale rappresentate il tempo, seguita dal nome del processo.
Su questa linea possono essere presenti, a seconda dei casi, diversi altri simboli:
Qualora qualche processo non comparisse nel grafico, il motivo e' sostanzialmente il seguente.
Ancora prima che a quel processo venga assegnato un intervallo di tempo, una deadline ha gia' fermato la simulazione.


Il programma e' stato terminato il 30-01-08. Chiunque voglia avere una copia del codice mi puo' contattare per email all'indirizzo balloni.antonio@tiscali.it .