30
Realizado por: Karina Rivera Ayleen Ponte Daniel Nuñez

Entrada/Salida de Sistemas Operativos

Embed Size (px)

Citation preview

Realizado por:

Karina Rivera

Ayleen Ponte

Daniel Nuñez

Una de las principales funciones de un sistema operativo es controlar

todos los dispositivos de E/S (entrada/salida) del computador.

Comprende tanto la transferencia entre diversos niveles de la memoria

como la comunicación con los periféricos.

También debe proporcionar una interfaz sencilla y fácil de usar entre los

dispositivos y el resto del sistema.

El SO debe controlar el funcionamiento de todos los dispositivos de E/S

para alcanzar los siguientes objetivos:

Facilitar el manejo de los dispositivos periféricos.

Optimizar la E/S del sistema.

Proporcionar dispositivos virtuales que permitan conectar cualquier

tipo de dispositivos físicos sin que sea necesario remodelar el

sistema de E/S del SO.

Permitir la conexión de dispositivos nuevos de E/S, solventando de

forma automática su instalación usando mecanismos del tipo plug

& play.

Se denomina periféricos a los aparatos o dispositivos auxiliares e independientes conectados a la unidad central de procesamiento de una computadora.

Se consideran periféricos tanto a las unidades o dispositivos a través de los cuales la computadora se comunica con el mundo exterior, como a los sistemas que almacenan o archivan la información, sirviendo de memoria auxiliar de la memoria principal.

Se pueden clasificar en dos grandes categorías:

Dispositivos de bloques.

Dispositivos de caracteres.

Dispositivos de bloques Dispositivos de caracteres

• La información se almacena en

bloques de tamaño fijo.

• Cada bloque tiene su propia

dirección.

• Los tamaños más comunes de

los bloques van desde los 128

bytes hasta los 1.024 bytes.

• Se puede leer o escribir en un

bloque de forma independiente

de los demás, en cualquier

momento.

• Un ejemplo típico de dispositivos

de bloque son los discos.

• La información se transfiere

como un flujo de caracteres, sin

sujetarse a una estructura de

bloques.

• No se pueden utilizar

direcciones.

• No tienen una operación de

búsqueda.

• Un ejemplo típico de dispositivos

de caracter son las impresoras

de línea, terminales, interfaces

de una red, ratones, etc.

De interfaz de usuario De almacenamiento De comunicaciones

Permiten la comunicación

entre los usuarios y la

computadora. Dentro de

este grupo se incluyen

todos los dispositivos que

sirven para proporcionar

interfaz con el usuario,

tanto para entrada como

para salida.

Se usan para proporcionar

almacenamiento no volátil

de datos y memoria. Su

función primordial es

abastecer de datos y

almacenamiento a los

programas que se

ejecutan en la UCP.

Según su capacidad y la

inmediatez con que se

puede acceder a los datos

almacenados en estos

dispositivos, se pueden

dividir en almacenamiento

secundario y terciario.

Permiten conectar a la

computadora con otras

computadoras a través de

una red. Los dos tipos de

dispositivos más

importantes de esta clase

son los módem, para

comunicación vía red

telefónica, y las tarjetas de

interfaz a la red, para

conectar la computadora a

una red de área local.

Todos los dispositivos de E/S se pueden agrupar en tres grandes grupos:

Las unidades de E/S tienen una parte mecánica y otra electrónica.

Un controlador de dispositivo es un programa informático que permite al sistema operativo interactuar con un periférico.

Los modelos más frecuentes de comunicación entre la cpuy los controladores son:

Para la mayoría de las micro y mini computadoras: Modelo de bus del sistema.

Para la mayoría de los mainframes: Modelo de varios buses y computadoras especializadas en e/s llamadas canales de e/s.

La interfaz entre el controlador y el dispositivo es con frecuencia de muy bajo nivel.

El controlador debe:

Convertir el flujo de bits en serie en un bloque de bytes.

Efectuar cualquier corrección de errores necesaria.

Copiar el bloque en la memoria principal.

Cada controlador posee registros que utiliza para comunicarse con la cpu:

Pueden ser parte del espacio normal de direcciones de la memoria: e/s mapeada a memoria.

Pueden utilizar un espacio de direcciones especial para la e / s, asignando a cada controlador una parte de él.

El S. O. realiza la e/s al escribir comandos en los registros de los controladores; los parámetros de los comandos también se cargan en los registros de los controladores.

Al aceptar el comando, la cpu puede dejar al controlador y dedicarse a otro trabajo.

Al terminar el comando, el controlador provoca una interrupción para permitir que el S. O.:

Obtenga el control de la cpu.

Verifique los resultados de la operación.

Procesos de usuario

SW independiente del dispositivo

Manejadores de dispositivo

Manejadores de interrupciones

Hardware

Esquema Global de Manejadores de Dispositivos

Petición de E/SRespuesta de E/S

Llamada de E/S, formateo de E/S, spooling

Asignación de nombres y dispositivos, protección, bloqueo,

buffering,

Asignación de valores a los registros de dispositivos,

comprobación del estado

Reactivación del manejador cuando se completa la E/S

Realización de la E/S

Esquema de Manejadores de Dispositivos

El controlador es el componente más importante desde el punto

de vista del sistema operativo, ya que constituye la interfaz del

dispositivo con el bus de la computadora y es el componente

que se ve desde la CPU.

Hay que recalcar que el controlador al ser una parte crítica del

sistema operativo, el fallo de un controlador puede ser más

grave que otros errores de software, pudiendo bloquear el

ordenador o incluso dañar el hardware. Debido a que el

hardware es (necesariamente) indeterminista, encontrar y

solucionar un fallo en un controlador es una tarea complicada

ya que no sólo hay que monitorizar el programa, sino también

el propio dispositivo.

Técnicas de E/S

E/S programada: El procesador emite una orden de E/S de parte de un proceso a un modulo de E/S; el proceso espera entonces a que termine la operación, antes de seguir.

E/S dirigida por interrupciones: El procesador emite una orden de E/S de parte de un proceso, continua la ejecución de las instrucciones siguientes y el modulo de E/S lo interrumpe cuan do completa su trabajo.

Sin

interrupcio-

nes

Con

interrupcio-

nes

Transferen-

cia de E/S a

memoria a

través del

procesador

E/S

programada

E/S dirigida

por

interrupcione

s

Transferen-

cia de E/S

directa a

memoria

Acceso

directo a

memoria

(DMA)

Acceso Directo a la Memoria (DMA): un modulo de DMA controla el

intercambio de datos entre la memoria principal y un modulo de E/S. El

procesador envía una petición de transferencia de un bloque de datos al

modulo DMA y se interrumpe solo cuando se ha transferido el bloque entero.

A medida que han evolucionado los sistemas informáticos, se ha producido tendencia crecientes en la complejidad y sofisticación de cada componente individual. En ninguno de los puntos es mas evidente que en la función de E/S. la etapa de su evolución puede resumirse como lo siguiente:

1.- El procesador controla directamente los dispositivos periféricos.

2.- Se añade un controlador o modulo de E/S. El procesador utiliza E/S programada sin interrupciones.

3.- Se añade un controlador o modulo. Pero empleándose interrupciones.

4.- El modulo de E/S recibe el control directo de la memoria, a través de DMA, Ahora puede mover un bloque de datos a la memoria o desde la misma sin que intervenga el procesador.

5.- se mejora el modulo de E/S hasta llegar a ser un procesador separado con un conjunto de instrucciones especializadas para E/S.

6.- El modulo de E/S posee su propia memoria local y es, de hecho un computador independiente.

Funciones de los manejadores

de dispositivosFunciones generalmente realizadas por el software independiente del dispositivo:

Interfaz uniforme para los manejadores de dispositivos.

Nombres de los dispositivos.

Protección del dispositivo.

Proporcionar un tamaño de bloque independiente del dispositivo.

Uso de buffer.

Asignación de espacio en los dispositivos por bloques.

Asignación y liberación de los dispositivos de uso exclusivo.

Informe de errores.

Las funciones básicas del software independiente del dispositivo son:

Efectuar las funciones de e / s comunes a todos los dispositivos.

Proporcionar una interfaz uniforme del software a nivel usuario.

Este nodo-i contiene el número principal del dispositivo, que se utiliza para localizar el manejador apropiado.

El nodo-i contiene también el número secundario de dispositivo, que se transfiere como parámetro al manejador para determinar la unidad por leer o escribir.

El software independiente del dispositivo debe:

Ocultar a los niveles superiores los diferentes tamaños de sector de los distintos discos.

Proporcionar un tamaño uniforme de los bloques, por ej.: considerar varios sectores físicos como un solo bloque lógico.

Los sistemas operativos actuales son

grandes y complejos, estos deben poseer

una ingeniería correcta para su fácil

actualización y para que puedan cumplir su

función correctamente. La estructura es

generalmente modular, cada modulo cumple

una función determinada e interactúa con los

demás módulos.

En el manejo de los dispositivos de

E/S es necesario, introducir dos

nuevos términos:

BUFFERING

SPOOLING

Los procesos de usuario emiten peticiones de entrada/salida al

sistema operativo. Cuando un proceso solicita una operación de

E/S, el sistema operativo prepara dicha operación y bloquea al

proceso hasta que se recibe una interrupción del controlador del

dispositivo indicando que la operación está completa.

BUFFERING (uso de memoria

intermedia).

SPOOLING

Trata de mantener ocupados tanto la

CPU como los dispositivos de E/S. Los

datos se leen y se almacenan en un

buffer, una vez que los datos se han

leído y la CPU va a iniciar

inmediatamente la operación con ellos,

el dispositivo de entrada es instruido

para iniciar inmediatamente la siguiente

lectura.

La CPU y el dispositivo de entrada

permanecen ocupados. Cuando la CPU

esté libre para el siguiente grupo de

datos, el dispositivo de entrada habrá

terminado de leerlos. La CPU podrá

empezar el proceso de los últimos datos

leídos, mientras el dispositivo de

entrada iniciará la lectura de los datos

siguientes.

Esta forma de procesamiento se

denomina spooling, utiliza el disco como

un buffer muy grande para leer tan por

delante como sea posible de los

dispositivos de entrada y para

almacenar los ficheros hasta que los

dispositivos de salida sean capaces de

aceptarlos.

Es una característica utilizada en la

mayoría de los sistemas operativos.

Tanto en la E/S programada como la basada en interrupciones, la CPU debe encargarse de la transferencia de datos una vez que sabe que hay datos disponibles en el controlador. Una mejora importante para incrementar la concurrencia entre la CPU y la E/S consiste en que el controlador del dispositivo se pueda encargar de efectuar la transferencia de datos. Esta técnica se denomina acceso directo a memoria (DMA, Direct MemoryAccess).

ACCESO DIRECTO A MEMORIA (DMA)

Este dispositivo permite la transferencia directa de información entre la memoria y los periféricos o viceversa, sin requerir intervención alguna por parte del procesador.

El DMA necesita:

Registro: almacena la dirección de memoria desde donde se produce la transferencia.

Registro contador: guarda la longitud de bloque a transferir.

Bits: indica si la operación es de lectura o escritura.

Bloque de control: controla el funcionamiento del sistema.

Existen 3 tipos de transferencia para el máximo aprovechamiento del bus:

Por ráfagas: el DMA toma el control del bus y no lo suelta hasta terminar la transferencia.

Por robo de ciclo: el DMA toma el bus durante un ciclo enviando una palabra cada vez.

Transparente: se aprovechan los ciclos en que el procesador no usa el bus.

OPERACIONES DE E/SExisten varias operaciones, las más importantes son las siguientes:

Lectura: El canal transfiere a memoria principal un bloque de palabras de tamaño especificado en el campo número de palabras, en orden ascendente de direcciones, empezando en la dirección especificada en el campo dirección del dato.

Escritura:El canal transfiere datos de memoria principal al dispositivo. Las palabras se transfieren en el mismo orden que en la operación de lectura.

Control :Se utiliza esta orden para enviar instrucciones específicas al dispositivo de E/S, como rebobinar una cinta magnética, etc.

Bifurcación:Cumple en el programa de canal la misma función que una instrucción de salto en un programa normal.

Para que un computador pueda ejecutar un programa debe ser

ubicado previamente en la memoria, junto con los datos sobre los

que opera, y para ello debe existir una unidad funcional de entrada

de información capaz de escribir en la memoria desde el exterior.

Análogamente, para conocer los resultados de la ejecución de los

programas, los usuarios deberán poder leer el contenido de la

memoria a través de otra unidad de salida de datos. La unidad de

Entrada/Salida (E/S) soporta estas funciones, realizando las

comunicaciones del computador (memoria) con el mundo exterior

(periféricos). Los dispositivos periféricos que se pueden conectar a

un computador se suelen clasificar en tres grandes grupos:

Dispositivos de presentación de datos. Son dispositivos con los

que interactúan los usuarios, portando datos entre éstos y la

máquina, por ejemplo, ratón, teclado, pantalla, impresora, etc.

Dispositivos de almacenamiento de datos. Son dispositivos que

forman parte de la jerarquía de memoria del computador.

Interactúan de forma autónoma con la máquina, aunque también

sirven para el intercambio de datos con el usuario, por ejemplo,

los discos magnéticos.

Dispositivos de comunicación con otros procesadores. Permiten

la comunicación con procesadores remotos a través de redes,

por ejemplo, las redes de área local o global.

Dispositivos de adquisición de datos. Permiten la comunicación

con sensores y actuadores que operan de forma autónoma en el

entorno del computador. Se utilizan en sistemas de control

automático de procesos por computador y suelen incorporar

conversores de señales A/D y D/A.

Funciones implicadas en

las operaciones de

entrada/salida

Casi todos los dispositivos de E/S se representan como ficheros especiales:

/dev/hda1 para la primera partición del primer disco IDE

/dev/lp0 para la impresora.

El acceso a estos ficheros especiales es mediante las llamadas al sistema read y write. Para cada fichero especial hay asociado un manejador de dispositivo.

Cada manejador tiene un número de dispositivo principal (mayor) que sirve para identificarlo. Si el manejador sirve a varios dispositivos, cada dispositivo tiene un número de dispositivo secundario (minor) que lo identifica.

Juntos, el no principal y el secundario especifican de forma única cada dispositivo de E/S

Dos tipos de ficheros especiales:

Fichero especial de bloques ⇒ dispositivos de bloques:

Incluyen discos y cintas

Direccionamiento directo utilizando bloques

El manejador aisla al resto del sistema de pistas, cilindros, etc

Acceso directo (como en /dev/fd0) o a través del S.F

Memoria caché de buffers

Fichero especial de caracteres ⇒ dispositivos de caracteres:

Terminales, impresoras y otros que no usan la caché de buffers

Utilizan también una pequeña memoria intermedia ⇒ listas-C

La E/S en Linux se implementa como una colección de manejadores, uno por tipo de dispositivo, que aisla al resto del SO de las peculiaridades del HW

Cada manejador se divide en dos partes:

La mitad superior se ejecuta en el contexto del invocador y se comunica con el resto del SO

La mitad inferior se ejecuta en el contexto del kernel e interactúa con el dispositivo

Los manejadores pueden invocar procedimientos del kernel para asignar memoria, administrar temporizadores, controlar DMA, etc.

Manejadores para dispositivos de caracteres

• Sistema de buffers para caracteres

• Se utilizan unas estructuras de datos llamada listas C, formadas por un bloque

de hasta 64 caracteres, un contador y un puntero al siguiente bloque

• Se tienen dos colas: cola directa y cola canónica

• El paso de la cola directa (flujo no interpretado de caracteres) a la cola canónica

(flujo interpretado de caracteres) se activa con el retorno de carro

• Si el proceso quiere, puede recoger un carácter cada vez que llega uno nuevo

⇒ acceso directo, no interpretado o crudo

• Entrada de caracteres:

Al llegar caracteres se colocan en la cola directa

Los caracteres se pasan por un fragmento de código del kernel llamado

disciplina de líneas, que actúa como filtro, aceptando caracteres en modo no

interpretado, procesándolos y produciendo lo que se conoce como flujo de

cocinado de caracteres

• Salida:

Funciona de manera similar: expandiendo tabulaciones a espacios,

añadiendo caracteres de relleno, etc.

Las salidas pueden pasar por la disciplina de líneas (modo interpretado) o

evitarla (no interpretado)

La salida en modo no interpretado es útil para cuando se quiere enviar

datos binarios a otros ordenadores

Manejadores para dispositivos de

bloques

• Objetivo: reducir al mínimo el no de

transferencias reales efectuadas

• Para ello, existe en memoria principal

una caché de buffers (disco o bloques)

entre el sistema de ficheros y los

manejadores de disco

• Cuando se necesita un bloque de

disco por cualquier motivo (nodo-i,

directorio o datos), primero se verifica

si está en el caché de buffers. Si está

se toma, evitando un acceso a disco

• Si el bloque no está, se lee del disco,

se coloca en la caché y de allí se copia

a donde se necesita

• Se utiliza tanto en las lecturas como en

las escrituras

• Para las escrituras, un demonio se

encarga de realizar la actualización en

disco de los bloques modificados de

forma periódica

El objetivo del sistema de E/S de Windows 2000 es proporcionar un marco dentro del cual se maneje con eficiencia una amplia variedad de dispositivos de E/S y sea fácil agregar nuevos dispositivos

El administrador de E/S es el responsable de todas las operaciones de E/S para el sistema operativo:

Es responsable de los sistemas de ficheros, del administrador de caché, de los manejadores de dispositivos y de los manejadores de los protocolos de red

Controla qué sistemas de ficheros están instalados y cargados

Maneja los buffers para las peticiones de E/S

Trabaja con el manejador de memoria virtual para proporcionar E/S de ficheros mapeados en memoria

El administrador de E/S colabora de forma estrecha con el administrador de Plug and Play que detecta qué dispositivos están conectados, asigna recursos hardware (como niveles de interrupción), localiza los manejadores apropiados y los carga en memoria. También está relacionado con el administrador de consumo eléctrico, encargado del encendido y apagado de los dispositivos que permiten gestionar el bajo consumo

Está el administrador de caché. Este proporciona una caché centralizada que puede ser usada por todos los componentes que están bajo el control del administrador de E/S. En especial, la caché la usan los sistemas de ficheros y los componentes de red.

Windows 2000 realiza un manejo de la E/S síncrona o asíncrona

En la E/S asíncrona un subproceso puede iniciar una operación y luego seguir ejecutándose en paralelo con la E/S. Los subprocesos cuentan con varias formas de averiguar si ya finalizó la E/S:

Esperar en un handle. El núcleo activa un indicador asociado a un handle cuando una operación sobre ese handle termina. El subproceso puede esperar en el handle para averiguar cuándo termina la operación de E/S

Esperar en un objeto evento. Permite múltiples solicitudes simultáneas sobre un mismo dispositivo o fichero. El hilo crea un evento por cada solicitud de E/S que realice. A posteriori puede esperar en uno o varios eventos para averiguar cuándo terminan las solicitudes

E/S extendida o alertable. Hace uso de una cola conocida como Llamada a Procedimiento Asíncrono. El hilo realiza una solicitud de E/S indicando que cuando finalice se invoque a una rutina que permitirá el tratamiento de los datos recibidos. Dicha rutina se almacena en la cola anterior

Puertos de finalización de E/S. Un puerto es un objeto al que se asocian un conjunto de handles e hilos. Al terminar una operación de E/S sobre uno de los handles se despierta a uno de los hilos para atenderlo

Implementación de E/S en Windows 2000:

La estructura básica del sistema de E/S en Windows está formada por un conjunto de procedimientos independientes del dispositivo, que se encargan de ciertos aspectos de la E/S, y un conjunto de manejadores de dispositivos, que se cargan en memoria para comunicarse con los dispositivos

Para un funcionamiento correcto, los manejadores de dispositivo deben ajustarse al modelo de manejadores de Windows (Windows Driver Model, WDM) que define Windows 2000.

Windows 2000 proporciona un conjunto de herramientas, llamado Driver Development Kit (DDK), que ayuda a producir manejadores de dispositivo que se ajustan al modelo anterior

Los manejadores que se ajusten al modelo de manejadores de Windows deberán cumplir los siguientes requisitos:

1.-Manejar solicitudes de E/S con un formato estándar. Las solicitudes de E/S tienen el formato de un paquete estandarizado llamado paquete de solicitud de E/S (IRP; I/O Request Paquet). Los manejadores deberán aceptarlos y procesarlos

2.-Estar basados en objetos, en el sentido de reconocer una lista específica de métodos que puede invocar el resto del sistema, así como poder interactuar con otros objetos

3.-Permitir que se añadan o quiten dispositivos Plug-and-Play dinámicamente. Si el dispositivo se añade o quita de repente al sistema, el manejador debe estar preparado para aceptar esta información y actuar en concordancia

4.-Permitir la administración de consumo eléctrico, en su caso. Si el sistema cambia a modo de hibernación con bajo consumo, los dispositivos capaces de efectuar el cambio deberán hacerlo para ahorrar energía, así como despertar cuando se les indique

5.-Ser configurables desde el punto de vista del uso de los recursos, e.d., no incluir valores fijos de IRQ’s o puertos de E/S

6.-Ser reentrantes para usarse en multiprocesadores. El manejador debe funcionar de forma correcta aunque esté siendo ejecutado al mismo tiempo por 2 o más CPU’s. Por tanto, el acceso a las estructuras de datos delicadas debe hacerse de forma restringida

Windows detecta de forma automática los dispositivos e invoca al administrador de Plug and Play

El administrador de Plug and Play sondea el dispositivo para averiguar el fabricante y el número de modelo. Con estos datos comprueba si tiene un manejador para ese dispositivo

Si encuentra el manejador lo carga en memoria

Si no lo encuentra, pide al usuario que le indique dónde (disquete o CD-ROM) puede encontrarlo

Entre los procedimientos que debe soportar un manejador de dispositivo están:

DriverEntry: asigna valores iniciales al manejador y se invoca inmediatamente después de cargarlo. Podría realizar la inicialización de estructuras de datos del manejador, pero no se comunica con el dispositivo

AddDevice: se invoca una vez por cada dispositivo que va a añadirse (lo llama el administrador de Plug and Play)

A continuación se invoca al manejador con el primer paquete IRP que establece el vector de interrupción y asigna valores iniciales al hardware

Otros procedimientos son el de servicio de interrupción, procedimientos para administrar temporizadores, control de DMA, etc.

Un manejador puede realizar todo el trabajo él solo, pero también es posible apilar manejadores.

En caso de tener manejadores apilados, la solicitud podría pasar por una serie de manejadores, cada uno de los cuales realiza una parte del trabajo:

Un uso común de manejadores apilados, sería para separar el manejo del bus del dispositivo en sí

Otra posibilidad es tener la capacidad de insertar manejadores filtro, que aplicarían alguna transformación a los datos como, por ejemplo, comprimir o cifrar los datos