Sie sind auf Seite 1von 35

Sistemas de Operación

Gestión de Entrada/Salida
Prof. Homer Garcia
AGENDA
1. Gestión de E/S - Introducción
2. Dispositivos de E/S
Tipos
Partes
Controlador de Dispositivo de E/S - Comunicación
con el CPU
3. Software de E/S
Metas
Técnicas para llevar a cabo la E/S
Capas
Flujo a través de las capas del software de E/S
Introducción
“Un computador es útil solo si puede accesar
dispositivos y comunicarse con Personas y
Objetos”
SO ➔ Gestión de Entrada/Salida (E/S – I/O)
Cualquier transferencia de información entre
los Dispositivos de E/S y la Memoria Principal
del sistema ➔ Ordenadas y controladas por
la CPU ➔ Permiten la comunicación del
sistema con el mundo exterior
Funciones de la Gestión de E/S
• Proporcionar interfaz uniforme para el acceso a los
dispositivos
• Proporcionar manejadores para los dispositivos
• Tratar automáticamente los errores lo más cerca
posible del dispositivo
• Utilizar memorias caché y buffers locales del
dispositivo
• Planificar las peticiones de acceso a los
dispositivos para permitir su compartición
ordenada
Objetivos de la Gestión de E/S
• Independencia del dispositivo ➔ proporcionar una
abstracción del hardware que permita a los procesos
de usuario utilizar los diferentes dispositivos como un
conjunto uniforme de recursos ➔ ocultando los
detalles de bajo nivel
• Eficiencia ➔ Rendimiento global del sistema depende
de la gestión de E/S ➔ Dispositivos de E/S son lentos
en comparación con la memoria principal y la CPU
• Tratamiento de distintos tipos de dispositivos ➔
manejar dispositivos con diferentes características e
integrarlos adecuadamente dentro del sistema
Resumen
•SO ➔ Controlar los dispositivos de E/S
• Emite comandos
• Maneja interrupciones
• Maneja errores
•SO ➔ Proporcionar una interfaz a los
dispositivos ➔ Fácil de usar
• Generalmente independiente de los
dispositivos
Video
Dispositivos de E/S
• Dos tipos➔ de bloque y de carácter
• Bloque ➔ de tamaño fijo, c/u con su propia dirección, se
lee/escriben independientemente, tienen operación de
búsqueda
•Ej. Disco duro, CD-ROM, memoria USB
•El File System trabaja con bloques
•Tamaños: 512 – 65.536 (64 K) bytes
• Carácter ➔ envía o acepta flujo de caracteres sin importar la
estructura del bloque. No es direccionable y no tiene
operación de busqueda
•Ej. Impresora, teclado, monitor, ratón
• No todos los dispositivos se adaptan a estas categorías ➔ Ej.
Relojes
Dispositivos de E/S
• Dispositivo de E/S consiste de dos partes:
• Un controlador o adaptador – Parte
Electrónica ➔ acepta y ejecuta comandos
desde el SO
• El dispositivo en sí ➔ Parte mecánica

• Los controladores consisten en pequeñas


computadoras incrustadas (embebidas) que se
programan para realizar su trabajo ➔ Chip en la
tarjeta principal o circuito integrado en una
ranura de expansión
Controlador de dispositivo de E/S
• El controlador convierte el flujo serial de bits en
un bloque y realiza corrección de errores

• Este ensamblaje se realiza en un buffer ➔ una


vez libre de errores ➔ se copia en memoria

• Si la interfaz entre en controlador y el


dispositivo es estándar (ANSI, IEEE, ISO, de
facto) ➔ se fabrican dispositivos que se
adapten a esta interfaz
Controlador de dispositivo de E/S
• Cada Controlador tiene Registros de Control para
comunicarse con la CPU ➔ SO puede leerlos o
escribirlos
• SO escribe ➔ Ordena a dispositivo enviar o recibir
datos, on/off o realizar cualquier acción
• SO lee ➔ Estado del dispositivo ➔ Si está listo o
no para aceptar comando nuevo

• Controladores también pueden tener un buffer de


datos (Ej. video RAM, usada para desplegar los pixels
en una pantalla) ➔ que el SO puede leer o escribir
Comunicación CPU–Controlador de Dispositivo de E/S
• ¿Cómo se comunica la CPU con los registros y buffer
de datos del controlador?
• Espacio de puertos de E/S ➔ a cada registro se le
asigna un puerto ➔ Espacio protegido (solo el SO
puede usarlo, con instrucciones IN y OUT) ➔
Espacio diferente al espacio de direcciones de
memoria
• E/S con asignación de memoria ➔ a cada registro
de control se le asigna una dirección de memoria
única en el espacio de direcciones
Comunicación CPU–Controlador de Dispositivo de E/S

(a) Espacios separados de memoria y puertos de E/S


(b) E/S con asignación de memoria (memoria mapeada)
(c) Memoria mapeada para buffer de datos y puertos de E/S para
registros de control (Ej. x86: reserva 640K a 1 M para buffer y 0 a 64K
para puertos de E/S)
Ventajas de E/S con asignación de memoria
• No se necesitan instrucciones especiales para
Leer/Escribir registros de control ➔ Por lo que
se puede escribir un Driver del controlador en
lenguaje C
• No se requiere mecanismo de protección
especial para evitar que los procesos realicen
operaciones de E/S directamente ➔ Basta con
que el SO NO coloque las direcciones de los
registros de control en el espacio de direcciones
virtuales de cualquier usuario
Desventajas de E/S con asignación de memoria
• Computadoras actuales colocan en caché palabras de
memoria ➔ Desastre colocar en caché un registro de
control de dispositivos E/S ➔ se pueden perder referencias
a éstos ➔ cuando el dispositivo esté listo, el SO no tendría
manera de enterarse ➔ Se evita si el hardware es capaz de
deshabilitar la caché en forma selectiva, Ej. por página

• Si sólo hay un espacio de direcciones ➔ Todos los módulos


de memoria y todos los dispositivos de E/S deben examinar
todas las referencias a memoria para ver a cuáles debe
responder ➔ Se soluciona con un bus de memoria dedicado
de alta velocidad
Desventajas de E/S con asignación de memoria
Software de E/S - Metas
• Independiente del dispositivo ➔ No se tiene
que especificar el dispositivo cuando se accesa
• Denominación uniforme ➔ Nombre de un
archivo o dispositivo simplemente debe ser una
cadena o un entero sin depender del dispositivo
de ninguna forma
• Manejo de errores ➔ Hacerlo tan cerca del
dispositivo como sea posible (Ej. Driver del
controlador debería ser el primero en corregir
errores)
Software de E/S - Metas
• Uso de buffer ➔ Por lo general los datos que provienen
de un dispositivo no se pueden almacenar directamente
en su destino final ➔ deben examinarse primero
(errores) o por restricciones en tiempo real (para
desacoplar la velocidad a la que se llena el buffer, de la
velocidad a la que se vacía) ➔ uso de buffer involucra
una cantidad considerable de copiado y a menudo tiene
un importante impacto en el rendimiento de la E/S
• SO debe ser capaz de manejar dispositivos
compartidos y dedicados ➔ De una manera que evite
problemas ➔ Ej. Escritura de bloques entremezclados,
interbloqueos
Técnicas para llevar a cabo la E/S
1. E/S programada (Síncrona) ➔ se le conoce como
espera ocupada (Polling) ➔ La forma más simple de E/S
➔ CPU hace todo el trabajo
• Programa de usuario emite una llamada al sistema ➔
Kernel traduce llamada para el Driver apropiado ➔
Driver inicia la E/S (envía comando al controlador) y
permanece en una espera ocupada (sondeando en forma
continua al dispositivo para ver si ha terminado) ➔
terminada la E/S el driver coloca los datos (si los hay) en
donde se necesitan y regresa ➔ El SO devuelve el
control al llamador
• Desventaja ➔ mantiene ocupada la CPU sondeando al
dispositivo hasta que éste termina
Técnicas para llevar a cabo la E/S
2. E/S controlada por interrupciones (Asíncrona)
Proceso que requiere la E/S se bloquea (a través
del Driver) y se planifica otro proceso ➔ Cuando
el dispositivo de E/S ha terminado el trabajo
asignado ➔ Produce una interrupción para
indicarlo ➔ Despierta el Driver
• Dispositivo coloca una señal (número) en el bus
de direcciones ➔ Manejador de interrupciones
la detecta e indica al CPU cual dispositivo
requiere atención e interrumpe a la CPU
Técnicas para llevar a cabo la E/S
• El vector de interrupciones (tabla) apunta a la
rutina de servicio de interrupción (Interrupt
Service Routine)
Número en la línea de direcciones ➔ Indice
Contiene el PC que apunta al comienzo de la ISR

• ISR reconoce la interrupción ➔ primero salva la


información del programa interrumpido ➔
Despierta al Driver
• Los Drivers son procesos del kernel con sus
propios Stacks, PCs y estados
Técnicas para llevar a cabo la E/S – con Interrupciones
Técnicas para llevar a cabo la E/S
3. E/S usando DMA
• La CPU puede solicitar datos de un controlador de E/S un bit
o carácter a la vez, pero al hacerlo se desperdicia el tiempo
de la CPU
• Una solución es utilizar DMA (Acceso Directo a Memoria)
➔ Controlador DMA controla el intercambio de datos entre
el dispositivo de E/S y la memoria principal sin la
intervención constante de la CPU ➔ Tiene acceso al bus de
memoria de manera independiente de la CPU
• Por lo general ➔ se tiene un Controlador de DMA para
varios dispositivos de E/S
Técnicas para llevar a cabo la E/S
• CPU configura el chip DMA ➔ indicándole cuántos bytes
debe transferir, las direcciones de dispositivo y de memoria
involucradas y la instrucción ➔ Chip hace este trabajo e
interrumpe al CPU cuando finaliza
• Controlador de DMA contiene varios registros en donde la
CPU puede leer/escribir:
• Dirección de memoria
• Contador de byte
• De Control ➔ Puerto de E/S, dirección de transferencia (leer
de o escribir en el dispositivo), unidad de transferencia
(byte/palabra), No. de bytes a transferir por ráfaga
Técnicas para llevar a cabo la E/S – con DMA
Capas del Software de E/S

Driver SO

HARDWARE
Driver del Controlador de E/S
• Software del SO que se comunica con un controlador de E/S
➔ proporcionando comandos y aceptando respuestas
• Fabricante suministra un driver para cada SO
• Driver corre en modo kernel, generalmente
• Interfaz con el resto del SO ➔ Procedimientos con los que el
SO puede invocar al Driver (Ej. Leer (read) a bloque)
• Chequea validez de los parámetros de entrada ➔ Errores
• Traduce de lo abstracto a lo concreto (Ej. Número de bloque
a cilindro, cabeza, pista, sector)
• Chequea estatus del dispositivo ➔ puede tener que
arrancarlo
Driver del Controlador de E/S
• El controlador tiene registros que sirven para
comunicarse con el Driver ➔ éste coloca los comandos en
ellos
• Se bloquea a si mismo hasta que ocurra la interrupción
• Podría retornar data al llamador y retorna información de
estatus
• Drivers deben ser reentrantes
• SO adiciona o elimina dispositivos, con sus Drivers,
cuando está corriendo (hotpluggable) ➔ Carga dinámica
• Tres modos de comunicación ➔ Programada, Controlado
por Interrucciones y con DMA
Driver del Controlador de E/S
Driver del Controlador de E/S ➔ Linux
Software de SO independiente del dispositivo
La función básica del software independiente del dispositivo
es realizar las funciones de E/S que son comunes para
todos los dispositivos y proveer una interfaz uniforme para
el software a nivel de usuario:
• Interfaz uniforme para Drivers de dispositivos
• Uso de buffer
• Reporte de errores
• Asignar y liberar dispositivos dedicados
• Proporcionar un tamaño de bloque independiente del
dispositivo (tamaño lógico) ➔ El usuario no tiene que
conocer los detalles del dispositivo (tamaño físico ➔
sectores)
Interfaz uniforme para Drivers de dispositivos

• Funciones del Driver difieren para diferentes Drivers


• Funciones del Kernel que cada Driver necesita son diferentes para
diferentes Drivers
• Demasiado trabajo ➔ tener una interfaz nueva para cada nuevo
tipo de dispositivo
Software de E/S de capa de usuario
• Mayor parte del software de E/S está dentro del SO ➔ pero
una pequeña porción consiste en bibliotecas vinculadas
entre sí con programas de usuario (se ejecutan fuera del
kernel) ➔ las llamadas al sistema de E/S (llamadas al SO) se
realizan comúnmente mediante procedimientos de
biblioteca ➔ Ej. printf, scanf, write
• Sistemas de colas (Spooling systems) ➔ mantiene el
registro de requerimientos a dispositivos hechos por
usuarios. Ej.
1. Daemon para cola de impresión (spooling directory)
2. Daemon de red para la transferencia de archivos en
una red
Flujo a través de las capas del software de E/S

Driver “Setea”

Driver
Ejemplo de Flujo a través de las capas del
software de E/S
• Usuario quiere leer un bloque ➔ se lo solicita al SO
(llamada)
• Software del SO independiente del dispositivo busca el
bloque en caché
• Si no está allí (falla de caché) ➔ invoca al Driver del
dispositivo para solicitar el bloque en disco (hardware)
• Una vez que la transferencia finaliza ➔ se genera la
interrupción gestionada por el manejador de
interrupciones
• Proceso del usuario se despierta (desbloquea) y regresa a
trabajar

Das könnte Ihnen auch gefallen