Ir al contenido

Hardware: ciclo, interrupciones y memoria

Este capítulo trata del hardware que el SO administra, no del SO. Todo lo que viene después se apoya aquí: el cambio de contexto guarda lo que guarda una interrupción, la memoria virtual es una jerarquía de dos niveles y los spinlocks existen porque hay varios núcleos.

ElementoQué hace
Procesador (CPU)Controla el computador y procesa datos
Memoria principalGuarda datos y programas. Es volátil; también se llama real o primaria
Módulos de E/SMueven datos entre el computador y el exterior (discos, red, terminales)
Bus del sistemaComunica procesador, memoria y E/S

Registros clave del procesador:

  • PC (Program Counter): dirección de la siguiente instrucción.
  • IR (Instruction Register): instrucción en ejecución.
  • MAR / MBR (Memory Address / Buffer Register): dirección y dato de la próxima lectura o escritura en memoria. I/O AR / I/O BR son su equivalente para E/S.
  • PSW (Program Status Word): códigos de condición, bit de habilitar/deshabilitar interrupciones y bit de modo usuario/kernel.
  1. Fetch: el procesador lee la instrucción apuntada por el PC, y el PC se incrementa (salvo que sea un salto).
  2. Execute: ejecuta la instrucción, que es de alguno de estos tipos:
    • processor–memory: mover datos entre la CPU y la memoria;
    • processor–I/O: mover datos entre la CPU y un módulo de E/S;
    • data processing: operación aritmética o lógica;
    • control: salto o branch.
  3. Interrupt (etapa añadida): si hay una interrupción pendiente y están habilitadas, se salta al handler.

Ejemplo del libro: una máquina de 16 bits con acumulador (4 bits de opcode, lo que da 16 operaciones, y 12 bits de dirección, lo que da 4096 palabras). Sumar las direcciones 940 y 941 cuesta 3 ciclos: Load AC, Add y Store AC.

¿Por qué existen? La E/S es millones de veces más lenta que la CPU. Sin interrupciones, la CPU se queda sondeando (polling) hasta que la E/S termine. Con interrupciones, lanza la E/S, sigue trabajando y el dispositivo le avisa al terminar, así que la E/S se solapa con el cómputo.

ClaseOrigenEjemplo
Programla ejecución de una instrucciónoverflow, división por cero, instrucción ilegal, acceso fuera de la memoria permitida
Timerreloj internole permite al SO recuperar el control periódicamente (base del time slicing)
I/Ocontrolador de E/Sla operación terminó, o hubo un error
Hardware failurefalla físicacorte de energía, error de paridad de memoria

Hardware:

  1. El dispositivo levanta la señal de interrupción.
  2. La CPU termina la instrucción actual; nunca interrumpe a media instrucción.
  3. Detecta la interrupción y envía un acknowledge al dispositivo.
  4. Guarda lo mínimo en la pila de control: el PSW y el PC.
  5. Carga el PC con la dirección del interrupt handler.

Software (el handler, que es parte del SO):

  1. Guarda el resto de los registros, porque los va a usar.
  2. Procesa la interrupción.
  3. Restaura los registros.
  4. Restaura el PSW y el PC, y el programa interrumpido continúa como si nada hubiera pasado.
  1. Deshabilitarlas durante una ISR: procesamiento secuencial estricto. Es simple, pero ignora la urgencia y se pueden perder datos si un buffer se llena.
  2. Prioridades: una interrupción de mayor prioridad anida sobre una ISR de menor prioridad.

Interrupciones múltiples (Stallings fig. 1.12–1.13)

Impresora (prioridad 2) en t = 10, comunicaciones (5) en t = 15 y disco (4) en t = 20; cada ISR dura 10. Compara las dos políticas.

Programa de usuarioISR ImpresoraISR ComunicacionesISR Disco051015202530354045
t=10: llega Impresora (prio 2) → interrumpe al programa de usuariot=15: llega Comunicaciones (prio 5) > Impresora (prio 2) → la anidat=20: llega Disco (prio 4) → queda PENDIENTE (no supera a Comunicaciones, prio 5)t=25: termina ISR Comunicacionest=25: se atiende la pendiente Disco antes de reanudar Impresorat=35: termina ISR Discot=35: se reanuda ISR Impresorat=40: termina ISR Impresorat=40: vuelve el programa de usuario
Anidado: comunicaciones (5) interrumpe a la ISR de impresora; disco (4) espera porque 4 < 5, pero al terminar comunicaciones se atiende disco ANTES de reanudar impresora (4 > 2). La impresora termina en t = 40.

¿Cuánta memoria, qué tan rápida, qué tan cara? Hay un triple compromiso: más velocidad implica más costo por bit; más capacidad implica menos costo por bit, pero más lentitud.

Registros → caché → memoria principal → disco (outboard) → cinta (off-line). Al bajar en la jerarquía: (a) baja el costo por bit, (b) sube la capacidad, (c) sube el tiempo de acceso y (d) baja la frecuencia de acceso de la CPU. El punto (d) es el que hace funcionar todo, y se logra gracias a la localidad de referencia (Denning 1968): las referencias se agrupan en bucles, subrutinas y arreglos.

  • Localidad temporal: lo que usé hace poco lo volveré a usar pronto.
  • Localidad espacial: usaré lo que está al lado de lo que acabo de usar.

Hit ratio y tiempo medio de acceso

Ts=H T1+(1−H)(T1+T2)=T1+(1−H) T2T_s = H\,T_1 + (1-H)(T_1+T_2) = T_1 + (1-H)\,T_2. Con localidad fuerte, H es alto y el sistema se comporta casi como si toda la memoria fuera rápida.

T₁H = 0H = 1
Tₛ (tiempo medio)0.150 µs
Eficiencia T₁/Tₛ66.7 %
Accesos que van a M₂5 %
Ejemplo del libro: T₁ = 0.1 µs, T₂ = 1 µs, H = 0.95 → Tₛ = 0.15 µs. La misma idea sostiene a la caché (L1/L2/RAM), al TLB y a la memoria virtual (RAM/disco): todo funciona gracias a la localidad de referencia.

Costo medio combinado: Cs=C1S1+C2S2S1+S2C_s = \dfrac{C_1 S_1 + C_2 S_2}{S_1 + S_2}. Se quiere Cs≈C2C_s \approx C_2 (el costo del nivel barato), así que S1≪S2S_1 \ll S_2. Una eficiencia aceptable (T1/TsT_1/T_s) necesita H ≈ 0.8–0.9. Sin localidad, H sería proporcional al tamaño relativo: si M₁ es la mitad de M₂, H = 0.5.

  • Es una copia pequeña y rápida de una porción de la memoria principal. En un miss se trae un bloque completo (localidad espacial). Hay varios niveles: L1 (por núcleo), L2 y L3 (compartida).
  • La memoria tiene M=2n/KM = 2^n / K bloques de K palabras; la caché tiene C líneas (slots) con C≪MC \ll M. Cada línea tiene un tag que dice qué bloque contiene.
  • Diseño: tamaño de la caché, tamaño de bloque (mayor ayuda hasta cierto punto y luego perjudica), función de mapeo, reemplazo (LRU), política de escritura (write-through o write-back; esta última deja la RAM desactualizada, lo que complica el multiprocesador y el DMA) y número de niveles.
  • Coherencia de caché: con varias CPUs, escribir en una caché invalida las copias de las otras. Se resuelve en hardware (MESI). Por eso existe el false sharing.
Técnica¿Quién mueve cada palabra?¿La CPU espera?
Programmed I/Ola CPUSí: hace polling del estado
Interrupt-driven I/Ola CPU (una interrupción por palabra o bloque)No, pero sigue ejecutando instrucciones por cada transferencia
DMAel módulo DMA, directo entre dispositivo y memoriaNo: solo recibe una interrupción al final

Para el DMA, la CPU le indica: lectura o escritura, la dirección del dispositivo, la dirección inicial en memoria y el número de palabras. Cuando el DMA usa el bus, la CPU solo pausa un ciclo de bus (cycle stealing); no es una interrupción y no se guarda contexto.

SMP (Symmetric Multiprocessor):

  1. Dos o más procesadores similares.
  2. Comparten memoria y E/S, con tiempo de acceso ≈ igual para todos.
  3. Todos acceden a los dispositivos de E/S.
  4. Todos pueden hacer las mismas funciones (de ahí simétrico).
  5. Un solo SO integrado los controla.

Sus beneficios potenciales (no automáticos: el SO debe explotarlos) son rendimiento, disponibilidad (si cae una CPU, el sistema sigue más lento), crecimiento incremental y escalado de la línea de productos.

Multicore (chip multiprocessor): varios núcleos en un mismo die, cada uno con sus registros, ALU y L1, y cachés L2/L3 compartidas. Surge porque ya no rendía seguir complicando un solo núcleo. Ejemplo: Intel Core i7-5960X, con prefetching, controlador DDR4 integrado y PCIe.

Autoevaluación

0/6 correctas · 0 respondidas
1. ¿Qué guarda el hardware automáticamente al aceptar una interrupción?
2. Una interrupción se atiende…
3. H = 0.9, T₁ = 10 ns, T₂ = 100 ns. Tₛ =
4. Cuando el DMA toma el bus, la CPU…
5. ¿Quién resuelve la coherencia de caché en SMP?
6. La propiedad que hace viable la jerarquía de memoria es…

Fuente ·Stallings, Operating Systems 9e, cap. 1 (lab2/Stallings.pdf) · lab 1/Resumenes/Stallings/Stallings-Cap1-Computer-System-Overview.md