RedNotes
Toggle sidebar
Iniciar sesión
Sistemas Operativos/Entrada y salida
Inicia sesión para editar

Una de las funciones principales del Sistemas Operativos es controlar los dispositivos de E/S: emitir comandos, atrapar interrupciones, manejar errores y ofrecer una interfaz sencilla e independiente del dispositivo.

Hardware de E/S

  • Dispositivos de bloque (discos, SSD): datos en bloques direccionables de tamaño fijo.
  • Dispositivos de caracteres (teclado, ratón, red): flujo de caracteres no direccionable.
  • Controladores de dispositivo: la parte electrónica; el SO habla con el controlador, no con el dispositivo.

Comunicación con el controlador

  • Puertos de E/S separados (instrucciones IN/OUT).
  • E/S mapeada a memoria: los registros del controlador aparecen como direcciones de memoria.
  • Esquemas híbridos (x86).

DMA (Acceso Directo a Memoria)

El controlador DMA transfiere bloques entre dispositivo y memoria sin ocupar la CPU, y genera una interrupción al terminar.

Interrupciones

Al terminar su trabajo, el dispositivo envía una señal al controlador de interrupciones, que se la pasa a la CPU con un número que indexa el vector de interrupciones. Las interrupciones precisas dejan la máquina en un estado bien definido.

Principios del software de E/S

Metas: independencia del dispositivo, nombres uniformes, manejo de errores lo más cerca posible del hardware, transferencias síncronas (bloqueantes) vs asíncronas, uso de búferes, y dispositivos compartidos vs dedicados.

Tres formas de hacer E/S:

  1. E/S programada: la CPU hace todo y espera activamente (polling).
  2. E/S controlada por interrupciones: la CPU hace otra cosa hasta que el dispositivo interrumpe.
  3. E/S con DMA: el controlador DMA hace la transferencia y sólo interrumpe al final.

Capas del software de E/S

┌──────────────────────────────────────┐
│ Software de E/S en espacio de usuario│  printf, spooling
├──────────────────────────────────────┤
│ Software independiente del dispositivo│ nombres, búferes, errores
├──────────────────────────────────────┤
│ Drivers de dispositivo               │  código específico
├──────────────────────────────────────┤
│ Manejadores de interrupciones        │  despiertan al driver
├──────────────────────────────────────┤
│ Hardware                             │
└──────────────────────────────────────┘
  • Manejadores de interrupciones: guardan el estado, reconocen la interrupción y desbloquean al driver (con Sistemas Operativos/Semáforos o variables de condición).
  • Drivers: código específico del dispositivo, normalmente dentro del Sistemas Operativos/Kernel (o en espacio de usuario en un microkernel).
  • Software independiente del dispositivo: interfaz uniforme, búferes, reporte de errores, asignación de dispositivos dedicados, tamaño de bloque uniforme.
  • Espacio de usuario: bibliotecas y el spooling (un demonio y un directorio de spool para dispositivos dedicados como la impresora).

Discos

  • Discos magnéticos: cilindros, pistas y sectores. Tiempo de acceso = búsqueda + latencia rotacional + transferencia.
  • Algoritmos de planificación del brazo: FCFS, SSF (búsqueda más corta primero) y el algoritmo del elevador (SCAN).
  • RAID: niveles 0 a 6 para rendimiento y redundancia.
  • SSD: sin partes móviles; la planificación del brazo pierde sentido.

Relojes

El reloj de hardware genera interrupciones periódicas (ticks); el software de reloj mantiene la hora, controla quantums para la Sistemas Operativos/Planificación, contabiliza el uso de CPU y gestiona alarmas y temporizadores guardián (watchdog).

Gestión de energía

Apagar o suspender dispositivos inactivos, escalado de voltaje y frecuencia de la CPU.

#sistemas-operativos #tanenbaum #entrada-salida