TECN.PROG.SIST.INF. - Politiche di schedulazione del processore. Roberta Gerboni

Documenti analoghi
Gli stati di un processo

I THREAD O PROCESSI LEGGERI

Definizione di processo. Un processo è un programma (o una parte di una programma) in corso di esecuzione

Il Sistema Operativo fa parte del software di base; e` costituito da un insieme di programmi che interagiscono e cooperano per:

5. Scheduling della CPU. 5.1 Concetti Fondamentali Lo scheduler della CPU

5. Scheduling della CPU

Università Ca' Foscari Venezia - Corso di Laurea in Informatica Sistemi Operativi prof. Augusto Celentano. Domande di riepilogo

Sistemi Operativi GESTIONE DEI PROCESSI. D. Talia - UNICAL. Sistemi Operativi 4.1

I Processi. Il Concetto di Processo

SISTEMI OPERATIVI. Nucleo di un SO. Il Nucleo. Il nucleo di un SO Gestione delle interruzioni Sincronizzazione tra processi Dispatcher. 06.

Sistemi Operativi SCHEDULING DELLA CPU

Sistemi Operativi. 5 LEZIONE SCHEDULING DELLA CPU CORSO DI LAUREA TRIENNALE IN INFORMATICA. Sistemi Operativi 2007/08

Il Sistema Operativo

Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova.

Struttura Logica del S.O:

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Scheduling della CPU. Contenuti delle lezioni del 23 e del 26 Marzo Sequenza alternata di CPU burst e di I/O burst.

Sistemi Operativi. A.M. Fanelli Architettura dei Sistemi a. a Livello di Sistema Operativo. Livello di Linguaggi Applicativi

Scheduling della CPU:

Sistemi Operativi. Scheduling della CPU SCHEDULING DELLA CPU. Concetti di Base Criteri di Scheduling Algoritmi di Scheduling

Sistemi Operativi SCHEDULING DELLA CPU. Sistemi Operativi. D. Talia - UNICAL 5.1

Capitolo 1: Introduzione

Processo - generalità

Lez. 4 Lo scheduling dei processi. Corso: Sistemi Operativi Danilo Bruschi

Sommario. Processi e Programmi. Che cosa e un Processo? Lezione 5 Processi e Threads

Lezione 6. Sistemi operativi. Marco Cesati System Programming Research Group Università degli Studi di Roma Tor Vergata.

Lo scheduling. Tipici schedulatori

Scheduling della CPU. Concetti fondamentali. Concetti fondamentali. Concetti fondamentali. Dispatcher. Scheduler della CPU

Scheduling della CPU

Sistemi Operativi 1. Mattia Monga. 11 marzo Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia

Obiettivo della multiprogrammazione: massimizzazione dell utilizzo CPU. Scheduling della CPU: commuta l uso della CPU tra i vari processi

Lo schedulatore del kernel

Sistemi Operativi. Rappresentazione e gestione delle attività e della computazione: processi e thread

Concetti di base. Scheduling della CPU. Diagramma della durata dei CPU-burst. Sequenza Alternata di CPU Burst e I/O Burst

SISTEMI OPERATIVI. Gestione dei processi. Domande di verifica. Luca Orrù Centro Multimediale Montiferru 13/05/2007

Operazioni di I/O. Schema di collegamento fra dispositivi periferici e CPU

2.2 Scheduling in Linux

Sistemi Operativi. Sistemi I/O SISTEMI DI INPUT/OUTPUT. Hardware di I/O. Interfaccia di I/O per le applicazioni. Sottosistema per l I/O del kernel

Diagramma delle durate dei CPU burst. Lo scheduler della CPU. Criteri di scheduling. Dispatcher

Processi e Thread. Scheduling (Schedulazione)

I processi. Un processo è una attività, controllata da un programma, che si svolge su un processore.

Lez. 4 Lo scheduling dei processi. Corso: Sistemi Operativi Danilo Bruschi

Scheduling della CPU. Concetti base. Criteri di Scheduling. Algoritmi di Scheduling

Sistema Operativo (Software di base)

Sistemi Operativi. Scheduling dei processi

scheduling Riedizione modifi cata delle slide della Prof. DI Stefano

Sistemi Operativi. Schedulazione della CPU

INDICI PER FILE. Accesso secondario. Strutture ausiliarie di accesso

Scheduling. Sistemi Operativi e Distribuiti A.A Bellettini - Maggiorini. Concetti di base

6 CPU Scheduling. 6.1 Concetti Fondamentali dello Scheduling della CPU. 6.1 Concetti Fondamentali

Scheduling della CPU

Pag. 1. Introduzione allo scheduling. Concetti fondamentali. Scheduling della CPU. Concetti fondamentali. Concetti fondamentali. Algoritmi.

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Il software di base comprende l insieme dei programmi predisposti per un uso efficace ed efficiente del computer.

Informatica Generale 06 - Introduzione ai Sistemi Operativi

Sistemi operativi. Motivazione. Tipi di software. Sistemi operativi. Un sistema operativo (SO) e un insieme di programmi che gestiscono le funzioni

Heap e code di priorità

Processi e thread. Concetto di processo

Il processore. Istituzionii di Informatica -- Rossano Gaeta

Il Concetto di Processo

Un sistema operativo è un insieme di programmi che consentono ad un utente di

Capitolo 6 Le infrastrutture SoftWare

Capitolo 5: Scheduling della CPU! Scheduling della CPU! Concetti di Base! Alternanza di Sequenze di CPU- e I/O-Burst!

Corso di Informatica

Mul&programmazione. Ges&one dei processi. Esecuzione parallela. MAC OSX Monitoraggio a9vità. Linux System monitor. Windows Task Manager. A.

Sistemi Operativi Kernel

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Corso di Informatica

LA GESTIONE DELLA I/O

L hardware da solo non è sufficiente per il funzionamento dell elaboratore È necessario introdurre il software:

2. Nucleo del sistema operativo (la gestione dei processi)

Sistemi Operativi Politiche di Ordinamento Processi

Scheduling della CPU Simulazione in linguaggio Java

Secondo biennio Articolazione Informatica TPSIT Prova Quarta

La memoria secondaria

Scheduling. Lo scheduler è la parte del SO che si occupa di

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Sistemi Operativi Modulo A a.a gruppo 1 (A-I)

Struttura interna del sistema operativo Linux

1.5: Gestione dei Processi e della CPU

SISTEMI OPERATIVI. Schedulazione della CPU. Prof. Luca Gherardi Prof.ssa Patrizia Scandurra (anni precedenti) (MODULO DI INFORMATICA II)

II parte: Gestione dei Processi. 3. Processi. 3.1 Concetto di Processo

Ogni PC, per iniziare a lavorare, ha bisogno di un sistema operativo. Infatti questo è il primo programma che viene eseguito e che permette

Lab 1: Java Multithreading

Sistemi operativi e reti A.A Lezione 2

Scheduling. Livelli Algoritmi

Il file system. Le caratteristiche di file, direttorio e partizione sono del tutto indipendenti dalla natura e dal tipo di dispositivo utilizzato.

Capitolo 6: CPU scheduling

Come funzionano i computer

I sistemi operativi (prima parte) Agostino Lorenzi I sistemi operativi - Atlas

Gerarchia fisica di memoria 1. Gerarchia fisica di memoria 2. Gerarchia fisica di memoria 3. Ricapitolazione di concetti base

Modulo 3. Software. Corso di Sistemi di elaborazione delle informazioni -Autore: Ing. Maurizio Patanè

Corso di Sistemi Operativi

Scheduling Introduzione Tipi di scheduler Scheduler di lungo termine (SLT) Scheduler di medio termine (SMT) Scheduler di breve termine (SBT)

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Lezione 2 Principi Fondamentali di SO Interrupt e Caching. Sommario

Sistemi Operativi ed interazione con HW e CAD

Pronto Esecuzione Attesa Terminazione

interoperabilità fra dispositivi forniti da diversi produttori; superare i problemi legati alla limitazione del numero di risorse.

GENERAZIONE PROCESSO FIGLIO (padre attende terminazione del figlio)

Transcript:

Roberta Gerboni 1

Gli stati di un processo Gli stati possibili nei quali si può trovare un processo sono: Hold (parcheggio): il programma (chiamato job) è stato proposto al sistema e attende di essere caricato in memoria centrale. Esso è in attesa di esecuzione e si trova in memoria di massa. Ready (pronto): il programma è diventato processo e si trova in memoria centrale, pronto per essere eseguito. Esso attende che gli venga assegnata la CPU. Run (esecuzione): il processo è in esecuzione (in ogni istante un solo processo si trova in questo stato) perché gli è stata assegnata la CPU. Wait (attesa): il processo è in attesa (ad esempio deve attendere la fine di un operazione di I/O). Terminate (terminazione): il processo è terminato e può essere recuperato lo spazio della memoria centrale in cui era caricato. 2

Un processo passa la propria vita a fare le code. Quando un nuovo processo nasce, è in coda nello stato di HOLD e richiede uno spazio nella memoria RAM dove essere caricato; nel momento in cui gli viene assegnato questo spazio viene messo nella READY queue nella quale attenderà la disponibilità della risorsa processore; appena lo scheduler lo seleziona esso otterrà il possesso del processore con cui procedere alla sua elaborazione (stato di RUN). Il processo può perdere l uso del processore fondamentalmente per tre motivi: Il processo emette una richiesta di I/O e quindi viene posto nella coda del dispositivo di cui deve far uso (dischi, nastri, stampante...); Il processo crea un processo figlio e ne deve attendere la terminazione; Il processo subisce una interruzione e forzatamente deve abbandonare la cpu per ripassare nella ready queue. 3

PCB e Tabella dei processi Il PCB (Process Control Blocks) o descrittore di processo è una struttura dati che mantiene in memoria tutte le informazioni su un certo processo. All'insieme dei PCB dei processi attivi nel Sistema Operativo si accede utilizzando la tabella dei processi. Ciascun PCB contiene le seguenti informazioni: PID (identificatore del processo) lo stato del processo il program counter ( PC ) il contenuto dei registri della CPU Le informazioni sulla memoria occupata e puntatore allo stack Limiti di tempo Privilegi per l accesso a servizi e risorse Puntatore al padre Puntatore alla lista dei processi figli Lista dei file aperti dal processo Informazioni per lo schedulatore (priorità, tempo stimato di uso CPU, tempo di CPU residuo,. PCB di un processo 4

Tabella dei processi Per gestire l'esecuzione di processi il sistema operativo mantiene informazioni sui processi stessi anche quando non sono in esecuzione (stato dirun) e sulle risorse. In particolare la tabella dei processi contiene l identificatore (PID) univoco di ciascun processo e il puntatore all immagine del processo. 5

Immagine di un processo. L immagine di un processo è costituita dalle informazioni che riguardano le aree di memoria e le strutture dati associate al processo che sono necessarie per poter coordinare l esecuzione di più processi. Text table: si tratta di una tabella dei riferimenti per accedere al codice eseguibile del programma di cui il processo risulta essere un istanza. Dati: area di memoria che contiene i dati utilizzati dal programma. Stack e heap: aree di memoria utilizzate dal programma per gestire le chiamate di funzione e le allocazioni dinamiche di memoria. PCB (Process Control Block): costituito da una collezione di attributi necessari al SO per controllare l esecuzione del processo stesso. 6

Le code I descrittori dei processi sono organizzati in code, una per ciascuno stato (READY, WAITING, ) e per ogni dispositivo del quale può essere fatta richiesta di utilizzo al SO. 7

Schedulatore a breve termine e context switch La componente del Sistema Operativo che si occupa di scegliere di volta in volta il processo che deve ottenere l uso della CPU è lo scheduler a breve termine che sostanzialmente dice qual è il prossimo processo che deve passare dallo stato di READY allo stato RUNNING, ovvero andare in esecuzione. Lo scheduling avviene seguendo un certo algoritmo (FCFS, RoundRobin, ShortestJobFirst, a priorità statica o dinamica...) e il passaggio da un processo all'altro è detto cambio di contesto (context switch). Il sistema operativo deve: salvare lo stato del processo che abbandona la CPU, ovvero andare ad aggiornare il PCB (Process Control Blocks detto anche descrittore) del processo caricare il nuovo processo ripristinando le aree di memoria da lui utilizzate, ripristinandone lo stato puntuale, ovvero il suo contesto. 8

Schedulatore a breve termine e context switch 9

Un processo in esecuzione può richiedere al S.O. operazioni di I/O su file, sul monitor, da tastiera, da mouse, ricezione e trasmissione dati in rete, visualizzazione di testi e immagini I processi che prevedono molte interazioni con gli utenti sono spesso in stato di WAITING e si dicono I/O-bound. P1: RUN WAIT RUN _ WAIT RUN _ WAIT I processi che eseguono molte elaborazioni di dati presenti in memoria non rilasciano quasi mai il processore restando quindi in stato di RUN e si dicono CPU-bound. P2: RUN _ WAIT RUN _ WAIT RUN 10

Il S.O. ha il compito di ottimizzare l uso del processore. L insieme dei processi attivi dovrebbe essere composto in modo equilibrato da CPU-bound e I/O-bound. 11

Considerazioni: Se i processi CPU-bound sono molto numerosi i pochi processi I/O-bound vengono rallentati peggiorando il tempo di risposta dei processi interattivi e lasciando inattivi i dispositivi periferici Se i processi I/O-bound sono molto numerosi Questo può portare ad inattività del processore, perché aumenta la probabilità che tutti i processi attivi siano in stato di attesa (WAIT) Durante i periodi di inattività del processore, se non vi sono processi in stato di READY da avviare nello stato di RUN, il gestore dei processi attiva l esecuzione di un paricolare processo di sistema detto IDLE, che pone il computer in uno stato di basso consumo energetico ad esempio diminuendo la velocità del processore oppure vengono eseguiti processi di utilità come ad esempio la scansione antivirus. 12

Task manager di Windows 7 13

Task manager di Windows 7 14

Task manager di Windows 7 15

Algoritmi di schedulazione del processore Gli algoritmi di rotazione tra i processi in esecuzione utilizzati dallo schedulatore dei processi operano con precisi criteri per scegliere quale processo far avanzare dallo stato di pronto (READY) allo stato di esecuzione (RUN). Questi algoritmi si possono dividere in due categorie: NON PREEMPTIVE (senza prerilascio) : una volta che la CPU è stata assegnata ad un processo, essa non può essergli tolta a meno che il processo non sia terminato oppure non abbia richiesto un operazione di I/O. PREEMPTIVE (con prerilascio) : viene usato nei sistemi operativi multitasking, con il significato che il S.O. che può interrompere un processo in esecuzione contro la volontà di questo in favore di un altro processo che ha una maggiore priorità oppure se il processo ha utilizzato la CPU per il massimo tempo consentito (fine del quanto di tempo). Mentre Unix è stato sviluppato quasi da subito come sistema di tipo preemptive, nei sistemi Microsoft la preemption è stata introdotta solo con Windows 95. Questo è giustificato dal fatto che i sistemi operativi di questa famiglia, a partire dall MS-Dos, sono nati come sistemi mono utente. 16

Senza prerilascio SENZA PRERILASCIO Politiche di scheduling FCFS (First Come First Served): il processore viene assegnato ai processi in stato di pronto a seconda dell ordine di arrivo. Difetti: tempo medio di attesa abbastanza lungo e vengono penalizzati i processi brevi a causa di quelli che richiedono molto tempo di CPU. 17

Senza prerilascio Politiche di scheduling SENZA PRERILASCIO SJF (Shortest Job First): il processore viene assegnato al processo, tra tutti quelli in stato di pronto, che prevede l intervallo di tempo più breve di utilizzo complessivo della CPU o prima diun I/O. In questo caso la coda viene ordinata per valori crescenti di durata. Questa politica consente di avere tempi medi di attesa inferiori rispetto a FCFS. Si può dimostrare che SJF è ottimale. Spostando un processo breve prima di uno lungo (anche se quest ultimo è arrivato prima) si migliora l attesa del processo breve più di quanto si peggiori l attesa del processo lungo il tempo medio di attesa diminuisce! Di conseguenza diminuisce anche il turnaround. 18

Senza prerilascio SJF Politiche di scheduling Nessun algoritmo può produrre un tempo di attesa medio e un turnaround medio migliori. Infatti dati: n processi con lo stesso tempo di arrivo e tempo di esecuzione del processo i-esimo t_exe = a i, il processo j-esimo dovrà aspettare un tempo a 1 + a 2 + + a j-1 Quindi: T_medio di attesa = [0 + a 1 + (a 1 + a 2 ) + (a 1 + a 2 + a 3 ) +.+(a 1 +a n-1 )] / n = = [(n-1)a 1 + (n-2)a 2 + + a n-1 ] / n che risulta minimizzato quando a 1 < a 2 < < a n Ma c è un problema che impedisce di usare questo algoritmo Difetti: spesso non si hanno sufficienti informazioni per stabilire quale processo richiederà per primo un operazione di I/O o quanto tempo di utilizzo complessivo della CPU chiede ogni processo, perché normalmente questi dati sono disponibili solo a run time. Inoltre i processi più lunghi rischiano la starvation (morire di fame ), cioè di non essere eseguiti. 19

Senza prerilascio FCFS Coda dei pronti (READY) e unità di tempo di CPU richieste da ciascun processo Tempo di CPU Processi P1 P2 P3 P4 P5 P6 Tempo medio di attesa:? Tempo medio di fine esecuzione:? SJF Coda ORDINATA dei pronti (READY) e unità di tempo di CPU richieste da ciascun processo Tempo di CPU Processi P3 P1 P4 P5 P2 P6 Tempo medio di attesa:? Tempo medio di fine esecuzione:? 20

Senza prerilascio FCFS Coda dei pronti (READY) e unità di tempo di CPU richieste da ciascun processo Tempo di CPU Processi P1 P2 P3 P4 P5 P6 Tempo medio di attesa: (0+3+7+9+12+15)/6 = 7.6 unità di tempo Tempo medio di fine esecuzione: (3+7+9+12+15+20)/6 = 11 unità di tempo SJF Coda ORDINATA dei pronti (READY) e unità di tempo di CPU richieste da ciascun processo Tempo di CPU Processi P3 P1 P4 P5 P2 P6 Tempo medio di attesa: (0+2+5+8+11+15)/6 = 6.8 unità di tempo Tempo medio di fine esecuzione: (2+5+8+11+15+20)/6 = 10.16 unità di tempo 21

Senza prerilascio Politiche di scheduling SENZA PRERILASCIO Con priorità: alcuni processi vengono considerati più importanti di altri. La priorità viene assegnata dal S.O. in base a criteri legati al tipo di processo e all utente che lo ha mandato in esecuzione. In questo caso la coda di READY viene ordinata per valori decrescenti di priorità dei processi e ogni volta viene scelto il processo con priorità più alta da mandare in esecuzione. Se due processi hanno la stessa priorità verrà servito il primo arrivato in coda. Se arriva in coda di READY un nuovo processo viene inserito rispettando l ordinamento. Difetti: se continuano ad arrivare processi con alta priorità quelli con priorità bassa rischiano la starvation. 22

Senza prerilascio Esercizio: I processi A, B, C, D sono arrivati in stato di READY in questo ordine e quasi contemporaneamente. Il tempo di CPU necessario a ciascun processo per completare la propria esecuzione è rispettivamente di 30, 10, 15, 8 ms. Le rispettive priorità sono: 1, 3, 4, 2 dove a valore maggiore corrisponde priorità più alta. Determinare il Tma (tempo medio di attesa) e il Tms (tempo medio di fine esecuzione) detto anche Turnaround (dalla sottomissione alla fine esecuzione) nel caso di utilizzo dei seguenti 3 algoritmi di schedulazione senza prerilascio: FCFS, SJF e Con priorità e confrontare i risultati. 23

Con prerilascio CON PRERILASCIO Politiche di scheduling Con priorità: gli algoritmi che si basano sulla priorità possono essere anche di tipo preemptive. La coda viene ordinata come nel caso precedente per priorità crescente. La differenza è la seguente: se arriva in coda un processo con priorità maggiore di quello che sta utilizzando la CPU, viene forzato il prerilascio. Il prerilascio può avvenire: Quando arriva un nuovo processo in stato di READY che ha priorità maggiore di quello in stato di RUN Quando un processo passa dallo stato di WAIT allo stato di READY ed ha priorità maggiore di quello in stato di RUN Difetti: i processi con bassa priorità rischiano la starvation. Per questo spesso si usa una priorità dinamica che aumenta con l anzianità del processo. 24

Con prerilascio CON PRERILASCIO Politiche di scheduling Round Robin: tutti i processi vengono considerati della stessa importanza. A ciascun processo viene concesso l uso del processore per un T di tempo detto quanto di tempo (o time-slice). Il timer allo scadere del quanto di tempo invia un segnale di interruzione che provoca l intervento del S.O. che forza il processo a prerilasciare il processore e a tornare in stato di READY. In questo modo si evita la starvation, perché a turno tutti i processi usano la CPU per uno stesso intervallo di tempo. La politica RR è equivalente a FCFS con prerilascio. 25

Con prerilascio Round Robin: Politiche di scheduling Se ci sono N processi in coda READY e il quanto di tempo è Q, allora ogni processo riceve 1/N del tempo della CPU in blocchi di almeno Q unità di tempo per volta. Il RR è l algoritmo di scheduling naturale per implementare il time sharing, ed è quindi particolarmente adatto per i sistemi interattivi. Nel caso peggiore un utente non aspetta mai più di (N-1)*Q unità di tempo prima che il suo processo venga servito. 26

Con prerilascio Considerazioni su Round Robin Politiche di scheduling Il comportamento del RR dipende molto dal valore del quanto di tempo scelto. Se il time-slice è molto breve si verificano interruzioni frequenti per passare da un processo all altro (context switch) e l efficienza del sistema diminuisce (overhead). Se il time-slice è molto lungo il sistema diventa come FCFS (time-slice infinito). Si verificano poche interruzioni, ma si perdono i vantaggi del RR in quanto vengono nuovamente penalizzati i processi che richiedono poco tempo di CPU (aumenta il tempo di risposta dei processi interattivi). 27

Con prerilascio Round Robin Processi in ordine di arrivo da P1 a P6 in READY e unità di tempo di CPU richieste da ciascun processo Tempo di CPU Processi P1 P2 P3 P4 P5 P6 P1 P2 P4 P5 P6 P6 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 T Tempo medio di attesa: ((0+10)+(2+9)+(4)+(6+7)+(8+6)+(10+5))/6 = 11.6 T Tempo medio di fine esecuzione: (13+15+6+16+17+20)/6 = 14.5 T 28

Con prerilascio Round Robin Processi da P1 a P8 in coda dei pronti (READY) e unità di tempo di CPU richieste da ciascun processo. Tempo di CPU Processi P1 P2 P3 P4 P5 P6 P7 P8 P1 P2 P4 P5 P6 P7 P6 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 T Tempo medio di attesa: ((0+14)+(2+13)+(4)+(6+11)+(8+10)+(10+9+1)+(12+9)+(14))/8 = 15.37 T Tempo medio di fine esecuzione : (17+19+6+20+21+25+24+16)/8 = 18.5 T 29

Con prerilascio Round Robin Il tempo di turnaround dipende dalla durata del quanto, ma non c è una relazione precisa fra di loro. Il turnaround non migliora necessariamente se si aumenta il quanto Q, ma può migliorare se la maggior parte dei processi ha un burst minore di Q. D altra parte, se Q è troppo grande diventa un FCFS, e non va bene per il time sharing. Una regola empirica dice che l 80% dei CPU burst dovrebbe essere minore di Q. 30

Con prerilascio CON PRERILASCIO Politiche di scheduling Scheduling a code multiple: si può realizzare quando i processi sono facilmente divisibili in classi differenti. Ad esempio: foreground (interattivi, ad esempio un editor) background (non interagiscono con l utente) Si può partizionare la coda di READY in più code, ciascuna con una diversa priorità: inserendo i processi in una delle code, sulla base delle proprietà di ciascun processo assegnando ad ogni coda lo scheduling appropriato Ad esempio: foreground: RR background: FCFS 31

Con prerilascio Scheduling a code multiple Politiche di scheduling Ad esempio si può fare la scelta di: Scheduling a priorità fissa: servire prima tutti i processi nella coda foreground e poi quelli in background. (Possibilità di starvation) oppure Time slice: ogni coda ha una certa quantità T di tempo di CPU, ad esempio: 80% alla coda foreground e 20% alla coda background Esempio di partizionamento dei diversi tipi di processi in più code 32

Con prerilascio CON PRERILASCIO Politiche di scheduling Scheduling a code multiple con FeedBack (retroazione) - MFQS L assegnamento di un processo a una coda non è più fisso. I processi possono venire spostati dal SO da una coda ad un altra. Quando un processo nasce, viene inserito in una coda in base ad una certa priorità assegnata. Quando va in stato di RUN, se il quanto di tempo assegnatogli termina prima che il processo abbia terminato il CPU burst, viene retrocesso alla coda successiva; se, invece, il processo termina il suo CPU burst prima che sia terminato il quanto di tempo assegnatogli, il processo può essere promosso. La politica MFQS è definita dai seguenti parametri: numero delle code algoritmo di scheduling di ogni coda quando declassare un processo quando promuovere un processo in che coda inserire un processo quando arriva (dall esterno o da un I/O burst) MFQS è il tipo di scheduling più generale, che comprende tutti quelli visti. 33

Scheduling per sistemi multi-core Sono ormai comuni le architetture con CPU a 2, 4, 6 e 8 core. Sono, in sostanza, dei piccoli sistemi multiprocessore in cui sullo stesso chip sono presenti due o più core che vedono la stessa memoria principale (e di solito condividono un livello di cache). La presenza di più unità di esecuzione dei processi, permette naturalmente di aumentare le prestazioni della macchina, posto che il SO sia in grado di sfruttare a pieno ciascun core. 34

Tutti i moderni SO prevedono in particolare la cosiddetta multielaborazione simmetrica (symmetric multiprocessing, SMP), in cui uno scheduler gira su ciascun core. I processi READY possono essere inseriti in un unica coda, vista da ciascun scheduler, consentendo quindi di far eseguire un processo su qualunque processore disponibile al momento. In questo caso sono necessari meccanismi di accurata sincronizzazione dei processori nell accesso a strutture dei dati condivise (la coda di READY ); oppure Scheduling per sistemi multi-core Vi può essere una coda READY separata per ciascun core. Questa soluzione potrebbe portare ad una situazione con un processore in stato idle e un altro sovraccarico di processi. Quando lo scheduler di un core si attiva, sceglie uno dei processi READY e lo manda in esecuzione sul proprio core. 35

Scheduling per sistemi multi-core La multielaborazione può essere Asimmetrica o Simmetrica. ASMP (asymmetric multiprocessing) Il SO imposta in genere l uso esclusivo di uno o più processori. Il resto dei processori esegue applicazioni utente. Come risultato, il singolo processore che esegue il sistema operativo deve gestire gli tutti altri processori che eseguono applicazioni utente. Il sovraccarico di lavoro del processore destinato al SO può costringere le applicazioni a delle attese, riducendo così la velocità complessiva del sistema. 36

SMP (symmetric multiprocessing) Scheduling per sistemi multi-core È usato per ottenere di prestazioni più elevate. Ogni processore, in questo caso, può eseguire qualsiasi tipo di processo. I processori comunicano tra loro attraverso la memoria condivisa. Sistemi SMP forniscono un migliore bilanciamento del carico e tolleranza di errore. Poiché i thread del sistema operativo possono essere eseguiti su qualsiasi processore, si riduce notevolmente il pericolo di avere un sovraccarico di sistema. I sistemi SMP sono più complessi dei sistemi ASMP proprio per il coordinamento e la sincronizzazione che deve avvenire all'interno del sistema. Per questo motivo, i sistemi SMP sono generalmente progettati e scritti da zero. 37

Un aspetto importante dei sistemi multi-core è il bilanciamento del carico. Non ha infatti senso avere un sistema con 2 o 3 o 4 core se poi i vari processi da eseguire non sono distribuiti più o meno omogeneamente tra i vari core. Coda unica Nel caso di un unica coda READY, il bilanciamento del carico è sostanzialmente automatico: quando un core è inattivo, il suo scheduler prenderà un processo dalla coda comune e lo manderà in esecuzione su quel core. Coda separata Scheduling per sistemi multi-core I SO moderni spesso usano una coda separata per ciascun core. Esiste allora un esplicito meccanismo di bilanciamento del carico che può prendere un processo in attesa sulla coda di un core sovraccarico e spostarlo nella coda di un core scarico. Ad esempio, Linux SMP attiva il proprio meccanismo di bilanciamento del carico ogni 200 millisecondi e ogni volta in cui si svuota la coda di un core. 38

Scheduling per sistemi multi-core La migrazione di un processo da un core ad un altro può non essere conveniente nel caso in cui ciascun core abbia una cache privata. Per questa ragione, alcuni SO, come Linux, mettono a disposizione delle system call per poter specificare che un processo non deve cambiare core, indipendentemente dal carico del core stesso. Nella realtà le cose sono ancora più complicate, in quanto i moderni processori hanno 2 o 3 livelli di cache. Nel caso ad esempio dei Core i7, i vari core condividono la cache di terzo livello (L3) e ciascun core ha una cache privata di secondo livello L2 e di primo livello L1 (L1 è a sua volta divisa in una cache per i dati e in una per le istruzioni). 39

Lo scheduling in Windows XP Lo scheduler usa uno schema a 32 livelli di priorità (da 0 a 31): i processi real-time hanno una priorità da 16 a 31, gli altri processi hanno una priorità da 1 a 15 (0 è un valore riservato). Quando un processo nasce gli viene assegnata priorità 1. Nel caso di processi non real-time lo scheduler sceglie il processo a priorità più alta e gli assegna la CPU. Se ci sono più processi con la stessa priorità, si usa RR. 40

Lo scheduling in Windows XP Se il processo che sta utilizzando la CPU va in WAIT prima di esaurire il suo quanto di tempo, la sua priorità viene alzata (max 15). L entità dell incremento dipende dal tipo di evento che il processo attende: se è un dato dalla tastiera (quindi siamo in presenza di un processo interattivo) si avrà un grosso incremento della priorità. se il processo attende un dato dal disco, l incremento è minore. Se il processo che sta utilizzando la CPU consuma interamente il quanto di tempo assegnato, la sua priorità viene diminuita (min 1). Questa strategia favorisce ovviamente i processi che interagiscono con il mouse e la tastiera, per i quali è importante un tempo di risposta molto basso. 41

Lo scheduling in Windows XP Windows distingue tra i processi in background e il processo in foreground (finestra attiva). Quando un processo passa in foreground il quanto di tempo assegnatogli viene moltiplicato per 3, cosicché il processo può continuare l esecuzione per un tempo tre volte più lungo, prima di abbandonare la CPU. 42

Lo scheduling in LINUX (primo tipo) Linux ha utilizzato diversi tipi di scheduling. Nel primo tipo le priorità alte sono indicate con valori numerici bassi, e viceversa: un eredità dei primi sistemi Unix. per i processi real-time la priorità va da 0 a 99 per gli altri processi (non real-time) la priorità va da 100 a 140. I valori nell intervallo 100-140sono detti nice. 43

Processi non real-time Lo scheduling in LINUX (primo tipo) Questi processi vengono raggruppati in due code separate: 1. coda attiva: i processi che sono andati in wait prima di terminare il quanto di tempo loro assegnato (inclusi i processi che non hanno ancora iniziato ad eseguire) 2. coda scaduta: i processi che hanno esaurito il proprio quanto di tempo. Lo scheduler sceglie il processo a priorità più alta nella coda attiva e gli assegna la CPU per un tempo pari a: un intero quanto di tempo (di solito da 10 a 100 millisecondi) se il processo non aveva ancora iniziato ad eseguire il proprio codice (in quel quanto di tempo). la porzione di quanto di tempo non ancora utilizzata dal processo quando era andato in WAIT la volta precedente in cui aveva usato la CPU (quindi per un tempo sicuramente inferiore al quanto assegnato inizialmente) Quando un processo ha esaurito il proprio quanto di tempo, viene spostato nella coda scaduta. 44

Lo scheduling in LINUX (primo tipo) Notate che, inizialmente, la coda scaduta è vuota: nessun processo è ancora riuscito ad utilizzare completamente un quanto di tempo assegnatogli. Quando la coda attiva è vuota, vuol dire che a tutti i processi hanno ricevuto ed esaurito completamente un quanto di tempo (in sostanza, siamo di fronte ad una forma sofisticata di Round Robin) A questo punto le due code si cambiano di ruolo: quella scaduta divene la coda attiva, e viceversa, e il processo di scheduling ricomincia assegnando un quanto di tempo al processo con priorità più alta nella coda attiva. 45

Lo scheduling in LINUX (primo tipo) Il nice (ossia, la priorità corrente) di un processo viene ricalcolato dinamicamente quando il processo ha esaurito il proprio quanto di tempo, sommandogli o sottraendogli il valore 5, a seconda del suo grado di interattività. Un processo interattivo ha normalmente lunghi tempi di attesa per le operazioni di I/O e il suo nice verrà decrementato di 5, viceversa per un processo che ha speso poco tempo in attesa del completamento di operazioni di I/O. Quindi, lo scheduling favorisce i processi interattivi, che nella nuova coda attiva avranno una priorità migliore (nice più basso) dei processi non interattivi. 46

Lo scheduling in LINUX (secondo tipo) A partire da fine 2007 (versione 2.6.23 ) il kernel di Linux, adotta un nuovo algoritmo di scheduling, il Completely Fair Scheduler (CFS). Il CFS cerca di distribuire equamente il tempo di CPU tra tutti i processi che sono in stato di READY in attesa dell uso della CPU. Politica adottata: se ci sono N processi ready to run, allora ad ogni processo dovrebbe spettare esattamente 1/N del tempo di CPU. Lo scheduler memorizza la quantita di tempo assegnata ad ogni processo Tiene conto anche dei tempi di attesa di I/O I processi in stato di READY non vengono più organizzati in code di scheduling, ma vengono mantenuti in un albero di ricerca binario. Un albero binario è una struttura dati ad accesso molto efficiente, e questo è importante, dato che la struttura deve essere letta e modificata dallo scheduler ad ogni context switch. 47

Lo scheduling in LINUX (secondo tipo) Completely Fair Scheduler (CFS): implementazione Tempo di CPU consumato da ciascun processo Tutte le operazioni (ricerca, cancellazione, inserimento) in quest'albero hanno complessita O( log 2 N). Ciascun nodo dell'albero (processo) è caratterizzato dal: tempo consumato = tempo di CPU assegnatogli inizialmente meno quanto ancora gli resta da consumare 48

Lo scheduling in LINUX (secondo tipo) Completely Fair Scheduler (CFS): implementazione Tempo di CPU consumato da ciascun processo Il nodo più a sinistra è sempre quello col valore più basso che corrisponde al processo che ha usato la CPU per meno tempo, e viene scelto dallo scheduler per entrare in esecuzione. Il CFS può essere configurato scegliendo la periodicità del context switch, ossia ogni quanto tempo viene ricalcolato il valore contenuto nei nodi. 49