Många diskplaneringspolicyer och algoritmer har utvecklats under åren, var och en med sina egna styrkor och svagheter. Det bästa valet beror starkt på de specifika arbetsbelastningen och systemkraven. Här är några av de vanligaste:
Icke-förebyggande (förfrågningar serveras för att de anländer):
* först-till-till-första-tjänade (FCFS): Enklaste tillvägagångssätt; Förfrågningar serveras i den ordning de anländer. Mycket enkelt att implementera men kan leda till betydande sökning av sökningstid och prestanda, särskilt med allmänt spridda förfrågningar. Det är benäget att skapa långa konvojer av förfrågningar.
* kortaste söktid först (SSTF): Väljer begäran som minimerar sökiden från den nuvarande huvudpositionen. Generellt förbättrar prestanda jämfört med FCF:er men kan leda till svält om förfrågningar långt från den nuvarande huvudpositionen ("hisseffekten").
Förebyggande (förfrågningar kan avbrytas och omordnas):
* skanning (hissalgoritm): Diskhuvudet rör sig i en riktning och servarliga förfrågningar på vägen. När den når slutet vänder den riktningen och fortsätter serviceförfrågningar i motsatt riktning. Rättvisare än SSTF eftersom det undviker svält.
* c-scan (cirkulär skanning): I likhet med skanning, men när huvudet når slutet hoppar det tillbaka till början utan att serviceförfrågningar på returresan. Detta ger jämnare distribution av tjänsten och mindre varians i responstider än skanning.
* Look och C-look: Dessa är varianter av skanning respektive C-Scan. Skillnaden är att istället för att flytta hela vägen till slutet av disken, går de bara så långt som den längsta begäran i den aktuella riktningen. Detta minskar onödig huvudrörelse.
* fscan: En variation som kombinerar FCF och skanna. IT -tjänster förfrågningar i FCFS -beställning inom varje skanningscykel.
* Multi-nivå-köplanering: Prioriterar förfrågningar baserat på deras typ (t.ex. systemförfrågningar kontra användarförfrågningar). Olika schemaläggningsalgoritmer kan användas för varje kö.
* Viktalgoritmer: Tilldela vikter till förfrågningar baserat på betydelse eller prioritet. Högre viktade förfrågningar ges preferens.
Andra algoritmer och överväganden:
* Tidsfristplanering: Prioriterar förfrågningar baserat på deras tidsfrister. Kritiska förfrågningar serveras först för att undvika saknade tidsfrister.
* adaptiva algoritmer: Justera dynamiskt sin schemaläggningsstrategi baserat på observerade systembeteende och arbetsbelastningsegenskaper.
* Helt rättvis kö (CFQ): En Linux -kärnplaner som syftar till att tillhandahålla rättvis bandbreddfördelning mellan processer. Det är inte strikt en skivplaneringsalgoritm utan påverkar disk I/O -prestanda avsevärt.
* Förväntan: Vissa avancerade algoritmer försöker förutsäga framtida förfrågningar baserade på tidigare mönster och optimera huvudrörelsen i enlighet därmed.
I praktiken använder moderna operativsystem ofta en kombination av dessa algoritmer och andra sofistikerade tekniker för att optimera disk I/O -prestanda. De specifika algoritmerna som används kanske inte alltid är offentligt dokumenterade eller lätt bestämda. Den bästa algoritmen beror på många faktorer inklusive diskegenskaper, I/O -mönster och prestationsmålen.