Estoy completamente despistado sobre el 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 resolver es la multitarea.
En teoría, el sistema operativo administra el tiempo, de acuerdo con la CPU para pequeños intervalos a los diversos programas que se ejecutan. Pero no está claro cómo funciona 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 dirección determinada. Supongo que entonces debería realizarse 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 retroceda.
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 su 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 colgar todo por un tiempo.
Entonces, parece que ningún mecanismo funcionaría muy bien. ¿Cómo se realiza realmente la multitarea?