View
224
Download
1
Category
Preview:
DESCRIPTION
Descripción de los sistemas de entrada / salida en sistemas operativos
Citation preview
Universidad de PanamFacultad de Informtica, Electrnica y ComunicacinCentro Regional Universitario de VeraguasEscuela de Ingeniera Licenciatura en Ingeniera en Informtica
ASIGNATURA: SISTEMAS OPERATIVOS II
CAPTULO 13: SISTEMAS DE E/S
PROFESOR RESPONSABLE:RAL ENRIQUE DUTARIDUTARI
ESTUDIANTE:DAVID QIU HAU C.I.P:8-843-341
II SEMESTRE 2012CIUDAD DE SANTIAGO, DICIEMBRE DE 20122
TABLA DE CONTENIDOContenido Pginas1.Introduccin12.Hardware de E/S12.1.Interrupciones22.2.Acceso directo a memoria43.Interfaz de entrada/salida de las aplicaciones43.1.Dispositivos de bloques y de caracteres63.2.Dispositivos de Red63.3.Relojes y temporizadores73.4.E/S bloqueante y no bloqueante84.Subsistema de E/S del Kernel84.1.Planificacin de E/S84.2.Almacenamiento en bfer94.3.Almacenamiento en cach94.4.Gestin de colas y reserva de dispositivos104.5.Tratamiento de errores104.6.Proteccin de E/S104.7.Estructuras de datos del kernel115.Rendimiento116.Conclusiones127.Referencias Bibliogrficas13
IntroduccinEl control de los dispositivos conectados a la computadora es una de las principales preocupaciones de los diseadores de sistemas operativos.Esto se debe a que existe una variedad tan amplia de dispositivos de E/S tanto en lo respecta a sus funciones como en cuanto a su velocidad de operacin, se necesitan diversos mtodos para controlar esos dispositivos.En el campo de la tecnologa de dispositivos de E/S se experimentan dos tendencias que estn en conflicto mutuo.Los elementos bsicos del hardware de E/S, como los puertos, buses y controladores de dispositivo, permiten integrar una amplia variedad de dispositivos de E/S.Los controladores de dispositivo presentan al subsistema de E/S una interfaz uniforme de acceso a los dispositivos, de forma parecida a como las llamadas al sistema proporcionan una interfaz estndar entre la aplicacin y el sistema operativo.Hardware de E/SLas computadoras interaccionan con una amplia variedad de tipos de dispositivos. La mayora de esos dispositivos pueden clasificarse en una serie de categoras generales: dispositivos de almacenamiento (discos, cintas), dispositivos de transmisin (tarjetas de red, mdems) y dispositivos interfaz humana (pantalla, teclado, ratn).Los dispositivos se comunican con los sistemas informticos enviando seales a travs de un cable o incluso a travs del aire. Cada dispositivo se comunica con la mquina a travs de un punto de conexin.Si los dispositivos utilizan un conjunto comn de hilos, dicha conexin se denomina bus. Un bus es un conjunto de hilos, junto con un protocolo rgidamente definido que especifica el conjunto de mensajes que pueden enviarse a travs de esos hilos.Una controladora es una coleccin de componentes electrnicos que permite controlar un puerto, un bus o un dispositivo.La controladora dispone de uno o ms registros para los datos y las seales de control. El procesador se comunica con la controladora leyendo y escribiendo patrones de bits en dichos registros.Un puerto de E/S est compuesto tpicamente de cuatro registros, denominados: Registro de estado Registro de control Registro de entrada de datos Registro de salida de datosLos registros de datos tienen normalmente entre 1 y 4 bytes de tamao. Algunas controladoras tienen chips FIFO que permiten almacenar varios bytes de datos de entrada y de salida, para expandir la capacidad de la controladora ms all del tamao que el registro de datos tenga.InterrupcionesEl hardware de la CPU tiene un hilo denominado lnea de solicitud de interrupcin que la CPU comprueba despus de ejecutar cada instruccin.Cuando la CPU detecta que una controladora ha activado una seal a travs de la lnea de solicitud de interrupcin, la CPU guarda el estado actual y salta a la rutina de tratamiento de interrupciones situada en una direccin fija de la memoria.La rutina de tratamiento de interrupciones determina la causa de la interrupcin, lleva a cabo el procesamiento necesario, realiza una restauracin del estado y ejecuta una instruccin return from interrupt para volver a situar la CPU en el estado de ejecucin anterior a que se produjera la interrupcin. El mecanismo bsico de interrupcin permite a la CPU responder a un suceso asncrono, como es el caso en que una controladora de dispositivo pasa a estar lista para ser servida.Sin embargo, en los sistemas operativos modernos necesitamos funciones ms sofisticadas de tratamiento de interrupciones:1. Necesitamos poder diferir el tratamiento de una interrupcin durante las secciones de procesamiento crtico.2. Necesitamos una forma diciente de despachar la interrupcin a la rutina de tratamiento de interrupciones apropiada para un cierto dispositivo sin necesidad de Sondear primero todos los dispositivos para ver cual ha generado la interrupcin3. Necesitamos interrupciones multinivel, de modo que el sistema operativo pueda distinguir entre interrupciones de alta y baja prioridad, y pueda responder con el grado de urgencia apropiado.La mayora de los procesadores tienen dos lneas de solicitud de interrupcin:1. Una de ellas es la interrupcin no enmascarable, que est reservada para sucesos tales como los errores de memoria no recuperables. 2. La segunda lnea de interrupcin es enmascarable: puede ser desactivada por la CPU antes de la ejecucin de secuencias de instrucciones crticas que no deban ser interrumpidas.El mecanismo de interrupcin acepta una direccin, que es el nmero que selecciona una rutina especfica de tratamiento de interrupciones de entre un pequeo conjunto de rutinas disponibles.El mecanismo de interrupciones tambin implementa un sistema de niveles de prioridad de interrupcin.Este mecanismo permite a la CPU diferir el tratamiento de las interrupciones de baja prioridad sin enmascarar todas las interrupciones, y hace posible que una interrupcin de alta prioridad desaloje a otra interrupcin de prioridad ms baja.El mecanismo de interrupciones se utiliza tambin para gestionar una amplia variedad de excepciones, corno la divisin por cero, el acceso a direcciones de memoria protegidas o no existentes, o el intento de ejecutar una instruccin privilegiada en modo usuario.Las interrupciones tambin pueden usarse para gestionar el flujo de control dentro del kernel.Acceso directo a memoriaLa mayora de las computadoras evitan sobrecargar a la CPU principal con las tareas PIO (E/S Programada), descargando parte de este trabajo en un procesador de propsito especial denominado controladora de acceso directo a memoria (DMA, drect-memory-access).Para iniciar una transferencia de DMA, el host describe un bloque de comando DMA en la memoria. Este bloque contiene un puntero al origen de una transferencia, un puntero al destino de la transferencia y un contador del nmero de bytes que hay que transferir.La CPU escribe la direccin de este bloque de comandos en la controladora DMA y luego contina realizando otras tareas.La controladora de DMA se encarga entonces de operar el bus de memoria directamente, colocando direcciones en el bus para realizar las transferencias sin ayuda de la CPU principal.El procedimiento de negociacin entre la controladora de DMA y la controladora de dispositivo se realiza mediante un par de hilos denominados DMA-request y DMA-acknowledge.Interfaz de entrada/salida de las aplicacionesVamos a hablar de las tcnicas de estructuracin y de las interfaces del sistema operativo que permiten tratar de una forma estndar y uniforme a los dispositivos de E/S.Al igual que otros problemas complejos de ingeniera del software, la tcnica utilizada aqu se basa en los conceptos de abstraccin, encapsulacin y descomposicin del software en niveles. Para acceder a cada tipo general se utiliza un conjunto estandarizado de funciones, es decir, una interfaz. Las diferencias se encapsulan en mdulos del kernel denominados controladores del dispositivo que estn personalizados internamente para cada dispositivo pero exportan una de las interfaces estndar.El propsito de la capa de controladores de dispositivo es ocultar a ojos del subsistema de E/ S del kernel las diferencias existentes entre las controladoras de dispositivo.Hacer el subsistema de E/S independiente del hardware simplifica el trabajo del desarrollador de sistemas operativos y tambin beneficia a los fabricantes de hardware.Desafortunadamente para los fabricantes de dispositivos hardware, cada tipo de sistema operativo tiene sus propios estndares en cuanto a la interfaz del controlador de dispositivo. Los dispositivos pueden variar desde muchos puntos de vista: Flujo de caracteres o bloque Acceso secuencial o aleatorio Sncrono o asncrono Compartible o dedicado Velocidad de operacin Lectura-escritura, slo lectura o slo escrituraEn lo que respecta al acceso por parte de las aplicaciones, muchas de estas diferencias quedan ocultas gracias al sistema operativo, y los dispositivos se agrupan en unos cuantos tipos convencionales.La mayora de los sistemas operativos tambin tienen un escape (o puerta trasera) que pasa de manera transparente una serie de comandos arbitrarios desde una aplicacin a un controlador de dispositivo.Dispositivos de bloques y de caracteresLa interfaz de dispositivo de bloques captura todos los aspectos necesarios para acceder a unidades de disco y a otros dispositivos orientados a bloques.El dispositivo debe comprender comandos tales como read () o write (); si se trata de un dispositivo de acceso aleatorio, tambin se espera que disponga de un comando seek () para especificar qu bloque hay que transferir a continuacin.El propio sistema operativo, al igual que algunas aplicaciones como los sistemas de gestin de bases de datos, pueden preferir acceder a un dispositivo de bloques como si fuera una simple matriz lineal de bloques.Si la aplicacin realiza su propio almacenamiento en bfer, la utilizacin de un sistema de archivos provocara un almacenamiento en bfer adicional e innecesario.En lugar de ofrecer operaciones de lectura y escritura, una interfaz de mapeo en memoria proporciona acceso al almacenamiento en disco mediante una matriz de bytes de la memoria principal.La llamada al sistema que mapea un archivo en la memoria devuelve la direccin de memoria virtual que contiene una copia del archivo.El mapeo en memoria tambin es cmodo para los programadores, ya que el acceso a un archivo mapeado en memoria es tan simple como leer y escribir en la memoria.Dispositivos de RedLa mayora de los sistemas operativos proporcionan una interfaz de E/S de red que es diferente de la interfaz read () -write () -seek () utilizada para los discos.Por analoga, las llamadas al sistema de la interfaz sockets, permiten a la aplicacin crear un socket, conectar el socket local a una direccin remota.Para soportar la implementacin de servidores, la interfaz de sockets tambin proporciona una funcin denominada select () que gestiona un conjunto de sockets.La utilizacin de select () elimina los mecanismos de sondeo y de espera activa que seran necesarios para la E/S le red en caso de que esta llamada no existiera.Relojes y temporizadoresLa mayora de las computadoras disponen de relojes y temporizadores hardware que proporcionan tres funciones bsicas: Proporcionar la hora actual. Proporcionar el tiempo transcurrido. Configurar un temporizador para que provoque la ejecucin de la operacin X en el instante T.El sistema operativo, as como las aplicaciones que tengan restricciones temporales crticas utilizan intensivamente estas funciones.Desafortunadamente, las llamadas al sistema que implementan estas funciones no estn estandarizadas entre unos sistemas operativos y otros.El hardware necesario para medir el tiempo transcurrido y para provocar la ejecucin de operaciones se denomina temporizador de intervalo programable.Se puede configurar el temporizador para esperar una cierta cantidad de tiempo y luego generar una interrupcin, y se lo puede configurar para hacer esto una sola vez o para repetir el proceso de modo que se generen interrupciones peridicas.El sistema operativo puede tambin proporcionar una interfaz para que los procesos de usuario utilicen temporizadores.E/S bloqueante y no bloqueanteCuando una aplicacin ejecuta una llamada al sistema bloqueante, se suspende la ejecucin de la aplicacin.Despus de que se complete la llamada al sistema, vuelve a colocarse la aplicacin en la cola de ejecucin, donde pasar a ser elegible para reanudar su ejecucin, en cuyo momento se le entregarn los valores devueltos por la llamada al sistema.De todos modos, la mayora de los sistemas operativos utilizan llamadas al sistema bloqueantes para la interfaz de las aplicaciones, porque el cdigo de aplicacin bloqueante es ms fcil de entender que el no bloqueante.Algunos procesos de nivel de usuario necesitan una E/5 no bloqueante.Una forma en que el desarrollador de una aplicacin puede solapar la ejecucin con las operaciones de E/S consiste en escribir una aplicacin multihebra.Una alternativa a las llamadas al sistema bloqueantes consiste en utilizar llamadas al sistema asncronas.Subsistema de E/S del KernelEl subsistema de E/ S tambin es responsable de protegerse a s mismo de los procesos errneos y de los usuarios maliciosos.Planificacin de E/SPlanificar un conjunto de solicitudes de E/S significa determinar un orden adecuado en el que ejecutarlas.El orden en el que las aplicaciones realizan las llamadas al sistema no suele ser la mejor eleccin. La planificacin puede mejorar el rendimiento global del sistema, permite compartir el acceso a los dispositivos equitativamente entre los distintos procesos y puede reducir el tiempo de espera medio requerido para que la E/S se complete.Los desarrolladores de sistemas operativos implementan los mecanismos de planificacin manteniendo una cola de espera de solicitudes para cada dispositivo.Cuando una aplicacin ejecuta una llamada al sistema de E/S bloqueante, la solicitud se coloca en la cola correspondiente a dicho dispositivo. El planificador de E/S reordena la cola para mejorar la eficiencia global del sistema y el tiempo medio de respuesta experimentado por las aplicaciones.El sistema operativo puede asociar la cola de espera con una tabla de estado del dispositivo. El kernel se encarga de gestionar esta tabla, que contiene una entrada por cada dispositivo de E/S.Almacenamiento en bferUn bfer es un rea de memoria que almacena datos mientras se estn transfiriendo entre dos dispositivos o entre un dispositivo y una aplicacin.El almacenamiento en bfer se realiza por tres razones:1. Una razn es realizar una adaptacin de velocidades entre el productor y el consumidor de un flujo de datos.2. Un segundo uso del almacenamiento en bfer consiste en realizar la adaptacin entre dispositivos que tengan diferentes tamaos de transferencia de datos.3. Un tercer uso del almacenamiento de un bfer es el de soportar la semntica de copia en la E/S de las aplicaciones.Almacenamiento en cachUna cach es una regin de memoria rpida que alberga copias de ciertos datos. El acceso a la copia almacenada en cach es ms eficiente que el acceso al original.El almacenamiento en cach y el almacenamiento en bfer son funciones bien diferenciadas, aunque en ocasiones puede utilizarse una misma regin de memoria para ambos propsitos.El sistema operativo utiliza bferes en memoria principal para almacenar los datos del disco. Estos bferes tambin se emplean como cach, para mejorar la eficiencia de E/S para aquellos archivos que estn compartidos por varias aplicaciones o que estn siendo escritos y vueltos a leer de forma rpida.Gestin de colas y reserva de dispositivosUna cola de dispositivo es un bfer que almacena la salida dirigida a un dispositivo, que no pueda aceptar flujos de datos entrelazados.El sistema operativo resuelve este problema interceptando toda la salida dirigida a la impresora. La salida de cada aplicacin se almacena temporalmente en un archivo de disco separado.Cuando una aplicacin termina de imprimir, el sistema de gestin de colas pone el correspondiente archivo temporal en la cola de salida de la impresora.El sistema de gestin de colas va copiando los archivos de salida en la impresora de uno en uno.La gestin de colas de impresin es una de las formas en que el sistema operativo puede coordinar estas operaciones concurrentes de salida.Tratamiento de errores Un sistema operativo que utilice memoria protegida puede defenderse frente a muchos tipos de errores hardware y de las aplicaciones.Los dispositivos y las transferencias de E/ S pueden fallar de muchas formas, debido a razones transitorias.Como regla general una llamada de E/5 al sistema devolver un bit de informacin acerca de estado de la llamada, mediante el que se indicar si sta ha tenido xito o no.Proteccin de E/SUn proceso de usuario puede intentar accidental o deliberadamente interrumpir la operacin normal de un sistema, tratando de ejecutar instrucciones de E/S ilegales. Podemos utilizar varios mecanismos para garantizar que ese tipo de problemas no aparezcan en el sistema.Para evitar que los usuarios realicen operaciones de E/S ilegales, definimos todas las instrucciones de E/S como instrucciones privilegiadas. As, los usuarios no pueden ejecutar instrucciones de E/ S directamente, sino que tienen que hacerlo a travs del sistema operativo.Adems, habr que utilizar el sistema de proteccin de memoria para proteger todas las ubicaciones de memoria mapeada y los puertos de E/S frente a los accesos de usuario.Estructuras de datos del kernelEl kernel necesita mantener informacin de estado acerca del uso de los componentes de E/S. El kernel hace esto mediante diversas estructuras de datos internas al kernel.Algunos sistemas operativos utilizan mtodos de orientacin a objetos de forma todava ms intensiva.Windows NT utiliza una implementacin de paso de mensajes para la E/S. Cada solicitud de E/S se convierte en un mensaje que se enva a travs del kernel al gestor E/S y luego al controlador de dispositivo, cada uno de los cuales puede modificar el contenido del mensaje.RendimientoLa E/S es uno de los factores que ms afectan al rendimiento del sistema. Estas operaciones imponen una intensa demanda a la CPU para ejecutar cdigo de los controladores de dispositivo y para planificar los procesos de forma equitativa y eficiente a medida que se bloquean y desbloquean.Aunque las computadoras modernas pueden gestionar muchos miles de interrupciones por segundo, el tratamiento de interrupciones es una tarea relativamente cara en trminos de procesamiento.El trfico de red tambin puede provocar una alta tasa de cambios de contexto. Considere, por ejemplo, un inicio de sesin remoto en una mquina desde otra.Otros sistemas utilizan procesadores frontales separados para la E/S de terminales con el fin de reducir la carga de interrupciones en la CPU principal.Podemos emplear diversos principios para mejorar la eficiencia de la E/S: Reducir el nmero de cambios de contexto. Reducir el nmero de veces que los datos deben copiarse en memoria mientras pasa desde el dispositivo a la aplicacin o viceversa. Reducir la frecuencia de las interrupciones utilizando transferencias de gran tamao. Incrementar la concurrencia utilizando controladoras preparadas para DMA o canales. Desplazar las primitivas de procesamiento al hardware. Equilibrar el rendimiento de la CPU.ConclusionesLos elementos hardware bsicos implicados en las operaciones de E/S son los buses, las controladoras de dispositivo y los propios dispositivos.La tarea de mover datos entre los dispositivos y la memoria principal es llevada a cabo por la CPU como E/S programada o se descarga en una controladora de DMA.La interfaz de llamadas al sistema que se proporciona a las aplicaciones est diseada para gestionar varias categoras bsicas de hardware, incluyendo dispositivos de bloques, dispositivos orientados a carcter, archivos mapeados en memoria, sockets de red y temporizadores de intervalos programables.El subsistema de E/S del kernel proporciona numerosos servicios. Entre estos podemos citar la planificacin de E/S, el almacenamiento en bfer, el almacenamiento en cach, la gestin de colas de impresin, la reserva de dispositivos y el tratamiento de errores.Otro servicio, el de traduccin de nombres, realiza la conexin entre los dispositivos hardware y los nombres de archivos simblicos usados por las aplicaciones.Stream es una implementacin y una metodologa para hacer que los controladores sean reutilizables y fciles de emplear. Con este mecanismo, se pueden apilar los controladores, pasando los datos a travs de ellos de forma secuencial y bidireccional para su procesamiento.
Referencias Bibliogrficas [SGGZ06]SILBERSHATZ, Abraham; GALVIN, Peter Baer; GAGNE, Greg. Fundamentos De Sistemas Operativos. McGraw-Hill, 2006.
Recommended