COS'E' LO SCHEDULING DEL DISCO?

Ogni volta che un processo deve compiere delle operazioni di INPUT/OUTPUT con l'unità disco deve inviare una richiesta al sistema operativo; Essa contiene il tipo di operazione, l'indirizzo nel disco nel quale avverrà il trasferimento, l'indirizzo di memoria da dove trasferire i dati, e infine la quantità di byte da trasferire. Se, disco rigido, e controllore sono disponibili la richiesta verrà soddisfatta immediatamente, altrimenti verrà accodata nell'attesa di essere eseguita. Le code di I/O possono aumentare considerevolmente nel tempo, sicchè spetta al sistema operativo decidere quali richieste eseguire per prime.

Per gestire le richieste di I/O ed eseguirle il più velocemente possibile vengono impiegati degli algoritmi per lo scheduling del disco. Ecco un elenco dei più comuni: i FCFS (first come, first served), gli SSTF (shortest seek time first), gli SCAN, i C-SCAN, i LOOK, i C-LOOK, ed infine i LIFO.

Iniziamo dagli algoritmi FCFS, chiamati First Come, First Served, ossia le richieste di I/O del disco vengono eseguite in ordine di arrivo. Per esempio, se la coda di richieste dell'unità disco contiene i cilindri 23, 184, 120, 45, 89, 90, 1, e la testina del disco si trova nel cilindro 46, essa dovrà spostarsi al cilindro 23, poi al succesivo 184, e via via sino all'ultimo. La distanza totale coperta dalla testine del disco risulta di 457 cilindri (v. figura).

Attenzione: i grafici, dove necessario, mostrano i cilindri 0, e 200 che rappresentano gli estremi opposti, e non appartengono alla coda delle richieste I/O;


FIGURA 22.

Il secondo algoritmo lo SSTF (shortest seek time first), o scheduling per brevità esegue tutte le richieste di I/O della coda più prossime alla posizione corrente della testina prima di elaborarne altre; Per tale motivo esso è chiamato algoritmo di servizio secondo il più breve tempo di ricerca.

Se utilizziamo l'esempio precedente, la testina del disco dal cilindro 46 si sposterà al cilindro 45, poi al cilindro 23 e cosi via fino al cilindro 184. La coda verrà soddisfatta nell'ordine seguente: 46,45,23,1,89,90,120,184, per una distanza coperta totale di 228 cilindri (v. figura).


FIGURA 23.

Lo scheduling del disco che utilizza l'algoritmo SCAN sposta la testina del disco da un estremo all'altro nella sola direzione possibile. In pratica le testine dell'unità disco lo attraversano nelle due direzioni. Nel nostro esempio pratico, le richieste verrebberò così soddisfatte ammesso che le testine si stiano spostando verso il cilindro 0: 46,45,23,1,giungendo fino al cilindro 0; Successivamente le testine si sposteranno verso l'estremo opposto servendo le richieste ai cilindri 89,90,120,184. Nel nostro esempio la distanza coperta totale è di 229 (v. figura). Se la testina del disco si muovesse verso l'ultimo cilindro le richieste verrebbero soddisfatte in quest'ordine: 46,89,90,120,184, poi, essa proseguirebbe fino al cilindro 200, e a questo punto invertirebbe la direzione del braccio, e verrebbero servite le richieste ai cilindri 45,23,1, per un totale di 353 cilindri(v. figura). Questo tipo di algoritmo è anche conosciuto come l'algoritmo dell'ascensore. Infine, se durante lo spostamento della testina verso una direzione venisse richiesta un operazione su un cilindro posto davanti alla stessa, essa verrebbe soddisfatta quasi immediatamente; Se invece, la richiesta viene posta su un cilindro già superato, bisognerà aspettare l'inversione di direzione.


FIGURA 24.


FIGURA 25.

Un altro algoritmo molto utilizzato nello scheduling del disco è il C-SCAN (circular SCAN) che rappresenta una variante del precedente algoritmo SCAN. Ma vediamo come funziona: la testina dell'unità disco si sposta nelle due direzioni, ma solo in una direzione serve le richieste I/O; Nel nostro esempio, la coda di richieste I/O dei cilindri 46,23,184,120,45,89,90,1 è così elaborata: 46,89,90,120,184, e poi la testina prosegue fino al 200 cilindro; Successivamente la testina ritorna al cilindro 0, ed elabora le richieste al cilindro 1,23,45 per un totale di 399 cilindri.


FIGURA 26.

Gli algorimi SCAN e C-SCAN con una piccola variazione possono modificare il loro meccanismo di risposta alle richieste I/O, e diventare rispettivamente le varianti LOOK, e C-LOOK. Quest'ultime "guardano" se sono presenti altre richieste dopo l'ultima richiesta I/O soddisfatta nella direzione di marcia corrente, nel qual caso le servono, oppure in caso contrario invertono la direzione. Nel nostro caso la variante LOOK di SCAN dovrebbe funzionare come mostrato in figura. Il numero totale di cilindri coperti è 321.


FIGURA 27.

Mentre, la variante C-LOOK di C-SCAN dovrebbe funzionare come mostrato in figura. Il numero totale di cilindri percorsi è 367.


FIGURA 28.

L'algoritmo LIFO (Last In First Out) rappresenta l'ultimo "meccanismo" di risposta alle richieste di I/O di quest'articolo, e consiste nel servirle in ordine inverso di arrivo. Nel nostro caso, la coda di richieste I/O dei cilindri 46, 23, 184, 120, 45, 89, 90, 1 verrebbe servita così: 1,90,89,45, 120,184,23 come mostrato nel grafico seguente. La distanza coperta totale è di 479 cilindri.


FIGURA 29.

ALTRE CONSIDERAZIONI SULLO SCHEDULING DEL DISCO.

Le prestazioni nell'esecuzione della coda degli accessi al disco dipendono dal tipo, e dal numero delle richieste I/O. Se un programma legge, o scrive un file in più parti sparse nel disco, o in parti contigue, lo spostamento della testina del disco sarà diverso nei due casi. Nel primo, il movimento della testina, e quindi il tempo di esecuzione della coda sarà elevato poichè la distanza da percorrere sarà maggiore. Nel secondo caso, la lettura o scrittura avverrà più velocemente poichè il movimento della testina sarà il più piccolo possibile. Gli algoritmi di scheduling del disco da adottare saranno diversi a seconda del tipo di distribuzione dei file sulla superficie del disco. Alcuni produttori hanno integrato nei controllori del disco gli algoritmi di scheduling, e quando il sistema operativo invia le richieste di I/O, essi vengono utilizzati a seconda della situazione. In pratica, oltre alle prestazioni I/O dell'unità disco, il sistema operativo deve poter soddisfare le richieste più importanti, e così alcune richieste di I/O (una pagina di memoria virtuale) diventano più urgenti di altre. In tale contesto, il sistema operativo dovrebbe controllare lo scheduling del disco nel modo più opportuno (infatti esso dovrebbe essere implementato come un modulo a sè stante del S.O.), e inviare al controllore dell'hard disk le richieste di I/O nel modo migliore. Ciò significa, che le le richieste I/O vengono elaborate in base alla loro urgenza, e gli algoritmi di scheduling vengono utilizzati dal sistema operativo, e al controllore del disco vengono inviate solo le richieste.

COSA SUCCEDE QUANDO "FORMATTIAMO" UN DISCO RIGIDO?

Come abbiamo già detto, un disco rigido è costituito da uno o più piatti, i quali devono essere "formattati" a basso livello via software prima di poter essere utilizzati. In pratica, il nostro hard disk è una "tabula rasa" che prima di memorizzare i dati deve essere formattato fisicamente. Questa operazione si chiama FORMATTAZIONE A BASSO LIVELLO, e consiste in una divisione del disco in speciali strutture per ogni settore. Dopo tale modifica un settore è costituito da un preambolo, uno spazio per i dati, e un campo ECC; Il primo contiene dei bit che permettono all'hardware di riconoscere l'inizio del settore; Il secondo, normalmente di 512 byte è la dimensione di spazio dati riservato all'utente, e infine l'ultimo è lo spazio riservato al controllo degli errori e al ripristino delle informazioni. La formattazione fisica del disco è normalmente eseguita dal costruttore.

Dopo aver effettuato la formattazione fisica, si procede con la divisione dell'hard disk in partizioni (note anche come minidischi o volumi) . Per esempio: una partizione potrebbe contenere il sistema operativo, mentre un altra partizione potrebbe gestire solo i file degli utenti. La divisione in partizioni è possibile in fase di caricamento del sistema operativo (Windows 2000, Windows XP) o tramite dei software di configurazione delle partizioni (FDISK, CFDISK e cosi via). Quindi, il disco rigido può essere diviso in più partizioni, e allora una domanda sorge spontanea: ma come avviene il caricamento della partizione con il sistema operativo?

Dovete sapere, che il settore 0 del disco si chiama MBR (record di avvio o Master Boot Record), ed è utilizzato per avviare il PC. Alla fine del settore 0 si trova la tabella delle partizioni. Quando si accende il PC il BIOS legge il MBR, ed avvia la partizione attiva (resa tale durante la creazione delle partizioni), legge il BLOCCO DI AVVIO, e carica il sistema operativo. Tutte le partizioni contengono il BLOCCO DI AVVIO anche se non contengono un sistema operativo, ma soltanto quella attiva è la prima ad essere avviata (chiamata anche BOOTABLE).

Le partizioni rappresentano ancora una struttura a BASSO LIVELLO, e in esse sono contenuti i file, e le directory.

Il passo successivo alla creazione delle partizioni è la FORMATTAZIONE LOGICA del disco, e cioè la creazione del FILE SYSTEM. Per esempio: il Windows 2000 utilizza il file system NTFS, il Windows 98 SE crea il file system FAT32, il LINUX solitamente utilizza il file system EXT3, e un file system di SWAP ,e cosi via. L'implementazione di un file system rende disponibile la gestione, e l'organizzazione dei file, e delle directory. I file diventano un unità di memoria logica disponibile su un supporto di memorizzazione fisica (l'hard disk), e le directory rappresentano un elemento di informazione sui file registrati, e un "dispositivo" di organizzazione.

Menu Sezione/Pagina Precedente/Pagina Successiva/Torna alla Homepage


Sito:www.megaoverclock.it