Guida La schedulazione del processore (S.O.)

Stato
Discussione chiusa ad ulteriori risposte.

syscall

Utente Emerald
21 Settembre 2013
683
43
581
475
Ultima modifica da un moderatore:
Ci eravamo lasciati con un piccolissimo accenno sullo scheduler, dopo aver discusso sulla comunicazione tra processi, continuamo quindi la nostra panoramica generale sulle componenti di un sistema operativo, parlando appunto di Schedulazione del processore.

Durante la lettura potremmo imbatterci in termini apparentemente incomprensibili ... pertanto lascio sulle note, come al solito, dei rimandi e degli approfondimenti sui singoli argomenti che reputo esser più rognosi da comprendere !

Bene, iniziamo subito col dire che lo scheduler è il mezzo con cui il S.O. seleziona i processi dalle code. Sceglie tra i processi pronti nella memoria, quello cui assegnare la CPU.
La schedulazione è un'operazione fondamentale dei moderni sistemi operativi multiprogrammati e multitasking. L'obiettivo principale della schedulazione è quello di avere sempre processi attivi e in esecuzione, al fine di massimizzare l'uso della CPU.

Il suo successo si basa sulla proprietà ciclica dei processi che alternano continuamente fasi di computazione svolta dalla CPU, a fasi di attese e di rilascio di una periferica, che si conclude con una richiesta di terminazione al sistema.

Si prendono decisioni riguardanti lo scheduler della CPU nel caso in cui:
  • un processo passa dallo stato di esecuzione allo stato di attesa;
  • un processo termina
Su questi due primi casi si parla di "scheduling non pre-emptive", perchè ad essi segue la scelta di un nuovo processo da eseguire
  • un processo passa dallo stato di esecuzione allo stato di pronto;
  • un processo passa dallo stato di attesa allo stato di pronto
In questi ultimi due casi si parla invece di "scheduling pre emptive", poichè alcuni processi "acquistano" la CPU prima di altri.

Nello scheduling di questo tipo però vi sono degli inconvenienti, infatti:
  • se due processi condividono dati, e mentre uno scrive si ha la prelazione in favore dell'altro che tenta di leggere gli stessi dati, questi dati saranno rilasciati in uno stato incoerente.
La schedulazione non pre-emptive è sincrona con l'evoluzione della computazione, mentre la pre-emptive è asincrona e corrispondono allo scadere del time-slice (quanto di tempo).

I sistemi operativi possono schedulare secondo tre livelli temporali: schedulazione a breve, lungo e medio termine.

Schedulazione a breve termine:
ha come obiettivo primario quello di ordinare la coda dei processi in memoria centrale e porli in uno stato di read to run.​
L'algoritmo che l'implementa deve essere molto veloce al fine di minimizzare il carico di gestione.​

Schedulazione a lungo termine:
ordina tutti i processi attivi nel sistema, compresi quelli presenti nella memoria di massa, identificando il gruppo di processi che deve essere caricato in memoria cerntrale e posto come ready to run.​

Gli algoritmi sono solitamente lenti e complessi, perchè scegliere i processi da caricare nella memoria centrale non è un'operazione banale, e deve essere eseguita poche volte per evitare sovraccarichi del sistema.

Schedulazione a medio termine:
è una via di mezzo fra le due precedenti e viene tipicamente implementata nei sistemi time-sharing, per far fronte a diversi problemi prestazionali modificando dinamicamente il gruppo di processi caricati in memoria.​

Gli algoritmi di scheduling vengono scelti in base ad alcuni criteri come l'utilizzo della CPU, la produttività, il tempo di completamento, il tempo di attesa e il tempo di risposta.

Ma quali sono sti benedetti algoritmi? Bene, gli algoritmi disponibili sono 6!
  • First come first served (FCFS)
  • Shortest job first (SJF)
  • Scheduling con priorità
  • RoundRobin (RR)
  • Scheduling a code multiple
  • Scheduling a code multiple con retroazione.

Adesso li vedremo in breve tentando, come al solito, di semplificare il più possibile:

L'FSFS opera assegnando al CPU al primo processo in cima alla coda dei processi pronti all'esecuzione, ovvero viene servito sempre il primo processo in arrivo.
Una gestione di questo genere ha degli svantaggi nei sistemi basati sul quanto di tempo, poichè l'arrivo di un processo CPU-BOUND potrebbe produrre un effetto convoglio prolungando lo stato d'attesa dei processi I/O BOUND.

Nel caso dello SJF, si assegna la CPU a quel processo avente la minor successiva sequenza di istruzioni, ovvero quel processo che u tilizza la CPU per meno tempo.
E' un algoritmo ottimale poichè rende minimo il tempo di attesa, ma è difficile sapere quale processo utilizzi per minor tempo la CPU, non potendolo sapere se ne può fare solo una stima!

Lo scheduling con priorità, assegna una certa priorità ad ogni processo e si assegna la CPU a quel processo avente maggior priorità. Un flusso costante di processi a priorità alta puo condurre alla "starvation"

Il Round Robin è molto simile all'FCFS ad eccezione del fatto che non appena viene selezionato il processo dalla testa della coda, ad esso viene applicato un quanto di tempo allo scadere del quale il processo verrà spostato alla fine della coda dei processi pronti.

Il quanto non deve essere ne troppo grande ne troppo breve.

Lo scheduling a code multiple, suddivide la coda dei processi in code distinte, all'interno delle quali si inseriscono i processi in modo permanente, sulla base di alcune caratteristiche come la priorità. Ogni coda ha un suo algoritmo che la gestisce ed ha una priorità assoluta su quella più bassa.

Lo scheduling a code multiple con retroazione è come il precedente, con la variante che se un processo usa troppo a lungo la CPU, questo non sarà spostato in una coda avente priorità più bassa, e viceversa :)

Continueremo a scrivere in maniera generale di sistemi operativi in un'altra discussione che vedrà come contenuti la sincronizzazione e cooperazione tra processi e il deadlock, entrambi in un unico post! Che cose brutte eh? :p

Alla prossima! Ciao, ciao o/

Approfondimenti:​

Per i singoli algoritmi di scheduling cercate direttamente su google scrivendo il nome e lo si trova :p

http://www.inforge.net/community/in...-introduzione-all-architettura-di-un-s-o.html
http://www.inforge.net/community/informatica-zone/364352-guida-comunicazione-tra-processi-s-o.html
http://www.inforge.net/community/in...os-e-file-system-di-un-sistema-operativo.html
 
  • Mi piace
Reazioni: Asahi
Stato
Discussione chiusa ad ulteriori risposte.