Tema 18 – Sistemas operativos: Gestión de entradas/salidas.

1. Introducción. 2

1.1. Relación con los ciclos impartidos en FP. 2

1.2. Introducción a los SSOO. 2

1.3. Introducción a la Gestión de E/S. 2

2. Hardware de E/S. 2

2.1. Dispositivos de E/S. 2

2.2. Controladores hardware de dispositivos. 3

2.3. Direccionamiento de los dispositivos de E/S. 3

2.4. Transferencia de Datos. 3

2.5. Sincronización. 3

3. Software de E/S. 3

3.1. Objetivos del software de E/S. 3

3.2. Manejadores de interrupciones. 4

3.3. Controladores software de dispositivos (Drivers) 4

3.4. Software de E/S independiente de dispositivo. 4

3.5. Software de E/S de espacio de usuario. 4

3.6. Aspectos comunes a todos los niveles. 5

4. Interbloqueo. 5

4.1. Introducción al problema. 5

4.2. Detección y prevención. 5

5. Ejemplo de manejador de E/S: Discos. 5

5.1. Manejador de disco. 5

5.2. Planificación del acceso a disco. 6

5.3. Buffering y tratamiento de errores. 6

6. Bibliografía y Personalidades Influyentes/Destacadas. 7

6.1. Bibliografía. 7

6.2. Personalidades Destacadas. 7

1. Introducción

1.1. Relación con los ciclos impartidos en FP

Este tema está directamente relacionado con los siguientes módulos y ciclos formativos de la rama de informática:

· CFGS Administración de Sistemas Informáticos: Sistemas informáticos monousuario y multiusuario (SyAI).

· CFGS Desarrollo de Aplicaciones Informáticas: Sistemas informáticos multiusuario y en red (SyAI).

· CFGM Explotación de Sistemas Informáticos: Sistemas operativos en entornos monousuario y multiusuario (SyAI).

1.2. Introducción a los SSOO

Stallings, 2001. “Un programa que controla la ejecución de los programas de aplicación y que actúa como interfaz entre el usuario de un computador y el hardware del mismo”

· Conjunto de programas de control cuya finalidad es hacer más fácil y eficiente el uso del ordenador en que se ejecutan

· Están presentes en todo tipo de sistemas electrónicos que necesiten un software de control sobre el que un usuario pueda trabajar fácilmente, desde super-ordenadores con cientos de microprocesadores (Solaris, AIX, Linux), hasta en aparatos tan comunes como agendas electrónicas (Windows Mobile o Palm OS), teléfonos móviles (Windows Mobile o Simbian OS, y como no, ordenadores personales (WXP, Linux, Mac OS X, etc.)

· Monoprogramación: Sólo se puede ejecutar un proceso y hasta que no se termine no puede iniciarse el siguiente. Ya no existen. MSDOS era multitarea pero no expulsiva

· Multiprogramación/Multitarea: Se pueden ejecutar varios procesos simultáneamente, compartiendo el tiempo de uso de procesador. Mejor aprovechamiento de los recursos y aumento del rendimiento del microprocesador

1.3. Introducción a la Gestión de E/S

· Los programas durante su ejecución necesitan acceder a dispositivos de entrada y salida como la pantalla, el teclado, el ratón, la tarjeta de red o el disco duro. Si hay algo que caracterice a los dispositivos de E/S es su gran diversidad, tanto desde el punto de vista funcional, como del modo de acceder a ellos y la velocidad con la que transfieren los datos.

·

Niveles de E/S en W2000

API de E/S del subsistema Win32 /POSIX

Administrador de E/S (Independiente del disk.)

Controladores de dispositivos en modo kernel (drivers)

Rutinas de acceso de E/S del HAL (aísla a los controladores del HW que puede variar entre plataformas)

Puertos y registros de E/S HW.

El SO debe, por tanto, permitir trabajar con los dispositivos de forma abstracta, pudiendo realizar funciones genéricas como leer o escribir, independientemente de las características de los dispositivos. Permitiendo así que los procesos no tengan que preocuparse de las características de los periféricos, siendo las operaciones de E/S lo más independientes posibles del tipo y modelo de dispositivo al que van dirigidas.

Niveles en la Entrada/Salida

E/S en espacio de usuario

Software

E/S independiente de dispositivo

Controladores de dispositivos SW (Driver)

Manejadores de interrupciones

Controladores de dispositivos HW

Hardware

Dispositivos HW de E/S (disco, teclado, ratón, tarjeta ethernet, etc.)

2. Hardware de E/S

2.1. Dispositivos de E/S

· Dispositivos de bloque: Almacena información en bloques de tamaño fijo, cada uno con su propia dirección. Es posible leer o escribir cada bloque con independencia de los demás (Disco, disquete, etc.)

· Dispositivos de carácter: Reciben y envían los datos como cadenas de caracteres sin ninguna longitud fija y no disponen de un sistema de direcciones. Ratón, impresora, teclado o interfaz de red.

· Hay algunos dispositivos que se salen de ésta clasificación

2.2. Controladores hardware de dispositivos

· Los dispositivos de E/S disponen de una parte mecánica (el dispositivo en si) y otra parte electrónica denominada Controlador Hardware de Dispositivos o Tarjetas Controladoras. Son los circuitos electrónicos capaces de programar el dispositivo e intercambiar información entre éste y la memoria principal o los registros de la CPU.

· El acceso a los dispositivos de E/S se hace siempre por medio del controlador correspondiente. Así existirán controladores de disco, de tarjetas gráficas, de líneas serie, etc. Cada controlador dispone de una serie de registros de estado, control y datos, que permiten obtener información de estado del dispositivo, modificar el modo de funcionamiento del mismo y realizar las transferencias de información respectivamente.

· Controlan la comunicación entre la CPU o la memoria y el dispositivo, y almacena los datos temporalmente para salvar las diferencias de velocidad entre el sistema y el disp

· Actualmente la “placa base”, incluye múltiples controladores de dispositivos como controladores IDE, PCI, USB, o controladoras de tarjetas gráficas. Para añadir controladores de dispositivos adicionales, tales como controladores de SCSI, aceleradoras de gráficos 3D, etc. se instalan mediante tarjetas en las ranuras de expansión PCI, ISA o AGP de la citada placa base.

2.3. Direccionamiento de los dispositivos de E/S

· Mecanismo para seleccionar uno de los dispositivos que el ordenador tiene conectados para realizar la operación de E/S.

· Estructura con buses separados para Memoria y E/S: Bus de 3 líneas, una de direcciones, otra de datos y otra de señales de control.

· Estructura con E/S Mapeada en Memoria: Máquinas de bus único que sirve tanto de bus de memoria como de E/S. Se les suele asignar a las puertas de E/S una zona contigua de memoria y no requieren instrucciones específicas de entrada y salida.

2.4. Transferencia de Datos

· Entrada/Salida controlada por programa: la CPU se ocupa de realizar cada una de las transferencias.

· Acceso directo a memoria (DMA): Realiza las transferencias de datos directas entre el dispositivo y la memoria principal sin intervención de la CPU (la libera).

2.5. Sincronización

· Cómo conseguir que los periféricos estén permanentemente atendidos.

· Sincronización por consulta de estado (sondeo): La CPU es la encargada de la sincronización realizando periódicamente un sondeo a los distintos dispositivos consultando su estado. Simple y flexible, pero carga la CPU.

· Sincronización mediante interrupciones: En este caso son los dispositivos (o sus controladores) los que interrumpen la ejecución del programa en la CPU cuando están en disposición de participar en una operación de E/S.

3. Software de E/S

3.1. Objetivos del software de E/S

· Concretamente, el sistema de E/S deberá ser capaz de:

o Garantizar y controlar el acceso a los dispositivos.

o Ofrecer a los procesos una interfaz de llamadas al sistema tal, que sean capaces de acceder a los dispositivos son conocerlos a bajo nivel.

o Tratar las interrupciones generadas por los dispositivos.

o Manejo de errores.

o Planificar los accesos para proporcionar un uso equitativo de los dispositivos.

o Cuidar la eficiencia del sistema.

3.2. Manejadores de interrupciones

· La gestión de interrupciones corre a cargo de un proceso del núcleo llamado Gestor de Interrupciones. Su función es localizar el origen de la interrupción y transferir el control a la rutina de servicio de interrupción correspondiente.

· Cuando se recibe una interrupción, se conmuta automáticamente a modo supervisor, y el núcleo toma el control. Comprueba qué controlador debe ser avisado de la activación de la interrupción y éste será notificado. Dependiendo del enfoque de diseño se enviará un mensaje al proceso controlador de dispositivo (micronúcleo), o se llamará a una función incluida en el núcleo (monolítico).

· La ejecución no tiene porqué ser inmediata, y puede verse retrasada si el sistema está enfrascado en operaciones más prioritarias.

3.3. Controladores software de dispositivos (Drivers)

· También conocidos como Manejadores de Dispositivos o Drivers.

· La interfaz entre el controlador y el dispositivo es con frecuencia una interfaz de muy bajo nivel, e incluye una serie de peculiaridades que sólo el fabricante conoce. Para que las controladoras sean programables, los fabricantes proveen de un software específico que permite al sistema operativo utilizar la controladora. De este modo, para llevar a cabo las tareas de E/S, el sistema operativo, usando el driver, se comunica con la controladora, y ésta a su vez, con el dispositivo de E/S.

· Por cada dispositivo de E/S deberá existir su correspondiente controlador software,

3.4. Software de E/S independiente de dispositivo

Funciones básicas:

· Ofrecer una interfaz uniforme de acceso a los subsistemas de E/S: Al usuario se deben presentar los distintos dispositivos de E/S adoptando una misma apariencia. Por ejemplo en Unix, los elementos de E/S se presentan como archivos ordinarios y las llamadas para acceder a los dispositivos son las mismas que para acceder a los archivos. Por ejemplo, si se copia un archivo indicando que el archivo destino es el que identifica la impresora, este se imprimirá. En Windows 2000 se trata a todos los elementos del sistema, incluidos los dispositivos de E/S como objetos, y las funciones para acceder a ellos también son siempre las mismas.

· Nombrado y protección de los dispositivos: En el caso de Unix, los dispositivos se nombran como si se tratasen de archivos ordinarios, por ejemplo el primer disco duro normalmente será /dev/hda0. Además, se pueden montar los distintos discos en carpetas del sistema de ficheros. La protección en este caso se realizará como en el caso de los archivos, sobre cada dispositivo el administrador definirá qué derechos tiene cada usuario (r,w,etc.). En Windows 2000, el mecanismo de protección es el mismo que se emplea para proteger los objetos. ACL o listas de control de acceso, que determina quién y como puede acceder a cada objeto.

· Contabilidad la asignación del espacio en dispositivos modo bloque: En estos dispositivos, este nivel es responsable de saber qué bloques están ocupados o libres con objeto de asignarlos de un modo correcto.

· Contabilidad de uso de los dispositivos: Los dispositivos se asignan o desasignan a los procesos de usuario. El sistema deberá conocer que dispositivos están asignados.

3.5. Software de E/S de espacio de usuario

· Proporciona bibliotecas en espacio de usuario que facilitan llamadas al sistema de más alto nivel que las proporcionadas por el nivel de E/S independiente de dispositivo.

· Por ejemplo, en Unix, el nivel de E/S independiente de dispositivo proporciona la llamada al sistema write, ésta es posible utilizarla para mostrar un texto por pantalla, pero el nivel de E/S de espacio de usuario, proporciona una función intermedia, printf, de más alto nivel, más sencilla y que permite dar formato a las cadenas y despreocuparse de la transformación de códigos binario<->-decimal<->ASCII.

· Sistema de spool: Gestiona el envío de trabajos a dispositivos. Se emplea para evitar que un proceso de usuario pueda monopolizar el uso de un recurso no compartible. Por ejemplo, para enviar trabajos a la impresora, en vez de hacerlo directamente, la impresora se asigna a un proceso de sistema (daemon) que es responsable de su control. Así los trabajos se envían a un directorio de spool, y el daemon de impresión es el responsable de planificar los diferentes trabajos pendientes y enviarlos en el momento adecuado a la impresora.

3.6. Aspectos comunes a todos los niveles

· Buffering: Permite acelerar las transferencias de datos en operaciones de E/S utilizando almacenamiento temporal de datos. Cuando un proceso solicita una lectura de datos de un archivo, en realidad se leen más datos de los que realmente necesita, de modo que si se solicitan posteriormente datos cercanos, no haya que volver a realizar la transferencia física. En el caso de la escritura, mientras no se llene el buffer, éste no se transfiere al dispositivo. En este caso un daemon, cada cierto tiempo actualiza estos buffers a disco, para evitar que, si el sistema se bloquea, se pierda la información. Se suele realizar en todos los niveles, desde el controlador de dispositivo por hardware, hasta en el espacio de usuario.

· Tratamiento de errores: Cada nivel tratará de eliminar el error en la medida de lo posible, evitando que en última instancia éste sea trasladado al nivel superior. El controlador hardware intentará resolverlo, por ejemplo, repitiendo la operación, sino informará al controlador software, que podría, por ejemplo, comprobar los códigos correctores, si tampoco se resuelve, se pasaría al sistema operativo, que puede tener, por ejemplo, redundancia RAID por software, o algún otro tipo de sistema.

4. Interbloqueo

4.1. Introducción al problema

· Supóngase que un proceso tiene un recurso A y necesita otro recurso B para completar su ejecución. Por otro lado, un segundo proceso tiene el recursos B, pero necesita el A para completar su ejecución. Ambos están bloqueados esperando que se les conceda el recurso requerido, y permanecerán bloqueados indefinidamente.

· Pueden ocurrir en cualquier situación en la que a los procesos se les otorga acceso exclusivo a los dispositivos, archivos, registros u otros objetos.

· Tanenbaum define formalmente el abrazo mortal: “un conjunto de procesos se bloquea si cada proceso del conjunto espera un evento que sólo puede ser provocado por otro proceso del conjunto”.

4.2. Detección y prevención

· Algunos sistemas operativos, como por ejemplo Unix, ignoran el problema sobre la suposición de que la mayoría de los usuarios prefieren correr el riesgo (por otra parte, usualmente muy bajo) de sufrir un interbloqueo que aplicar las fuertes restricciones necesarias para evitar esta situación, ya que el precio de su detección o prevención es alto.

· Detección: El sistema debe vigilar permanentemente para detectar los bucles de espera circular. Cuando se detecta, lo más normal es “sacrificar” los procesos uno a uno hasta que desaparezca el interbloqueo.

· Prevención: Para prevenir el interbloqueo existen varias técnicas, como requerir que los procesos pidan todos los recursos que van a necesitar antes de iniciar su ejecución; que los procesos liberen todos sus recursos temporalmente, para después solicitarlos todos junto con el nuevo que necesitan; o el algoritmo del banquero que sólo permite la solicitud de un recurso si esta solicitud implica un “estado seguro” posterior a la adjudicación de dicho recursos. El problema de estos algoritmos es que, o bien hay que conocer a priori el número de recursos que necesitará cada proceso, algo casi imposible en sistemas interactivos actuales, o bien, se necesita un alto coste de CPU.

· SGBD: En estos casos, se utilizan métodos similares a los comentados, ya que sí son ser eficaces en los SGBD, sobretodo al estar apoyados por los mecanismos de transacciones y confirmación/retroceso.

5. Ejemplo de manejador de E/S: Discos

· Elemento clave del computador, permiten almacenar grandes cantidades de información de forma permanente.

5.1. Manejador de disco

· Proporciona básicamente dos primitivas al nivel superior, que permiten leer y escribir un bloque de disco. Similares a las siguientes:

readblock (blocknum,mem)

writeblock (blocknum,mem)

· Con ellas, la visión que tiene el nivel de E/S independiente de dispositivo del disco es la de una secuencia numerada de bloques, accesibles a través de las primitivas.

· El manejador de disco ocultará los detalles hardware específicos de cada disco, y la programación de los mismos. Con cada llamada a las primitivas, el manejador transformará la dirección de número de bloque a pista, cabeza y sector, iniciará el DMA, moverá los cabezales del disco, y escribirá o leerá datos.

5.2. Planificación del acceso a disco

· En sistemas multiprogramados existirá generalmente una cola de procesos esperando a que el sistema operativo les asigne el disco. Para minimizar los tiempos medios de espera, existen distintos algoritmos de asignación de disco. Algunos de ellos son:

o FCFS (first come first served): El más sencillo, las peticiones se atienden según el orden de llegada.

o SSTF (shortest seek time first): Selecciona siempre la solicitud que tenga un tiempo de búsqueda más bajo desde la posición actual, es decir, la más cercana. Puede producir inanición.

o SCAN (algoritmo del ascensor): La cabeza empieza en un extremo del disco y se mueve hacia el otro sirviendo las solicitudes a medida que llega a cada pista, hasta que llega a la última petición más cercana al otro extremo. Entonces invierte el sentido, o vuelve inmediatamente al otro extremo (C-SCAN).

5.3. Buffering y tratamiento de errores

· Buffering: Algunos controladores de disco hardware poseen buffers internos utilizados para acelerar las transferencias. Al menos también el nivel de entrada-salida también realizará buffering.

· Tratamiento de errores: El manejador tratará de resolver los errores, bien reintentando la operación, o bien, con técnicas de redundancia. Sino se resuelve, se informará del error al nivel superior.

clip_image002


6. Bibliografía y Personalidades Influyentes/Destacadas

6.1. Bibliografía

· Tanenbaum, A. S.: “Sistemas operativos: diseño e implementación”. 2ª Ed. Prentice Hall. 1998.

· Tanenbaum, A. S.: “Sistemas operativos modernos”. 2ª Ed. Prentice Hall. 2003.

· Stallings, W.: “Sistemas operativos”. 5ª Ed. Prentice Hall.2005.

· Carretero, Jesús: ”Sistemas operativos. Una visión aplicada”. McGraw Hill. 2001.

· http://es.tldp.org Documentación libre en español de Linux/Unix

· http://msdn.microsoft.com Centro de desarrollo de Microsoft.

· http://www.tutorialparaprofesores.com Documentación de Microsoft para profesores.

· http://technet.microsoft.com Documentación tecnológica de Microsoft

6.2. Personalidades Destacadas

· Linus Torvalds: Ingeniero informático finlandés, iniciador y desarrollador del núcleo (kernel) de Linux a partir del S.O. MINIX. Adoptó la licencia GPL permitiendo así su modificación, redistribución, copia y uso ilimitado.

· Andrew S. Tanenbaum: Director del Departamento de Sistemas en una universidad de Ámsterdam, es conocido por ser el creador de los sistemas operativos MINIX 3.0, con arquitectura micronúcleo y capaz de ejecutar programas UNIX, y Amoeba, sistema operativo completamente distribuido, creados con fines académicos, así como por escribir varios libros sobre sistemas operativos y redes de computadoras, muy valorados por los académicos de medio mundo.

Publicado: marzo 17, 2019 por Laura Gonzalez

Etiquetas: tema 18 informatica