|
@@ -0,0 +1,88 @@
|
|
|
+# Piattaforme e Software per la rete - lezione 2
|
|
|
+#### William Fornaciari
|
|
|
+###### 30 March 2016
|
|
|
+## Modulo 2
|
|
|
+Algoritmi di scheduling divisi in:
|
|
|
+- Preemptive
|
|
|
+- Non preemptive
|
|
|
+
|
|
|
+è possibile adottare delle politiche per ottimizzare dei parametri a discapito
|
|
|
+della fairness dello scheduling, ad esempio posso far terminare prima processi brevi
|
|
|
+Ottenendo una risposta mediamente più rapida ma con un rischio di *starvation*.
|
|
|
+Spesso serve integrare queste politiche con altre soluzioni per ridurre questo rischio.
|
|
|
+Politiche:
|
|
|
+- Shortest Remaining Time
|
|
|
+Per processi periodici è di solito possibile stimare i tempi di esecuzione.
|
|
|
+Processi di interazione con l'utente possono avere un utilizzo di CPU variabile,
|
|
|
+es: algoritmi adattativi.
|
|
|
+
|
|
|
+- Highest Response Ratio Next
|
|
|
+Si calcola per ogni processo
|
|
|
+(Tempo di servizio stimato + tempo speso ad aspettare)/Tempo di servizio stimato
|
|
|
+E si sceglie il processo con il rapporto più alto, ovvero si mette in relazione
|
|
|
+il tempo di attesa con la durata del processo, es: un attesa di 1 sec pesa più su un processo
|
|
|
+di un paio di secondi rispetto ad un processo di 5 minuti.
|
|
|
+
|
|
|
+- Feedback Scheduling
|
|
|
+Ho diverse code, modello ricondotto a priority queue.
|
|
|
+
|
|
|
+- Fair-Share Scheduling
|
|
|
+Posso raggruppare i processi e dividere il tempo della cpu tra i diversi gruppi,
|
|
|
+quando un certo gruppo riceve la priorità, viene divisa equamente tra i processi
|
|
|
+che vi fanno parte in modo da garantire che determinate applicazioni abbiano
|
|
|
+un tempo di servizio garantito.
|
|
|
+
|
|
|
+#### Prevedere la lunghezza del prossimo CPU burst
|
|
|
+__Media esponenziale__
|
|
|
+tau(n+1)=alpha t(n)+(1-alpha)tau(n)
|
|
|
+alpha è il peso da dare all'ultima misurazione piuttosto che alle stime precedenti.
|
|
|
+In particolare determina l'ampiezza della storia da prendere in considerazione.
|
|
|
+
|
|
|
+- Priority Scheduling
|
|
|
+Viene eseguito il processo con la priorità più alta, se la coda è vuota si passa a quelle successive.
|
|
|
+
|
|
|
+- Round Robin
|
|
|
+Si può dimostrare che non soffre di problemi di starvation, se do un tempo di slot molto
|
|
|
+grande, degenera in una FIFO in cui il processo tiene il tempo CPU finchè non termina.
|
|
|
+Se scelgo un tempo più piccolo il sistema sembrerà più reattivo ma aumenta l'overhead.
|
|
|
+Il Round Robin ha un tempo medio di turnaround > di SRT ma risulta più reattivo
|
|
|
+Una regola a spanne è che l'80% dei processi deve completare entro il quanto di tempo.
|
|
|
+
|
|
|
+- Multilevel Queue
|
|
|
+Posso dividere la coda di processi in ForeGround e BackGround e usare politiche diverse.
|
|
|
+
|
|
|
+- Multilevel Feedback Queue
|
|
|
+Ho code multiple di priorità, gestite all'interno in Round Robin
|
|
|
+La priorità dei processi viene ricalcolata periodicamente in base a Nice e una funzione dell'uso della CPU
|
|
|
+Così i processi che hanno usato la CPU diventa meno probabile che abbiano accesso nuovamente alla CPU.
|
|
|
+La __Niceness__ determina la priorità iniziale, 0 è neutra, NICE>0 diminuisce la priorità, NICE<0 l'aumenta.
|
|
|
+Questa politica è stata implementata per prima da BSD Unix ed è efficace.
|
|
|
+Scheduler a complessità costante utilizzano un meccanismo hardware che dato un elenco di bit
|
|
|
+uno per ogni coda, un istruzione assembler restituisce in tempo costante la posizione del primo 0.
|
|
|
+
|
|
|
+Nei sistemi embedded un modo sicuro per eseguire task mission critical/real time è allocarci uno dei vari processori
|
|
|
+In modo che nel caso pessimo diventa predicibile, altrimenti ci sono gli altri core per allocazione best effort.
|
|
|
+
|
|
|
+### Multi-processor Scheduling
|
|
|
+Nel caso di Symmetric Multiprocessing (SMP) i vari processori accedono ad una struttura dati comune
|
|
|
+da cui prendono i processi da eseguire.
|
|
|
+
|
|
|
+### Real-Time Scheduling
|
|
|
+- Real Time Hardware
|
|
|
+- Soft Real Time
|
|
|
+Il kernel preemptable è un buon contributo al Real Time computing.
|
|
|
+
|
|
|
+### Deterministic modeling
|
|
|
+Può essere importante fare scheduling in funzione della temperatura target della cpu o delle varie cpu
|
|
|
+L'analisi non sfrutta il workload reale ma contronta i vari algoritmi di scheduling verso un caso di test (benchmark)
|
|
|
+
|
|
|
+## Applicazioni distribuite
|
|
|
+Un applicazione distribuita può usare uno stesso cpu o più core di una sola cpu o cpu collegate via rete
|
|
|
+ovviamente in questo ultimo caso aumenta il ritardo per la comunicazione e i consumi.
|
|
|
+Di solito la comunicazione avviene tramite le API TCP/IP del sistema operativo.
|
|
|
+La API standard per TCP/IP si chiama "interfaccia __socket__", presentato nel 1985 al Politecnico
|
|
|
+da studenti di Berkley
|
|
|
+La API permette anche l'interoperabilità tra sistemi operativi diversi.
|
|
|
+
|
|
|
+Il protocollo più comune è quello *client/server*
|
|
|
+
|