No tengo ni idea del funcionamiento interno de un sistema operativo, pero puedo adivinar más o menos el comportamiento aproximado de muchas funciones. Sin embargo, una cosa que no puedo entender es la multitarea.
En teoría, el sistema operativo gestiona el tiempo, de acuerdo con la CPU, durante pequeños intervalos para los distintos programas en ejecución. Pero no está claro cómo funciona esto realmente .
Digamos que el sistema operativo quiere iniciar mi programa. El código de la máquina se carga en algún lugar de la RAM, comenzando en una determinada dirección. Supongo que entonces se debe realizar un salto a esa dirección, permitiendo que mi código se ejecute. Pero de esta manera, el sistema operativo no puede recuperar el control hasta que salte hacia atrás.
Básicamente, puedo imaginar solo dos formas de hacer que esto funcione, pero ninguna parece realmente adecuada:
El sistema operativo podría leer las instrucciones de la máquina que quiero realizar y emularlas en lugar de ejecutarlas directamente. Soy intencionalmente vago, ya que no sé cómo funcionaría esto, pero parece que ralentizaría considerablemente el programa.
Alternativamente, el sistema operativo podría esperar hasta que haga una llamada al sistema. En ese momento recupera el control y puede verificar cuánto tiempo he estado corriendo y hacer sus cosas de tiempo compartido. Esto puede funcionar, pero parece poco confiable, ya que podría hacer un cálculo largo que no implique llamadas al sistema y cuelgue todo por un tiempo.
Entonces, parece que ninguno de los mecanismos funcionaría muy bien. ¿Cómo se realiza realmente la multitarea?
interrupt
INT
instrucción. Algo sigue siendo misterioso para mí