Lo è la decisione del kernel su thread pronto ottiene la CPU per , e per . Poiché di solito ci sono più thread eseguibili che core, lo li multiplexa, puntando a bilanciare obiettivi in conflitto — , ed — evitando al contempo lo .
Lo è la decisione del kernel su thread pronto ottiene la CPU per , e per . Poiché di solito ci sono più thread eseguibili che core, lo li multiplexa, puntando a bilanciare obiettivi in conflitto — , ed — evitando al contempo lo .
FCFS (first-come, first-served) → simple, but one long job blocks everyone (convoy effect)
SJF (shortest job first) → optimal avg wait, but needs to know job length; can starve long jobs
Round-robin (RR) → each job a fixed TIME SLICE (quantum), cycle through → fair, good latency
Priority → highest priority first → can STARVE low priority (fix: aging)
MLFQ (multi-level feedback) → several priority queues; jobs that use a full quantum sink,
interactive jobs that yield stay high → approximates SJF without knowing lengths
Il round-robin illustra la manopola centrale — il quantum:
quantum too SMALL → fair & responsive, but lots of context-switch overhead
quantum too LARGE → less overhead, but degrades toward FCFS (poor responsiveness)
Il default storico di Linux era il CFS (Completely Fair Scheduler): invece di slice fissi tiene traccia del virtual runtime (vruntime) di ogni task ed esegue sempre il thread che finora ha ricevuto meno CPU, pesato in base al suo valore nice — approssimando "ciascuno ottiene una quota equa". Indicizza un red-black tree per vruntime, quindi scegliere il task successivo è O(log n). (I kernel più recenti usano EEVDF, un affinamento con lo stesso obiettivo di equità più limiti di latenza più stretti.)
Preemptive vs cooperative: gli OS moderni sono preemptive — un timer interrupt permette allo scheduler di riprendere forzatamente la CPU, così un thread non può monopolizzare un core.
Lo scheduling plasma direttamente la latenza e il throughput che gli utenti percepiscono. Gli intervistatori lo sondano per vedere se capisci i compromessi — perché un carico di lavoro interattivo vuole quantum brevi o un boost di priorità, perché lo scheduling a priorità ha bisogno dell'aging per prevenire lo starvation, e come MLFQ/CFS ottengono un buon comportamento interattivo senza conoscere in anticipo la durata dei job. È anche il modello mentale dietro la regolazione di nice, delle priorità real-time, e la diagnosi di un servizio affamato o lento.
Una raccolta di domande di colloquio IT con risposte dettagliate — da Junior a Senior.
Dona