Sebastián Sánchez Prieto 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 1999-2003 S2P, OGP & IGT
Hardware de E/S disco Controladora SCSI disco Monitor Tarjeta gráfica Procesador Puente memoria/ controlador Caché Memoria disco disco Bus PCI Controladora de disco IDE Interfaz del bus de expansión Teclado Bus de expansión disco disco Puerto paralelo Puerto serie 1999-2003 S2P, OGP & IGT
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 1999-2003 S2P, OGP & IGT
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 1999-2003 S2P, OGP & IGT
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 1999-2003 S2P, OGP & IGT
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 1999-2003 S2P, OGP & IGT
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ó 1999-2003 S2P, OGP & IGT
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? 1999-2003 S2P, OGP & IGT
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 1999-2003 S2P, OGP & IGT
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 1999-2003 S2P, OGP & IGT
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 1999-2003 S2P, OGP & IGT
Puerto AGP Accelerated Graphics Port (Intel) AGP opera a la velocidad del frontside bus (66 MHz) Utilizado para gráficos 3D 1999-2003 S2P, OGP & IGT
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) 1999-2003 S2P, OGP & IGT
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 1999-2003 S2P, OGP & IGT
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 1999-2003 S2P, OGP & IGT
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 1999-2003 S2P, OGP & IGT
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 1999-2003 S2P, OGP & IGT
IEEE 1394 (Firewire) Niveles IEEE 1394 Dirección: 64 bits (10 red - 6 nodo y 48 dirección de memoria) 1999-2003 S2P, OGP & IGT
IEEE 1394 (Firewire) Ejemplo de interconexión 1999-2003 S2P, OGP & IGT
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 1999-2003 S2P, OGP & IGT
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) 1999-2003 S2P, OGP & IGT
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 1999-2003 S2P, OGP & IGT
Acceso directo a memoria 4 ADM Transfiere los bytes al buffer Incrementa el puntero de memoria y decrementa N 1 El manejador (driver) Inicia la operación de lectura CPU 5 Si N==0 se interrumpe a la CPU caché ADM Bus CPU/memoria Memoria buffer Bus PCI Controladora IDE 2 El controlador inicia la transferencia 3 Cada byte va al controlador ADM disco disco 1999-2003 S2P, OGP & IGT
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) 1999-2003 S2P, OGP & IGT
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 1999-2003 S2P, OGP & IGT
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 ... 1999-2003 S2P, OGP & IGT
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 1999-2003 S2P, OGP & IGT
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 1999-2003 S2P, OGP & IGT
Spooling spooler Programa Driver de impresora 1999-2003 S2P, OGP & IGT
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 1999-2003 S2P, OGP & IGT
Ejemplo: discos Coordenadas: Pista, cabeza, sector (x, y, z) Tiempos de acceso: T. posicionamiento T. latencia T. transferencia ¿Optimización? 1999-2003 S2P, OGP & IGT
Particiones en el PC MBR 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) MBR Partición 1 Partición 2 Partición 3 1999-2003 S2P, OGP & IGT
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 1999-2003 S2P, OGP & IGT
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ón extendida” 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. 1999-2003 S2P, OGP & IGT
Planificación FCFS Es la forma más sencilla de planificar FCFS es aceptable con carga ligera 1999-2003 S2P, OGP & IGT
Sortest Seek Time First Problemas: Posible inanición de solicitudes Se discrimina a las pistas externas 1999-2003 S2P, OGP & IGT
SCAN (algoritmo del ascensor) Una variante del SCAN es el C-SCAN el cual proporciona un tiempo de espera más uniforme 1999-2003 S2P, OGP & IGT
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 1999-2003 S2P, OGP & IGT
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) 1999-2003 S2P, OGP & IGT
Relojes Funciones: Mantener la fecha y la hora Impedir que un proceso se adueñe del procesador Hardware asociado al reloj: 1999-2003 S2P, OGP & IGT
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 1999-2003 S2P, OGP & IGT
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 1999-2003 S2P, OGP & IGT
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) 1999-2003 S2P, OGP & IGT
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) 1999-2003 S2P, OGP & IGT