GEntradaSalida_esquema

Anuncio
Gestión de Entrada/Salida
La gestión de E/S es una de las funciones principales de un SO
En origen los SSOO pretendían no más que proporcionar un acceso uniforme y de alto
nivel a los dispositivos periféricos – eran una colección de rutinas de E/S
Es la parte que más código aporta al SO, dada la diversidad de dispositivos existentes
[drivers de disco, terminal, red, …]
El diseño de los manejadores (drivers) se pretende que esté abierto al programador
Introducción
Tipos de dispositivos de E/S
Periféricos: interfaz de usuario (ratón, terminal,…), y otros (MIDI,…)
Almacenamiento: disco, disquetes, CD, cintas,…
Comunicaciones: MODEM, red, wifi,…
Características: diferencias de velocidad, interactividad,…
Objetivos de la gestión de E/S
Ofrecer una visión lógica simplificada al programador
Facilitar el manejo: interfaz entre dispositivos y resto del sistema
Optimizar las prestaciones
Permitir instalar nuevos dispositivos (plug&play)
Dispositivos de E/S
Perspectiva: programador, diseñador de SO, fabricante de dispositivo
Conexión H/W: dispositivo – controlador – buses (SCSI, IDE, PCI,…)
Controlador
Mapa de E/S: registros de datos, estado y control
Dirección de E/S: ports o memory-mapping
Unidad de transferencia: bloques o caracteres
Interacción con la CPU: operaciones de E/S
Tipo de E/S:
Programada (polling)
Por interrupciones
Sectorizadas (IVT), enmascarables, priorizadas
Asignadas por SO (o el administrador)
Las RSI forman parte del SO: parte genérica
y particular (diferida), aportada por fabricante
Incremento de prestaciones
DMA
Canal de E/S
Cache de disco
Solapamiento “seek-transfer”
Control de energía
APM, ACPI
Control de batería
Control de temperatura  aumento/reducción velocidad CPU
Apagado de pantalla o disco
Suspensión/Hibernación del sistema
Arquitectura del Sistema de E/S
1. Interfaz del SO: servicios de E/S síncrona o asíncrona.
2. Sistema de Ficheros: interfaz homogénea (VFS) para acceder a los drivers
mediante un SF particular
3. Gestor de redes: interfaz homogénea a sistemas de red
4. Gestor de bloques / Gestor de cache
5. Manejadores de dispositivo
6. Manejador de interrupciones
Software de E/S
Interactúa con el Controlador mediante
Manejador de interrupción
(salva estado, comunica evento, restaura ejecución)
Manejador de dispositivo
Código dependiente de dispositivo
Manejador de dispositivo
El código dependiente de dispositivo procesa peticiones abstractas
(listas de peticiones, con/sin bloqueo; control de errores)
S/W independiente del dispositivo [S.F. + G.Red + G.Bloques + 1/2.Driver]
Tamaño de acceso: bloques, flujo de caracteres
Almacenamiento intermedio (buffer)
- evita accesos repetidos
- oculta diferencias de velocidad
- copia única (semántica de compartición)
Gestión de dispositivo
- nombrado [/dev/cdrom  inodo  (mayor, menor)]
- protección (rwx)
- acceso en serie (si no se puede compartir)
Planificación de E/S: genérica (ej., FIFO) y de manejador (ej., SCAN)
Gestión de errores
Transitorios: resueltos por el driver (reparación)
Permanentes: notificados al usuario y registrados
Interfaz de aplicaciones
- llamadas: open(), read(), write(), ioctl()
- utilidades: biblioteca (libc.so); demonios (de red – inetd; de spool – lpd,…)
1. Nombres independientes del dispositivo
2. E/S bloqueante [read(), write()]o no bloqueante [aio_read(), aio_return(),…]
3. Control de acceso (compartición)
a. Mandatos externos o demonios (lpr, lpd)
b. Llamadas de bloqueo (lock, unlock)
4. Indicaciones de error:
en UNIX [errno, perror()], en Windows [GetLastError()]
DISCOS (dispoisitivo de bloques)
Interfaz – VFS – SF o Driver_HL – Cache pág/bloques – Petición disco – Driver_LL
Llamadas
y planificación
Acceso por bloques
Interfaz genérico de controlador: SCSI, IDE (EIDE)
Tipos de disco: duro (Winchester), ópticos (CD, DVD), extraíbles (floppy)
Estructura física  formateo (fdformat)
Varias superficies (cabezas solidarias)
División en cilindros, uno por pista
Divididas en sectores de 512 bytes
Capacidad: cilindros x cabezas x sectores x tamaño_sector
1023 x 256 x 83 x 512
= 10,3 GB
Tiempo de acceso =
N x Tseek + Tlatencia + Transferencia
Densidad de pistas: fija en toda la superficie o variable
Intercalado de sectores (interleaving)
Cache de disco (lectura y almacenamiento de una o varias pistas en controlador)
Solapamiento “seek-transfer”
Estructura lógica
Sector 0 (MBR): tabla de particiones con indicación de partición activa
Partición: considerado un vector de bloques contiguos
Formato lógico: organización de los bloques en la partición
Creación de un sistema de ficheros (mkfs)
Creación de un espacio lineal de bloques (mkswap)
Bloque de carga (programa cargador)
Iniciación del hardware
Creación de pila inicial de ejecución
Copia de datos de configuración desde ROM
Construcción de descripción h/w en memoria
Carga de imagen del SO y cesión de control
Lista de bloques defectuosos
Lista de bloques de repuesto
Manejador de disco
Genérico: procesar la petición de E/S de bloques
Particular: traducir del formato lógico a mandatos de controlador
Insertar petición en cola y planificar
Enviar mandatos al controlador (programas DMA)
Bloquear en espera de interrupción
Comprobar estado
Gestionar errores
Indicar el estado de terminación al nivel superior
Planificación de disco
FCFS
SSF
SCAN (LOOK)
CSCAN (CLOOK)
EDF
SCAN-EDF
SCAN-RT
Gestión de errores
Transitorios  retry, recalibrate
Permanentes  reinicio del controlador,
sustitución por bloque de repuesto,
comunicación del error al nivel superior
Discos en memoria
Discos RAM: acceso volátil a bloques
Discos sólidos: placas RAM
Disco en chip: memorias flash
Fiabilidad y tolerancia a fallos
Códigos correctores de error (cabecera y cola de sectores)
Operaciones fiables (almacenamiento estable)  discos espejo
Redundancia: RAID
Redundancia hardware: dos controladores por disco
RAID 0 
RAID 1  espejo
RAID 2  reparto de datos a nivel de bits + código de paridad
RAID 3  idem.
RAID 4  reparto de bloques y cálculo de paridad en disco fijo
RAID 5  reparto de bloques y cálculo de paridad de forma cíclica
SAN (Storage Area Network)
Redes de altas prestaciones a las que se conectan directamente
dispositivos de almacenamiento
RELOJ (dispositivo interno o de caracteres)
a. Reloj del procesador (ej, 5 GHz)  CLK, arquitectura H/W
b. Reloj del sistema (tiempo real)  RTC, fecha y hora (desde 1/1/1970). Cuenta
en segundos
c. Reloj temporizador. Frecuencia de interrupción programable. (Ej, tic = 55mseg,
18 Hz o tic = 10 mseg, 100 Hz)  cuenta en milisegundos
d. Registro TSC (time-stamp-counter) de 64 bits  TSC cuenta en microsegundos
Interrupciones de reloj (tipo c.)
- tic no acaparador (entre 1 y 10 mseg)
- interrupciones de alta prioridad que enmascara casi todas las demás
- tratamiento en dos etapas
Urgente  RSI
Menos urgente  invocación diferida
Funciones del manejador de reloj
1. Mantenimiento de fecha y hora: RSI
2. Gestión de temporizadores (diferida)
3. Contabilidad y estadística (diferida)
4. Soporte para planificación de procesos (diferida)
1. Obtener fecha de CMOS; programar el temporizador a la frecuencia deseada
a. Linux: desde 1/1/1970, nº de segundos, fecha UTC en 32 bits
b. Windows: desde 1/1/1601, nº de centenas de nseg (10-7 seg.)
c. Tratamiento de husos horarios y cambios por ahorro de energía
d. Ajuste de hora [stime()]: reservado a “root”
e. Consulta time()
2. Clientes:
a. usuario (para establecer plazos) – usleep()
b. el SO (interno): plazos de envío de mensajes por red, motor floppy,…
c. Estructuras de datos
i. Entrada: nº de tics que esperar, acción asociada (ej, SIGALRM)
ii. Organización:
1. lista de temporizadores
2. lista con plazos relativos
3. múltiples listas
3.
a. Contabilidad de uso de CPU por cada procesador (temporizador virtual).
Llamada times()
b. Obtención de perfiles de ejecución: muestreo del Contador de Programa.
Llamada profil()
4. Planificación basada en tiempos
a. P.ej, round-robin
TERMINALES: dispositivo de caracteres
Tipos:
Proyectados en memoria: teclado, pantalla con memoria de video
Modo: alfanumérico o gráfico
Serie: Terminal (teclado y pantalla) conectado por UART
Software de entrada
Modo elaborado
Caracteres de edición, de control (de proceso, de flujo), de escape
Modo crudo
Software de salida
Terminal serie – por interrupciones,
Terminal mapeado en memoria – copia de memoria a memoria
Gestión de RED: módulos específicos
Gestión compleja y diferente en cada SO
Niveles
1. Aplicación. [aplicación, presentación y sesión OSI]
a. procesos de usuario: ftp, (http) navegador, (SMTP) correo
b. hilos kernel: (NFS) nfsd
2. Interfaz a aplicación. API de sockets (o Winsock)
a. connect(), bind(), listen(), accept(), sendto(), recvfrom()
b. read(), write(), close()
3. Protocolos (independientes del interfaz de red)
a. Transporte OSI: TCP, UDP
b. Red OSI: IP
4. Interfaz de red. [enlace y físico OSI]
a. Driver de tarjeta de red y protocolo de enlace (Ethernet)
UNIX: No hay ficheros de dispositivo especiales
Activación automática de manejadores al detectar h/w en el arranque
Gestión de ficheros y de redes independiente: solo comparten “descriptor”
Envío de mensaje: write(sd,…)
(transporte)
UDP
TCP – transmisión fiable, mensajes en orden, no duplicados, control flujo
(red)
IP – encaminamiento de mensajes (consulta de tabla)
(interfaz de red)
Traducción de dirección IP a dirección Ethernet. Protocolo ARP
[Copias de mensajes entre niveles: colección de fragmentos (scatter/gather)]
Recepción de mensaje: recepción de interrupción  llegada de mensaje
Copia de mensajes entre niveles
Actuación como pasarela (gateway)
Control de flujo TCP o descarte de mensajes UDP en caso de congestión
Descargar