Sto studiando CPU e so come legge un programma dalla memoria ed eseguo le sue istruzioni. Capisco anche che un sistema operativo separa i programmi nei processi, e quindi si alternano tra loro così velocemente che pensi che siano in esecuzione contemporaneamente, ma in realtà ogni programma funziona da solo nella CPU. Ma, se il sistema operativo è anche un gruppo di codice in esecuzione nella CPU, come può gestire i processi?
Ho pensato e l'unica spiegazione che ho potuto pensare è: quando il sistema operativo carica un programma dalla memoria esterna alla RAM, aggiunge le sue istruzioni nel mezzo delle istruzioni del programma originale, quindi il programma viene eseguito, il programma può chiamare il sistema operativo e fare alcune cose. Credo che ci sia un'istruzione che il sistema operativo aggiungerà al programma, che consentirà alla CPU di tornare al codice del sistema operativo qualche volta. Inoltre, credo che quando il sistema operativo carica un programma, controlla se ci sono alcune istruzioni proibite (che salterebbero a indirizzi proibiti nella memoria) ed elimina quindi.
Sto pensando al rigth? Non sono uno studente CS, ma in realtà uno studente di matematica. Se possibile, vorrei un buon libro su questo, perché non ho trovato nessuno che spieghi come il sistema operativo può gestire un processo se il sistema operativo è anche un gruppo di codice in esecuzione nella CPU e non può funzionare allo stesso orario del programma. I libri dicono solo che il sistema operativo può gestire le cose, ma ora come.