Torna alla pagina di Sistemi Operativi
:: Appunti caotici ::
Lezione 1
Schedulazione
Pag 1
Sommario
Il principio che muove (e dà significato) allo scheduling è l'ordinamento dei processi, thread inclusi.
Pag 2
Obiettivo
Obiettivo dello scheduling è la definizione del criterio (le politiche) con cui ordinare i processi affinché sia garantita la turnazione.
Livelli di schedulazione
I livelli di schedulazioni sono livelli di astrazione che tengono conto delle diverse prospettive ed esigenze temporali. Si dividono in:
- a breve termine, che guardano alle esigenze immediate del processore
- a lungo termine, che cercano di tener conto globalmente di tutti i processi che potrebbero voler accedere al processore
- a medio termine, una via di mezzo, che corregge gli ordinamenti della schedulazione a lungo termine in base alla situazione attuale
Per quanto riguarda quelli a lungo termine c'è da notare come essi non facciano le loro valutazioni in base ai soli processi caricabili nello spazio di memoria disponibile (in quel momento), ma ad uno spazio di memoria astratto che tiene conto anche dei processi futuri da caricare.
Pag 3
Schedulazione a breve termine (1)
Anche detta short-term scheduler o CPU-scheduler, ha come obiettivo ordinare i processi già presenti in memoria centrale e nello stato di pronto all'esecuzione. Quindi i processi attivi non caricati in memoria centrale vengono ignorati (sprecheremmo del tmepo per caricarli dalla memoria di massa), così come quelli nello stato di wait (perché anche se avessero accesso al processore dovrebbero comunque aspettare il completamento delle operazioni sulle risorse per cui sono in attesa).
Schedulazione a breve termine (2)
L'algoritmo che gestisce questo tipo di schedulazione deve essere:
- eseguito frequentemente per garantire una turnazione rapida dei processi (una volta ogni 100 millisecondi)
- deve essere veloce per minimizzare il sovraccarico di gestione (sarebbe stupido se ci volesse più tempo per decidere come gestire i processi che eseguirli)
- algoritmi usualmente semplici (che rappresentano in generale la scelta migliore, piuttosto che utilizzare un algoritmo più complesso e sicuramente più completo, ma comunque troppo dispendioso in termini di tempo)
Pag 4
Schedulazione a lungo termine (1)
Anche detta long-term scheduler o job-scheduler, riprendendo il nome job dalle sequenze di lavoro eseguite in modalità batch nei mainframe (che tentano di completare il lavoro nel mino tempo possibile).
Ordina tutti i processi ready-to-run nel sistema (sia dalla memoria centrale che da quelle di massa) identificando il gruppo di processi che devono essere caricati in memoria centrale per l'esecuzione e posti nello stato di pronto all'esecuzione.
Costruisce il gruppo mescolando processi CPU-bound e I/O-bound in modo da massimizzare lo sfruttamento atteso del processore. Esagerare con i CPU-bound significherebbe sì sfruttare al meglio il processore, ma annullando di fatto le interazioni con l'utente. Al contrario, esagerare con gli I/O-bound garantirebbe una corretta e fluida interazione, ma con tempi di elaborazione eterni.
Schedulazione a lungo termine (2)
- Può essere assente (se ad esempio ho un sistema embedded, con tutti i processi già presenti in memoria centrale) o minimale (che esegue cioè un ordinamento senza troppe pretese, tipica di quei sistemi interattivi dove non posso conoscere a priori il numero di processi attivati)
- algoritmi usualmente complessi (senza esagerare), perché molto più complesso è l'obiettivo che si profiggono: scegliere la combinazione di processi più ragionevole da caricare dalle memorie ausiliarie per sfruttare al meglio il processore.
- deve essere eseguito poco frequentamente per non sovraccaricare il sistema (tipicamente una volta ogni qualche minuto), o non sarebbe così produttivo
Pag 5
Schedulazione a medio termine (1)
Anche detta medium-term scheduler.
Tra i problemi che cercherà di risolvere ci sarà quello legato della memoria centrale esaurita a causa delle dimensioni dei processi caricati: per averne tanti, spesso ne carico porzioni di dimensioni limitate, con la conseguenza che dovrò caricarne di nuovi ogni volta che termino la computazione di quelli precedenti.
Schedulazione a medio termine (2)
Per ridurre la concorrenza tra i processi, ottimizzarna la distribuzione tra CPU-bound e I/O-bound e dare maggior memoria centrale ai processi caricati in essa, introduco un livello intermedio di schedulazione.
Questo modifica dinamicamente il gruppo di processi caricati in memoria centrale e posti nello stato di pronto all'esecuzione dallo schedulatore a lungo termine al fine di adattare il gruppo di processi caricato in memoria centrale all'effettiva distribuzione dei lavori che essi stanno svolgendo.
Quindi la schedulazione a medio termine corregge gli ordinamenti della schedulazione a lungo termine (che non poteva prevedere tutti gli scenari a priori) in base alla situazione attuale.
Pag 6
Schedulazione a medio termine (3)
...
Schedulazione a medio termine (4)
...
Pag 7
Attivazione (1)
...
Attivazione (2)
La schedulazione con rilascio anticipato pre-emptive scheduling è asincrona con l'evoluzione della computazione, perché non sa quando scadrà il quanto di tempo concesso dal time-sharing.
Torna alla pagina di Sistemi Operativi