2.2 Scheduling in Linux



Documenti analoghi
Algoritmi di scheduling

J. Assfalg Appunti di Sistemi Operativi

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

Scheduling della CPU

Scheduling della CPU

Capitolo 5 - Silberschatz

Sistemi Operativi. Scheduling dei processi

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

Scheduling della CPU. Capitolo 6 - Silberschatz

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

SCHEDULING DELLA CPU. Obiettivi. » Introduzione allo scheduling della CPU. » Algoritmi di scheduling della CPU

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

Scheduling della CPU. Lo scheduling Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

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

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

Sistemi Operativi 2003/2004. Lo scheduling dei processi

Scheduling della CPU

Sistemi Operativi SCHEDULING DELLA CPU

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

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

Scheduling della CPU. Sistemi Operativi L-A AA

i. Diagramma di GANTT relativo all esecuzione dei quattro processi:

Sistemi Operativi. La gestione delle risorse

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

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

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

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

Lo scheduler di UNIX (1)

Università degli Studi di Padova - Corso di Laurea in Informatica

Pag. 1. Il Nucleo del sistema operativo (la gestione dei processi)

scheduling Riedizione modifi cata delle slide della Prof. DI Stefano

5.19! Silberschatz, Galvin and Gagne 2005! 0! 20! 37! 57! 77! 97! 117! 121! 134! 154! 162!

Il Sistema Operativo Ripasso

Sistemi Operativi. Scheduling dei processi

Lezione 3 Sistemi Operativi e misure di performance. Parleremo di

Sistema : collezione di componenti (elementi, entità) interdipendenti che interagiscono fra loro in accordo a specifiche predefinite.

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

1. Che cos è un sistema multiprogrammato? Si può realizzare la multiprogrammazione

Sistemi Operativi. Lezione 3 Processi e Thread

Sistemi di Calcolo (A.A ) Corso di Laurea in Ingegneria Informatica e Automatica Sapienza Università di Roma

Cooperazione e competizione tra processi (2) Cooperazione e competizione tra processi (1) Cooperazione e competizione tra processi (3)

Gestione dei Processi

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

Lezione 5. Di cosa parliamo in questa lezione? La schedulazione dei processi. Schedulazione e caratteristiche dei processi.

I Processi. Il Concetto di Processo

Sistemi Operativi. Lezione 5 Lo scheduling

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

Sistemi Operativi. Bruschi Martignoni Monga. Scheduling. Sistemi batch SJF. Sistemi. interattivi Priority RR Code multiple Sistemi real-time Deadline

Assegnazione della CPU (CPU scheduling) Scheduling della CPU (1) CPU bursts (1) Scheduling della CPU (2)

1. Le componenti principali di un sistema operativo sono: interfaccia con l utente (interprete dei comandi e/o interfaccia

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

Sistemi Operativi. Bruschi Martignoni Monga. Strutture dati per la gestione dei processi Context switch Thread. Scheduling

Marco Cesati Dipartimento di Ingegneria Civile e Ingegneria Informatica Università degli Studi di Roma Tor Vergata

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

il Nucleo e la gestione dei processi

Multiprogrammazione. Sistemi Operativi Giuseppe Prencipe. Scheduling dei processi Scheduling. Sequenza di CPU e I/O burst.

Informatica II Sistemi Operativi DIGIP - a.a. 2015/16

coda arrivo burst P 1 A 0 20ms P 2 C 10 25ms P 3 B 15 20ms P 4 A 25 20ms

Scheduling della CPU

Scheduling della CPU. I/O e CPU burst. Scheduler a breve termine. Dispatcher. Concetti base

SCD. Correttezza temporale. Correttezza temporale. Premesse 2. Politiche di ordinamento 1. Premesse 1

ESERCITAZIONE 6 - Soluzioni. Processi e thread

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

Sistemi Operativi A.A. 2010/2011

TEORIA DEI SISTEMI OPERATIVI. Sistemi monoprogrammatie multiprogrammati

Introduzione ai thread

Sistemi Operativi Esercizi File System. Docente: Claudio E. Palazzi

Lezione R4. Sistemi embedded e real-time

Scheduling della CPU:

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

Sistemi Operativi Kernel

Informatica Generale 07 - Sistemi Operativi:Gestione dei processi

1. Le componenti principali di un sistema operativo sono: interfaccia con l utente (interprete dei comandi e/o interfaccia

Scheduling della CPU. Sistemi operativi- AA 2015/16 1 1

Sistemi Operativi. Scheduling dei processi

Trasparenze del Corso di Sistemi Operativi

Bootstrap. Bootstrap. Shutdown. Struttura di un SO. Elementi principali di un SO:

Il Concetto di Processo

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

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

Sistemi Operativi Appello del 10 luglio 2017 Versione Compito A Cognome e nome: Matricola: Posto:

Note_Batch_Application 04/02/2011

Sistemi Operativi Modulo I. Lo Scheduling

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

Il Concetto di Processo

Il Sistema Operativo Processi e Risorse

Il Concetto di Processo

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

Sistemi Operativi (modulo di Informatica II) Schedulazione della CPU

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

Processi e thread. Concetto di processo

I Processi. Il Concetto di Processo

TERMINA ESECUZIONE A B =85 85 C =90 90 D = E = INIZIA ESECUZIONE

Il sistema operativo

Sistemi Operativi: Concetti Introduttivi

YYY02 Esercizi per Teoria. Esercizi per preparazione alla prova scritta

Transcript:

Appunti di Sistemi Operativi 28 2.2 Scheduling in Linux In generale, i processi possono essere classificati secondo due schemi: CPU bound vs. I/O bound; interattivi vs. batch vs. real-time. Le due classi sono indipendenti, in quanto possono esistere, ad esempio, processi batch sia I/O bound che CPU bound e lo stesso vale per i processi interattivi o real-time. Rispetto a questa distinzione, la politica di scheduling Linux è in grado di: riconoscere processi soft real-time a cui è assegnata un elevata priorità (ad esempio, processi che realizzano il play di un file multimediale); favorire implicitamente processi I/O bound (tuttavia, non è in grado di riconoscere processi batch o interattivi). Più in dettaglio, la politica di scheduling Linux si propone il raggiungimento dei seguenti obiettivi, alcuni dei quali contrastanti tra loro: - timesharing; - gestione di priorità dinamiche; - avvantaggiare processi I/O-bound; - tempi di risposta bassi; - throughput elevato per i processi in background; - evitare starvation. Distinguendo tra politica ed algoritmo di scheduling, gli obiettivi della politica sono perseguiti dall algoritmo di scheduling nel modo seguente: - suddivisione del tempo in epoche; - dipendenza della priorità dal residuo del quanto di tempo dall epoca precedente; - definizione delle condizioni che determinano l invocazione dello scheduler.

Appunti di Sistemi Operativi 29 2.2.1 Politica di scheduling In Linux lo scheduling si basa sul concetto di timesharing, per cui ad ogni processo è assegnato un quanto di tempo massimo per l esecuzione. La selezione del prossimo processo da eseguire è basata sul concetto di priorità; questa può essere dinamica o statica. In particolare, la prima è introdotta per evitare il fenomeno della starvation, mentre la seconda è stata introdotta per consentire la gestione di processi real-time. Ai processi real-time (più precisamente soft real-time, utili ad esempio per riprodurre flussi audio e/o video in applicazioni multimediali) è assegnata una priorità maggiore di quella assegnata ai processi ordinari. Di norma Linux prevede uno scheduling con prelazione (preemptive), per cui ad un processo viene tolta la CPU se: - esaurisce il quanto di tempo a sua disposizione; - un processo a priorità più alta è pronto per l esecuzione (TASK RUNNING). La durata del quanto di tempo è tipicamente di 20 clock ticks, o 210 millisecondi. Questo è circa il più grande valore ammissibile senza che sia compromessa la reattività del sistema. Gli utenti possono variare la durata del quanto assegnato ad un processo tramite la funzione nice(int n); tuttavia, gli utenti comuni possono solo diminuirlo, mentre l utente amministratore può anche aumentarlo. In particolare, l incremento n del quanto può variare nell intervallo 20 n 19, dove a valori negativi di n corrisponde un incremento del quanto (fino ad un massimo di 40), mentre valori positivi di n decrementano la priorità di un processo (fino ad un minimo di 1). 2.2.2 Algoritmo di scheduling Il tempo è suddiviso in periodi, detti epoche, che si ripetono ciclicamente. All inizio di ogni epoca, a ciascun processo viene assegnato un quanto di tempo (il valore di default è di 20 clock tick). Il quanto di tempo definisce un limite superiore al tempo di utilizzo della CPU nell epoca. Comunque, in una stessa epoca, la CPU può essere assegnata ad un processo più volte, fino a quando il quanto non è esaurito. Un epoca termina quando tutti i processi eseguibili (quelli nello stato TASK RUNNING) hanno esaurito il loro quanto. Terminata un epoca, ne inizia un altra; all inizio della nuova epoca vine calcolato il nuovo quanto di tempo da assegnare a ciascun processo. Questo è determinato come la somma tra il base time quantum (cioè, il valore predefinito del quanto di tempo) e metà dei clock tick eventualmente rimasti dall epoca precedente. Infatti, processi che erano bloccati al momento in cui è terminata l epoca, potevano non aver esaurito il quanto di tempo. Così facendo si assegna un bonus ai processi I/O-bound; sebbene un processo I/Obound difficilmente esaurirà il quanto a sua disposizione, questo è utilizzato

Appunti di Sistemi Operativi 30 per determinare la priorità del processo. In questo modo, il numero di clock tick di un processo che non ne consuma alcuni entro un epoca può tendere asintoticamente a 40. Ai processi ordinari, cioè quelli che vengono gestiti con la politica SCHED OTHER, è assegnata una priorità statica pari a 0; la priorità dinamica, invece, coincide con il numero di clock tick. Per i processi real-time non vale la suddivisione del tempo in epoche. Ai processi real-time è assegnato un livello di priorità statica compreso tra 1 e 99, che non cambia durante l esecuzione. Come conseguenza, i processi real-time hanno una priorità statica sempre superiore a quella dei processi ordinari. Dato che lo scheduler seleziona il processo a priorità più alta, un processo ordinario può essere eseguito solo se non ci sono processi real-time pronti per l esecuzione. I processi real-time possono appartenere ad una di due categorie: - SCHED FIFO: processi real-time con quanto di tempo illimitato. Questi processi lasciano la CPU solo se: 1) si bloccano; 2) terminano; 3) un processo a priorità più alta passa nello stato di pronto; 4) terminano; - SCHED RR: processi real-time soggetti a scheduling di tipo Round Robin. Le informazioni necessarie allo scheduler, comprese quelle relative alla priorità, sono contenute nel descrittore di processo task struct. In particolare, queste sono: - long int state: stato del processo; - long int need resched: indica se è necessaria l invocazione dello scheduler. Questo campo viene controllato al termine di ogni routine di servizio delle interruzioni; - long int policy: può assumere i valori SCHED OTHER, SCHED FIFO, SCHED RR, SCHED YIELD; - long int rt priority: indica il livello di priorità statica per i processi real-time; - long int priority: rappresenta il quanto di tempo (espresso in clock tick) assegnato ad un processo soggetto a timesharing; - long int counter: è il numero di clock tick residui. La variabile è aggiornata dalla funzione update process times() ad ogni interruzione dell orologio di sistema. Le variabili counter e priority non sono utilizzate per i processi soggetti alla politica SCHED FIFO.

Appunti di Sistemi Operativi 31 Invocazione dello scheduler Lo scheduler viene invocato tramite la funzione schedule(), che ha lo scopo di individuare il processo a maggiore priorità fra quelli pronti. La sua invocazione può avvenire in due modi: - invocazione diretta (o direct invocation). Questa modalità viene eseguita ogni volta che il processo si blocca (stati TASK UNINTERRUPTIBLE o TASK INTERRUPTIBLE); - invocazione ritardata (o lazy invocation). Questa ha luogo quando, al termine dell esecuzione di una primitiva di sistema, la variabile need resched indica che è necessario eseguire lo scheduler. La variabile need resched viene impostata se: - durante l esecuzione della funzione update process times() si verifica che counter <= 0; - durante l esecuzione della funzione wake up process() ci si accorge che è passato nello stato di pronto (TASK RUNNING) un processo a priorità più alta di quello attualmente in esecuzione; - il processo chiama la funzione sched yield(). L esecuzione della funzione schedule() comprende i seguenti passi: - completamento di eventuali system calls in corso (nel caso di kernel non preemptible non è consentita la commutazione di processo mentre il kernel sta eseguendo delle operazioni per conto di un processo) e operazioni di manutenzione del sistema; - se il processo è di tipo SCHED RR ed ha esaurito il quanto, viene posto in fondo alla coda e gli viene assegnato un nuovo quanto (per questo tipo di processi non vale la suddivisione in epoche); - si analizza la coda dei processi pronti per determinare qual è il processo a priorità maggiore. Questa selezione viene fatta mediante la funzione goodness(). La funzione goodness() opera nel modo seguente: - Se è in grado di selezionare un processo, allora viene invocato il dispatcher per eseguire l assegnazione; - altrimenti si inizia una nuova epoca. Per un processo, la funzione goodness() può produrre uno dei seguenti risultati:

Appunti di Sistemi Operativi 32 - G = 1000, ad indicare che il processo non deve essere selezionato; - G = 0, se il processo ha esaurito il quanto; -0<G<1000, se si tratta di un processo ordinario che non ha ancora esaurito il quanto di tempo. Il valore restituito rappresenta la sua priorità dinamica; - G>= 1000, per un processo real-time. Se G = 1000 + g, allora g èil livello di priorità statica. Nel caso in cui più processi assumano il valore massimo di goodness, viene selezionato il primo nella scansione della coda dei processi pronti. In Fig.2.4 è mostrata l organizzazione delle liste con priorità dei processi Linux. Lo scheduler ha come obiettivo di mantenere in esecuzione i processi nella coda a maggiore priorità. 99 priorità statiche 98 97 96 2 1 0 scheduling RR priorità dinamiche scheduling FiFO Figura 2.4: Code di priorità per i processi Linux. Le priorità statiche dei processi real-time sono sempre maggiori delle priorità statiche dei processi normali (non real-time). Infatti, i processi normali pur variando le loro priorità dinamiche in base all uso dei clock tick all interno di un epoca, hanno comunque tutti priorità statica uguale a 0. Notare, infine, come processi real-time ad una stessa priorità possono essere schedulati con algoritmi diversi (parte con FIFO, e parte con RR). Problemi I principali problemi dell algoritmo di scheduling di Linux sono: - le prestazioni dello scheduler degradano al crescere del numero di processi. Infatti, le priorità (cioè i quanti) devono essere ricalcolate per tutti i processi al termine di ogni epoca;

Appunti di Sistemi Operativi 33 - il valore predefinito per il quanto può essere eccessivo nei sistemi con carico elevato; - il meccanismo di boost dei processi I/O-bound non è ottimale. Infatti, non tutti i processi richiedono interazione con l utente e quindi processi per l accesso a database, il trasferimento dati via rete, etc., potrebbero essere gestiti in modo diverso; - il supporto per i processi real-time è limitato. L algoritmo di scheduling di Linux, a partire dalla versione 2.6 del kernel, è stato in parte modificato (in particolare, per quanto attiene la gestione delle priorità e dei processi real-time) al fine di risolvere alcuni dei problemi indicati.

Bibliografia [1] S. Piccardi. http://gapil.firenze.linux.it. [2] A.S. Tanenbaum. I Moderni Sistemi Operativi, Jackson Libri, 2002. 34