El hardware que sostiene al sistema operativo — ejercicios tipo examen con la impresora, la caché que acierta y los registros base y límite (y la RSI que me costó medio punto)

En un test de prueba de IC2 me encontré esta frase: «al final de la RSI hay que guardar el estado de la CPU». Me sonaba todo: RSI, estado, CPU… y la marqué como correcta. Medio punto menos, porque en ese test los fallos restan. El estado se guarda antes de la RSI; si no, la rutina machacaría los registros del proceso interrumpido. Aquel día aprendí que en este tema las trampas no están en las palabras raras, sino en el orden y en los «solo».

Este artículo es la parte práctica de la teoría del hardware que sostiene al sistema operativo. Aquí no hay código que escribir: hay preguntas como las del examen, todas originales, con su explicación, y tres cálculos para hacer con papel y boli.

Cómo usar este artículo

  1. Haz el cuestionario sin mirar la teoría. Responde todas las preguntas y pulsa «Comprobar» al final. Las de respuesta múltiple penalizan como en el examen: cada casilla mal marcada resta.
  2. Lee la explicación de cada fallo. Cada pregunta explica por qué la correcta lo es y por qué fallan las otras opciones.
  3. Los cálculos, con papel. Hay uno de E/S síncrona y asíncrona, uno de caché con FIFO y LRU y uno de registros base y límite. Escribe las cuentas antes de rellenar las casillas.
  4. Las de desarrollo, por escrito. Redacta tu respuesta y compárala con la respuesta modelo y con la lista de lo que se valora.

Si te atascas en algo, vuelve a la teoría y repite el cuestionario: el botón «Reintentar» baraja las opciones.

Cuestionario: El hardware que sostiene al SO

Pregunta 1Rellenar huecos

Completa cómo se organiza la E/S de un ordenador:

Cada dispositivo se engancha al bus a través de su ____, que tiene un ____ local donde la CPU deja y recoge los datos. Cuando la operación termina, el controlador lo ____ a la CPU con una ____.

Palabras:

  • llamada al sistema
  • interrupción
  • controlador
  • caché
  • driver
  • ignora
  • notifica
  • búfer
Solución

Cada dispositivo se engancha al bus a través de su controlador, que tiene un búfer local donde la CPU deja y recoge los datos. Cuando la operación termina, el controlador lo notifica a la CPU con una interrupción.

El controlador es la pieza de hardware que hace de intermediario entre el bus y el dispositivo. Su búfer local es el punto de intercambio de datos con la CPU, y la interrupción es su forma de avisar. Ojo: el driver es software del SO, no la pieza que se conecta al bus.

Pregunta 2Única

Mientras VS Code usa la CPU, la impresora genera una interrupción. ¿Qué ocurre justo después de que la CPU acepta la interrupción?

  1. Guarda el estado de la CPU y después ejecuta la RSI
  2. Ejecuta la RSI y, al terminarla, guarda el estado de la CPU
  3. Espera a que VS Code termine para atender a la impresora
  4. VS Code ejecuta su propia rutina para atender a la impresora
Solución

Respuesta: Guarda el estado de la CPU y después ejecuta la RSI

Orden de una interrupción: la CPU guarda su estado, ejecuta la rutina de servicio de interrupción (RSI) del SO, restaura el estado y el proceso interrumpido continúa sin enterarse.

Pregunta 3Relacionar

Relaciona cada término con su descripción:

Polling
Interrupción vectorizada
Vector de interrupciones
RSI

Definiciones:

  • La CPU pregunta uno a uno a los dispositivos cuál ha interrumpido
  • Memoria del controlador donde se guardan los datos de la E/S
  • Zona de la memoria principal con las direcciones de todas las RSI
  • El dispositivo se identifica enviando un número por el bus de datos
  • Código del SO que atiende un evento concreto
Solución
  • Polling → La CPU pregunta uno a uno a los dispositivos cuál ha interrumpido
  • Interrupción vectorizada → El dispositivo se identifica enviando un número por el bus de datos
  • Vector de interrupciones → Zona de la memoria principal con las direcciones de todas las RSI
  • RSI → Código del SO que atiende un evento concreto

Polling y vectorizadas son las dos formas de averiguar quién ha interrumpido. En las vectorizadas, el número que envía el dispositivo es un índice del vector de interrupciones, y la entrada del vector apunta a la RSI. La definición sobrante es la del búfer local del controlador.

Pregunta 4Respuesta corta

La impresora envía el número 7 por el bus. ¿Cómo se llama la tabla de la memoria principal en la que la CPU busca la posición 7 para saber qué rutina ejecutar?

Solución

Respuesta: Vector de interrupciones

El vector de interrupciones guarda la dirección de cada RSI. El número del dispositivo es el índice: la CPU no tiene que preguntar a nadie.

Pregunta 5Única

Se dice que el sistema operativo tiene un comportamiento reactivo. ¿Qué significa?

  1. Que solo se activa cuando ocurre un evento que tiene que atender
  2. Que se ejecuta sin parar en un núcleo de la CPU reservado para él
  3. Que reacciona a los errores cerrando el programa que falla
  4. Que solo se activa cuando el usuario pulsa una tecla o mueve el ratón
Solución

Respuesta: Que solo se activa cuando ocurre un evento que tiene que atender

El SO no se activa por sí solo: lo despierta un evento. Por eso hace falta hardware que genere esos eventos (interrupciones, temporizador).

Pregunta 6Múltiple · penaliza

¿Cuáles de estos eventos hacen que se ejecute código del sistema operativo?

  1. La impresora termina de imprimir una página
  2. Un programa ejecuta la llamada al sistema write()
  3. Un programa intenta dividir un entero entre cero
  4. Un programa suma dos variables que están en registros
  5. printf() copia texto en un búfer de la biblioteca de C sin llamar todavía a write()
Solución

Respuesta: La impresora termina de imprimir una página · Un programa ejecuta la llamada al sistema write() · Un programa intenta dividir un entero entre cero

Los tres tipos de evento son interrupciones hardware (la impresora), llamadas al sistema (write) y excepciones (división entre cero). El resto es trabajo normal del programa en modo usuario.

Pregunta 7Verdadero o falso

Sobre la sincronización entre la E/S y el SO, indica si es verdadero o falso:

  1. En la E/S síncrona, la CPU queda en espera hasta que la E/S termina.
  2. En la E/S asíncrona, el SO aprovecha la espera para ejecutar otros procesos.
  3. La E/S síncrona saca más rendimiento al sistema que la asíncrona.
  4. En la E/S asíncrona, el SO se entera del fin de la operación gracias a una interrupción.
  5. Se llama asíncrona a la E/S en la que el SO espera a que termine la operación antes de seguir.
Solución
  • V — En la E/S síncrona, la CPU queda en espera hasta que la E/S termina.
  • V — En la E/S asíncrona, el SO aprovecha la espera para ejecutar otros procesos.
  • F — La E/S síncrona saca más rendimiento al sistema que la asíncrona.
  • V — En la E/S asíncrona, el SO se entera del fin de la operación gracias a una interrupción.
  • F — Se llama asíncrona a la E/S en la que el SO espera a que termine la operación antes de seguir.

Esperar es síncrono; seguir con otra cosa y recibir un aviso es asíncrono. Por eso la asíncrona aprovecha mejor la CPU.

Pregunta 8Cálculo

El proceso A imprime 2 páginas: cada una necesita 30 ms de CPU y después 50 ms de impresora. El proceso B necesita 80 ms de CPU. Calcula el tiempo hasta que terminan los dos y el uso de la CPU con E/S síncrona y asíncrona (en la asíncrona, A pasa a la CPU en cuanto termina cada página):

ProcesoTrabajo
A30 ms CPU + 50 ms impresora, dos veces
B80 ms CPU
ModoTiempo total (ms)CPU útil (ms)Uso de CPU (%)
Síncrona
Asíncrona
SoluciónABAB03080110140
ModoTiempo total (ms)CPU útil (ms)Uso de CPU (%)
Síncrona24014058.33
Asíncrona16014087.5

CPU útil en los dos casos: 30 + 30 de A y 80 de B = 140 ms.

Síncrona: la CPU espera cada impresión, así que A ocupa 2 × (30 + 50) = 160 ms y B va después: 160 + 80 = 240 ms. Uso: 140 / 240 = 58,33 %.

Asíncrona (el diagrama): A 0-30, B 30-80 mientras imprime, A 80-110, B 110-140 y termina; de 140 a 160 la CPU está libre esperando la última página. Total 160 ms y uso 140 / 160 = 87,5 %.

Pregunta 9Ordenar

Ordena lo que pasa en una E/S asíncrona cuando el proceso A manda a imprimir:

  1. El SO atiende la interrupción y decide reanudar A
  2. La impresora termina y genera una interrupción
  3. El SO hace un cambio de contexto y pone en la CPU al proceso B
  4. A pide la impresión con una llamada al sistema
  5. El SO atiende la llamada y le pasa la orden al controlador
Solución

Orden correcto:

  1. A pide la impresión con una llamada al sistema
  2. El SO atiende la llamada y le pasa la orden al controlador
  3. El SO hace un cambio de contexto y pone en la CPU al proceso B
  4. La impresora termina y genera una interrupción
  5. El SO atiende la interrupción y decide reanudar A

La llamada al sistema despierta al SO, el SO dialoga con la E/S, aprovecha la espera con otro proceso y la interrupción de fin de E/S le devuelve el control.

Pregunta 10Rellenar huecos

Completa sobre las colas de espera por E/S:

Si un dispositivo está ____, el SO guarda la petición en la ____ de ese dispositivo. Cada vez que una operación termina, el SO le pasa al dispositivo la ____ petición pendiente.

Palabras:

  • vector de interrupciones
  • ocupado
  • cola de espera
  • siguiente
  • caché
  • libre
Solución

Si un dispositivo está ocupado, el SO guarda la petición en la cola de espera de ese dispositivo. Cada vez que una operación termina, el SO le pasa al dispositivo la siguiente petición pendiente.

Cada dispositivo tiene su propia cola de peticiones pendientes, que se atienden en orden. La cola de impresión de tu ordenador es exactamente eso.

Pregunta 11Verdadero o falso

Sobre interrupciones hardware y software, indica si es verdadero o falso:

  1. Las llamadas al sistema se gestionan como interrupciones, pero las provoca la propia CPU.
  2. Las excepciones las provoca siempre un dispositivo de E/S.
  3. Existe una instrucción de máquina para provocar una interrupción software, como INT en Intel.
  4. Las llamadas al sistema se implementan mediante interrupciones hardware.
  5. Cada tipo de evento activa una RSI distinta a través del vector de interrupciones.
Solución
  • V — Las llamadas al sistema se gestionan como interrupciones, pero las provoca la propia CPU.
  • F — Las excepciones las provoca siempre un dispositivo de E/S.
  • V — Existe una instrucción de máquina para provocar una interrupción software, como INT en Intel.
  • F — Las llamadas al sistema se implementan mediante interrupciones hardware.
  • V — Cada tipo de evento activa una RSI distinta a través del vector de interrupciones.

Interrupción software = llamada al sistema o excepción: misma gestión que una hardware, pero la provoca la CPU. Las instrucciones son INT (Intel), TRAP (Motorola) y SYSCALL (MIPS).

Pregunta 12Ordenar

Ordena estas memorias de la más rápida a la más lenta:

  1. Registros
  2. Memoria caché
  3. Cinta magnética
  4. Disco sólido (SSD)
  5. Disco duro magnético
  6. Memoria principal
Solución

Orden correcto:

  1. Registros
  2. Memoria caché
  3. Memoria principal
  4. Disco sólido (SSD)
  5. Disco duro magnético
  6. Cinta magnética

La jerarquía va de los registros (dentro de la CPU) a la cinta. El orden por coste por byte es el mismo pero al revés: lo más rápido es lo más caro.

Pregunta 13Única

¿En qué consiste el principio de caché?

  1. En guardar en la memoria más rápida la información que se usa con más frecuencia
  2. En guardar en la memoria de más capacidad la información que más se usa
  3. En copiar toda la memoria principal en la caché al arrancar
  4. En usar la memoria caché del procesador y nada más
Solución

Respuesta: En guardar en la memoria más rápida la información que se usa con más frecuencia

Si lo más usado está en lo más rápido, la mayoría de accesos son rápidos aunque el resto de la jerarquía sea lenta.

Pregunta 14Verdadero o falso

Sobre la caché, indica si es verdadero o falso:

  1. El principio de caché también se usa en la caché de disco y en la de páginas web.
  2. Cuando la caché se llena, se vacía entera y se vuelve a cargar.
  3. La política de reemplazo decide qué bloque sale cuando hay que meter uno nuevo y no hay hueco.
  4. Cuanto más rápida es una memoria, más barata por byte suele ser.
Solución
  • V — El principio de caché también se usa en la caché de disco y en la de páginas web.
  • F — Cuando la caché se llena, se vacía entera y se vuelve a cargar.
  • V — La política de reemplazo decide qué bloque sale cuando hay que meter uno nuevo y no hay hueco.
  • F — Cuanto más rápida es una memoria, más barata por byte suele ser.

Al llenarse, sale un solo bloque, el que diga la política. Y en la jerarquía, rapidez y precio van juntos: lo rápido es caro.

Pregunta 15Relacionar

Relaciona cada política de reemplazo con el bloque que descarta:

FIFO
LRU
LFU
Al azar

Definiciones:

  • Uno cualquiera
  • El que entró en la caché antes que los demás
  • El que ocupa más bytes
  • El que hace más tiempo que no se usa
  • El que se ha usado menos veces
Solución
  • FIFO → El que entró en la caché antes que los demás
  • LRU → El que hace más tiempo que no se usa
  • LFU → El que se ha usado menos veces
  • Al azar → Uno cualquiera

FIFO mira la entrada; LRU, el último uso; LFU, la frecuencia de uso. El tamaño no es un criterio de estas políticas.

Pregunta 16Cálculo

Una caché de 2 bloques recibe las peticiones X, Y, X, Z, X, Y. Mirar la caché cuesta 2 ns y un fallo añade 40 ns para ir a la RAM. Calcula los aciertos y el tiempo medio por acceso con FIFO y con LRU (tiempo medio = 2 + tasa de fallos × 40):

AccesoXYXZXY
Caché FIFO despuésXX YX YY ZZ XX Y
Caché LRU despuésXX YY XX ZZ XX Y
PolíticaAciertosTiempo medio (ns)
FIFO
LRU
Solución
PolíticaAciertosTiempo medio (ns)
FIFO135.33
LRU228.67

FIFO: solo acierta el tercer acceso (X). Al llegar Z sale X porque entró antes, y por eso el quinto acceso (X) falla. Tasa de fallos 5/6: 2 + (5/6) × 40 = 2 + 33,33 = 35,33 ns.

LRU: acierta el tercero y el quinto (X), porque al usar X en el tercero pasa a ser la más reciente y al llegar Z sale Y. Tasa de fallos 4/6: 2 + (4/6) × 40 = 2 + 26,67 = 28,67 ns.

Pregunta 17Relacionar

Relaciona cada unidad con lo que vale:

Bit
Byte
Palabra
1 KiB
1 KB

Definiciones:

  • Entre 8 y 64 bits según la CPU
  • 1024 bytes
  • 8 bits
  • 1 000 000 bytes
  • Uno de dos valores, 0 o 1
  • 1000 bytes
Solución
  • Bit → Uno de dos valores, 0 o 1
  • Byte → 8 bits
  • Palabra → Entre 8 y 64 bits según la CPU
  • 1 KiB → 1024 bytes
  • 1 KB → 1000 bytes

KiB es binario (2 elevado a 10) y KB es decimal (10 elevado a 3). La palabra depende del procesador.

Pregunta 18Múltiple · penaliza

Para que el SO funcione, ¿qué no deben poder hacer libremente los programas de usuario?

  1. Leer o escribir en la memoria del sistema operativo
  2. Leer o escribir en la memoria de otro programa
  3. Dar órdenes directamente al controlador de la impresora
  4. Usar la CPU todo el tiempo que quieran
  5. Abrir un fichero con open()
  6. Usar la memoria caché del procesador
Solución

Respuesta: Leer o escribir en la memoria del sistema operativo · Leer o escribir en la memoria de otro programa · Dar órdenes directamente al controlador de la impresora · Usar la CPU todo el tiempo que quieran

Los tres recursos que se protegen son la memoria (del SO y de los demás), la E/S y la CPU. Pedirle algo al SO con una llamada al sistema está permitido: es la forma legal de hacerlo.

Pregunta 19Verdadero o falso

Sobre el modo dual, indica si es verdadero o falso:

  1. En modo privilegiado se puede ejecutar cualquier instrucción del repertorio.
  2. En modo privilegiado solo se pueden ejecutar instrucciones privilegiadas.
  3. Si un programa en modo usuario intenta una instrucción privilegiada, la CPU genera una excepción.
  4. Modo supervisor, modo sistema y modo núcleo son nombres del mismo modo.
  5. Las rutinas de servicio de interrupción se ejecutan en modo usuario.
Solución
  • V — En modo privilegiado se puede ejecutar cualquier instrucción del repertorio.
  • F — En modo privilegiado solo se pueden ejecutar instrucciones privilegiadas.
  • V — Si un programa en modo usuario intenta una instrucción privilegiada, la CPU genera una excepción.
  • V — Modo supervisor, modo sistema y modo núcleo son nombres del mismo modo.
  • F — Las rutinas de servicio de interrupción se ejecutan en modo usuario.

En modo privilegiado vale todo; en modo usuario, una instrucción privilegiada provoca una excepción. Las RSI son código del SO y se ejecutan en modo privilegiado.

Pregunta 20Ordenar

Ordena los cambios de modo desde que se enciende el ordenador hasta que tu programa hace una llamada al sistema:

  1. El SO cambia a modo usuario justo antes de ceder el control a tu programa
  2. La CPU arranca en modo privilegiado
  3. Tu programa ejecuta la instrucción de llamada al sistema
  4. La CPU pasa sola a modo privilegiado y ejecuta código del SO
Solución

Orden correcto:

  1. La CPU arranca en modo privilegiado
  2. El SO cambia a modo usuario justo antes de ceder el control a tu programa
  3. Tu programa ejecuta la instrucción de llamada al sistema
  4. La CPU pasa sola a modo privilegiado y ejecuta código del SO

Se arranca con todo el poder, el SO lo suelta antes de dar la CPU a un programa y solo se recupera con una interrupción, una llamada al sistema o una excepción.

Pregunta 21Rellenar huecos

Completa sobre las llamadas al sistema y el modo dual:

La instrucción de llamada al sistema ____ el procesador a modo ____. Así, un programa de usuario cambia de modo voluntariamente, pero lo que se ejecuta a continuación es ____.

Palabras:

  • conmuta
  • código del programa
  • desactiva
  • código del SO
  • usuario
  • privilegiado
Solución

La instrucción de llamada al sistema conmuta el procesador a modo privilegiado. Así, un programa de usuario cambia de modo voluntariamente, pero lo que se ejecuta a continuación es código del SO.

La syscall es la única puerta voluntaria al modo privilegiado, y al otro lado solo hay código del SO: el programa no puede colar sus propias instrucciones.

Pregunta 22Única

Tu práctica de C llama a printf(«Hola\n»). ¿Qué afirmación es correcta?

  1. printf() se ejecuta en modo usuario y usa la llamada al sistema write() para escribir en la consola
  2. printf() forma parte del núcleo y se ejecuta en modo privilegiado
  3. printf() da órdenes directamente al controlador de la pantalla
  4. printf() no necesita al sistema operativo en ningún momento
Solución

Respuesta: printf() se ejecuta en modo usuario y usa la llamada al sistema write() para escribir en la consola

La biblioteca de C es código normal en modo usuario. Solo la llamada al sistema que hay dentro (write) entra en el núcleo.

Pregunta 23Múltiple · penaliza

¿De qué formas se pueden pasar los argumentos de una llamada al sistema al núcleo?

  1. En registros de la CPU
  2. En una tabla en memoria principal
  3. En la pila
  4. En un fichero temporal del disco
  5. En el búfer local de un controlador
Solución

Respuesta: En registros de la CPU · En una tabla en memoria principal · En la pila

Lo más típico son los registros; si no caben, se usa una tabla en memoria (con su dirección en un registro) o la pila.

Pregunta 24Cálculo

Un proceso tiene base = 30000 y límite = 8000. Indica para cada dirección si el acceso es válido (escribe sí o no) y cuál es la última dirección válida:

Dirección¿Válida?
29999
30000
37999
38000
Última válida
Solución
Dirección¿Válida?
29999no
30000sí
37999sí
38000no
Última válida37999

Válida si dirección ≥ base y dirección < base + límite = 38000.

29999 < 30000: excepción. 30000 es la primera válida (≥ base). 37999 < 38000: válida, y es la última. 38000 no es < 38000: excepción.

Pregunta 25Verdadero o falso

Sobre la protección de la E/S y de la memoria, indica si es verdadero o falso:

  1. Las instrucciones especiales de E/S, como in y out, deben ser privilegiadas.
  2. Si la E/S está mapeada en memoria, sus direcciones deben estar prohibidas en modo usuario.
  3. El circuito que comprueba base y límite se activa en modo supervisor.
  4. Un acceso fuera del rango permitido sale al bus, pero la memoria lo ignora.
  5. Los registros base y límite delimitan una zona de la memoria principal.
Solución
  • V — Las instrucciones especiales de E/S, como in y out, deben ser privilegiadas.
  • V — Si la E/S está mapeada en memoria, sus direcciones deben estar prohibidas en modo usuario.
  • F — El circuito que comprueba base y límite se activa en modo supervisor.
  • F — Un acceso fuera del rango permitido sale al bus, pero la memoria lo ignora.
  • V — Los registros base y límite delimitan una zona de la memoria principal.

La comprobación se hace en modo usuario (en modo privilegiado el SO puede tocar toda la memoria). Un acceso ilegal no llega a salir al bus: se convierte en una excepción.

Pregunta 26Rellenar huecos

Completa sobre la protección de la CPU:

Para que ningún proceso ____ la CPU, el SO usa un ____. Lo carga con un valor, el contador baja con cada pulso de reloj y, al llegar a ____, genera una ____ con la que el SO recupera el control.

Palabras:

  • excepción
  • temporizador
  • interrupción
  • búfer
  • comparta
  • uno
  • cero
  • acapare
Solución

Para que ningún proceso acapare la CPU, el SO usa un temporizador. Lo carga con un valor, el contador baja con cada pulso de reloj y, al llegar a cero, genera una interrupción con la que el SO recupera el control.

El temporizador garantiza que el SO vuelve a ejecutarse aunque un programa esté en un bucle infinito. Y como cambiarlo es privilegiado, el programa no lo puede apagar.

Pregunta 27Relacionar

Relaciona cada componente del sistema operativo con su descripción:

Programas del sistema
Núcleo
Llamada al sistema

Definiciones:

  • Parte del SO que está siempre en memoria y atiende las llamadas y demás eventos
  • Utilidades como la shell, ls o el compilador y servicios en segundo plano
  • Biblioteca de funciones matemáticas que enlaza tu programa
  • Para el programador es una subrutina; para la CPU, una instrucción que cambia de modo
Solución
  • Programas del sistema → Utilidades como la shell, ls o el compilador y servicios en segundo plano
  • Núcleo → Parte del SO que está siempre en memoria y atiende las llamadas y demás eventos
  • Llamada al sistema → Para el programador es una subrutina; para la CPU, una instrucción que cambia de modo

Los programas del sistema son lo que el usuario percibe como «el SO»; el núcleo es lo que trabaja por debajo, y las llamadas al sistema son la forma de pedirle cosas.

Pregunta 28Relacionar

Relaciona cada llamada al sistema de UNIX con lo que gestiona:

fork
sbrk
mkdir
socket
chmod

Definiciones:

  • Redes
  • Archivos
  • Planificación de la CPU
  • Procesos
  • Protección
  • Memoria
Solución
  • fork → Procesos
  • sbrk → Memoria
  • mkdir → Archivos
  • socket → Redes
  • chmod → Protección

fork crea procesos, sbrk pide más memoria, mkdir crea directorios, socket abre una conexión de red y chmod cambia los permisos.

Pregunta 29Ordenar

Ordena los pasos del arranque típico de un sistema operativo:

  1. La CPU empieza a ejecutar en una dirección fija de la memoria
  2. El cargador instala el núcleo y se cargan módulos y servicios hasta que todo está listo
  3. Se ejecuta una pequeña rutina de arranque guardada en ROM
  4. La rutina encuentra el cargador del SO (boot loader) y lo carga en memoria
Solución

Orden correcto:

  1. La CPU empieza a ejecutar en una dirección fija de la memoria
  2. Se ejecuta una pequeña rutina de arranque guardada en ROM
  3. La rutina encuentra el cargador del SO (boot loader) y lo carga en memoria
  4. El cargador instala el núcleo y se cargan módulos y servicios hasta que todo está listo

ROM → cargador → núcleo → servicios. La ROM ya sabe leer de los dispositivos, por eso puede encontrar el cargador.

Pregunta 30Relacionar

Relaciona cada estructura de SO con su idea:

Monolítica
Por capas
Micronúcleo
Módulos cargables
Híbrida

Definiciones:

  • Lo mínimo en el núcleo; el resto, en espacio de usuario con mensajes
  • Mezcla varias de las anteriores
  • Un núcleo distinto para cada usuario
  • Cada nivel usa los servicios del nivel de abajo
  • Trozos de código que se añaden al núcleo en tiempo de ejecución
  • Todo el núcleo en un único espacio de direcciones
Solución
  • Monolítica → Todo el núcleo en un único espacio de direcciones
  • Por capas → Cada nivel usa los servicios del nivel de abajo
  • Micronúcleo → Lo mínimo en el núcleo; el resto, en espacio de usuario con mensajes
  • Módulos cargables → Trozos de código que se añaden al núcleo en tiempo de ejecución
  • Híbrida → Mezcla varias de las anteriores

Ejemplos: UNIX clásico (monolítico), THE (capas), Mach (micronúcleo), Linux y Solaris (módulos) y Windows, macOS o Android (híbridos).

Pregunta 31Respuesta corta

¿Cómo se llama la estructura de SO que deja en el núcleo solo lo imprescindible y lleva el resto de servicios a modo usuario?

Solución

Respuesta: Micronúcleo

El micronúcleo deja dentro solo los mecanismos básicos (multitarea, interrupciones, comunicación entre procesos) y el resto son módulos en espacio de usuario.

Pregunta 32Verdadero o falso

Sobre políticas, mecanismos y micronúcleos, indica si es verdadero o falso:

  1. Una política es una estrategia, como LRU; un mecanismo es lo que permite aplicarla, como una cola de espera.
  2. En un micronúcleo, las políticas van dentro del núcleo y los mecanismos fuera.
  3. Un inconveniente del micronúcleo es que los mensajes entre módulos penalizan el rendimiento.
  4. Una ventaja del micronúcleo es que hay menos código ejecutándose en modo privilegiado.
  5. Linux es monolítico, pero se le pueden añadir módulos en marcha.
Solución
  • V — Una política es una estrategia, como LRU; un mecanismo es lo que permite aplicarla, como una cola de espera.
  • F — En un micronúcleo, las políticas van dentro del núcleo y los mecanismos fuera.
  • V — Un inconveniente del micronúcleo es que los mensajes entre módulos penalizan el rendimiento.
  • V — Una ventaja del micronúcleo es que hay menos código ejecutándose en modo privilegiado.
  • V — Linux es monolítico, pero se le pueden añadir módulos en marcha.

En el micronúcleo, los mecanismos van dentro y las políticas fuera. Menos código privilegiado = más seguridad, a cambio de pagar los mensajes.

En las de verdadero o falso, busca las palabras «solo», «siempre» y «al final». En este tema, casi todas las trampas están en una de esas tres.

Preguntas de desarrollo

En el examen escrito no basta con la idea: hay que contarla en orden y con las palabras del tema. Escribe tu respuesta antes de mirar la respuesta modelo.

Pregunta 1Desarrollo

Un proceso A manda a imprimir un documento y el sistema trabaja de forma asíncrona. Explica qué ocurre desde la petición hasta que A vuelve a ejecutarse y por qué esta forma da más rendimiento que la síncrona.

Solución

Respuesta modelo:

A pide la impresión con una llamada al sistema, que es una interrupción software: la CPU pasa a modo privilegiado y se ejecuta el SO. El SO atiende la llamada y dialoga con el controlador de la impresora: le deja los datos en su búfer local y le da la orden (si la impresora estuviera ocupada, metería la petición en su cola de espera).

Como A tiene que esperar a la impresora, el SO no deja la CPU parada: hace un cambio de contexto y ejecuta otro proceso, B. La impresora trabaja sola. Cuando termina, su controlador genera una interrupción hardware; la CPU guarda el estado de B, ejecuta la RSI de la impresora y el SO decide reanudar A.

Es más rendimiento porque el tiempo que la impresora tarda no se pierde: en la forma síncrona la CPU se quedaría esperando (o preguntando) sin hacer nada útil.

Lo que se valora:

  • La llamada al sistema como forma de pedir la E/S (y el paso a modo privilegiado)
  • El diálogo con el controlador (búfer, orden) y la cola de espera si está ocupado
  • El cambio de contexto a otro proceso durante la espera
  • La interrupción de fin de E/S, con el estado guardado antes de la RSI
  • La comparación con la síncrona: CPU parada frente a CPU aprovechada
Pregunta 2Desarrollo

Compara el polling y las interrupciones vectorizadas como formas de identificar qué dispositivo ha interrumpido. ¿Qué papel tiene el vector de interrupciones?

Solución

Respuesta modelo:

Con polling, la CPU pregunta a cada dispositivo, uno detrás de otro, si ha sido él quien ha interrumpido. Es sencillo, pero lento: cuantos más dispositivos, más preguntas y más tiempo de CPU gastado.

Con interrupciones vectorizadas, el dispositivo que interrumpe envía un número por el bus de datos. Ese número es un índice en el vector de interrupciones, una zona de la memoria principal con las direcciones de todas las rutinas de servicio de interrupción. La CPU consulta esa posición y salta directamente a la RSI correcta, sin preguntar a nadie.

El vector, además, sirve para todos los eventos: interrupciones hardware, llamadas al sistema y excepciones tienen su entrada.

Lo que se valora:

  • Definición de polling y su coste (crece con los dispositivos)
  • El número que envía el dispositivo en las vectorizadas
  • El vector como tabla de direcciones de las RSI en memoria principal
  • Conclusión: las vectorizadas son más rápidas
Pregunta 3Desarrollo

Explica qué es el modo dual de operación, cuándo cambia la CPU de un modo a otro y cómo protege la memoria y la CPU con su ayuda el hardware.

Solución

Respuesta modelo:

La CPU define un conjunto de instrucciones privilegiadas y trabaja en dos modos. En modo privilegiado (núcleo, supervisor o sistema) se puede ejecutar cualquier instrucción; en modo usuario, intentar una instrucción privilegiada provoca una excepción.

La CPU arranca en modo privilegiado. Antes de ceder el control a un programa, el SO cambia a modo usuario, y solo se vuelve a modo privilegiado cuando el SO recupera el control: con una interrupción, una llamada al sistema o una excepción. La instrucción de llamada al sistema cambia de modo automáticamente, pero lo que se ejecuta después es código del SO.

Memoria: los registros base y límite delimitan la zona de memoria principal del proceso; en modo usuario, un circuito comprueba cada acceso y, si se sale, genera una excepción y el acceso no sale al bus. CPU: el temporizador se carga con un valor, baja con cada pulso de reloj y al llegar a cero genera una interrupción, así ningún proceso acapara la CPU. Cambiar estos registros y el temporizador es privilegiado, por eso el programa no puede desactivarlos.

Lo que se valora:

  • Los dos modos y qué pasa con una instrucción privilegiada en modo usuario
  • Cuándo se cambia de modo (arranque, ceder el control, interrupción, llamada, excepción)
  • La llamada al sistema como paso voluntario al modo privilegiado
  • Registros base y límite con la comprobación en modo usuario
  • El temporizador y por qué el programa no puede apagarlo
Pregunta 4Desarrollo

Compara la estructura monolítica y la de micronúcleo. Incluye la diferencia entre mecanismos y políticas y un ejemplo de cada estructura.

Solución

Respuesta modelo:

En un sistema monolítico, toda la funcionalidad del núcleo está en un único espacio de direcciones, «todo en un mazacote». Es la estructura más simple y rápida, porque las partes se llaman directamente, pero no se puede modificar una parte por separado: un cambio afecta al resto. Ejemplo: UNIX clásico.

En un micronúcleo, en el núcleo solo queda lo imprescindible (multitarea básica, gestión de interrupciones, comunicación entre procesos) y el resto de servicios son módulos en espacio de usuario que se comunican con mensajes. Ejemplo: Mach (1980).

Las políticas son las estrategias para administrar un recurso (FIFO, LRU, SJF…) y los mecanismos, las estructuras que permiten aplicarlas (colas, mapas de bits, el temporizador…). El micronúcleo deja los mecanismos dentro y las políticas fuera. Ventajas: servicios nuevos sin tocar el núcleo, más fácil de portar y más seguro, porque hay menos código privilegiado. Inconveniente: los mensajes entre módulos penalizan el rendimiento.

Lo que se valora:

  • Monolítico: un único espacio de direcciones y el problema de modificarlo
  • Micronúcleo: lo mínimo dentro y servicios en modo usuario con mensajes
  • Política frente a mecanismo, con ejemplos
  • Ventajas e inconveniente del micronúcleo
  • Un ejemplo de cada estructura

En las de desarrollo de este tema, organiza la respuesta en el orden en que pasan las cosas (quién pide, quién atiende, quién avisa). Un esquema de flechas en el margen te ayuda a no saltarte pasos.

Todo el tema en un dibujo

Antes del chuletario, el tema entero de un vistazo. Las cuatro ramas son los cuatro bloques de la teoría, y cada una tiene las cuatro ideas que más caen.

Todo el tema en un dibujo Mapa del tema con la CPU y el SO en el centro y cuatro ramas: E/S e interrupciones, jerarquía y caché, protección, y componentes y estructuras, cada una con sus cuatro ideas clave. CPU + SO el SO es reactivo E/S e interrupciones controlador + búfer local estado antes de la RSI polling / vectorizadas asíncrona = más rendimiento Jerarquía y caché rápida = cara = pequeña lo más usado, arriba FIFO · LRU · LFU · azar principio de caché Protección modo dual (bit 0 = núcleo) E/S privilegiada base y límite temporizador Componentes y estructuras programas · núcleo · llamadas argumentos: registros, tabla, pila monolítico · capas · µnúcleo módulos · híbrido · arranque
Si puedes explicar las dieciséis ideas sin mirar, tienes el tema.

Chuletario: El hardware que sostiene al sistema operativo

Lo esencial en 30 segundos

  • Controlador: une el dispositivo al bus, tiene un búfer local y avisa con una interrupción.
  • Interrupción: guarda el estado antes, ejecuta la RSI del SO, restaura y sigue.
  • SO reactivo: solo se activa con interrupciones hardware, llamadas al sistema y excepciones.
  • Asíncrona > síncrona: la CPU hace otra cosa mientras la E/S trabaja.
  • Jerarquía: más arriba, más rápida, más cara y más pequeña. Caché: lo más usado, en lo más rápido.
  • Modo dual: en privilegiado se ejecuta todo; en usuario, una instrucción privilegiada da una excepción.
  • Protección: E/S privilegiada, base y límite para la memoria, temporizador para la CPU.

Si te preguntan…

Te preguntan…Responde…
¿Cuándo se guarda el estado de la CPU?Antes de ejecutar la RSI
¿Quién escribe las RSI?El sistema operativo, no las aplicaciones
¿Qué es el vector de interrupciones?Una zona de la memoria principal con las direcciones de todas las RSI
¿Polling o vectorizadas?Polling: la CPU pregunta. Vectorizadas: el dispositivo manda un número
¿Qué es una interrupción software?Llamada al sistema o excepción: igual que una hardware, pero la provoca la CPU
¿Instrucciones para provocarla?INT (Intel), TRAP (Motorola), SYSCALL (MIPS)
¿En qué modo arranca la CPU?En modo privilegiado
¿Cuándo se vuelve a modo privilegiado?Con una interrupción, una llamada al sistema o una excepción
¿Dónde se comprueban base y límite?En modo usuario, en cada acceso; si falla, excepción y el acceso no sale al bus
¿Cómo se pasan los argumentos de una llamada?En registros (lo típico), en una tabla en memoria o en la pila
¿La biblioteca de C es parte del SO?No: se ejecuta en modo usuario; printf() usa write()

Las protecciones en una tabla

RecursoRiesgoProtección
E/SHablar directamente con los dispositivosInstrucciones de E/S privilegiadas o direcciones de E/S prohibidas en modo usuario
MemoriaTocar la memoria del SO o de otro procesoRegistros base y límite y excepción si se sale
CPUAcaparar la CPU (bucle infinito)Temporizador que genera una interrupción al llegar a cero
TodasDesactivar las proteccionesModo dual: cambiarlas es privilegiado

Plantillas de los cálculos

CálculoFórmulaEjemplo del cuestionario
Uso de CPUCPU útil / tiempo totalAsíncrona: 140 / 160 = 87,5 %
E/S síncrona(CPU + E/S) de cada página, más el otro proceso detrás2 × (30 + 50) + 80 = 240 ms
Tiempo medio con cachét caché + tasa de fallos × t RAMLRU: 2 + (4/6) × 40 = 28,67 ns
Base y límiteválida si base ≤ dir < base + límitebase 30000, límite 8000: de 30000 a 37999

Si dudas entre dos opciones…

Si dudas entre…Piensa en…
Síncrona y asíncrona¿La CPU espera (síncrona) o hace otra cosa (asíncrona)?
FIFO y LRU¿Importa cuándo entró (FIFO) o cuándo se usó por última vez (LRU)?
Política y mecanismo¿Es una estrategia (política) o una estructura para aplicarla (mecanismo)?
Monolítico y micronúcleo¿Todo dentro (monolítico) o lo mínimo dentro y mensajes (micronúcleo)?
Controlador y driver¿Es hardware (controlador) o software del SO (driver)?
Síntoma en una afirmaciónCausa probable de que sea falsa
«solo» sobre el modo privilegiadoEn modo privilegiado se ejecuta todo
«al final de la RSI»El estado se guarda antes
«memoria secundaria» con base y límiteEs memoria principal
«en la de mayor capacidad» con la cachéEs en la de menor tiempo de acceso
«interrupción hardware» con llamadas al sistemaSon interrupciones software

Antes de entregar, pregúntate

  1. ¿He comprobado el orden en cada pregunta de pasos (guardar, RSI, restaurar)?
  2. ¿Alguna afirmación tiene un «solo» o un «siempre» que la vuelve falsa?
  3. En los cálculos de caché, ¿he sumado el tiempo de mirar la caché también en los fallos?
  4. En base y límite, ¿he usado «menor que» base + límite y no «menor o igual»?

Con este tema cerramos la introducción a los sistemas operativos. En el siguiente entraremos en los procesos y los hilos: qué es exactamente eso que el SO interrumpe, guarda y reanuda todo el rato.

Sigue aprendiendoTodos los artículos de Sistemas operativos

¿Te ha servido este artículo? Así puedes apoyar SergioLearns →

Sigue aprendiendo

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *