Estoy estudiando CPU y sé cómo lee un programa de la memoria y ejecuto sus instrucciones. También entiendo que un sistema operativo separa los programas en los procesos, y luego alterna entre cada uno tan rápido que cree que se están ejecutando al mismo tiempo, pero de hecho cada programa se ejecuta solo en la CPU. Pero, si el sistema operativo también es un montón de código que se ejecuta en la CPU, ¿cómo puede administrar los procesos?
He estado pensando y la única explicación que podría pensar es: cuando el sistema operativo carga un programa desde la memoria externa a la RAM, agrega sus propias instrucciones en el medio de las instrucciones originales del programa, de modo que el programa se ejecuta, el programa puede llamar al sistema operativo y hacer algunas cosas. Creo que hay una instrucción que el sistema operativo agregará al programa, que permitirá que la CPU regrese al código del sistema operativo en algún momento. Y también, creo que cuando el sistema operativo carga un programa, comprueba si hay algunas instrucciones prohibidas (que saltarían a direcciones prohibidas en la memoria) y las elimina.
¿Estoy pensando bien? No soy un estudiante de CS, pero de hecho, un estudiante de matemáticas. Si es posible, me gustaría un buen libro sobre esto, porque no encontré a nadie que explique cómo el sistema operativo puede administrar un proceso si el sistema operativo también es un montón de código que se ejecuta en la CPU, y no puede ejecutarse al mismo tiempo del programa. Los libros solo dicen que el sistema operativo puede administrar las cosas, pero ahora cómo.