# Piattaforme e Software per la rete - lezione 10 #### William Fornaciari ###### 13 May 2016 ## Sistemi Multiprocessore Tipologie di architetture: - Ogni CPU ha il suo SO - Sistemi Master-Slave - Sistemi Multiprocessore Simmetrici (SMP) Nel caso di un SO per CPU l'accesso alle periferiche viene gestito tramite l'uso di diversi buffer. Nel caso di sistemi Master Slave, il SO viene eseguito solo dalla CPU __Master__ Che quindi ha una sola copia dei buffer per I/O É difficile gestire bene cluster di piú di 8/16 core, a parte nei casi di applicazioni nativamente parallelizzate. Una tecnica usata é quella del __clustering__ che consiste nel raggruppare CPU e usarle in gruppo. Nelle implementazioni SMP il sistema operativo é singolo ma puó essere eseguito da piú processori, tramite l'uso di *lock* Il __timesharing__ consiste nel dividere il tempo per i processi, ma porta ad un cattivo sfruttamento delle cache, che avrei invece rimettendo lo stesso processo sulla stessa CPU. Lo __space sharing__ in cui k processi vengono assegnati a k CPU disponibili. Sistemi __Multicomputer__ consistono in uno o piú processori collegati da un interfaccia di rete, sono anche usati nelle __network on chip__ Le topologie di rete usate sono: - Stella - Anello - Mesh Le strategie di switching sono: - Commutazione di pacchetto - Commutazione di circuito ... Le risorse di rete possono determinare pesantemente le prestazioni del sistema operativo e delle applicazioni eseguite. Le comunicazioni a livello utente vengono effettuate tramite la chiamata a opportune primitive di sistema ## Sistemi Operativi Real Time (RTOS) Sono caratterizzati da un certo __determinismo__ nell'esecuzione, e da una importanza nei tempi di risposta. Spesso le applicazioni eseguite da sistemi RTOS hanno dei *Time Constraints* che consistono nei momenti in cui i processi vengono richiesti e nelle *deadline* per la terminazione di questi ultimi, che possono essere soft o hard a seconda dell'importanza Inoltre puó esserci o meno la __preemption__ dei processi che determina se essi vengono sostituiti in presenza di interrupt. ### Scheduling Per lo scheduling a grana sottile vengono usati algoritmi semplici e veloci come *round robin*, mentre per lo scheduling a grana grossa vengono usati algoritmi piú sofisticati. Esistono diversi algoritmi di scheduling, con o senza preemption e offrono tempi di risposta diversi Esempi: - Fixed priority scheduling __Fattori che possono influenzare lo scheduling__ - Analisi di schedulabilitá: - Fatta o non fatta - Online o offline - Prioritá Di particolare nota é lo scheduler __Rate Monotonic__ che é in grado di garantire in modo dimostrabile il rispetto delle deadlines e un buon utilizzo generale della CPU. Guardo slides su RTX