Algoritmo dell'ascensore
L'algoritmo dell'ascensore (anche detto SCAN) è un algoritmo di disk scheduling per stabilire l'ordine in cui devono essere processate le richieste di lettura e richieste di scrittura su disco rigido.
L'algoritmo funziona in maniera simile al shortest seek time first (SSTF) ma, a differenza di quest'ultimo, viene scelto il cilindro con il minore seek time solo nella direzione in cui si sta muovendo la testina, la quale si sposta continuamente avanti e indietro attraversando tutte le tracce del disco.
Il nome dell'algoritmo (in inglese elevator algorithm) deriva proprio da questo movimento bidirezionale.
Descrizione
Se arriva una nuova richiesta mentre l'unità di I/O è inattiva, il movimento iniziale della testina sarà in direzione della traccia in cui i dati sono/saranno memorizzati. Appena arrivano ulteriori richieste, vengono elaborate solo se compatibili con la direzione corrente del movimento del braccio, fino a quando la testina non raggiunge il bordo (interno o esterno) del disco. Quando ciò accade, la direzione del braccio viene invertita, e le richieste rimaste in attesa vengono servite.
Varianti
Una variante di questo algoritmo garantisce che tutte le richieste vengano servite in una sola direzione. Ciò è implementabile, quando la testina giunge al bordo del disco, facendola ripartire dall'estremo opposto. Questo algoritmo è l'"algoritmo dell'ascensore circolare" (circular elevator algorithm), meglio noto come C-SCAN (o circular SCAN).
Dell'algoritmo SCAN sono state implementate anche altre varianti, fra cui:
- FSCAN
- LOOK (e C-LOOK)
- N-Step-SCAN