瀏覽代碼

Added lesson 4 piattaforme mod2

Federico Amedeo Izzo 9 年之前
父節點
當前提交
fc0b411332
共有 1 個文件被更改,包括 88 次插入0 次删除
  1. 88 0
      Piattaforme Software per la Rete/MOD2/lesson_04.md

+ 88 - 0
Piattaforme Software per la Rete/MOD2/lesson_04.md

@@ -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*
+