Solucionario
Texto íntegro de la conversión. Las figuras y la disposición de las notas se pueden consultar en el PDF.
Página 26
Solucionario
Ejercicios de autoevaluación
-
Invocar una llamada al sistema provoca un cambio de modo de ejecución; la determinación de la posición de memoria donde se encuentra la rutina se hace en tiempo de ejecución y el código de la rutina no forma parte del fichero ejecutable.
-
En este módulo hemos visto: la división por cero, el intento de ejecutar una instrucción privilegiada del lenguaje máquina en modo de ejecución no privilegiado y un acceso a la memoria inválido.
-
En modo privilegiado, el procesador puede ejecutar cualquier instrucción del lenguaje máquina. En modo no privilegiado, únicamente se pueden ejecutar instrucciones no privilegiadas; si se intenta ejecutar una instrucción privilegiada en este modo de ejecución, se producirá una excepción.
-
En ambos casos se encuentra en modo de ejecución no privilegiado. El procesador se encuentra en modo de ejecución privilegiado únicamente cuando ejecuta código de atención a interrupciones, excepciones y llamadas al sistema. Las aplicaciones de sistema, independientemente de qué usuario las ejecute, siempre se ejecutan en modo de ejecución no privilegiado.
-
El acceso a la memoria y la suma de registros de propósito general son no privilegiadas; las otras son privilegiadas.
-
En el primer caso, el proceso está consumiendo CPU porque hace la transición entre los estados run y ready. En el segundo caso, el proceso no está consumiendo CPU porque durante todo el tiempo de espera tendrá asignado el estado Blocked.
-
Para que un programa genere un proceso nuevo el SO debe darle "vida"; le ha de asignar recursos, lo tiene que copiar en la memoria y tiene que hacer que el procesador inicie la ejecución.
-
Porque se diseñó para un procesador sin diversos modos de ejecución, instrucciones privilegiadas ni MMU.
-
Para evitar que un proceso de usuario de cálculo intensivo (que efectúa muy pocas llamadas al sistema) pueda monopolizar la CPU. El temporizador da la oportunidad al planificador del procesador de entrar en ejecución, con lo cual puede decidir forzar un cambio de contexto con otro proceso.
10.a) El montador combina diferentes módulos objeto y las bibliotecas para construir el programa ejecutable. El trabajo más importante que lleva a cabo es resolver las referencias entre las diferentes partes y establecer la correspondencia entre las direcciones de las diferentes variables y los procedimientos.
b) El montador tiene relación con las bibliotecas y con los módulos objeto generados durante la fase de compilación.
c) Siempre se tiene que utilizar el montador porque siempre se tienen que añadir las cabeceras para el cargador y las rutinas de las bibliotecas (es difícil encontrar una aplicación sin ninguna rutina de entrada/salida de las bibliotecas del sistema).
Ver fragmento extraído sin normalizar
## Página 26 <!-- source-page: 26 --> GNUFDL • PID_00214804 26 El sistema operativo: una máquina virtual Solucionario Ejercicios de autoevaluación 1. Invocar una llamada al sistema provoca un cambio de modo de ejecución; la determina- ción de la posición de memoria donde se encuentra la rutina se hace en tiempo de ejecución y el código de la rutina no forma parte del fichero ejecutable. 2. En este módulo hemos visto: la división por cero, el intento de ejecutar una instrucción privilegiada del lenguaje máquina en modo de ejecución no privilegiado y un acceso a la memoria inválido. 3. En modo privilegiado, el procesador puede ejecutar cualquier instrucción del lenguaje máquina. En modo no privilegiado, únicamente se pueden ejecutar instrucciones no privi- legiadas; si se intenta ejecutar una instrucción privilegiada en este modo de ejecución, se producirá una excepción. 4. En ambos casos se encuentra en modo de ejecución no privilegiado. El procesador se en- cuentra en modo de ejecución privilegiado únicamente cuando ejecuta código de atención a interrupciones, excepciones y llamadas al sistema. Las aplicaciones de sistema, indepen- dientemente de qué usuario las ejecute, siempre se ejecutan en modo de ejecución no pri- vilegiado. 5. El acceso a la memoria y la suma de registros de propósito general son no privilegiadas; las otras son privilegiadas. 6. En el primer caso, el proceso está consumiendo CPU porque hace la transición entre los estados run y ready. En el segundo caso, el proceso no está consumiendo CPU porque durante todo el tiempo de espera tendrá asignado el estado Blocked. 7. Para que un programa genere un proceso nuevo el SO debe darle "vida"; le ha de asignar recursos, lo tiene que copiar en la memoria y tiene que hacer que el procesador inicie la ejecución. 8. Porque se diseñó para un procesador sin diversos modos de ejecución, instrucciones pri- vilegiadas ni MMU. 9. Para evitar que un proceso de usuario de cálculo intensivo (que efectúa muy pocas llamadas al sistema) pueda monopolizar la CPU. El temporizador da la oportunidad al planificador del procesador de entrar en ejecución, con lo cual puede decidir forzar un cambio de contexto con otro proceso. 10.a) El montador combina diferentes módulos objeto y las bibliotecas para construir el pro- grama ejecutable. El trabajo más importante que lleva a cabo es resolver las referencias entre las diferentes partes y establecer la correspondencia entre las direcciones de las diferentes variables y los procedimientos. b) El montador tiene relación con las bibliotecas y con los módulos objeto generados durante la fase de compilación. c) Siempre se tiene que utilizar el montador porque siempre se tienen que añadir las cabeceras para el cargador y las rutinas de las bibliotecas (es difícil encontrar una aplicación sin ninguna rutina de entrada/salida de las bibliotecas del sistema).