I icke-förebyggande schemaläggning, när en process väl startar sin exekvering, kan den inte förebyggas av en annan process innan den har slutfört sin exekvering eller frivilligt släpper CPU:n.
Så här fungerar icke-förebyggande algoritmer:
1. Processval:
- Schemaläggaren väljer nästa process som ska köras baserat på schemaläggningsprinciper som First-Come First-Served (FCFS), Shortest Job First (SJF) eller någon annan schemaläggningsalgoritm.
2. Ej avbrottsbar exekvering:
- När en process väl börjar köras kan den inte avbrytas av en annan process. Detta innebär att den valda processen kommer att fortsätta att köras tills den slutför sin exekvering eller frivilligt ger upp CPU:n (t.ex. genom att utföra en I/O-operation).
3. Inget förköp:
- Medan den aktuella processen körs kan ingen annan process ta bort processorn från den. Detta säkerställer att processer slutförs utan att avbrytas av processer med högre prioritet.
4. Slutförande:
- Processen fortsätter att exekvera sina instruktioner tills den avslutar sin exekvering eller når ett tillstånd där den är blockerad (väntar på I/O eller någon resurs). När processen är klar är CPU:n tillgänglig för att schemalägga nästa process.
Icke-förebyggande schemaläggningsalgoritmer är enklare att implementera än förebyggande eftersom det inte finns något behov av frekvent kontextväxling. De kan dock leda till lägre systemeffektivitet och suboptimal prestanda, eftersom processer med högre prioritet kan behöva vänta på att processer med lägre prioritet slutförs.
Exempel på icke-förebyggande schemaläggningsalgoritmer inkluderar:
- Först till kvarn (FCFS): Processer exekveras i den ordning de anländer, utan hänsyn till deras prioritet eller resursbehov.
- Shortest Job First (SJF) utan företräde: Denna algoritm väljer processen med den kortaste beräknade exekveringstiden för exekvering nästa. Men när processen väl börjar köras kan den inte förebyggas av en annan process, även om den senare kommer senare med en kortare beräknad körningstid.