/progetto_PandOs

Progetto per il corso di Sistemi operativi

Primary LanguageC

Progetto di Sistemi Operativi A.A 2020/2021

Informazioni e manuali: http://wiki.virtualsquare.org/#!education/pandos.md

Files di Fase 1:
	- pcb.h -> header per la gestione dei PCB, contiene le signatures delle funzioni da implementare per i PCB
	- pcb.c -> definizione delle funzioni da implementare per i PCB
	- asl.h -> header per la gestione dei semafori, contiene le signatures delle funzioni da implementare per i semafori
	- asl.c -> definizione delle funzioni da implementare per i semafori
Files di fase 2:
	- initial.c -> contiene il main e provvede all'inizializzazione delle strutture necessarie per fase 2. 
				   Inoltre contiene le dichiarazioni di funzioni extern per il test e per il TLB refill handler
	- scheduler.h -> header file contenente la signature della funzione scheduler().
	- scheduler.c -> contiene un'unica funzione (scheduler()) che implementa lo scheduler, implementato con round robine con un semplice deadlock detector
	- exceptions.h -> header file contenente le firme delle funzioni per la gestione delle eccezioni e delle System call richieste in questa fase
	- exceptions.c -> contiene le definizioni delle funzioni per l'exception handling e delle system call richieste in questa fase del progetto.
					  Tra queste funzioni è presente anche un exception handler che si occupa di chiamare le altre funzioni.
	- interrupts.h -> contiene le firme per le funzioni di gestione degli interrupts
	- interrupts.c -> contiene le definizioni delle funzioni per la gestione degli interrupts
	- mcpy.h -> contiene la signature della funzione memcpy
	- mcpy.c -> contiene la definizione della funzione memcpy, necessaria per il funzionamento di PandOS su umps3
Files di fase 3:
	- initProc.c -> Implementa la funzione test() e contiene le variabili globali del Support level
	- initProc.h -> Header file contenente le signature delle funzioni usate in initProc.c.
	- vmSupport.c -> Implementa il TLB exception handler e il pager (con relativo algoritmo di rimpiazzamento)
					 Inoltre contiene la funzione per effetturare l'updatedel TLB e altre due funzioni.
	- vmSupport.h -> Header file contenente le signature delle funzioni usate in vmSupport.c.
	- sysSupport.c -> Implementa gli exception handler (general e syscall) e contiene le system call di fase 3
	- sysSupport.h -> Header file contenente le signature delle funzioni usate in sysSupport.c.
Documentazione:
	- README.txt (questo file)
	- Documentazione.txt -> contiene in breve alcune scelte progettuali
Cartella resources:
	Files di pandOS
		- pandos_const.h -> header contenente diverse costanti
		- pandos_types.h -> header contenente definizioni di tipi per pandOS
	Testers, per testare il progetto


NB: ogni volta che si fa riferimento a "pops" si intende il manuale "uMPS3 principles of operations"

Istruzioni per la compilazione e l'esecuzione:
- ATTENZIONE: in base a dove è installato umps3 potrebbe essere necessario apportare delle modifiche ai files,
	in particolare alle inclusioni delle librerie
	
- Aprire nel terminale la cartella Fase_3
- Lanciare il comando make
- Il makefile provvederà alla compilazione e alla creazione di alcuni files per umps3
- Aprire nel terminale la cartella resources/testers
- Lanciare il comando make
- Il makefile provvederà alla compilazione e alla creazione dei test
- Lanciare umps3
- Selezionare l'opzione "open an existing machine configuration"
- Navigare fino alla cartella resources e selezionare la configurazione chiamata phase3Config
- Avviare la configurazione (pulsante verde - Power on) 
	- (premere alt + 0 - alt + 7 per mostrare i Terminal 0 - 7)
	- (se si desidera vedere lo stato del processore 0 è possibile fare click sulla scheda Processors oppure premere alt + shift + 0)
- Eseguire il codice (tasto continue)
- Sarà richiesto di inserire due stringhe in sequenza sul terminal 0
	- Digitare le stringhe desiderate e premere invio
- Al termine dell'esecuzione premere nuovamente sul simbolo di stop per fermare il sistema
- Spegnere la macchina emulata

Per maggiori informazioni leggere il file Documentazione.txt