Zowel C-SCAN (Circular SCAN) als SCAN (ook bekend als het Elevator Algorithm) zijn schijfplanningsalgoritmen die tot doel hebben de gemiddelde zoektijd te verkorten door verzoeken in een specifieke volgorde af te handelen terwijl de schijfkop beweegt. Ze verschillen echter in de manier waarop ze omgaan met de eindpunten van de schijf.
Hier is een overzicht van de verschillen:
SCAN (liftalgoritme):
* Hoofdbeweging: De schijfarm beweegt in één richting (naar de binnenste of buitenste sporen) en beantwoordt alle verzoeken op zijn pad.
* Richtingsomkering: Wanneer de schijfarm het ene uiteinde van de schijf bereikt (het binnenste of het buitenste spoor), keert deze van richting om en gaat door met het afhandelen van verzoeken in de tegenovergestelde richting.
* Eindpunttraversal: De kop beweegt naar het fysieke uiteinde van de schijf voordat hij van richting verandert. Dit betekent dat cilinders aan het uiteinde waar de kop net is omgedraaid, relatief lang moeten wachten als de kop ze net passeert.
C-SCAN (Circulaire SCAN):
* Hoofdbeweging: De schijfarm beweegt ook in één richting (naar de binnenste of buitenste sporen) en beantwoordt alle verzoeken op zijn pad.
* Richting opnieuw instellen: Wanneer de schijfarm het ene uiteinde van de schijf bereikt (het binnenste of buitenste spoor), keert deze onmiddellijk terug naar het begin van de schijf (de andere kant) *zonder eventuele verzoeken op de terugreis in te willigen*. Vervolgens begint het scannen opnieuw in de oorspronkelijke richting.
* Circulaire beweging: Het hoofd springt in wezen terug naar het andere uiteinde van de schijf nadat het het eindpunt heeft bereikt, waardoor een "cirkelvormig" bewegingspatroon ontstaat.
Hier is een tabel met een samenvatting van de belangrijkste verschillen:
| Kenmerk | SCANNEN (lift) | C-SCAN (circulaire SCAN) |
|--------------------|--------------------------------------- -------|-----------------------------------------------------|
| Hoofdomkering | Keert de richting om aan het einde van de schijf. | Keert terug naar het andere uiteinde van de schijf zonder onderhoudsverzoeken. |
| Eindpuntservice | Serviceverzoeken op de terugweg. | Behandelt geen verzoeken op de terugreis. |
| Richtingverandering | Omkeren (heen en weer gaan). | Reset (naar het begin springen). |
| Eerlijkheid | Kan voorkeur geven aan verzoeken in de buurt van de eerder bezochte punten. | Uniformere wachttijd; algemeen als eerlijker beschouwd. |
Gevolgen van de verschillen:
* Eerlijkheid: C-SCAN biedt over het algemeen een meer uniforme wachttijd voor alle verzoeken. Bij SCAN moeten verzoeken aan het einde waar het hoofd net van richting is veranderd, mogelijk een aanzienlijke hoeveelheid tijd wachten totdat het hoofd de weg terug heeft gevonden. De ‘cirkelvormige’ beweging van C-SCAN zorgt ervoor dat alle cilinders regelmatiger worden onderhouden.
* Maximale wachttijd: C-SCAN garandeert doorgaans een lagere maximale wachttijd vergeleken met SCAN, omdat de kop zonder serviceverzoeken terugkeert naar het andere uiteinde. Bij SCAN kan een verzoek aan het "verkeerde" uiteinde van de schijf wachten op een volledige beweging over de schijf en terug.
* Doorvoer: In sommige scenario's kan SCAN iets betere doorvoer bieden als er een consistente stroom verzoeken aan beide uiteinden van de schijf binnenkomt. Het verschil is echter vaak minimaal, en de verbeterde eerlijkheid van C-SCAN maakt het over het algemeen het voorkeursalgoritme.
In essentie:
*SCAN is als een lift die op en neer gaat en mensen op elke verdieping in beide richtingen bedient.
* C-SCAN is als een lift die omhoog gaat, mensen bedient en vervolgens terug naar beneden teleporteert om weer omhoog te gaan.
Welke moet je kiezen?
Over het algemeen heeft C-SCAN de voorkeur boven SCAN omdat het uniformere wachttijden en een lagere maximale wachttijd biedt, waardoor het eerlijker wordt voor alle verzoeken. SCAN kan een klein voordeel hebben in specifieke scenario's met continue verzoeken aan beide uiteinden van de schijf, maar de eerlijkheidsvoordelen van C-SCAN wegen doorgaans zwaarder dan dit potentiële prestatieverschil. |