280 likes | 617 Views
Sistemas Operativos. P07: Entrada y Salida. Slide: 1. Prof. Jonathan Makuc. Sistemas Operativos: Sistema de Archivos. Temario ://. Introducción Principios del Software de I/O Objetivos, I/O Programado, I/O con Interrupciones, I/O con DMA Capas del Software I/O
E N D
Sistemas Operativos P07: Entrada y Salida Slide: 1 Prof. Jonathan Makuc
Sistemas Operativos: Sistema de Archivos Temario :// • Introducción • Principios del Software de I/O • Objetivos, I/O Programado, I/O con Interrupciones, I/O con DMA • Capas del Software I/O • Manejadores de interrupciones, controladores de dispositivos, SW de SO independiente de dispositivo, SW de I/O de usuario • Discos • Relojes • Terminales de caracteres Sistemas Operativos – ICC243 [ 2 ] Prof. Jonathan Makuc
Sistemas Operativos: Exclusión Mutua Introducción :// El control de los dispositivos Entrada/Salida (Input/Output – I/O) del computador, es una de las labores más importantes que realiza el Sistema Operativo. Manejo de interrupciones, controladores de dispositivos e interfaces al usuario son algunos de los componentes que se estudian en esta unidad, que permiten al SO orquestar el conjunto de aparatos conectados al computador. Imagen: http://cs.nyu.edu/courses/spring05/G22.2250-001/lectures/lecture-02.html Sistemas Operativos – ICC243 [ 3 ] Prof. Jonathan Makuc
Sistemas Operativos: Exclusión Mutua Tipos de Dispositivos - Principios de I/O :// A excepción de contados casos, los dispositivos de I/O pueden clasificarse en 2 grandes grupos: Dispositivos de Bloques: aquellos que almacenan información en bloques de tamaño fijo, usualmente entre 512b y 32kb. Cada bloque puede ser leído o escrito de forma independiente. Ej: discos, discos USB. Dispositivos de caracteres: acepta o suministra un flujo de caracteres no estructurados. No son direccionables ni pueden desplazarse en los datos. Ej: teclado, mouse, red, etc. Excepciones:relojes, video mapeado en memoria, etc. Sistemas Operativos – ICC243 [ 4 ] Prof. Jonathan Makuc
Sistemas Operativos: Exclusión Mutua Controladores de Dispositivos - Principios de I/O :// Por lo general todos los dispositivos de I/O poseen 2 componentes: mecánico y electrónico. Este último se denomina controladora o adaptador de dispositivo (device controller). En algunos casos como en el de los discos duros actuales, se puede ver claramente la tarjeta de circuitos impresos de discos duros IDE (Integrated Device Electronics), teniendo en el lado de la placa madre solo puerto host dado que el controlador esta en el disco. Antes de estos, controladores y discos iban por separado haciendo propietaria la implementación. La labor de la controladora es, dependiendo del caso, realizar las lecturas y escrituras en bloques, calcular las sumas de verificación, lanzar interrupciones, etc. Imagen: http://www.howstuffworks.com Sistemas Operativos – ICC243 [ 5 ] Prof. Jonathan Makuc
Sistemas Operativos: Exclusión Mutua Acceso a un Dispositivo - Principios de I/O :// El acceso a un dispositivo de E/S, se puede realizar de dos formas: acceso directo por puerto de E/S o Correspondencia en memoria. Cuando se utilizan puerto directos, se ejecutan instrucciones de CPU especificas que leen o escriben de los puertos de E/S. Ej: IN R0, 1 Lectura desde dispositivo 1 al registro 0 OUT R2, 2 Escritura desde el registro 0 al dispositivo 2 Canal E/S 2 Canal E/S 1 CPU RAM Dispositivo 1 Dispositivo 2 Imagen: http://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi/linux/bks/SGI_Developer/books/LX_DevDriver_PG/sgi_html/ch02.html Sistemas Operativos – ICC243 [ 6 ] Prof. Jonathan Makuc
Sistemas Operativos: Exclusión Mutua Acceso a un Dispositivo - Principios de I/O :// El acceso a un dispositivo de E/S a través de correspondencia en memoria, significa que el sistema “mapea” la ubicación de los registros del dispositivo de E/S a direcciones de memoria. De esta forma no se requieres instrucciones en assembler para accederlo, sino solo accesos a memoria (siempre “uncached”). • Se arma la dirección de memoria en la ejecución de la instrucción que la solicita y muy raramente esta mapeada en el TLB. • La dirección memoria del dispositivo siempre cae en un rango “no-cacheable” y pasa directo al bus de datos. • El dispositivo reconoce su dirección física y responde con datos. Imagen: http://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi/linux/bks/SGI_Developer/books/LX_DevDriver_PG/sgi_html/ch02.html Sistemas Operativos – ICC243 [ 7 ] Prof. Jonathan Makuc
Sistemas Operativos: Exclusión Mutua Acceso a Memoria - Principios de I/O :// • Se arma la dirección de memoria en la ejecución de la instrucción que la solicita y son consultados a la TLB. • Se presenta la dirección de memoria real al cache L1, si esta presente la información, esta se retorna a la CPU. • Si no esta presente en el cache L1, se intenta en el L2. Si no esta presente en el cache L2, se intenta en el L3. • Si no se encuentra la dirección en los caches, se coloca la dirección de memoria en el bus del sistema. El chip de RAM que contiene la dirección solicitada responde la petición colocando los datos en bus para su retorno. Imagen: http://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi/linux/bks/SGI_Developer/books/LX_DevDriver_PG/sgi_html/ch02.html Sistemas Operativos – ICC243 [ 8 ] Prof. Jonathan Makuc
Sistemas Operativos: Exclusión Mutua Correspondencia en Memoria - Principios de I/O :// Cuando se utiliza correspondencia en memoria, es la CPU encargada de realizar las transferencias de datos entre los dispositivos y la memoria principal. La CPU realiza la lectura de a una palabra a la vez desde el dispositivo de E/S, escribiéndola luego en una dirección de memoria o bien en otro dispositivo. Así la CPU queda inhabilitada de realizar labores más complejas que la simple transferencia de información, no siendo el modelo más óptimo. Imagen: http://www.necel.com/en/faq/f_tech.html Sistemas Operativos – ICC243 [ 9 ] Prof. Jonathan Makuc
Sistemas Operativos: Exclusión Mutua Acceso Directo a Memoria - Principios de I/O :// La estrategia de DMA (Direct Memory Access) permite desligar a la CPU de la tarea de transferir byte a byte los datos desde y hacia dispositivos y memoria. • Ejemplo de Entrada con DMA: • La CPU programa el controlador DMA escribiendo en sus registros desde donde debe leer, a que dirección de memoria escribir y cuantos bytes. • La controladora de DMA envía una señal al controlador de dispositivo solicitando leer, idéntico como lo haría la CPU sin DMA. • Se escriben los datos a memoria y se decrementa la cantidad de bytes restantes para terminar. • Se señala al controlador DMA que el proceso termino. Si la cantidad restante es cero, se interrumpe la CPU indicando que el I/O ha terminado; de lo contrario se repite el proceso desde 2. Imagen: http://www.academic.marist.edu/~jzbv/architecture/CMSC%20415.htm Sistemas Operativos – ICC243 [ 10 ] Prof. Jonathan Makuc
Sistemas Operativos: Exclusión Mutua Acceso Directo a Memoria - Principios de I/O :// Los controladores DMA pueden manejar una o más transferencias a la vez, dependiendo de su arquitectura, realizándolas por palabras (largo de la arquitectura, ej: 32 bits palabra = 4bytes) o por bloques. Robo de Ciclos: cuando la transferencia de dato se realiza palabra por palabra, entonces la controladora de dispositivo debe utilizar de cuando en cuando un ciclo del bus de datos para transferir la información, haciendo la CPU un poco más lenta. Modo de Ráfagas: en modo de bloques, la controladora DMA instruye al controlador de dispositivo que obtenga el bus de datos, realice una serie de transferencias y luego lo libere. Aquí si la ráfaga es muy larga, entonces el computador estará bloqueado durante mucho tiempo. Sistemas Operativos – ICC243 [ 11 ] Prof. Jonathan Makuc
Sistemas Operativos: Exclusión Mutua Acceso Directo a Memoria - Principios de I/O :// Existen 2 formas en las cuales puede operar la transferencia de datos entre memoria y dispositivos cuando se utiliza DMA Las transferencias se realizan directamente entre el dispositivo y la memoria, requiriéndose solo un ciclo de bus. A este modo se le conoce como modo de sobrevuelo. Otra forma es que el controlador DMA reciba los datos desde el dispositivo, y luego este realice la transferencia a memoria. Aunque utiliza un ciclo más de bus, este modelo permite la transferencia directa de datos entre dispositivos o entre memoria. Imagen: http://www.necel.com/en/faq/f_tech.html Sistemas Operativos – ICC243 [ 12 ] Prof. Jonathan Makuc
Sistemas Operativos: Exclusión Mutua Interrupciones - Principios de I/O :// Cuando un dispositivo de I/O termina su trabajo, emite una señal eléctrica por el canal asignado (Interrupt ReQuest - IRQ). Esta llega al controlador de interrupciones el cual decide que hacer. Cuando el sistema operativo ha deshabilitado las interrupciones, el hardware seguirá enviando la señal hasta que se le haga caso. Cuando la interrupción se acepta en el controlador, dado que estas están habilitadas y no hay interrupciones pendientes de atención, este coloca el código identificador del dispositivo que requiere atención en el bus e interrumpe a la CPU. Cuando la CPU recibe la interrupción, esta salta a ejecutar el ISR (Interrupt Service Routine), el cual provoca un cambio de contexto que debe ser correctamente manejado para poder retornar el punto de ejecución anterior. Imagen: http://www.windowsnetworking.com/articles_tutorials/interupt.html Sistemas Operativos – ICC243 [ 13 ] Prof. Jonathan Makuc
Sistemas Operativos: Exclusión Mutua Interrupciones - Principios de I/O :// Cuando la CPU recibe la interrupción, esta salta a ejecutar el ISR (Interrupt Service Routine) consultando el vector de interrupciones utilizando como índice el numero colocado en el bus por el controlador de interrupciones. En el caso de que una interrupción de mayor jerarquía pcurrea durante el proceso de servicio de una menor nivel, se salta al ISR de esta, guardando el punto de retorno a la anterior. Manejo de Interrupción simple Manejo de Interrupción doble Sistemas Operativos – ICC243 [ 14 ] Prof. Jonathan Makuc
Sistemas Operativos: Exclusión Mutua Interrupciones - Principios de I/O :// Sin embargo no siempre es simple determinar el punto de retorno de una interrupción. En las máquinas modernas, las CPU realizan pipelining lo que implica que varias instrucciones están siendo procesadas simultáneamente en una sola CPU. En este caso hay instrucciones que se han completado en su totalidad, otras que están medio camino y otras que no han sido cargadas pero no procesadas en absoluto. Llevar el track del estado de cada instrucción en cada momento es costoso, pero necesario en el caso de que se permita interrumpir la CPU en cualquier momento (para volver al estado anterior). Así, ciertas CPU solo permiten interrupciones precisas. • Interrupción Precisa : • El Program Counter se guarda en un lugar conocido • Todas las instrucciones previas a aquella a la que apunta el PC, ya se ejecutaron por completo. • No se ha ejecutado ninguna instrucción posterior a aquella a la que apunta el CP. • Se conoce el estado de ejecución de la instrucción a la que apunta el PC. Dependiendo del tipo de interrupción, se pueden también soportar interrupciones imprecisas cuando no se requiere retomar el punto anterior, como es el caso de error de programa (división por cero, acceso a memoria indebido, etc). Sistemas Operativos – ICC243 [ 15 ] Prof. Jonathan Makuc
Software de I/O en espacio de usuario Software de SO Independiente de dispositivo Controlador de Dispositivo (Driver) Manejador de Interrupciones Hardware Sistemas Operativos: Exclusión Mutua Software de I/O :// El software de Entrada y Salida suele estar organizado en 4 capas. Cada una tiene una función bien definida que realizar y debe proveer interfaces para que las capas adyacentes puedas comunicarse con ella. Usuario Kernel Sistemas Operativos – ICC243 [ 16 ] Prof. Jonathan Makuc
Sistemas Operativos: Exclusión Mutua Manejadores de Interrupciones - Software de I/O :// Las interrupciones permiten implementar I/O no programadas permitiendo a la CPU realizar otras tareas mientras se realiza esta labor. Sin embargo las interrupciones son molestas y es conveniente que la menor parte del Sistema Operativo este conciente de su ocurrencia. El manejador de interrupciones es aquel invocado ante la ocurrencia de una interrupción con estas encendidas. Contiene las rutinas de servicio y es el encargado de realizar las llamadas a otros procesos interesados en el I/O que acaba de concluir. • Ejemplo de tareas del manejador de dispositivo: • Guardar los registros para un cambio de contexto al manejador • Preparar el contexto para la rutina de servicio (Tablas de páginas, Stack, etc). • Enviar señal a la controladora de interrupciones (hardware) o encenderlas. • Ejecutar el Procedimiento de Servicio (extraer información del disp. que interrumpió) • Si un proceso estaba esperando al dispositivo terminado, colocarlo en la readyList. • Señalizar al Controlador de Dispositivo (Driver) que la operación esta lista. Sistemas Operativos – ICC243 [ 17 ] Prof. Jonathan Makuc
Sistemas Operativos: Exclusión Mutua Drivers (Ctrl. De Dispositivos) - Software de I/O :// El driver o Controlador de dispositivo es la pieza de software encargada de aplicar las operaciones reales sobre el dispositivo y generalmente es proporcionado por el fabricante. • El driver contiene la información de cómo manejar las particularidades del hardware para el cual fue escrito. Un driver de disco duro, por ejemplo, contiene las rutinas para transformar una dirección en cilindro/pista/bloque. • El driver tiene entre otras tareas: • Aceptar solicitudes abstractas de leer o escribir enviadas por el Software Independiente de Dispositivo. • Asignación de valores iniciales del dispositivo, manejo de energía, encendido del dispositivo, etc. • Enviar los comandos específicos al dispositivo escribiéndolos en sus registros. • Esperar la respuesta del dispositivo bloqueándose, reanudando con la interrupción. Imagen: http://www.funpecrp.com.br/GMR/year2005/vol3-4/wob07_full_text.htm Sistemas Operativos – ICC243 [ 18 ] Prof. Jonathan Makuc
Sistemas Operativos: Exclusión Mutua Drivers (Ctrl. De Dispositivos) - Software de I/O :// Dado que el driver debe comunicarse directamente con el dispositivo (hardware) que maneja, este debe tener acceso a los registros del mismo. Por otra parte, los drivers deben soportar que múltiples procesos quieran hacer uso del dispositivo. Formas de Implementar los drivers Incorporados en Kernels monolíticos, debiéndose recompilar cada vez que se incorpora un nuevo dispositivo. Cargados en forma dinámica en espacio de Kernel al iniciar el sistema, también en kernels monolíticos. En MicroKernels, los drivers se encuentran por completo en espacio de usuario, teniendo syscalls para leer y escribir de los registros del dispositivo. Consideraciones al escribir un driver Considerando que la mayoría de los Sistemas Operativos hoy en día son multiprogramados e incluso multiproceso, los drivers deben soportar ser invocados múltiples veces concurrentemente. A estos se le denomina drivers reentrantes. Por otra parte muchos de los periféricos hoy en día permiten ser conectados o removidos mientras el sistema esta funcionando. Los drivers deben contener rutinas de manejo de error que consideren estos casos apropiadamente. Sistemas Operativos – ICC243 [ 19 ] Prof. Jonathan Makuc
Sistemas Operativos: Exclusión Mutua Software independiente de Disp. - Software de I/O :// El Software Independiente del Dispositivo, o capa de abstracción, es la pieza de software que enlaza los controladores específicos de dispositivos con el resto del Sistema Operativo. Aunque su implementación varia considerablemente entre sistemas, a continuación se verán las funciones de forma genérica. Interfaz Uniforme para Drivers De manera de no tener que modificar el Sistema Operativo cuando se incorpora un nuevo dispositivo, es que se establece una interfaz estándar que los escritores de drivers deben seguir. Esto permite establecer una serie de métodos que deben implementar los controladores y otro grupo de funcionalidades que provee el sistema para estos, dando lugar a que se puedan desarrollar drivers de forma completamente independiente del SO. Sistemas Operativos – ICC243 [ 20 ] Prof. Jonathan Makuc
Usuario Kernel Usuario Kernel Usuario Kernel Usuario Kernel Doble uso de buffer en el kernel. Se traspasa uno al usuario mientras que se sigue recibiendo en el otro Buffer en el kernel, copiado luego al buffer del usuario Sin uso de buffer Buffer en espacio de usuario Sistemas Operativos: Exclusión Mutua Software independiente de Disp. - Software de I/O :// Manejo de Buffers El uso de buffers permite agilizar las tareas de entradas como de salida, permitiendo a quien provee la información un lugar donde dejarla sin terner que esperar por el receptor final. Los buffers de input permiten al dispositivo que genera los datos, enviarlos a la velocidad que este se ejecuta, para luego ser leídos en conjunto por un proceso. Los buffers de salida permiten, entre otras cosas, asegurar un flujo constante de datos hacia el dispositivo, como es el caso de las tarjetas de red que deben enviar un paquete completo cada vez, de lo contrario la labor fallará. Sistemas Operativos – ICC243 [ 21 ] Prof. Jonathan Makuc
Sistemas Operativos: Exclusión Mutua Software independiente de Disp. - Software de I/O :// Reporte de Errores En el contexto de entrada/salida, los errores son algo recurrente. Algunos errores pueden ser manejados en la capa inferior (driver) como errores de lectura que se solucionan reintentando el proceso; otros requieren ser informados a las capas superiores para su tratamiento Tipos comunes de errores: Errores de Programacion: Peticion de un sector que no existe Error transiente: polvo en el disco, disco no insertado, etc Error permanente: sector malo, dispositivo dañado. En disco también se puede identificar: Error de búsqueda: el brazo llego al track 50 en lugar del 51. Recalibrar el brazo. Disk Crash: El cabezal topa con la superficie del disco haciéndolo inutilizable. Sistemas Operativos – ICC243 [ 22 ] Prof. Jonathan Makuc
Sistemas Operativos: Exclusión Mutua Software independiente de Disp. - Software de I/O :// Asignar y Liberar dispositivos dedicados Existen dispositivo, como el CD-ROM, que solo pueden ser accedidos por un proceso a la vez. Para manejar este problema, se pueden tomar 2 caminos: Exclusividad: cuando un proceso adquiere el dispositivo, todas las siguientes peticiones fallarán hasta que sea liberado por el primer proceso Centralización y encolamiento: la peticiones de los procesos de acceder al dispositivo excluyente son encoladas y servidas una a una controladas por esta pieza de software. Tamaño de Bloque independiente de dispositivo El software independiente de dispositivo debe proveer un tamaño único de bloque lógico, el cual puede ser distinto del utilizado por todos los dispositivos. Asimismo en los dispositivos de caracteres, se podría abstraer esta condición y leer en bloques. Sistemas Operativos – ICC243 [ 23 ] Prof. Jonathan Makuc
Sistemas Operativos: Exclusión Mutua I/O en espacio de usuario - Software de I/O :// Una pequeña porción de código se encuentra en espacio de usuario. Este código se presenta en forma de bibliotecas y archivos especiales (spooling). Bibliotecas de Funciones Entregan a los programas los métodos reales que provocan I/O. Estos pueden realizar una simple llamada a la syscall que aplica la operación, o pueden aplicar transformaciones a la entrada o salida según establezca el programador. Ejemplos en stdio.h: int cantidad = write(fd, buffer, numeroBytes); printf(“Se han impreso %d bytes”, cantidad); Write solo traspasa los parámetros a la syscall retornando el valor de esta directamente. Printf realiza una transformación de los parámetros entregados antes de enviarlos a la syscall. Sistemas Operativos – ICC243 [ 24 ] Prof. Jonathan Makuc
Sistemas Operativos: Exclusión Mutua I/O en espacio de usuario - Software de I/O :// Spooling El Spooling es una metodología de trabajo para coordinar los dispositivos dedicas en sistemas multiprogramados; el ejemplo más común es la impresora. Una forma de realizar spooling es utilizar un directorio especial conocido como directorio de spooling, en conjunto con un proceso demonio llamado proceso de spooling. Si se permitiese acceso al dispositivo directamente, un proceso podría adquirirlo y nunca liberarlo. Para evitar esto, se utiliza el modelo que los procesos escriben los datos en el directorio de spooling, el cual es luego leído por el proceso de spooling, el cual es el único autorizado para utilizar el dispositivo en cuestión. Imagen: MSDN Sistemas Operativos – ICC243 [ 25 ] Prof. Jonathan Makuc
Proceso de Usuario Respuesta de I/O Solicitud de I/O Sistemas Operativos: Exclusión Mutua Software de I/O :// Syscall, formateo, spooling Protección, bloqueo, buffers, asignación Preparar registros, verificar estado Despertar al controlador al terminar I/O Realizar Operaciones de I/O Sistemas Operativos – ICC243 [ 26 ] Prof. Jonathan Makuc
Sistemas Operativos P07: Entrada y Salida Slide: 27 Prof. Jonathan Makuc