Sei sulla pagina 1di 27

Sistemas Operativos

P07: Entrada y Salida

Slide: 1 Prof. Jonathan Makuc


Sistemas Operativos: Sistema de Archivos

Temario ://

Introduccin
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: Exclusin Mutua

Introduccin ://

El control de los dispositivos Entrada/Salida (Input/Output I/O) del


computador, es una de las labores ms 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: Exclusin Mutua

Tipos de Dispositivos - Principios de I/O ://

A excepcin de contados casos, los dispositivos de I/O pueden


clasificarse en 2 grandes grupos:

Dispositivos de Bloques: aquellos que almacenan


informacin en bloques de tamao fijo, usualmente entre
512b y 32kb. Cada bloque puede ser ledo 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: Exclusin Mutua

Controladores de Dispositivos - Principios de I/O ://

Por lo general todos los dispositivos de I/O poseen 2 componentes:


mecnico y electrnico. 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 implementacin.

La labor de la controladora es, dependiendo del caso,


realizar las lecturas y escrituras en bloques, calcular las
sumas de verificacin, lanzar interrupciones, etc.

Imagen: http://www.howstuffworks.com

Sistemas Operativos ICC243 [5] Prof. Jonathan Makuc


Sistemas Operativos: Exclusin 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

Dispositivo Dispositivo
CPU RAM
1 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: Exclusin Mutua

Acceso a un Dispositivo - Principios de I/O ://


El acceso a un dispositivo de E/S a travs de correspondencia en memoria,
significa que el sistema mapea la ubicacin 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).

1. Se arma la direccin de memoria en la


ejecucin de la instruccin que la
solicita y muy raramente esta mapeada
en el TLB.

2. La direccin memoria del dispositivo


siempre cae en un rango no-
cacheable y pasa directo al bus de
datos.

3. El dispositivo reconoce su direccin


fsica 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: Exclusin Mutua

Acceso a Memoria - Principios de I/O ://

1. Se arma la direccin de memoria en la


ejecucin de la instruccin que la
solicita y son consultados a la TLB.

2. Se presenta la direccin de memoria


real al cache L1, si esta presente la
informacin, esta se retorna a la CPU.

3. 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.

4. Si no se encuentra la direccin en los


caches, se coloca la direccin de
memoria en el bus del sistema. El chip
de RAM que contiene la direccin
solicitada responde la peticin
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: Exclusin 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, escribindola luego en una direccin
de memoria o bien en otro dispositivo.
As la CPU queda inhabilitada de realizar
labores ms complejas que la simple
transferencia de informacin, no siendo
el modelo ms ptimo.

Imagen: http://www.necel.com/en/faq/f_tech.html

Sistemas Operativos ICC243 [9] Prof. Jonathan Makuc


Sistemas Operativos: Exclusin 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:

1. La CPU programa el controlador DMA escribiendo en sus registros desde donde debe
leer, a que direccin de memoria escribir y cuantos bytes.

2. La controladora de DMA enva una seal al controlador de dispositivo solicitando leer,


idntico como lo hara la CPU sin DMA.

3. Se escriben los datos a memoria y se decrementa la cantidad de bytes restantes para


terminar.

4. Se seala 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: Exclusin Mutua

Acceso Directo a Memoria - Principios de I/O ://

Los controladores DMA pueden manejar una o ms transferencias a la


vez, dependiendo de su arquitectura, realizndolas 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 informacin, haciendo la CPU un poco
ms lenta.

Modo de Rfagas: 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 rfaga es muy larga, entonces el
computador estar bloqueado durante mucho tiempo.

Sistemas Operativos ICC243 [ 11 ] Prof. Jonathan Makuc


Sistemas Operativos: Exclusin 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, requirindose
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
ms 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: Exclusin Mutua

Interrupciones - Principios de I/O ://

Cuando un dispositivo de I/O termina su trabajo, emite una


seal elctrica 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 seal hasta que se le haga caso.

Cuando la interrupcin se acepta en el


controlador, dado que estas estn habilitadas y
no hay interrupciones pendientes de atencin,
este coloca el cdigo identificador del
dispositivo que requiere atencin en el bus e
interrumpe a la CPU.

Cuando la CPU recibe la interrupcin, 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 ejecucin anterior. Imagen: http://www.windowsnetworking.com/articles_tutorials/interupt.html

Sistemas Operativos ICC243 [ 13 ] Prof. Jonathan Makuc


Sistemas Operativos: Exclusin Mutua

Interrupciones - Principios de I/O ://

Cuando la CPU recibe la interrupcin, 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 interrupcin de mayor jerarqua 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 Interrupcin simple Manejo de Interrupcin doble

Sistemas Operativos ICC243 [ 14 ] Prof. Jonathan Makuc


Sistemas Operativos: Exclusin Mutua

Interrupciones - Principios de I/O ://

Sin embargo no siempre es simple determinar el punto de retorno de una


interrupcin. En las mquinas modernas, las CPU realizan pipelining lo que
implica que varias instrucciones estn siendo procesadas simultneamente
en una sola CPU.
En este caso hay instrucciones que se han completado en su totalidad, otras que estn
medio camino y otras que no han sido cargadas pero no procesadas en absoluto. Llevar
el track del estado de cada instruccin 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.

Interrupcin Precisa :

1. El Program Counter se guarda en un lugar conocido


2. Todas las instrucciones previas a aquella a la que apunta el PC, ya se ejecutaron
por completo.
3. No se ha ejecutado ninguna instruccin posterior a aquella a la que apunta el CP.
4. Se conoce el estado de ejecucin de la instruccin a la que apunta el PC.

Dependiendo del tipo de interrupcin, se pueden tambin soportar interrupciones imprecisas cuando no se requiere retomar
el punto anterior, como es el caso de error de programa (divisin por cero, acceso a memoria indebido, etc).

Sistemas Operativos ICC243 [ 15 ] Prof. Jonathan Makuc


Sistemas Operativos: Exclusin Mutua

Software de I/O ://

El software de Entrada y Salida suele estar organizado en 4


capas. Cada una tiene una funcin bien definida que realizar y
debe proveer interfaces para que las capas adyacentes puedas
comunicarse con ella.

Software de I/O en espacio de usuario Usuario


Kernel
Software de SO Independiente de dispositivo

Controlador de Dispositivo (Driver)

Manejador de Interrupciones

Hardware

Sistemas Operativos ICC243 [ 16 ] Prof. Jonathan Makuc


Sistemas Operativos: Exclusin 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 interrupcin 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:

1. Guardar los registros para un cambio de contexto al manejador


2. Preparar el contexto para la rutina de servicio (Tablas de pginas, Stack, etc).
3. Enviar seal a la controladora de interrupciones (hardware) o encenderlas.
4. Ejecutar el Procedimiento de Servicio (extraer informacin del disp. que interrumpi)
5. Si un proceso estaba esperando al dispositivo terminado, colocarlo en la readyList.
6. Sealizar al Controlador de Dispositivo (Driver) que la operacin esta lista.

Sistemas Operativos ICC243 [ 17 ] Prof. Jonathan Makuc


Sistemas Operativos: Exclusin 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 informacin de cmo manejar las


particularidades del hardware para el cual fue escrito.
Un driver de disco duro, por ejemplo, contiene las
rutinas para transformar una direccin en
cilindro/pista/bloque.

El driver tiene entre otras tareas:

- Aceptar solicitudes abstractas de leer o escribir


enviadas por el Software Independiente de Dispositivo.

- Asignacin de valores iniciales del dispositivo, manejo


de energa, encendido del dispositivo, etc.

- Enviar los comandos especficos al dispositivo


escribindolos en sus registros.

- Esperar la respuesta del dispositivo bloquendose,


reanudando con la interrupcin. Imagen: http://www.funpecrp.com.br/GMR/year2005/vol3-4/wob07_full_text.htm

Sistemas Operativos ICC243 [ 18 ] Prof. Jonathan Makuc


Sistemas Operativos: Exclusin 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 mltiples
procesos quieran hacer uso del dispositivo.

Formas de Implementar los drivers Consideraciones al escribir un driver

Incorporados en Kernels monolticos, Considerando que la mayora de los


debindose recompilar cada vez que se Sistemas Operativos hoy en da son
incorpora un nuevo dispositivo. multiprogramados e incluso multiproceso, los
drivers deben soportar ser invocados
Cargados en forma dinmica en espacio de mltiples veces concurrentemente. A estos se
Kernel al iniciar el sistema, tambin en le denomina drivers reentrantes.
kernels monolticos.
Por otra parte muchos de los perifricos hoy
En MicroKernels, los drivers se encuentran en da permiten ser conectados o removidos
por completo en espacio de usuario, teniendo mientras el sistema esta funcionando. Los
syscalls para leer y escribir de los registros drivers deben contener rutinas de manejo de
del dispositivo. error que consideren estos casos
apropiadamente.

Sistemas Operativos ICC243 [ 19 ] Prof. Jonathan Makuc


Sistemas Operativos: Exclusin Mutua

Software independiente de Disp. - Software de I/O ://

El Software Independiente del Dispositivo, o


capa de abstraccin, es la pieza de software que
enlaza los controladores especficos de
dispositivos con el resto del Sistema Operativo.
Aunque su implementacin varia
considerablemente entre sistemas, a continuacin
se vern las funciones de forma genrica.

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 estndar que los
escritores de drivers deben seguir.

Esto permite establecer una serie de mtodos 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


Sistemas Operativos: Exclusin 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 informacin 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 ledos 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.

Usuario Usuario Usuario Usuario


Kernel Kernel Kernel Kernel

Sin uso de buffer Buffer en espacio de usuario Buffer en el kernel, copiado Doble uso de buffer en el kernel. Se
luego al buffer del usuario traspasa uno al usuario mientras que
se sigue recibiendo en el otro

Sistemas Operativos ICC243 [ 21 ] Prof. Jonathan Makuc


Sistemas Operativos: Exclusin 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 daado.

En disco tambin se puede identificar:

Error de bsqueda: el brazo llego al track 50 en lugar del 51. Recalibrar el brazo.
Disk Crash: El cabezal topa con la superficie del disco hacindolo inutilizable.

Sistemas Operativos ICC243 [ 22 ] Prof. Jonathan Makuc


Sistemas Operativos: Exclusin 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 fallarn hasta que sea liberado por el primer proceso

Centralizacin 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.

Tamao de Bloque independiente de dispositivo


El software independiente de dispositivo debe proveer un tamao nico de bloque
lgico, el cual puede ser distinto del utilizado por todos los dispositivos. Asimismo en
los dispositivos de caracteres, se podra abstraer esta condicin y leer en bloques.

Sistemas Operativos ICC243 [ 23 ] Prof. Jonathan Makuc


Sistemas Operativos: Exclusin Mutua

I/O en espacio de usuario - Software de I/O ://

Una pequea porcin de cdigo se


encuentra en espacio de usuario. Este
cdigo se presenta en forma de bibliotecas
y archivos especiales (spooling).

Bibliotecas de Funciones
Entregan a los programas los mtodos reales que provocan I/O. Estos pueden realizar una
simple llamada a la syscall que aplica la operacin, o pueden aplicar transformaciones a la
entrada o salida segn establezca el programador.

Ejemplos en stdio.h:

int cantidad = write(fd, buffer, numeroBytes); Write solo traspasa los parmetros a la syscall
retornando el valor de esta directamente.

printf(Se han impreso %d bytes, cantidad); Printf realiza una transformacin de los
parmetros entregados antes de enviarlos a la
syscall.

Sistemas Operativos ICC243 [ 24 ] Prof. Jonathan Makuc


Sistemas Operativos: Exclusin Mutua

I/O en espacio de usuario - Software de I/O ://


Spooling
El Spooling es una metodologa de
trabajo para coordinar los dispositivos
dedicas en sistemas multiprogramados;
el ejemplo ms comn 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 podra
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
ledo por el proceso de spooling, el cual
es el nico autorizado para utilizar el
dispositivo en cuestin.
Imagen: MSDN

Sistemas Operativos ICC243 [ 25 ] Prof. Jonathan Makuc


Sistemas Operativos: Exclusin Mutua

Software de I/O ://

Proceso de
Usuario
Solicitud de I/O Respuesta de I/O

Syscall, formateo, spooling


Proteccin, bloqueo, buffers, asignacin
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

Potrebbero piacerti anche