Quote:
Ora, secondo me, ad ogni istante può esserci un solo processo in esecuzione in quanto il sistema operativo, ma anche l'hw, non sono predisposti a gestire più contesti contemporaneamente.
|
Non fare l'errore di pensare che tutti i processi siano sempre in stato di pronto per essere eseguiti dalla CPU.
E' vero : alla fin fine, la cpu (single core) esegue un processo fisico per volta : PERO' :
I processi in esecuzione a volte rimangono in attesa (coda processi in attesa) proprio perche' la CPU e' molto piu veloce rispetto ai tempi di attesa delle periferiche (prova ad immaginare il tempo-uomo paragonato al tempo-macchina : una persona impega SECONDI per premere un solo tasto e nel frattempo la cpu e' andata avanti di miliardi di istruzioni).
Quel tempo che la cpu spreca per attendere che il processo si svegli e' un tempo morto per la cpu : per questo motivo alla fine la resa su un sistema multi processo e' molto piu elevata
Molto meglio mandare il processo "a nanna" (nella coda dei processi in attesa
Pertanto il fatto che in un singolo processore ci sia un solo processo "REALE" non vuol dire che sia un collo di bottiglia : anzi : molti processi rimangono nella coda dei processi in attesa proprio perche' stanno attendendo l'input da periferiche esterne.
Pertanto avere piu cpu significa avere piu' possibilità nel momento in cui alcuni processi che erano in attesa vengono spostati nella coda dei processi pronti dallo scheduler.
INOLTRE
Un processo non e' detto che quando va in esecuzione debba per forza interessare le periferiche "piu lente" : ovvero quelle che hanno un solo controller e non puo essere virtualizzato. (es : il disco fisso e' unico, pertanto il controller viene utilizzato da uno e un solo processo).
A volte il processo esegue solo delle operazioni in memoria, pertanto non esiste collo di bottiglia.
P.S :
Non a caso, i multi core aumentano la frequenza quando capita una situazione simile, consentendo nei "Burst" di processi pronti di smaltire prima i processi.