Concettualmente sì*, il modo in cui questo esattamente avviene dipende dall'algoritmo di scheduling impiegato (oltre al fatto che su Windows esistono classi di priorità "magiche" - ad esempio, idle, che schedula il processo quando veramente non ha nient'altro da fare). In alternativa, avendo a disposizione più core puoi impostare l'affinity del processo su uno solo di questi, ovvero imponi al sistema operativo di farlo girare solo su alcuni dei core a disposizione, lasciando sicuramente gli altri core liberi per altro.
Tutto questo è disponibile anche su altri sistemi operativi (per gli OS di famiglia Unix normalmente si parla di "nice value" per l'anti-boost di priorità).
---
* Anche se il concetto che un processo "ha bisogno del 50% di CPU" non ha molto senso. Di base semplicemente un processo può andare in wait (in attesa di qualcosa - IO su disco, socket di rete, eventi dalla GUI, timer, ...) o ritornare eseguibile quando il kernel si accorge che l'attesa è terminata. La percentuale del tempo di CPU effettivamente impiegato (mediata su un qualche periodo) dipende dalla durata delle wait e da quello che combinano le altre applicazioni.


Rispondi quotando