Anche se non viene eseguito nessun programma , il sistema operativo stesso viene eseguito. E non puoi modificarlo - né tecnicamente né in modo forense.
Inoltre, una moderna CPU quad-core può avere diverse centinaia di registri CPU, molti dei quali sono invisibili ! Questa è un'ottimizzazione: quando scrivi un valore da un registro della CPU alla cache, potrebbe volerci un po 'di tempo. Usando un registro invisibile per mantenere il valore per un po ', la CPU può continuare. Ma non appena il valore è scritto, il registro può essere cancellato. Così efficacemente hai a che fare con registri invisibili che cambiano stato anche se nessun programma è in esecuzione - buona fortuna!
Il che ci porta anche al prossimo problema: la cache della CPU è permanente e si aggiorna autonomamente in modo indipendente. Non sarebbe efficiente se questo fosse sotto controllo del programma.
Ora ciò che è possibile è quello di scaricare un programma. Un tipico sistema operativo moderno può salvare lo stato completo del programma, inclusi i registri , in un file su disco. Su Linux questo è noto come file core , su Windows come modalità utente dump . Questa capacità era necessaria in ogni caso perché un sistema operativo multitasking potrebbe dover sospendere e riprendere un processo in esecuzione (ad es. Quando è pianificato un altro processo da eseguire). Ovviamente, per riprendere il processo, i registri devono essere ripristinati. La cache viene in genere solo deselezionata in quanto non dovrebbe comunque influire sulla correttezza del programma e pertanto non finisce nemmeno nei file di dump.