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.
Tabla de Contenidos
Cómo usar este artículo
- 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.
- Lee la explicación de cada fallo. Cada pregunta explica por qué la correcta lo es y por qué fallan las otras opciones.
- 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.
- 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
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.
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?
- Guarda el estado de la CPU y después ejecuta la RSI
- Ejecuta la RSI y, al terminarla, guarda el estado de la CPU
- Espera a que VS Code termine para atender a la impresora
- 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.
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.
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.
Se dice que el sistema operativo tiene un comportamiento reactivo. ¿Qué significa?
- Que solo se activa cuando ocurre un evento que tiene que atender
- Que se ejecuta sin parar en un núcleo de la CPU reservado para él
- Que reacciona a los errores cerrando el programa que falla
- 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).
¿Cuáles de estos eventos hacen que se ejecute código del sistema operativo?
- La impresora termina de imprimir una página
- Un programa ejecuta la llamada al sistema write()
- Un programa intenta dividir un entero entre cero
- Un programa suma dos variables que están en registros
- 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.
Sobre la sincronización entre la E/S y el SO, indica si es verdadero o falso:
- En la E/S síncrona, la CPU queda en espera hasta que la E/S termina.
- En la E/S asíncrona, el SO aprovecha la espera para ejecutar otros procesos.
- La E/S síncrona saca más rendimiento al sistema que la asíncrona.
- En la E/S asíncrona, el SO se entera del fin de la operación gracias a una interrupción.
- 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.
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):
| Proceso | Trabajo |
|---|---|
| A | 30 ms CPU + 50 ms impresora, dos veces |
| B | 80 ms CPU |
| Modo | Tiempo total (ms) | CPU útil (ms) | Uso de CPU (%) |
|---|---|---|---|
| Síncrona | |||
| Asíncrona |
Solución
| Modo | Tiempo total (ms) | CPU útil (ms) | Uso de CPU (%) |
|---|---|---|---|
| Síncrona | 240 | 140 | 58.33 |
| Asíncrona | 160 | 140 | 87.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 %.
Ordena lo que pasa en una E/S asíncrona cuando el proceso A manda a imprimir:
- El SO atiende la interrupción y decide reanudar A
- La impresora termina y genera una interrupción
- El SO hace un cambio de contexto y pone en la CPU al proceso B
- A pide la impresión con una llamada al sistema
- El SO atiende la llamada y le pasa la orden al controlador
Solución
Orden correcto:
- A pide la impresión con una llamada al sistema
- El SO atiende la llamada y le pasa la orden al controlador
- El SO hace un cambio de contexto y pone en la CPU al proceso B
- La impresora termina y genera una interrupción
- 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.
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.
Sobre interrupciones hardware y software, indica si es verdadero o falso:
- Las llamadas al sistema se gestionan como interrupciones, pero las provoca la propia CPU.
- Las excepciones las provoca siempre un dispositivo de E/S.
- Existe una instrucción de máquina para provocar una interrupción software, como INT en Intel.
- Las llamadas al sistema se implementan mediante interrupciones hardware.
- 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).
Ordena estas memorias de la más rápida a la más lenta:
- Registros
- Memoria caché
- Cinta magnética
- Disco sólido (SSD)
- Disco duro magnético
- Memoria principal
Solución
Orden correcto:
- Registros
- Memoria caché
- Memoria principal
- Disco sólido (SSD)
- Disco duro magnético
- 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.
¿En qué consiste el principio de caché?
- En guardar en la memoria más rápida la información que se usa con más frecuencia
- En guardar en la memoria de más capacidad la información que más se usa
- En copiar toda la memoria principal en la caché al arrancar
- 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.
Sobre la caché, indica si es verdadero o falso:
- El principio de caché también se usa en la caché de disco y en la de páginas web.
- Cuando la caché se llena, se vacía entera y se vuelve a cargar.
- La política de reemplazo decide qué bloque sale cuando hay que meter uno nuevo y no hay hueco.
- 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.
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.
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):
| Acceso | X | Y | X | Z | X | Y |
|---|---|---|---|---|---|---|
| Caché FIFO después | X | X Y | X Y | Y Z | Z X | X Y |
| Caché LRU después | X | X Y | Y X | X Z | Z X | X Y |
| Política | Aciertos | Tiempo medio (ns) |
|---|---|---|
| FIFO | ||
| LRU |
Solución
| Política | Aciertos | Tiempo medio (ns) |
|---|---|---|
| FIFO | 1 | 35.33 |
| LRU | 2 | 28.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.
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.
Para que el SO funcione, ¿qué no deben poder hacer libremente los programas de usuario?
- 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
- Abrir un fichero con open()
- 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.
Sobre el modo dual, indica si es verdadero o falso:
- En modo privilegiado se puede ejecutar cualquier instrucción del repertorio.
- En modo privilegiado solo se pueden ejecutar instrucciones privilegiadas.
- Si un programa en modo usuario intenta una instrucción privilegiada, la CPU genera una excepción.
- Modo supervisor, modo sistema y modo núcleo son nombres del mismo modo.
- 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.
Ordena los cambios de modo desde que se enciende el ordenador hasta que tu programa hace una llamada al sistema:
- El SO cambia a modo usuario justo antes de ceder el control a tu programa
- La CPU arranca en modo privilegiado
- Tu programa ejecuta la instrucción de llamada al sistema
- La CPU pasa sola a modo privilegiado y ejecuta código del SO
Solución
Orden correcto:
- La CPU arranca en modo privilegiado
- El SO cambia a modo usuario justo antes de ceder el control a tu programa
- Tu programa ejecuta la instrucción de llamada al sistema
- 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.
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.
Tu práctica de C llama a printf(«Hola\n»). ¿Qué afirmación es correcta?
- printf() se ejecuta en modo usuario y usa la llamada al sistema write() para escribir en la consola
- printf() forma parte del núcleo y se ejecuta en modo privilegiado
- printf() da órdenes directamente al controlador de la pantalla
- 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.
¿De qué formas se pueden pasar los argumentos de una llamada al sistema al núcleo?
- En registros de la CPU
- En una tabla en memoria principal
- En la pila
- En un fichero temporal del disco
- 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.
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? |
|---|---|
| 29999 | no |
| 30000 | sí |
| 37999 | sí |
| 38000 | no |
| Última válida | 37999 |
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.
Sobre la protección de la E/S y de la memoria, indica si es verdadero o falso:
- Las instrucciones especiales de E/S, como in y out, deben ser privilegiadas.
- Si la E/S está mapeada en memoria, sus direcciones deben estar prohibidas en modo usuario.
- El circuito que comprueba base y límite se activa en modo supervisor.
- Un acceso fuera del rango permitido sale al bus, pero la memoria lo ignora.
- 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.
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.
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.
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.
Ordena los pasos del arranque típico de un sistema operativo:
- La CPU empieza a ejecutar en una dirección fija de la memoria
- El cargador instala el núcleo y se cargan módulos y servicios hasta que todo está listo
- Se ejecuta una pequeña rutina de arranque guardada en ROM
- La rutina encuentra el cargador del SO (boot loader) y lo carga en memoria
Solución
Orden correcto:
- La CPU empieza a ejecutar en una dirección fija de la memoria
- Se ejecuta una pequeña rutina de arranque guardada en ROM
- La rutina encuentra el cargador del SO (boot loader) y lo carga en memoria
- 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.
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).
¿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.
Sobre políticas, mecanismos y micronúcleos, indica si es verdadero o falso:
- Una política es una estrategia, como LRU; un mecanismo es lo que permite aplicarla, como una cola de espera.
- En un micronúcleo, las políticas van dentro del núcleo y los mecanismos fuera.
- Un inconveniente del micronúcleo es que los mensajes entre módulos penalizan el rendimiento.
- Una ventaja del micronúcleo es que hay menos código ejecutándose en modo privilegiado.
- 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.
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
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
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
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.
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
| Recurso | Riesgo | Protección |
|---|---|---|
| E/S | Hablar directamente con los dispositivos | Instrucciones de E/S privilegiadas o direcciones de E/S prohibidas en modo usuario |
| Memoria | Tocar la memoria del SO o de otro proceso | Registros base y límite y excepción si se sale |
| CPU | Acaparar la CPU (bucle infinito) | Temporizador que genera una interrupción al llegar a cero |
| Todas | Desactivar las protecciones | Modo dual: cambiarlas es privilegiado |
Plantillas de los cálculos
| Cálculo | Fórmula | Ejemplo del cuestionario |
|---|---|---|
| Uso de CPU | CPU útil / tiempo total | Asíncrona: 140 / 160 = 87,5 % |
| E/S síncrona | (CPU + E/S) de cada página, más el otro proceso detrás | 2 × (30 + 50) + 80 = 240 ms |
| Tiempo medio con caché | t caché + tasa de fallos × t RAM | LRU: 2 + (4/6) × 40 = 28,67 ns |
| Base y límite | válida si base ≤ dir < base + límite | base 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ón | Causa probable de que sea falsa |
|---|---|
| «solo» sobre el modo privilegiado | En modo privilegiado se ejecuta todo |
| «al final de la RSI» | El estado se guarda antes |
| «memoria secundaria» con base y límite | Es memoria principal |
| «en la de mayor capacidad» con la caché | Es en la de menor tiempo de acceso |
| «interrupción hardware» con llamadas al sistema | Son interrupciones software |
Antes de entregar, pregúntate
- ¿He comprobado el orden en cada pregunta de pasos (guardar, RSI, restaurar)?
- ¿Alguna afirmación tiene un «solo» o un «siempre» que la vuelve falsa?
- En los cálculos de caché, ¿he sumado el tiempo de mirar la caché también en los fallos?
- 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 →



