450 likes | 605 Views
Entrada Salida. Sebastián Sánchez Prieto. El problema. Los procesos hacen un uso extensivo de E/S Cada dispositivo de E/S tiene su propia idiosincrasia Los dispositivos necesitan ayuda del núcleo Diferentes velocidades. disco. disco. Monitor. Procesador. disco. Caché. disco.
E N D
Entrada Salida Sebastián Sánchez Prieto
El problema • Los procesos hacen un uso extensivo de E/S • Cada dispositivo de E/S tiene su propia idiosincrasia • Los dispositivos necesitan ayuda del núcleo • Diferentes velocidades
disco disco Monitor Procesador disco Caché disco Tarjeta gráfica Puente memoria/ controlador Memoria Controladora SCSI Bus PCI Teclado disco disco disco disco Bus de expansión Puerto paralelo Puerto serie Hardware de E/S Controladora de disco IDE Interfaz del bus de expansión
Placas madre • Es la principal placa de circuito en el PC e incluye; • Procesador • Memoria • Ranuras de expansión • Buses • BIOS (Basic Input/Output System) • Realiza el power-on self test (POST) • CMOS RAM • Almacena parámetros de configuración: tipo y cantidad de discos, cantidad de memoria, DRAM timings, valor del RTC • Es actualizable • Susceptible de ser modificada por los virus
Buses • Se utilizan para llevar a cabo la interconexión de diferentes elementos • Cada bus queda caracterizado por su velocidad máxima de transferencia y el ancho del mismo • Los buses más rápidos conectan la CPU con la cache L1 • El “bus de sistema” conecta la CPU con la cache L2 y la memoria dinámica (DRAM) • Bus de sistema (64 bits de ancho) • 66 MHz hasta principios del 98 • 100 MHz en el Pentium II
DIB • Dual Independent Bus • Usado a partir del Pentium II • Se sustituye el bus de sistema por: • El backside bus: CPU - L2 • El frontside bus: CPU - Memoria/periféricos
Bus ISA • Industry Standard Architecture (1982) • Bus de 8 bits a la friolera de 4,77 MHz • Posteriormente con el PC/AT (286) paso a ser de 16 bits y 6 y 8 MHz • Capaz de transferir 16 MBps (teóricos) • Debido a la multiplexación de direcciones y datos se queda en 8 MBps • En la práctica 5 MBps, suficiente para la mayoría de los periféricos • Problemas con: gráficos, discos y tarjetas de red
MCA y EISA bus • Micro Channel Architecture (IBM) • Extended ISA (básicamente Compaq y otros) • Ambos de 32 bits • El primero a 10 MHz y el segundo a 8MHz • Capaces de transferir hasta 20 MBps • El primero era propietario • El segundo era compatible con ISA • Ninguno prosperó
Local bus • Necesidad de acelerar los gráficos • Razón: aparecen las IGU o GUI (Windows) • En 1990 VESA (Video Electronics Standard Association) establece el estándar • Es un bus que extiende el bus de sistema del 486 y esa es su mayor desventaja • Al estar muy acoplado con la CPU si colocamos más de dos ranuras VESA la CPU se ve afectada • VESA recomienda sólo 2 ranuras a 33 MHz • Como el bus VESA va a la misma velocidad del micro, ¿qué pasa si el micro va más rápido?
PCI bus • Peripheral Component Interconnect (Intel) • La especificación PCI Local Bus Revision 2.0 es de 1993 • PCI está separado del bus de sistema, pero tiene acceso a la memoria • Se utiliza un puente (se permiten varios) • PCI está limitado a 5 conectores • Soporta PnP • Tarjetas de 5 y 3,3 V
PCI bus • Inicialmente PCI iba a 33 MHz • PCI 2.1 a 66 MHz (266 MBps) • Soporta 32 y 64 bits • Hasta 524 MBps • Permite interrupciones compartidas
PCI-X bus • Definido por IBM, Compaq y HP (1999) • Utilizado por periféricos de gran ancho de banda: • Ethernet Gigabit • Ultra3 SCSI • Gráficos de alto rendimiento • PCI-X aumenta la velocidad del bus y el número de slots de alta velocidad • PCI permite slots de 33 MHz y uno a 66 MHz • PCI-X soporta un slot a 133 MHz de 64 bits
Puerto AGP • Accelerated Graphics Port (Intel) • AGP opera a la velocidad del frontside bus (66 MHz) • Utilizado para gráficos 3D
Nuevas tecnologías • La conexión de dispositivos externos está muy limitada: • Puerto serie: 115,2 Kbps • Puertos paralelo: 500 Kbps • ¿Qué se puede hacer con periféricos rápidos? • No hay posibilidad de conectar varios dispositivos al mismo puerto • El número de interrupciones está limitado (16 líneas IRQ)
USB • Universal Serial Bus (definido por un consorcio en 1995) • Se pueden conectar hasta 127 dispositivos utilizando “Daisy-chaining” o utilizando un hub USB • A cada hub USB se pueden conectar 7 dispositivos entre los que se puede colocar otro hub USB y así sucesivamente • USB es capaz de proporcionar una alimentación de 5 V para pequeños dispositivos • La velocidad de transferencia es de hasta 12 Mbit/s • Para dispositivos lentos puede transferir a 1,5 Mbit/s
USB • Distancia máxima entre dispositivos: 5 m • Soporta modo isócrono: se puede reservar ancho de banda para ciertos dispositivos • Puede distribuir hasta 500 mA por cada puerto
IEEE 1394 (Firewire) • Similar a USB pero más rápido • La interfaz tiene dos niveles: • Backplane bus: dentro del ordenador (12,5 - 25 y 50 Mbit/s) • Interfaz punto a punto (100 - 200 y 400 Mbit/s) • Un puente conecta ambas interfaces • La nueva especificación pretende llegar a 800 Mbit/s y 1,6 Gbit/s • Conectores tipo Nintendo
IEEE 1394 (Firewire) • Longitud máxima: 4,5 m • Lleva 6 cables • La alimentación entre 8 y 40 V dc • Hasta 1,5 A • Permite transmisión asíncrona e isócrona • La transmisión isócrona hace al bus Firewire adecuado para aplicaciones con restricciones de tiempo real • Soporta hasta 63 canales isócronos
IEEE 1394 (Firewire) • Niveles IEEE 1394 • Dirección: 64 bits (10 red - 6 nodo y 48 dirección de memoria)
IEEE 1394 (Firewire) • Ejemplo de interconexión
USB 2.0 • Propuesto por Compaq, HP, Intel, Lucent, Microsoft, NEC y Philips • Un rendimiento entre 30 y 40 veces el de USB • Surge como respuesta a Firewire • Compatible con USB estándar • Velocidad 360-400 Mbit/s
Interfaz con los controladores • Instrucciones específicas de E/S • Espacio de E/S proyectado en memoria • Interrupciones • Muestreo (polling) • Acceso directo a memoria (ADM)
Acceso directo a memoria • Objetivo: solapar operaciones de CPU y E/S • El ADM es un elemento básico para realizar de forma eficiente la multiprogramación • Programación del ADM: • Número de datos a transferir • Puntero a la zona de memoria • Problema: • Necesidad de buffers en los controladores • Solución: p.e. intercalado en los discos
1 El manejador (driver)Inicia la operación de lectura Bus CPU/memoria Bus PCI Controladora IDE disco disco disco disco Acceso directo a memoria 4 ADM Transfiere los bytes al buffer Incrementa el puntero de memoria y decrementa N CPU 5 Si N==0 se interrumpe a la CPU caché ADM buffer Memoria 2 El controlador inicia la transferencia 3 Cada byte va al controlador ADM
Programación de la E/S • Objetivos: • Ocultar el HW a los niveles superiores • Presentar una interfaz uniforme de acceso • Independencia de dispositivo • sort < entrada > salida • Manejo de errores • Manejo de distintos tipos de dispositivos (compartibles y dedicados)
Cómo alcanzar estos objetivos • “Idea nueva”: estructuración en niveles • Manejador de interrupciones • Manejadores de dispositivos (drivers) • Programas de S.O. independientes del dispositivo • Programas de usuario • Manejadores de interrupciones • Las interrupciones se deben ocultar • El núcleo se debe encargar de ellas
Manejadores de dispositivos • Contienen el código dependiente del dispositivo • Cada manejador mantiene su cola de solicitudes Dispositivo: unidad de disco 1 Estado: libre Dispositivo: unidad de disco 2 Estado: ocupado Operación: lectura Archivo: datos.txt Operación: escritura Archivo: bal.mp3 Dispositivo: impresora Estado: ocupada Archivo: trp.ps Dispositivo: teclado Estado: libre Dispositivo: disco SCSI Estado: libre ...
E/S independiente de dispositivo • La frontera de este nivel con el anterior es difusa • Funciones: • Ofrecer una interfaz uniforme a los procesos de usuario • Asignar nombres a los dispositivos • Proteger los dispositivos • Ofrecer un tamaño de bloque independiente de los dispositivos • Almacenar los datos temporales en las transferencias de E/S • Gestionar la asignación del espacio en dispositivos de bloques • Reservar y liberar dispositivos dedicados • Informar de los posibles errores • Un aspecto muy importante en un SS.OO. es la asignación de nombres a los archivos y dispositivos y su protección
E/S en el espacio de usuario • Procedimientos de biblioteca: • Forman parte del del software de E/S en espacio de usuario. Ejemplo: printf ("Solucion = %d \n"), dato); • Sistema de spooling: • Así se evita que los usuarios monopolicen el uso de los dispositivos de E/S • P.e. el sistema de impresión
spooler Programa Programa Programa Driver de impresora Driver de impresora Spooling
Esquema global Respuesta de E/S Petición de E/S Procesos de usuario Llamada de E/S; formateo de E/S; spooling SW independiente de dispositivo Asignación de nombres, protección, bloqueo, buffering, asignación de dispositivos Manejadores de dispositivo Asignación de valores a los registros de dispositivo, comprobación del estado Manejadores de interrupciones Reactivación del manejador cuando se completa la E/S Hardware Realización de la E/S
Ejemplo: discos • Coordenadas: • Pista, cabeza, sector (x, y, z) • Tiempos de acceso: • T. posicionamiento • T. latencia • T. transferencia • ¿Optimización?
Particiones en el PC MBR Código de arranque Tabla de particiones Sector de boot Sector de boot Sector de boot Sector de boot Partición lógica 1 Partición lógica 4 Partición activa Partición 4 (extendida) Partición 3 MBR Partición 2 Partición 1
Particiones en el PC • Master Boot Record (primer sector) • Bytes 1-446: código de arranque • Bytes 447-510: tabla de particiones (4 entradas) • Bytes 511-512: número mágico AA55 • El resto de sectores pueden estar: • Sin utilizar • En una partición • En espacio libre que puede ser asignado a nuevas particiones
Particiones en el PC • En el MBR sólo se puede especificar hasta 4 particiones primarias • Cada entrada de la tabla de particiones incluye: • Tipo de partición (Linux, NTFS, HURD, etc.) • Etiqueta de “bootable” o no • Posición inicial y final en el disco • Con objeto de permitir un mayor número de particiones se introduce un tipo especial denominada “particiónextendida” • La partición extendida puede tener hasta cuatro particiones lógicas • La partición extendida puede contener particiones extendidas, que contengan particiones extendidas y así sucesivamente • La partición extendida puede ocupar cuarquier posición. No es necesario que sea la última • En Linux cada partición se representa como /dev/hda1, /dev/hda2, etc.
Planificación FCFS • Es la forma más sencilla de planificar • FCFS es aceptable con carga ligera
Sortest Seek Time First • Problemas: • Posible inanición de solicitudes • Se discrimina a las pistas externas
SCAN (algoritmo del ascensor) • Una variante del SCAN es el C-SCAN el cual proporciona un tiempo de espera más uniforme
Posibles errores en los discos • De programación (p.e. sector no existente) • Transitorios (polvo en las cabezas) • Permanentes (daños físicos) • De búsqueda (pido leer el cilindro 6 y la cabeza se va al 7) • Del controlador
Manejador de disco • Función: Leer y escribir datos del disco • Procedimientos básicos: • Inicializar el DMA • Arrancar el motor (en el caso de disquetes) • Mover las cabezas al lugar adecuado • Leer o escribir los datos • Detener el motor (en los disquetes)
Relojes • Funciones: • Mantener la fecha y la hora • Impedir que un proceso se adueñe del procesador • Hardware asociado al reloj:
Tipos de relojes • Reloj programable: • Modos de funcionamiento: • Modo “un pulso” • Modo de onda cuadrada • Reloj en tiempo real • Almacena el valor del tiempo actual • El hardware del reloj genera interrupciones regularmente • El resto lo hace el manejador
Funciones asociadas • Evitar que los procesos monopolicen la CPU • Contabilidad del uso del procesador • Avisar de eventos solicitados por el resto de los procesos • Monitorización del sistema (perfiles de ejecución y estadísticas) • Mantener actualizadas la fecha y la hora • Llamadas soportadas: PonAlarma, PonerTiempo, ObtenerTiempo, Tick
Terminales • Tipos de terminales • Con interfaz RS-232 • Con interfaz por memoria • Teclados • El manejador recibe las pulsaciones del teclado y se las pasa al proceso correspondiente • Modo orientado a caracteres (raw mode) • Modo orientado a líneas (cooked mode)
Programación de la salida • Varía de los terminales RS-232 a los proyectados en memoria • Problemas: scrolling, ctrl g, cursor • Funciones ofrecidas: • Leer caracteres del terminal • Escribir caracteres al terminal • ioctl • Cancelar una petición • Activación: por interrupción (núcleo)