Title: Sistemi Operativi / 2 - Architettura / 03 - Scheduling

Q: Tabelle per gestioneprocessi
A: Un processo si può descrivere attraverso:
1. il codice da eseguire
2. i dati sullo stack
3. i dati su cui operare
4. gli attributi contenti tutte le informazioni per la gestione del processo
Le informazioni di stato servono per il context switch

Q: Scheduler, mode switching, context switching, Struttura del kernel e gestione degli interrupt
A: Quando viene richiamato decide quale processo deve essere in esecuzione  interviene quando viene richiesta un'operazione di I/O e quando un'operazione di I/O termina, (l’interval timer si comporta come un device di I/O)
Nel context switch lo stato del processo viene salvato e caricato dal PCB, e quello selezionato viene preso dal PCB e caricato nel processore
lo scheduler ha tre tipi di code:
- ready queue: sono quelli che sono pronti per essere eseguiti
- code d'attesa per systemcall
- code d'attesa per interrupt
L'iniziatialize crea le tabelle è il primo processo, tutto quello che viene eseguito a destra  è l'user e tutto quello a destra è kernel mode
Per gestire l'interrupt ci sono due opzioni, il primo è quella di disabilitare tutti gli interrupt, l'altra e tenere uno stack per ogni interrupt di una certa priorità
## Agguinta da libro (pag 104)
esistono due schedulers uno a breve tempo uno a lungo tempo.

Q: Processi e Thread
A: I thread sono un multiprocess lightweight all'interno dello stesso processo, i thread condividono il codice il data e le risorse I/O, mentre non condividono:
- lo stack
- i registri (tra cui PC)
Anche il context switching nei thread è più veloce.
## User Space Thread
Un tempo cerano dei librerie thread a livello utente (più veloci nel contex switching senza syscall), ma sono state abbandonate per la difficolta nel scriverle, mentre il kernel thread sono quelli utilizzati adesso anche se sono più complicati da implementare dall'utente .
Un problema è che quando un thread è bloccato in I/O il sistema operativo non è a conoscenza che è multi thred è quindi blocca tutto il processo.
## Kernel Thread
per i thread del kernel il sistema operativo si deve tenere una tabella a parte oltre a quella dei processi
## Implementazione
SI utilizzano tre modelli diversi di multithreading:
- many-to-one: tutti gli user thread sono mappati ad un os thread
- one-to-one: ogni user thread è mappato ad un thread os
- Many-to-Many: più di un thead utente vengono mappati ad un thread os ( con multipli thread os)

Tipi schedule e parametri di confronto

Algoritmi di Scheduling, FCFS  SJF RoundRobin