SlideShare ist ein Scribd-Unternehmen logo
1 von 53
Downloaden Sie, um offline zu lesen
Introduzione al CPU scheduling
• Multiprogrammazione:
  – mantenere più processi in esecuzione
  – commutare l'esecuzione ad un altro processo in
    caso di blocco per I/O
  – impiegare tempi di attesa in modo produttivo




                                                     1
Ciclicità fasi di elaborazione - I/O
• L'esecuzione di un processo si alterna in un
  ciclo costituito da:
  – fase di elaborazione (CPU burst)
  – attesa completamento I/O (I/O burst)
• Tale ciclo prosegue fino alla fine della
  esecuzione del programma




                                                 2
Ciclicità fasi di elaborazione – I/O
• Processo CPU-bound:
  – produce poche sequenze di operazioni di CPU
    molto lunghe
  – produce relativamente poco I/O
• Processo I/O-bound:
  – produce tante sequenze di operazioni di CPU
    molto breve
  – produce prevalentemente operazioni di I/O




                                                  3
Scheduler della CPU
• Quando la CPU passa nello stato di inattività, il
  SO sceglie un processo dalla coda di pronto
  per l'esecuzione
• Scheduler della CPU:
  – gestisce la coda di pronto
  – seleziona il prossimo processo da mandare in
    esecuzione




                                                      4
Scheduler della CPU
• Coda dei processi pronti:
  – non è necessariamente una coda FIFO
  – può essere implementata come:
     ♦ una coda FIFO
     ♦ una coda con priorità
     ♦ un albero
     ♦ una lista concatenata non ordinata

• elementi della coda dei processi pronti sono i
  process control block




                                                   5
Il diritto di prelazione
• Lo scheduling della CPU può essere attivato
  nelle seguenti circostanze:
  1.un processo passa dallo stato di esecuzione
    allo stato di attesa (richiesta I/O)
  2.un processo passa dallo stato di esecuzione
    allo stato di pronto (interruzione, quanto)
  3.un processo passa dallo stato di attesa allo
    stato di pronto (completamento I/O)
  4.un processo termina l'esecuzione




                                                   6
Il diritto di prelazione
• 1. e 4. non richiedono una vera e propria scelta
  di scheduling (prossimo processo)
• 2. e 3. richiedono una scelta di scheduling
  (prossimo processo)
• Schemi di scheduling:
  – con diritto di prelazione (preemptive): lo
    scheduling interviene in 1., 2., 3., 4.
  – senza diritto di prelazione (non preemptive): lo
    scheduling interviene in 1., 4.




                                                       7
Il diritto di prelazione
• Scheduling senza diritto di prelazione
  – il processo rimane in possesso della CPU fino a
    quando non la rilascia
      ♦ termine esecuzione
      ♦ passaggio nello stato di attesa (I/O)
  – non esiste il concetto di quanto di tempo
      ♦ implementazione più semplice
      ♦ funziona su architetture sprovviste di timer




                                                       8
Il diritto di prelazione
• Scheduling con diritto di prelazione
  – concetto di quanto di tempo
  – singolo processo non monopolizza la CPU
• Problemi
  – gestione in mutua esclusione dei dati condivisi
    fra due o più processi
  – se un processo in kernel mode viene interrotto
    a metà di una operazione critica
    (aggiornamento di code di scheduling), il kernel
    rimane in uno stato inconsistente
  – una interruzione interrompe un processo in
    kernel mode; strutture dati in comune vanno
    accedute in mutua esclusione
                                                       9
Il diritto di prelazione
• Scheduling con diritto di prelazione
  – concetto di quanto di tempo
  – singolo processo non monopolizza la CPU
• Soluzioni
  – Nei SO UNIX, il context switch avviene al
    termine di una chiamata di sistema
     ♦ soluzione semplice
     ♦ non scala su più unità di elaborazione
  – versioni recenti di Linux (v2.6) introducono i
    preemption point
     ♦ API per rilasciare volontariamente la CPU
     ♦ il programmatore decide il rilascio

                                                     10
Dispatcher
• Il componente del CPU scheduler che sceglie il
   prossimo processo da mandare in esecuzione
• Esegue le seguenti azioni:
  – context switch
  – passaggio al modo utente
  – salto alla locazione della prossima istruzione da
    eseguire
• Il dispatcher viene invocato ad ogni context
  switch
  – deve essere rapido



                                                        11
Algoritmi di scheduling
•   First Come, First Served (FCFS)
•   Shortest Job First (SJF)
•   Priority
•   Round Robin (RR)
•   Multilevel Queue (MQ)
•   Multilevel Feedback Queue (MFQ)




                                      12
First Come, First Served
• Si assegna la CPU al processo che l'ha chiesta
  per prima
• Implementato tramite una coda FIFO
• Quando un processo entra nella coda dei
  processi pronti:
  – PCB inserito in fondo alla coda dei processi
    pronti
• Quando la CPU torna libera:
  – estrae dalla coda dei processi pronti il PCB in
    cima alla coda e ripristina l'esecuzione del
    processo corrispondente


                                                      13
First Come, First Served
    Processo           Durata
       P1              24msec
         P2            3msec
         P3            3msec



                       P1                 P2        P3

0                                    24        27        30

                                P1
    P2        P3

0        3         6                                     30
                                                              14
First Come, First Served
• Tatt(P1,P2,P3)=(0+24+27)/3=17msec
• Tatt(P2,P3,P1)=(6+0+3)/3=3msec
• Il tempo di attesa di FCFS non è, in genere,
  minimo
• Effetto convoglio: se un processo CPU-bound
  va in esecuzione per primo, gli altri processi
  devono attendere il rilascio della CPU
  – riduzione utilizzo CPU
  – riduzione utilizzo periferiche
  – invertendo l'ordine di esecuzione migliorerei gli
    utilizzi

                                                        15
First Come, First Served
• Assenza di prelazione: CPU trattenuta fino al
  rilascio della CPU
  – termine esecuzione
  – richiesta di I/O
• FCFS è problematico nei sistemi time shared
   – quanto di tempo stride con assenza di
     prelazione




                                                  16
Shortest Job First
• Si associa ad ogni processo la lunghezza della
  successiva sequenza di operazioni di CPU
• Si assegna la CPU al processo con la
  lunghezza più breve
• Se due processi hanno sequenze uguali, si
  applica il criterio FCFS
• Nome più corretto: shortest CPU burst first




                                                   17
Shortest Job First
• Il tempo di attesa medio per n processi in coda
  si può scrivere come:
  (1) Tatt=(T1+T2+...+Tn)/n
  dove
  (2) Tj=Tj-1+tj
  essendo:
    ♦ T =tempo attesa job j-1
       j-1

     ♦ t =tempo    esecuzione job j
        j




                                                    18
Shortest Job First
• Sostituendo (2) in (1) si ottiene:
  (3) Tatt=((n-1)t1+(n-2)t2+...+(n-k)tk+...+tn-1)/n
• Prendiamo due processi di indici k e k-j
  (separati di j posizioni): Pk e Pk-j
  – k>0, j>0, k-j>0
  – Il processo che viene prima ha tempo di
    esecuzione più grande: tk-j > tk
• Scambiamo di posto questi due processi (S1)
• Calcoliamo il nuovo tempo di attesa medio:
  (4) Tatt,S1=((n-1)t1+...+(n-k+j)tk+...+(n-k)tk-j+...+tn-1)/n


                                                                 19
Shortest Job First
• Calcoliamo la differenza (3)-(4): si elidono tutti i
  termini tranne quelli relativi a tk-j e tk
  Tatt-Tatt,S1=((n-k+j)tk-j+(n-k)tk-(n-k+j)tk-(n-k)tk-j)/n
  Tatt-Tatt,S1=j(tk-j-tk)/n > 0
• Spostando dopo un processo con tempo di
  esecuzione più grande, si ottiene una riduzione
  del tempo di attesa
• Reiteriamo S1,S2,...,Sm scambi fino a quando i
  processi sono ordinati dal più breve al più
  lungo
  – si ottiene sempre un Tatt,Sj descrescente
  – Dopo m scambi, si ottiene l'ordinamento SJF
                                                             20
Shortest Job First
    Processo        Durata
       P1           6msec
         P2         8msec
         P3         7msec
         P4         3msec



               P1
    P4                       P3        P2

0        3            9           16        24



                                             21
Shortest Job First
• Tatt(P4,P1,P3,P2)=(3+16+9+0/4=7msec
• Tatt è ottimale
• spostando un processo breve prima di un
  processo lungo:
   – il tempo di attesa per il processo breve
     diminuisce più di quanto aumenti il tempo di
     attesa per il processo lungo
   – di conseguenza, Tatt medio diminuisce
• Problema: SJF richiede la durata della
  successiva richiesta di CPU
   – non sempre si conosce esattamente, si deve
     spesso stimarla
                                                    22
Shortest Job First
• La lunghezza del CPU burst si stima con la sua
  media esponenziale:
          ten+1=atn+(1-a)ten , a in [0,1]
• a=0: valore recente non ha effetto
• a=1: assenza di storia
• a=1/2: stesso peso per valore recente e storia
  passata (scelta comune)
• SJF può essere con e senza prelazione




                                                   23
Shortest Job First
• Se arriva un processo con CPU burst
  successivo più breve rispetto a ciò che resta al
  processo attualmente in esecuzione:
  – prelazione: il processo in esecuzione viene
    sostituito col nuovo processo
  – assenza di prelazione: il processo in
    esecuzione termina il suo CPU burst
• SJF con prelazione viene chiamato shortest
  remaining time first




                                                     24
Priority
• Si associa ad ogni processo una priorità
• Si assegna la CPU al processo con priorità più
  alta
• Se due processi hanno uguale priorità, si
  applica il criterio FCFS
• SJF è un algoritmo di priorità
  – la priorità è l'inverso della lunghezza (prevista)
    del prossimo CPU burst




                                                         25
Priority
     Processo         Durata        Priorità
        P1            10msec           3
        P2            1msec            1
        P3            2msec            4
        P4            1msec            5
        P5            5msec            2

P2                             P1              P3
             P5                                      P4

01                6                     16          18 19



                                                            26
Priority
• Tatt(P2,P5,P1,P3,P4)=8.2msec
• Le priorità possono essere definite:
  – internamente: in base a grandezze misurabili
    (limiti di tempo, memoria, lunghezza CPU burst)
  – esternamente: in base a criteri esterni al SO
    (importanza del processo)
• Priority scheduling può essere con o senza
  prelazione




                                                      27
Priority
• Se arriva un processo con priorità maggiore
  rispetto a quella del processo attualmente in
  esecuzione:
  – prelazione: il processo in esecuzione viene
    sostituito col nuovo processo
  – assenza di prelazione: il processo in
    esecuzione termina il suo CPU burst
• Problema: starvation (attesa indefinita di
  processi a bassa priorità)
• Soluzione: aging (aumento graduale della
  priorità)


                                                  28
Round Robin
• Progettato per sistemi time sharing
• FCFS con capacità di prelazione per
  commutare fra processi
• Ciascun processo riceve una quantità fissa di
  tempo di CPU, il quanto di tempo
  – esecuzione viene interrotta allo scadere del
    quanto di tempo
  – quanto di tempo varia da 10msec a 100msec
• La coda dei processi pronti viene gestita in
  modalità circolare
• Implementazione tramite coda FIFO
  – nuovi processi aggiunti in coda
  – processi appena eseguiti sono riaccodati       29
Round Robin
    Processo                 Durata
       P1                    24msec
                                                      Quanto=4msec
         P2                  3msec
         P3                  3msec




    P1        P2       P3        P1        P1        P1        P1        P1

0        4         7        10        14        18        22        26        30



                                                                                   30
Round Robin
• Tatt(P1,P2,P3)=17/3=5.66msec
• RR è sempre con prelazione (per via del
  quanto di tempo)
• Se ho n processi, quanto di tempo pari a q:
  – ciascun processo ottiene 1/n del tempo di
    elaborazione di CPU in frazioni di al più q unità
    di tempo
  – l'attesa di esecuzione è limitata a (n-1)*q unità di
    tempo




                                                           31
Round Robin
• Le prestazioni dell'algoritmo RR dipendono
  fortemente dalla dimensione del quanto di
  tempo
• quanto di tempo piccolo:
  – RR prende il nome di CPU sharing
  – overhead del context switching
• quanto di tempo ampio:
  – RR tende a diventare FCFS




                                               32
Multilevel queue
• Distinzione fra più classi di processi
  – processi interattivi (foreground)
  – processi in sfondo (background)
  – processi batch
• Classi di processi hanno requisiti diversi sui
  tempi di risposta
• Si suddivide la coda dei processi pronti in più
  code distinte
• Ciascun processo viene associato
  permanentemente ad una coda
• Ciascuna coda ha il proprio algoritmo di
  scheduling (RR, FCFS)
                                                    33
Multilevel queue
• Necessità di uno scheduling fra code: quali
  sono le code con priorità più alta di
  esecuzione?
  – priorità fissa, con prelazione
• Esempio:
  1.processi di sistema
  2.processi interattivi
  3.processi interattivi di editing
  4.processi in background
  5.processi degli studenti



                                                34
Multilevel queue
• Ogni coda ha priorità assoluta sulle code di
  priorità più bassa
• Se un processo a priorità più alta viene
  iniziato, si interrompe un eventuale processo
  in esecuzione a priorità più bassa (Solaris2)




                                                  35
Multilevel feedback queue
• Variante di multilevel queue
• I processi possono spostarsi fra le varie code
  – cambio di priorità
• Idea: raggruppare i processi con
  caratteristiche di CPU burst simili nelle stesse
  code
• Tipicamente:
  – CPU burst lunghi, priorità bassa
  – CPU burst brevi, priorità alta




                                                     36
Multilevel feedback queue

        quanto = 8




        quanto = 16




          FCFS




                            37
Multilevel feedback queue
• Parametri di MFQ:
  – numero di code
  – algoritmo di scheduling per ciascuna coda
  – criterio usato per spostare un processo in una
    coda con priorità maggiore
  – criterio usato per spostare un processo in una
    coda con priorità minore
  – criterio usato per scegliere la coda in cui
    inserire inizialmente un processo




                                                     38
Scheduling nei sistemi SMP
• Finora sono stati analizzati sistemi basati su
  un solo processore
• Con più processori, diviene possibile la
  condivisione del carico (load sharing) dei
  processi fra più processori
• Ci concentriamo su sistemi:
  – Symmetric Multi Processing (SMP): processori
    uguali, ciascuno in grado di eseguire codice
  – Uniform Memory access (UMA): la probabilità di
    accedere ad una qualunque locazione in
    memoria è la stessa per ogni processore


                                                     39
Scheduling nei sistemi SMP: tecniche
• Due diversi approcci per implementare la coda
  di pronto
  – Coda di pronto per ciascun processore
  – Una singola coda di pronto acceduta da tutti i
    processori
• Processor Affinity
  – Lo scheduler tende a rischedulare gli stessi
    processi sugli stessi processori, per aumentare
    la probabilità di trovare dati in cache
• Load Balancing
  – Lo scheduler bilancia l'esecuzione dei processi
    in modo tale che la lunghezza delle code di
    pronto sia grossomodo la stessa sulle CPU
                                                      40
Scheduling dei thread
• Se un SO è multithreaded, i thread devono
  essere schedulati dallo scheduler del kernel
• Process Contention Scope:
  – Scelta di schedulazione dei thread user level
  – Many-to-One, Many-to-Many
  – Basato sul concetto di priorità
• System Contention Scope:
  – Scelta di schedulazione dei thread kernel level
  – One-to-One (Linux)
  – Basato su Multilevel Feedback Queue



                                                      41
Valutazione algoritmi di scheduling
• Come fare a scegliere un dato algoritmo di
  CPU scheduling fra i tanti a disposizione?
  – Occorre valutarli
  – Ma come?
• Tre passi:
  – Occorre scegliere degli indici di valutazione
    delle prestazioni di un algoritmo
  – Occorre scegliere degli indici statistici di
    misurazione per gli indici di prestazione
  – Occorre costruire un modello di
    rappresentazione dell'algoritmo


                                                    42
Indici di prestazione
• Utilizzazione CPU
  – È una probabilità (valori in [0, 1])
  – È definita come la probabilità di trovare il
    sistema occupato in un dato intervallo di
    osservazione
  – In alternativa, è definita come il rapporto fra un
    intervallo di tempo in cui la CPU è usata (Tocc) ed
    un intervallo di tempo di misura(Tmis)
        T occ 
     =
        T mis 
  – 0: sistema completamente scarico
  – 1: sistema utilizzato al 100% (bene se non ci
    sono ulteriori accodamenti)
                                                          43
Indici di prestazione

                         T occ =∑ T o , j
To,j     Ti,k




                  Tmis


               T occ 
            =
               T mis 


                                            44
Indici di prestazione
• Throughput
  – È definito come il numero di processi N
    commutati in un intervallo di misura Tmis
         N
     X=
        T mis

  – Vorremmo averlo più alto possibile




                                                45
Indici di prestazione
• Tempo di risposta
  – È definito come l'intervallo temporale che passa fra
    la sottomissione del processo e l'inizio della
    risposta
  – Lo vorrei minimo per i processi interattivi
• Tempo di completamento
  – È definito come l'intervallo temporale che passa fra
    la sottomissione del processo ed il suo
    completamento
  – In generale, lo vorremmo più basso possibile
• Tempo di attesa:
  – È definito come la somma degli intervalli temporali
    passati in coda di pronto
  – In generale, lo vorremmo più basso possibile
                                                           46
Indici statistici
• Media campionaria
  – È definita come la media aritmetica di n campioni xi
    di una grandezza
            n
       1
     x= ∑ x i
       n i=1
  – In generale, la vorrei più bassa possibile
• Varianza campionaria
  – È definita come la media dello scarto quadratico fra
    n campioni e la loro media campionaria
  – Misura la dispersione dei valori attorno alla media
                n
         1
       2               2
            ∑  xi −x
     =
        n−1 i=1
  – Lo vorremmo basso per processi interattivi
                                                           47
Modelli rappresentativi
• I modelli rappresentativi possono essere i
  seguenti
  –   Modello analitico
  –   Modello a reti di code
  –   Modello simulativo
  –   Sistema reale




                                               48
Modello analitico
• Si analizza l'algoritmo ed il carico a cui esso è
  soggetto
• Si cerca di scoprire una relazione in forma
  chiusa (formula) che lega la prestazione di un
  dato algoritmo con il numero di processi
• In un sistema complesso, non sempre si riesce
  a stabilire la formula
• Nota una formula, la valutazione delle
  prestazioni è immediata
• Ad esempio, per SJF, il tempo di attesa su n
  processi è dimostrabilmente minimo:
            n
         1
  T att = ∑ n−it i
         n i=1
                                                      49
Modello a reti di code
• Lo scheduler è visto come un oggetto servente
  a cui è attaccato un oggetto coda di attesa
• Una richiesta entra nello scheduler, si accoda
  ed aspetta fino a quando non si libera il
  servente
• Le richieste arrivano con un ritmo aleatorio,
  con valor medio pari a λ richieste per unità di
  tempo
• Il servente serve richieste (processi) ad un
  ritmo aleatorio, con valor medio pari a μ
  richieste per unità di tempo
• Più componenti possono essere attaccati per
  formare una rete di code (queueing network)
                                                    50
Modello a reti di code
Una coda semplice

        λ                             μ
                            CPU

              coda         servente



Una rete di code

Input                                            Output
                     CPU                  Disk




                                                          51
Modello a reti di code
• Legge di Little
  –   Sia n il numero medio di elementi in coda
  –   Sia λ il tasso medio di arrivo delle richieste
  –   Sia W il tempo medio speso in coda
  –   Sussiste la seguente relazione generale:
                       n= W
• Esempio:
  – Se arrivano in media λ=7 processi al secondo
  – Se la lunghezza media della coda è n=14
    processi
  – Allora il tempo medio di permanenza in coda è
    di W=2s
                                                       52
Modello a reti di code
• Utilizzazione del servente
  – È definita come il rapporto fra λ e μ
                             
                        =
                             
• In generale, si ha:

           ρ

          1


                                 λ
                  λ=μ

                                            53

Weitere ähnliche Inhalte

Was ist angesagt?

20 Macam Perangkat Keras Komputer dan Fungsinya
20 Macam Perangkat Keras Komputer dan Fungsinya20 Macam Perangkat Keras Komputer dan Fungsinya
20 Macam Perangkat Keras Komputer dan Fungsinya
dwiaee
 
TIK Power Point
TIK Power PointTIK Power Point
TIK Power Point
agaamID
 
17715124 modul-praktikum-tik-kls-7-sem1-2
17715124 modul-praktikum-tik-kls-7-sem1-217715124 modul-praktikum-tik-kls-7-sem1-2
17715124 modul-praktikum-tik-kls-7-sem1-2
Rini Susyanti ST
 
PTS_Hardware_Installation_Guide_A29.pdf
PTS_Hardware_Installation_Guide_A29.pdfPTS_Hardware_Installation_Guide_A29.pdf
PTS_Hardware_Installation_Guide_A29.pdf
ElisngelaMateus
 

Was ist angesagt? (20)

Replication and consistns
Replication and consistnsReplication and consistns
Replication and consistns
 
Buku Elektronik | Teknologi Layanan Jaringan C3 XII TKJ
Buku Elektronik | Teknologi Layanan Jaringan C3 XII TKJBuku Elektronik | Teknologi Layanan Jaringan C3 XII TKJ
Buku Elektronik | Teknologi Layanan Jaringan C3 XII TKJ
 
SILABUS XII TKJ ASJ.docx
SILABUS XII TKJ ASJ.docxSILABUS XII TKJ ASJ.docx
SILABUS XII TKJ ASJ.docx
 
projet sur le vpn presentation
projet sur le vpn presentationprojet sur le vpn presentation
projet sur le vpn presentation
 
Implentation d'une solution Cloud IAAS
Implentation d'une solution Cloud IAASImplentation d'une solution Cloud IAAS
Implentation d'une solution Cloud IAAS
 
VPN WINDOWS LINUX OPENVPN
VPN WINDOWS LINUX OPENVPNVPN WINDOWS LINUX OPENVPN
VPN WINDOWS LINUX OPENVPN
 
20 Macam Perangkat Keras Komputer dan Fungsinya
20 Macam Perangkat Keras Komputer dan Fungsinya20 Macam Perangkat Keras Komputer dan Fungsinya
20 Macam Perangkat Keras Komputer dan Fungsinya
 
TIK Power Point
TIK Power PointTIK Power Point
TIK Power Point
 
Troubleshooting jaringan-komputer-smk darut taqwa
Troubleshooting jaringan-komputer-smk darut taqwaTroubleshooting jaringan-komputer-smk darut taqwa
Troubleshooting jaringan-komputer-smk darut taqwa
 
17715124 modul-praktikum-tik-kls-7-sem1-2
17715124 modul-praktikum-tik-kls-7-sem1-217715124 modul-praktikum-tik-kls-7-sem1-2
17715124 modul-praktikum-tik-kls-7-sem1-2
 
PTS_Hardware_Installation_Guide_A29.pdf
PTS_Hardware_Installation_Guide_A29.pdfPTS_Hardware_Installation_Guide_A29.pdf
PTS_Hardware_Installation_Guide_A29.pdf
 
Mise en place vidéoconférence + chat avec Openfire
Mise en place vidéoconférence + chat avec OpenfireMise en place vidéoconférence + chat avec Openfire
Mise en place vidéoconférence + chat avec Openfire
 
Persiapan dan Kebutuhan Perakitan Komputer
Persiapan dan Kebutuhan Perakitan KomputerPersiapan dan Kebutuhan Perakitan Komputer
Persiapan dan Kebutuhan Perakitan Komputer
 
MATERI JARINGAN NIRKABEL TKJ.pptx
MATERI JARINGAN NIRKABEL TKJ.pptxMATERI JARINGAN NIRKABEL TKJ.pptx
MATERI JARINGAN NIRKABEL TKJ.pptx
 
Bab 5 - Jaringan Komputer dan Internet - Khairunnisa Nur Alya 7D.pdf
Bab 5 - Jaringan Komputer dan Internet - Khairunnisa Nur Alya 7D.pdfBab 5 - Jaringan Komputer dan Internet - Khairunnisa Nur Alya 7D.pdf
Bab 5 - Jaringan Komputer dan Internet - Khairunnisa Nur Alya 7D.pdf
 
3. Mengoperasikan komputer
3. Mengoperasikan komputer3. Mengoperasikan komputer
3. Mengoperasikan komputer
 
Tugas akhir mikotik hotspot user manager
Tugas akhir mikotik hotspot user managerTugas akhir mikotik hotspot user manager
Tugas akhir mikotik hotspot user manager
 
mis en place dun vpn site à site
mis en place dun vpn site à site mis en place dun vpn site à site
mis en place dun vpn site à site
 
Modul Perkembangan TIK Kelas 7
Modul Perkembangan TIK Kelas 7Modul Perkembangan TIK Kelas 7
Modul Perkembangan TIK Kelas 7
 
Jaringan Komputer dan Internet
Jaringan Komputer dan Internet Jaringan Komputer dan Internet
Jaringan Komputer dan Internet
 

Andere mochten auch

Architettura dei Calcolatori 10 Input Ouput
Architettura dei Calcolatori 10 Input OuputArchitettura dei Calcolatori 10 Input Ouput
Architettura dei Calcolatori 10 Input Ouput
Majong DevJfu
 

Andere mochten auch (20)

MODULO 13 --> Le memorie secondarie
MODULO 13 --> Le memorie secondarieMODULO 13 --> Le memorie secondarie
MODULO 13 --> Le memorie secondarie
 
MODULO 10 –> La scheda madre e il BIOS
MODULO 10 –> La scheda madre e il BIOSMODULO 10 –> La scheda madre e il BIOS
MODULO 10 –> La scheda madre e il BIOS
 
MODULO 14 --> La crittografia delle informazioni
MODULO 14 --> La crittografia delle informazioniMODULO 14 --> La crittografia delle informazioni
MODULO 14 --> La crittografia delle informazioni
 
MODULO 02 - Gli elaboratori
MODULO 02 - Gli elaboratoriMODULO 02 - Gli elaboratori
MODULO 02 - Gli elaboratori
 
MODULO 05: Fondamenti di informatica
MODULO 05: Fondamenti di informaticaMODULO 05: Fondamenti di informatica
MODULO 05: Fondamenti di informatica
 
MODULO 07: L’interazione tra il microprocessore e la memoria di sistema
MODULO 07: L’interazione tra il microprocessore e la memoria di sistemaMODULO 07: L’interazione tra il microprocessore e la memoria di sistema
MODULO 07: L’interazione tra il microprocessore e la memoria di sistema
 
MODULO 16 –> Il software
MODULO 16 –> Il softwareMODULO 16 –> Il software
MODULO 16 –> Il software
 
MODULO 15 --> Il backup dei dati
MODULO 15 --> Il backup dei datiMODULO 15 --> Il backup dei dati
MODULO 15 --> Il backup dei dati
 
MODULO 06: La produzione dei microprocessori e dei chip di memoria
MODULO 06: La produzione dei microprocessori e dei chip di memoriaMODULO 06: La produzione dei microprocessori e dei chip di memoria
MODULO 06: La produzione dei microprocessori e dei chip di memoria
 
MODULO IB04 –> La memoria di massa
MODULO IB04 –> La memoria di massaMODULO IB04 –> La memoria di massa
MODULO IB04 –> La memoria di massa
 
MODULO 08 --> Le memorie
MODULO 08 --> Le memorieMODULO 08 --> Le memorie
MODULO 08 --> Le memorie
 
MODULO 09 --> I bus
MODULO 09 --> I busMODULO 09 --> I bus
MODULO 09 --> I bus
 
Scheda Madre
Scheda MadreScheda Madre
Scheda Madre
 
MODULO 12 –> I dispositivi di input e/o di output
MODULO 12 –> I dispositivi di input e/o di outputMODULO 12 –> I dispositivi di input e/o di output
MODULO 12 –> I dispositivi di input e/o di output
 
Cpu
CpuCpu
Cpu
 
MODULO 28 –> La Business Continuity Management
MODULO 28 –> La Business Continuity ManagementMODULO 28 –> La Business Continuity Management
MODULO 28 –> La Business Continuity Management
 
MODULO 25 –> Fondamenti delle tecnologie per il web
MODULO 25 –> Fondamenti delle tecnologie per il webMODULO 25 –> Fondamenti delle tecnologie per il web
MODULO 25 –> Fondamenti delle tecnologie per il web
 
MODULO 18 –> Il sistema operativo
MODULO 18 –> Il sistema operativoMODULO 18 –> Il sistema operativo
MODULO 18 –> Il sistema operativo
 
Architettura dei Calcolatori 10 Input Ouput
Architettura dei Calcolatori 10 Input OuputArchitettura dei Calcolatori 10 Input Ouput
Architettura dei Calcolatori 10 Input Ouput
 
La rappresentazione delle informazioni
La rappresentazione delle informazioniLa rappresentazione delle informazioni
La rappresentazione delle informazioni
 

Ähnlich wie Sistemi Operativi: CPU Scheduler - Lezione 09

Introduzione User Mode Linux
Introduzione User Mode LinuxIntroduzione User Mode Linux
Introduzione User Mode Linux
Majong DevJfu
 
Performance dei sistemi di calcolo
Performance dei sistemi di calcoloPerformance dei sistemi di calcolo
Performance dei sistemi di calcolo
Majong DevJfu
 
Sistemi Operativi: Meccanismi - Lezione 03
Sistemi Operativi: Meccanismi - Lezione 03Sistemi Operativi: Meccanismi - Lezione 03
Sistemi Operativi: Meccanismi - Lezione 03
Majong DevJfu
 
Introduzione Alla Uml Mconsole
Introduzione Alla Uml MconsoleIntroduzione Alla Uml Mconsole
Introduzione Alla Uml Mconsole
Majong DevJfu
 
Traffic Shaping Su Linux
Traffic Shaping Su LinuxTraffic Shaping Su Linux
Traffic Shaping Su Linux
Majong DevJfu
 

Ähnlich wie Sistemi Operativi: CPU Scheduler - Lezione 09 (20)

Scheduling In Linux
Scheduling In LinuxScheduling In Linux
Scheduling In Linux
 
Sjf shortest job first
Sjf shortest job firstSjf shortest job first
Sjf shortest job first
 
Sjf shortest job first
Sjf shortest job firstSjf shortest job first
Sjf shortest job first
 
SysTick, Timer & Watchdog
SysTick, Timer & WatchdogSysTick, Timer & Watchdog
SysTick, Timer & Watchdog
 
Presentazione sistemi-Pipeline
Presentazione sistemi-PipelinePresentazione sistemi-Pipeline
Presentazione sistemi-Pipeline
 
Processi e Thread
Processi e ThreadProcessi e Thread
Processi e Thread
 
Jvm performance Tuning
Jvm performance TuningJvm performance Tuning
Jvm performance Tuning
 
Introduzione User Mode Linux
Introduzione User Mode LinuxIntroduzione User Mode Linux
Introduzione User Mode Linux
 
Assembly2
Assembly2Assembly2
Assembly2
 
Scheduling In Windows 2000
Scheduling In Windows 2000Scheduling In Windows 2000
Scheduling In Windows 2000
 
Fcfs first came first serve
Fcfs first came first serveFcfs first came first serve
Fcfs first came first serve
 
LTSP
LTSPLTSP
LTSP
 
Performance dei sistemi di calcolo
Performance dei sistemi di calcoloPerformance dei sistemi di calcolo
Performance dei sistemi di calcolo
 
Modulo 1 - Lezione 2
Modulo 1 - Lezione 2Modulo 1 - Lezione 2
Modulo 1 - Lezione 2
 
Presentazione - Algoritmo di Dijkstra
Presentazione - Algoritmo di DijkstraPresentazione - Algoritmo di Dijkstra
Presentazione - Algoritmo di Dijkstra
 
Sistemi Operativi: Meccanismi - Lezione 03
Sistemi Operativi: Meccanismi - Lezione 03Sistemi Operativi: Meccanismi - Lezione 03
Sistemi Operativi: Meccanismi - Lezione 03
 
Soluzioni per la difesa da attacchi DoS nelle reti SDN
Soluzioni per la difesa da attacchi DoS nelle reti SDNSoluzioni per la difesa da attacchi DoS nelle reti SDN
Soluzioni per la difesa da attacchi DoS nelle reti SDN
 
Presentazione microprocessore
Presentazione microprocessorePresentazione microprocessore
Presentazione microprocessore
 
Introduzione Alla Uml Mconsole
Introduzione Alla Uml MconsoleIntroduzione Alla Uml Mconsole
Introduzione Alla Uml Mconsole
 
Traffic Shaping Su Linux
Traffic Shaping Su LinuxTraffic Shaping Su Linux
Traffic Shaping Su Linux
 

Mehr von Majong DevJfu

9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud
Majong DevJfu
 
8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes
Majong DevJfu
 
7 - Architetture Software - Software product line
7 - Architetture Software - Software product line7 - Architetture Software - Software product line
7 - Architetture Software - Software product line
Majong DevJfu
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation
Majong DevJfu
 
5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture
Majong DevJfu
 
4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio
Majong DevJfu
 
3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles
Majong DevJfu
 
2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture
Majong DevJfu
 
1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product
Majong DevJfu
 
10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles
Majong DevJfu
 

Mehr von Majong DevJfu (20)

9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud9 - Architetture Software - SOA Cloud
9 - Architetture Software - SOA Cloud
 
8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes8 - Architetture Software - Architecture centric processes
8 - Architetture Software - Architecture centric processes
 
7 - Architetture Software - Software product line
7 - Architetture Software - Software product line7 - Architetture Software - Software product line
7 - Architetture Software - Software product line
 
6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation6 - Architetture Software - Model transformation
6 - Architetture Software - Model transformation
 
5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture5 - Architetture Software - Metamodelling and the Model Driven Architecture
5 - Architetture Software - Metamodelling and the Model Driven Architecture
 
4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio4 - Architetture Software - Architecture Portfolio
4 - Architetture Software - Architecture Portfolio
 
3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles3 - Architetture Software - Architectural styles
3 - Architetture Software - Architectural styles
 
2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture2 - Architetture Software - Software architecture
2 - Architetture Software - Software architecture
 
1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product1 - Architetture Software - Software as a product
1 - Architetture Software - Software as a product
 
10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles10 - Architetture Software - More architectural styles
10 - Architetture Software - More architectural styles
 
Uml3
Uml3Uml3
Uml3
 
Uml2
Uml2Uml2
Uml2
 
6
66
6
 
5
55
5
 
4 (uml basic)
4 (uml basic)4 (uml basic)
4 (uml basic)
 
3
33
3
 
2
22
2
 
1
11
1
 
Tmd template-sand
Tmd template-sandTmd template-sand
Tmd template-sand
 
26 standards
26 standards26 standards
26 standards
 

Sistemi Operativi: CPU Scheduler - Lezione 09

  • 1. Introduzione al CPU scheduling • Multiprogrammazione: – mantenere più processi in esecuzione – commutare l'esecuzione ad un altro processo in caso di blocco per I/O – impiegare tempi di attesa in modo produttivo 1
  • 2. Ciclicità fasi di elaborazione - I/O • L'esecuzione di un processo si alterna in un ciclo costituito da: – fase di elaborazione (CPU burst) – attesa completamento I/O (I/O burst) • Tale ciclo prosegue fino alla fine della esecuzione del programma 2
  • 3. Ciclicità fasi di elaborazione – I/O • Processo CPU-bound: – produce poche sequenze di operazioni di CPU molto lunghe – produce relativamente poco I/O • Processo I/O-bound: – produce tante sequenze di operazioni di CPU molto breve – produce prevalentemente operazioni di I/O 3
  • 4. Scheduler della CPU • Quando la CPU passa nello stato di inattività, il SO sceglie un processo dalla coda di pronto per l'esecuzione • Scheduler della CPU: – gestisce la coda di pronto – seleziona il prossimo processo da mandare in esecuzione 4
  • 5. Scheduler della CPU • Coda dei processi pronti: – non è necessariamente una coda FIFO – può essere implementata come: ♦ una coda FIFO ♦ una coda con priorità ♦ un albero ♦ una lista concatenata non ordinata • elementi della coda dei processi pronti sono i process control block 5
  • 6. Il diritto di prelazione • Lo scheduling della CPU può essere attivato nelle seguenti circostanze: 1.un processo passa dallo stato di esecuzione allo stato di attesa (richiesta I/O) 2.un processo passa dallo stato di esecuzione allo stato di pronto (interruzione, quanto) 3.un processo passa dallo stato di attesa allo stato di pronto (completamento I/O) 4.un processo termina l'esecuzione 6
  • 7. Il diritto di prelazione • 1. e 4. non richiedono una vera e propria scelta di scheduling (prossimo processo) • 2. e 3. richiedono una scelta di scheduling (prossimo processo) • Schemi di scheduling: – con diritto di prelazione (preemptive): lo scheduling interviene in 1., 2., 3., 4. – senza diritto di prelazione (non preemptive): lo scheduling interviene in 1., 4. 7
  • 8. Il diritto di prelazione • Scheduling senza diritto di prelazione – il processo rimane in possesso della CPU fino a quando non la rilascia ♦ termine esecuzione ♦ passaggio nello stato di attesa (I/O) – non esiste il concetto di quanto di tempo ♦ implementazione più semplice ♦ funziona su architetture sprovviste di timer 8
  • 9. Il diritto di prelazione • Scheduling con diritto di prelazione – concetto di quanto di tempo – singolo processo non monopolizza la CPU • Problemi – gestione in mutua esclusione dei dati condivisi fra due o più processi – se un processo in kernel mode viene interrotto a metà di una operazione critica (aggiornamento di code di scheduling), il kernel rimane in uno stato inconsistente – una interruzione interrompe un processo in kernel mode; strutture dati in comune vanno accedute in mutua esclusione 9
  • 10. Il diritto di prelazione • Scheduling con diritto di prelazione – concetto di quanto di tempo – singolo processo non monopolizza la CPU • Soluzioni – Nei SO UNIX, il context switch avviene al termine di una chiamata di sistema ♦ soluzione semplice ♦ non scala su più unità di elaborazione – versioni recenti di Linux (v2.6) introducono i preemption point ♦ API per rilasciare volontariamente la CPU ♦ il programmatore decide il rilascio 10
  • 11. Dispatcher • Il componente del CPU scheduler che sceglie il prossimo processo da mandare in esecuzione • Esegue le seguenti azioni: – context switch – passaggio al modo utente – salto alla locazione della prossima istruzione da eseguire • Il dispatcher viene invocato ad ogni context switch – deve essere rapido 11
  • 12. Algoritmi di scheduling • First Come, First Served (FCFS) • Shortest Job First (SJF) • Priority • Round Robin (RR) • Multilevel Queue (MQ) • Multilevel Feedback Queue (MFQ) 12
  • 13. First Come, First Served • Si assegna la CPU al processo che l'ha chiesta per prima • Implementato tramite una coda FIFO • Quando un processo entra nella coda dei processi pronti: – PCB inserito in fondo alla coda dei processi pronti • Quando la CPU torna libera: – estrae dalla coda dei processi pronti il PCB in cima alla coda e ripristina l'esecuzione del processo corrispondente 13
  • 14. First Come, First Served Processo Durata P1 24msec P2 3msec P3 3msec P1 P2 P3 0 24 27 30 P1 P2 P3 0 3 6 30 14
  • 15. First Come, First Served • Tatt(P1,P2,P3)=(0+24+27)/3=17msec • Tatt(P2,P3,P1)=(6+0+3)/3=3msec • Il tempo di attesa di FCFS non è, in genere, minimo • Effetto convoglio: se un processo CPU-bound va in esecuzione per primo, gli altri processi devono attendere il rilascio della CPU – riduzione utilizzo CPU – riduzione utilizzo periferiche – invertendo l'ordine di esecuzione migliorerei gli utilizzi 15
  • 16. First Come, First Served • Assenza di prelazione: CPU trattenuta fino al rilascio della CPU – termine esecuzione – richiesta di I/O • FCFS è problematico nei sistemi time shared – quanto di tempo stride con assenza di prelazione 16
  • 17. Shortest Job First • Si associa ad ogni processo la lunghezza della successiva sequenza di operazioni di CPU • Si assegna la CPU al processo con la lunghezza più breve • Se due processi hanno sequenze uguali, si applica il criterio FCFS • Nome più corretto: shortest CPU burst first 17
  • 18. Shortest Job First • Il tempo di attesa medio per n processi in coda si può scrivere come: (1) Tatt=(T1+T2+...+Tn)/n dove (2) Tj=Tj-1+tj essendo: ♦ T =tempo attesa job j-1 j-1 ♦ t =tempo esecuzione job j j 18
  • 19. Shortest Job First • Sostituendo (2) in (1) si ottiene: (3) Tatt=((n-1)t1+(n-2)t2+...+(n-k)tk+...+tn-1)/n • Prendiamo due processi di indici k e k-j (separati di j posizioni): Pk e Pk-j – k>0, j>0, k-j>0 – Il processo che viene prima ha tempo di esecuzione più grande: tk-j > tk • Scambiamo di posto questi due processi (S1) • Calcoliamo il nuovo tempo di attesa medio: (4) Tatt,S1=((n-1)t1+...+(n-k+j)tk+...+(n-k)tk-j+...+tn-1)/n 19
  • 20. Shortest Job First • Calcoliamo la differenza (3)-(4): si elidono tutti i termini tranne quelli relativi a tk-j e tk Tatt-Tatt,S1=((n-k+j)tk-j+(n-k)tk-(n-k+j)tk-(n-k)tk-j)/n Tatt-Tatt,S1=j(tk-j-tk)/n > 0 • Spostando dopo un processo con tempo di esecuzione più grande, si ottiene una riduzione del tempo di attesa • Reiteriamo S1,S2,...,Sm scambi fino a quando i processi sono ordinati dal più breve al più lungo – si ottiene sempre un Tatt,Sj descrescente – Dopo m scambi, si ottiene l'ordinamento SJF 20
  • 21. Shortest Job First Processo Durata P1 6msec P2 8msec P3 7msec P4 3msec P1 P4 P3 P2 0 3 9 16 24 21
  • 22. Shortest Job First • Tatt(P4,P1,P3,P2)=(3+16+9+0/4=7msec • Tatt è ottimale • spostando un processo breve prima di un processo lungo: – il tempo di attesa per il processo breve diminuisce più di quanto aumenti il tempo di attesa per il processo lungo – di conseguenza, Tatt medio diminuisce • Problema: SJF richiede la durata della successiva richiesta di CPU – non sempre si conosce esattamente, si deve spesso stimarla 22
  • 23. Shortest Job First • La lunghezza del CPU burst si stima con la sua media esponenziale: ten+1=atn+(1-a)ten , a in [0,1] • a=0: valore recente non ha effetto • a=1: assenza di storia • a=1/2: stesso peso per valore recente e storia passata (scelta comune) • SJF può essere con e senza prelazione 23
  • 24. Shortest Job First • Se arriva un processo con CPU burst successivo più breve rispetto a ciò che resta al processo attualmente in esecuzione: – prelazione: il processo in esecuzione viene sostituito col nuovo processo – assenza di prelazione: il processo in esecuzione termina il suo CPU burst • SJF con prelazione viene chiamato shortest remaining time first 24
  • 25. Priority • Si associa ad ogni processo una priorità • Si assegna la CPU al processo con priorità più alta • Se due processi hanno uguale priorità, si applica il criterio FCFS • SJF è un algoritmo di priorità – la priorità è l'inverso della lunghezza (prevista) del prossimo CPU burst 25
  • 26. Priority Processo Durata Priorità P1 10msec 3 P2 1msec 1 P3 2msec 4 P4 1msec 5 P5 5msec 2 P2 P1 P3 P5 P4 01 6 16 18 19 26
  • 27. Priority • Tatt(P2,P5,P1,P3,P4)=8.2msec • Le priorità possono essere definite: – internamente: in base a grandezze misurabili (limiti di tempo, memoria, lunghezza CPU burst) – esternamente: in base a criteri esterni al SO (importanza del processo) • Priority scheduling può essere con o senza prelazione 27
  • 28. Priority • Se arriva un processo con priorità maggiore rispetto a quella del processo attualmente in esecuzione: – prelazione: il processo in esecuzione viene sostituito col nuovo processo – assenza di prelazione: il processo in esecuzione termina il suo CPU burst • Problema: starvation (attesa indefinita di processi a bassa priorità) • Soluzione: aging (aumento graduale della priorità) 28
  • 29. Round Robin • Progettato per sistemi time sharing • FCFS con capacità di prelazione per commutare fra processi • Ciascun processo riceve una quantità fissa di tempo di CPU, il quanto di tempo – esecuzione viene interrotta allo scadere del quanto di tempo – quanto di tempo varia da 10msec a 100msec • La coda dei processi pronti viene gestita in modalità circolare • Implementazione tramite coda FIFO – nuovi processi aggiunti in coda – processi appena eseguiti sono riaccodati 29
  • 30. Round Robin Processo Durata P1 24msec Quanto=4msec P2 3msec P3 3msec P1 P2 P3 P1 P1 P1 P1 P1 0 4 7 10 14 18 22 26 30 30
  • 31. Round Robin • Tatt(P1,P2,P3)=17/3=5.66msec • RR è sempre con prelazione (per via del quanto di tempo) • Se ho n processi, quanto di tempo pari a q: – ciascun processo ottiene 1/n del tempo di elaborazione di CPU in frazioni di al più q unità di tempo – l'attesa di esecuzione è limitata a (n-1)*q unità di tempo 31
  • 32. Round Robin • Le prestazioni dell'algoritmo RR dipendono fortemente dalla dimensione del quanto di tempo • quanto di tempo piccolo: – RR prende il nome di CPU sharing – overhead del context switching • quanto di tempo ampio: – RR tende a diventare FCFS 32
  • 33. Multilevel queue • Distinzione fra più classi di processi – processi interattivi (foreground) – processi in sfondo (background) – processi batch • Classi di processi hanno requisiti diversi sui tempi di risposta • Si suddivide la coda dei processi pronti in più code distinte • Ciascun processo viene associato permanentemente ad una coda • Ciascuna coda ha il proprio algoritmo di scheduling (RR, FCFS) 33
  • 34. Multilevel queue • Necessità di uno scheduling fra code: quali sono le code con priorità più alta di esecuzione? – priorità fissa, con prelazione • Esempio: 1.processi di sistema 2.processi interattivi 3.processi interattivi di editing 4.processi in background 5.processi degli studenti 34
  • 35. Multilevel queue • Ogni coda ha priorità assoluta sulle code di priorità più bassa • Se un processo a priorità più alta viene iniziato, si interrompe un eventuale processo in esecuzione a priorità più bassa (Solaris2) 35
  • 36. Multilevel feedback queue • Variante di multilevel queue • I processi possono spostarsi fra le varie code – cambio di priorità • Idea: raggruppare i processi con caratteristiche di CPU burst simili nelle stesse code • Tipicamente: – CPU burst lunghi, priorità bassa – CPU burst brevi, priorità alta 36
  • 37. Multilevel feedback queue quanto = 8 quanto = 16 FCFS 37
  • 38. Multilevel feedback queue • Parametri di MFQ: – numero di code – algoritmo di scheduling per ciascuna coda – criterio usato per spostare un processo in una coda con priorità maggiore – criterio usato per spostare un processo in una coda con priorità minore – criterio usato per scegliere la coda in cui inserire inizialmente un processo 38
  • 39. Scheduling nei sistemi SMP • Finora sono stati analizzati sistemi basati su un solo processore • Con più processori, diviene possibile la condivisione del carico (load sharing) dei processi fra più processori • Ci concentriamo su sistemi: – Symmetric Multi Processing (SMP): processori uguali, ciascuno in grado di eseguire codice – Uniform Memory access (UMA): la probabilità di accedere ad una qualunque locazione in memoria è la stessa per ogni processore 39
  • 40. Scheduling nei sistemi SMP: tecniche • Due diversi approcci per implementare la coda di pronto – Coda di pronto per ciascun processore – Una singola coda di pronto acceduta da tutti i processori • Processor Affinity – Lo scheduler tende a rischedulare gli stessi processi sugli stessi processori, per aumentare la probabilità di trovare dati in cache • Load Balancing – Lo scheduler bilancia l'esecuzione dei processi in modo tale che la lunghezza delle code di pronto sia grossomodo la stessa sulle CPU 40
  • 41. Scheduling dei thread • Se un SO è multithreaded, i thread devono essere schedulati dallo scheduler del kernel • Process Contention Scope: – Scelta di schedulazione dei thread user level – Many-to-One, Many-to-Many – Basato sul concetto di priorità • System Contention Scope: – Scelta di schedulazione dei thread kernel level – One-to-One (Linux) – Basato su Multilevel Feedback Queue 41
  • 42. Valutazione algoritmi di scheduling • Come fare a scegliere un dato algoritmo di CPU scheduling fra i tanti a disposizione? – Occorre valutarli – Ma come? • Tre passi: – Occorre scegliere degli indici di valutazione delle prestazioni di un algoritmo – Occorre scegliere degli indici statistici di misurazione per gli indici di prestazione – Occorre costruire un modello di rappresentazione dell'algoritmo 42
  • 43. Indici di prestazione • Utilizzazione CPU – È una probabilità (valori in [0, 1]) – È definita come la probabilità di trovare il sistema occupato in un dato intervallo di osservazione – In alternativa, è definita come il rapporto fra un intervallo di tempo in cui la CPU è usata (Tocc) ed un intervallo di tempo di misura(Tmis) T occ  = T mis  – 0: sistema completamente scarico – 1: sistema utilizzato al 100% (bene se non ci sono ulteriori accodamenti) 43
  • 44. Indici di prestazione T occ =∑ T o , j To,j Ti,k Tmis T occ  = T mis  44
  • 45. Indici di prestazione • Throughput – È definito come il numero di processi N commutati in un intervallo di misura Tmis N X= T mis – Vorremmo averlo più alto possibile 45
  • 46. Indici di prestazione • Tempo di risposta – È definito come l'intervallo temporale che passa fra la sottomissione del processo e l'inizio della risposta – Lo vorrei minimo per i processi interattivi • Tempo di completamento – È definito come l'intervallo temporale che passa fra la sottomissione del processo ed il suo completamento – In generale, lo vorremmo più basso possibile • Tempo di attesa: – È definito come la somma degli intervalli temporali passati in coda di pronto – In generale, lo vorremmo più basso possibile 46
  • 47. Indici statistici • Media campionaria – È definita come la media aritmetica di n campioni xi di una grandezza n 1 x= ∑ x i n i=1 – In generale, la vorrei più bassa possibile • Varianza campionaria – È definita come la media dello scarto quadratico fra n campioni e la loro media campionaria – Misura la dispersione dei valori attorno alla media n 1 2 2 ∑  xi −x = n−1 i=1 – Lo vorremmo basso per processi interattivi 47
  • 48. Modelli rappresentativi • I modelli rappresentativi possono essere i seguenti – Modello analitico – Modello a reti di code – Modello simulativo – Sistema reale 48
  • 49. Modello analitico • Si analizza l'algoritmo ed il carico a cui esso è soggetto • Si cerca di scoprire una relazione in forma chiusa (formula) che lega la prestazione di un dato algoritmo con il numero di processi • In un sistema complesso, non sempre si riesce a stabilire la formula • Nota una formula, la valutazione delle prestazioni è immediata • Ad esempio, per SJF, il tempo di attesa su n processi è dimostrabilmente minimo: n 1 T att = ∑ n−it i n i=1 49
  • 50. Modello a reti di code • Lo scheduler è visto come un oggetto servente a cui è attaccato un oggetto coda di attesa • Una richiesta entra nello scheduler, si accoda ed aspetta fino a quando non si libera il servente • Le richieste arrivano con un ritmo aleatorio, con valor medio pari a λ richieste per unità di tempo • Il servente serve richieste (processi) ad un ritmo aleatorio, con valor medio pari a μ richieste per unità di tempo • Più componenti possono essere attaccati per formare una rete di code (queueing network) 50
  • 51. Modello a reti di code Una coda semplice λ μ CPU coda servente Una rete di code Input Output CPU Disk 51
  • 52. Modello a reti di code • Legge di Little – Sia n il numero medio di elementi in coda – Sia λ il tasso medio di arrivo delle richieste – Sia W il tempo medio speso in coda – Sussiste la seguente relazione generale: n= W • Esempio: – Se arrivano in media λ=7 processi al secondo – Se la lunghezza media della coda è n=14 processi – Allora il tempo medio di permanenza in coda è di W=2s 52
  • 53. Modello a reti di code • Utilizzazione del servente – È definita come il rapporto fra λ e μ  =  • In generale, si ha: ρ 1 λ λ=μ 53