sábado, 28 de mayo de 2016

CARACTERISTICAS DEL SOFTWARE DE E/S


CARACTERISTICAS DEL SOFTWARE DE E/S

Los objetivos más importantes del software de E/S son:
Ocultar la complejidad del hardware a los procesos que se ejecutan por encima del sistema operativo.
Presentar una interfaz de E/S sencilla.
Para conseguir estos objetivos se estructura el software de E/S en capas, de forma que las capas inferiores ocultan la complejidad del hardware a las capas superiores y éstos se encargan de conseguir una interfaz sencilla.


Software de E/S a nivel de usuario
Software de E/S independiente del dispositivo
Manejadores de Dispositivos (driver)
Manejadores de Interrupciones


MANEJADORES DE INTERRUPCIONES: Su principal objetivo es que el usuario no debe darse cuenta de los manejos de bajo nivel para los casos en que el dispositivo está ocupado y se debe suspender el proceso o sincronizar algunas tareas.

MANEJADORES DE DISPOSITIVOS: El driver es el software que se comunica con el hardware de E/S. Existe un driver para cada controlador que tengamos conectado a la computadora.
El driver:
Es el único software que conoce las características del dispositivo.
Programa al controlador imprimiendo en sus registros.
Se encarga de traducir peticiones del nivel superior
Encola las peticiones que van llegando para que el driver las trate más tarde.
Por ejemplo, si el sistema tiene tipos diferentes de discos duros, al usuario las diferencias técnicas entre ellos no le deben importar, y los drivers le deben ofrecer el mismo conjunto de rutinas para leer y escribir datos.

SOFTWARE DE E/S INDEPENDIENTE DEL DISPOSITIVO: En esta capa se agrupa la mayor parte del software de E/S. Las funciones básicas de este nivel son:

Presentar una interfaz uniforme a los programas de usuario; la misma operación de entrada o de salida independientemente del dispositivo al que se desea acceder.
Identificar al dispositivo a partir del nombre simbólico; asignándoles nombres a los dispositivos.
Protección de los dispositivos; debe disponer de un sistema que permita determinar quien tiene acceso a qué dispositivos.
Tamaño de bloque; a los dispositivos de bloque los trata como si todos tuvieran el mismo tamaño de bloque (conocido como bloque lógico). El driver de cada uno de ellos es el encargado de comprobar si a cada uno de ellos le corresponde 1 o más sectores del disco.
Almacenamiento Intermedio; Si se solicita información de un bloque que está cargado en el caché su lectura no se ordena al driver pero si no está cargado en caché se ordena la lectura del bloque completo. (lecturas por adelantado).

SOFTWARE DE E/S EN ESPACIO DE USUARIO: Una porción pequeña del software de E/S se ejecuta a nivel de usuario. Consiste en bibliotecas que se enlazan con los programas de usuario. También el sistema de spooling o áreas de trabajo encolados, permite conseguir una explotación concurrente de dispositivos de acceso exclusivo, como por ejemplo la impresora.









Bibliografía:

CARACTERÍSTICAS DEL HARDWARE DE E/S

PRINCIPIOS DEL HARDWARE DE ENTRADA Y SALIDA (E/S)
Distintas personas analizan de varias maneras el hardware de Entrada y Salida. Los ingenieros eléctricos lo hacen en términos de chips, cables, fuentes de poder, etc. Los programadores se fijan en la interfaz que se presenta al software (los comandos que acepta el hardware, las funciones que realiza y los errores que puede informar. En este trabajo nos interesaremos por la programación de los dispositivos de entrada y salida no por su diseño, construcción o mantenimiento, así nuestro interés estará restringido a la forma de programar el hardware y no su funcionamiento interno. Sin embargo es frecuente que la programación de muchos dispositivos de entrada y salida este íntimamente ligada con su operación interna.
DISPOSITIVOS DE ENTRADA Y SALIDA
Los dispositivos de entrada y saluda se pueden dividir de manera general en dos categorías: dispositivos de bloque y dispositivos de carácter.
Dispositivo de Bloque: Es aquel que almacena la información en bloques de tamaño fijo, cada uno con su propia dirección. Los tamaños comunes de los bloques van desde 128 bytes hasta 1024 bytes. La propiedad esencial de un dispositivo de bloque es la posibilidad de leer o escribir en un bloque de forma independiente de los demás, es decir, el programa puede leer o escribir en cualquiera de los bloques.
Entre los dispositivos de bloque se pueden encontrar:
  • CD - ROM: Acrónimo de Compact Disc-Read Only Memory. Estándar de almacenamiento de archivos informáticos en disco compacto. Se caracteriza por ser de sólo lectura. Otros estándares son el CD-R o WORM (permite grabar la información una sola vez), el CD-DA (permite reproducir sonido), el CD-I (define una plataforma multimedia) y el PhotoCD (permite visualizar imágenes estáticas).
  • Disco Duro: Los discos duros proporcionan un acceso más rápido a los datos que los discos flexibles y pueden almacenar mucha más información. Al ser las láminas rígidas, pueden superponerse unas sobre otras, de modo que una unidad de disco duro puede tener acceso a más de una de ellas. La mayoría de los discos duros tienen de dos a ocho láminas. Un disco duro normal gira a una velocidad de 3.600 revoluciones por minuto y las cabezas de lectura y escritura se mueven en la superficie del disco sobre una burbuja de aire de una profundidad de 10 a 25 millonésimas de pulgada. El disco duro va sellado para evitar la interferencia de partículas en la mínima distancia que existe entre las cabezas y el disco.
  • Disquete o Disco flexible: Es un elemento plano de mylar recubierto con óxido de hierro que contiene partículas minúsculas capaces de mantener un campo magnético, y encapsulado en una carcasa o funda protectora de plástico. La información se almacena en el disquete mediante la cabeza de lectura y escritura de la unidad de disco, que altera la orientación magnética de las partículas. La orientación en una dirección representa el valor binario 1, y la orientación en otra el valor binario 0. Dependiendo de su capacidad, un disco de este tipo puede contener desde algunos cientos de miles de bytes de información hasta casi tres millones (2,88 Mb). Un disco de 3y pulgadas encerrado en plástico rígido se denomina normalmente disquete pero puede llamarse también disco flexible.
  • Dispositivo de Carácter: Es aquel que envía o recibe un flujo de caracteres, sin sujetarse a una estructura de bloques. No se pueden utilizar direcciones ni tienen una operación de búsqueda.
    Entre los dispositivos de carácter se pueden mencionar:
  • Mouse: Es el segundo dispositivo de entrada más utilizado. El mouse o ratón es arrastrado a lo largo de una superficie para maniobrar un apuntador en la pantalla del monitor. Fue inventado por Douglas Engelbart y su nombre se deriva por su forma la cual se asemeja a la de un ratón.
  • Monitores: El monitor ó pantalla de vídeo, es el dispositivo de salida más común. Hay algunos que forman parte del cuerpo de la computadora y otros están separados de la misma. Existen muchas formas de clasificar los monitores, la básica es en término de sus capacidades de color, pueden ser: Monocromáticos, despliegan sólo 2 colores, uno para el fondo y otro para la superficie. Los colores pueden ser blanco y negro, verde y negro ó ámbar y negro. Escala de Grises, un monitor a escala de grises es un tipo especial de monitor monocromático capaz de desplegar diferentes tonos de grises. Color: Los monitores de color pueden desplegar de 4 hasta 1 millón de colores diferentes
  • Impresoras de Línea: de línea: Son rápidas y ruidosas. Tienen la desventaja de estar limitadas a la impresión de caracteres, por lo que no son apropiadas para aplicaciones donde los gráficos son un ingrediente esencial del producto acabado. imprimen una línea de puntos a la vez. Se alinean martillos similares a agujas sobre el ancho del papel.
  • Tarjetas Perforadas: Habían, sido inventada en los años de la revolución industrial (finales del siglo XVIII) por el francés Jacquard y perfeccionado por el estadounidense Hermand Hollerith en 1890. Se usaron para acumular y procesar automáticamente gran cantidad de datos. Durante décadas, desde mediados de los cincuentas la tecnología de las tarjetas perforadas se perfeccionó con la implantación de más dispositivos con capacidades más complejas. Dado que cada tarjeta contenía en general un registro (Un nombre, dirección, etc.) el procesamiento de la tarjeta perforada se conoció también como procesamiento de registro unitario.
  • CONTROLADOR DE DISPOSITIVOS
    Las unidades de entrada y salida constan por lo general de un componente mecánico y otro electrónico. El componente electrónico se llama controlador de dispositivo de adaptador.
    La tarjeta controladora tiene por lo general un conector, en el que se puede conectar el cable que va al dispositivo en sí. Muchos controladores pueden manejar dos, cuatro y hasta ocho dispositivos idénticos. Si la interfaz entre el controlador y el dispositivo es estándar, ya sea un estándar oficial, de tipo ANSI, IEEE o ISO, o bien un estándar de hecho, entonces las compañías pueden fabricar controladores o dispositivos que se ajusten a esa interfaz.
    Mencionamos esa distinción entre controlado y dispositivo por que el sistema operativo casi siempre trabaja con el controlador y no con el dispositivo. Casi todas las micro y mini computadoras utilizan el modelo de un bus para la comunicación entre la CPU y los controladores. Los grandes mainframes utilizan con frecuencia otro modelo, con varios buses y computadoras especializadas en Entrada y Salida llamadas canales de entrada y salida que toman cierta carga de entrada y salida fuera de la CPU principal.
    La labor del controlador es convertir el flujo de bits en serie en un bloque de bytes y llevar a cabo cualquier corrección de errores necesaria. Lo común es que el bloque de bytes ensamble, bit a bit, en un buffer dentro del controlador. Después a verificar la suma y declarar al bloque libre de errores, se le puede copiar en la memoria principal.
    El controlador de una terminal CRT también funciona como un dispositivo de bits en un nivel igual de bajo. Lee bytes que contienen caracteres a exhibir en la memoria y genera las señales utilizadas para modular la luz CRT para que esta se escriba en la pantalla. El controlador también genera las señales para que la luz CRT vuelva a realizar un trazo horizontal después de terminar una línea de rastreo, así como las señales para que se vuelva a hacer un trazo vertical después de rastrear en toda la pantalla. De no ser por el controlador CRT, el programador del sistema operativo tendría que programar en forma explicita el rastreo análogo del tubo de rayos catódicos. Con el controlador, el sistema operativo inicializa éste con pocos parámetros, tales como el número de caracteres por línea y el número de líneas en la pantalla, para dejar que el controlador se encargue de dirigir en realidad el rayo de luz.
    Cada controlador tiene unos cuantos registros que se utiliza para la comunicación con la CPU. En ciertas computadoras, estos registros son parte del espacio normal de direcciones de la memoria.
    El sistema operativo realiza la entrada y salida al escribir comandos en los registros de los controladores. Muchos de los comandos tienen parámetros, los cuales también se cargan de los registros del controlador. Al aceptar un comando, la CPU puede dejar al controlador y dedicarse a otro trabajo. Al terminar el comando, el controlador provoca la interrupción para permitir que el sistema operativo obtenga el control de la CPU y verifique los resultados de la operación. La CPU obtiene los resultados y el estado del dispositivo al leer uno o más bytes de información de los registros del controlador.
    ACCESO DIRECTO A MEMORIA
    Muchos controladores, en particular los correspondientes a los dispositivos de bloque, permiten el acceso directo a memoria o DMA. Para explicar el funcionamiento del DMA, analicemos primero la forma en que se lee el disco si no se utiliza este:
    En primer lugar, el controlador lee en serie el bloque (uno o mas sectores) de la unidad bit por bit, hasta que todo el bloque se encuentre en el buffer interno del controlador. A continuación calcula la suma de verificación para corroborar que no existen errores de lectura. Entonces el controlador provoca una interrupción. Cuando el sistema operativo empieza su ejecución, puede leer el bloque del disco por medio del buffer del controlador, un byte o una palabra a la vez, en un ciclo, en el que durante cada iteración se lee un byte o una palabra del registro del controlador y se almacena en la memoria.
    Es claro que un ciclo programado en la CPU para la lectura de bytes desde el computador, uno a la vez, desperdicia el tiempo de la CPU. DMA se ideó para liberar a la CPU de este trabajo de bajo nivel. Al utilizarlo, la CPU le proporciona al controlador dos elementos de la información, además de la dirección del bloque en el disco: la dirección en memoria adonde debe ir el bloque y el numero de bytes por transferir.
    Después de que el controlador ha leído todo el bloque del dispositivo a su buffer y ha corroborado la suma de verificación, copia el primer byte o palabra a la memoria principal, en la dirección especificada por medio de la dirección de la memoria DMA. Entonces incrementa la dirección DMA y decrementa el contador DMA en el numero de bytes que acaba de transferir. Este proceso se repite hasta que el contador se anula, momento en el cual el contador provoca una interrupción. Al iniciar su ejecución el sistema operativo, no tiene que copiar el bloque en la memoria, ya se encuentra allí.
    El controlador no almacena los bytes en la memoria principal tan pronto llegan al disco, la razón consiste en que una vez iniciada la transferencia del disco los bits siguen llegando al disco constantemente, sin importar si el controlador esta listo o no para recibirlos. Si el controlador intentara escribir los datos en la memoria de forma directa, tendría que recurrir al bus del sistema para cada una de las palabras transferidas. Si el bus estuviera ocupado debido a que lo utilizara otro dispositivo, entonces el controlador debería esperar. Si la siguiente palabra llegase antes de que la anterior hubiera sido almacenada, el controlador tendría que almacenar en alguna parte. Si el bus estuviese demasiado ocupado, el controlador terminaría por almacenar unas cuantas palabras y con gran tarea de administración al mismo tiempo. Cuando el bloque se guarda en un buffer interno, el bus no se necesita sino hasta que el DMA comienza; por ello, el diseño del controlador es más sencillo, puesto que la transferencia DMA a la memoria ya no es un aspecto critico del tiempo. (Sin embargo, algunos controladores si transfieren en forma directa a la memoria, con una pequeña proporción de almacenamiento en buffers internos, pero si el bus esta demasiado ocupado, se debe terminar una transferencia con un error de sobre ejecución).
    El proceso de dos etapas de almacenamiento en un buffer interno descrito arriba tiene importantes consecuencias en el rendimiento de las entradas y salidas. Aunque los datos se transfieren del controlador a la memoria, ya sea mediante la CPU o mediante el propio controlador, el siguiente sector pasará debajo de la cabeza del disco y los bits llegarán al controlador. Los controladores simples no pueden enfrentarse a las entradas y salidas simultáneas, de forma, que mientras se lleva a cabo una transferencia en la memoria, el sector que pasa debajo de la cabeza del disco se pierde.
    Como resultado el controlador solo podrá leer hasta el siguiente bloque. La lectura de una pista completa se realizará entonces n dos rotaciones completas, una para los bloques nones y otra para los bloques pares. Si el tiempo necesario para una transferencia de un bloque del controlador a la memoria por medio del bus es mayor que el tiempo necesario para leer un bloque del disco, podría ser necesario leer un bloque y después saltar dos (o más) bloques.
    El salto de bloques, que se ejecuta para darle tiempo al controlador para la transferencia de datos a la memoria se llama separación. Al dar formato al disco, los bloques se numeran tomando en cuenta el factor de separación.
    La idea de numerar los bloques de esta menara es permitir al sistema operativo que lea los bloques con numeración consecutiva y conserve la máxima velocidad posible del hardware. Si los bloques estuvieran numerados como en la figura “a”, pero el controlador solo pudiera leer bloques alternados, un sistema operativo que asignara bloques consecutivos, a un archivo de ocho bloques necesitaría ocho rotaciones de disco para leer los bloques cero a siete en orden. (Por supuesto, si el sistema operativo supiera del problema y acomodara los bloques de otra manera, podría resolver el problema en software, pero es mejor que el controlador se preocupe por la separación).


    BIBLIOGRAFIA
    http://html.rincondelvago.com/hardware-de-entrada-y-salida.html

    PROBLEMAS MAS COMUNES PARA EL MANEJO DE DISPOSITIVO DE E/S

    Al momento de estar manejando dispositivos de Entrada/Salida pueden surgir varios problemas, algunos que se pueden resolver, otros simplemente los tenemos que evitar.

    Problemas de Uso Compartido

    Otro problema que se presenta con frecuencia, es cuando distintas aplicaciones intentan acceder a un dispositivo (ya sea para escribir o leer datos) pero éste se encuentra en uso por otro programa, y el Sistema tiene que bloquearlo, como con el caso de la memoria protegida, para que sea utilizable hasta que un programa detenga su uso.

    Problemas con Buffers

    Uno de los principales problemas que se presenta es el del manejo de buffers, y consiste en determinar tan pronto como sea posible que un dispositivo de entrada y salida ha finalizado una operación. Este problema se resuelve mediante las interrupciones. Tan pronto como un dispositivo entrada y salida acaba con una operación interrumpe a la CPU, en ese momento la CPU detiene lo que está haciendo e inmediatamente transfiere el control a una posición determinada.

    Problemas al momento de manejar archivos

    Uno de los problemas mas frecuentes en el manejo de archivos son los DEADLOCK, un deadlock es una situación no deseada de espera indefinida y se da cuando en un grupo de procesos, dos o más procesos de ese grupo esperan por llevar a cabo una tarea que será ejecutada por otro proceso del mismo grupo, entonces se produce el bloqueo. Los bloqueos se dan tanto en los sistemas operativos tradicionales como en los distribuidos, solo que en estos últimos es más difícil de prevenirlos, evitarlos e incluso detectarlos, y si se los logra detectar es muy complicado solucionarlos ya que la información se encuentra dispersa por todo el sistema.
    Una vez que un deadlock se detecta, es obvio que el sistema está en problemas y lo único que resta por hacer es una de dos cosas: tener algún mecanismo de suspensión o reanudación que permita copiar todo el contexto de un proceso incluyendo valores de memoria y aspecto de los periféricos que esté usando para reanudarlo otro día, o simplemente eliminar un proceso o arrebatarle el recurso, causando para ese proceso la pérdida de datos y tiempo.
    Existen tambien varias causas para que los dispositivos de E/S presenten errores, como lo son drivers desactualizados y/o una mala instalación de éstos; que el sistema intente utilizar de una manera incorrecta/incompatible el dispositivo en cuestión, o daño físico del periférico.

    BIBLIOGRAFIA
    http://sisinfo.itc.mx/users/ISCSO/eq10/Tema3-Prob_ES.html

     

    DISPOSITIVOS Y MANEJADORES DE DISPOSITIVOS

    DISPOSITIVOS Y MANEJADORES DE DISPOSITIVOS

    El sistema de E/S es la parte del sistema operativo que se ocupa de facilitar el manejo de los dispositivos de E/S ofreciendo una visión lógica simplificada de los mismos que pueda ser usada por otros componentes del sistema operativo (como el sistema de archivos) o incluso por el usuario. Mediante esta visión lógica se ofrece a los usuarios un mecanismo de abstracción que oculta todos los detalles relacionados con los dispositivos físicos, así como del funcionamiento real de los mismos.  
    El sistema operativo debe controlar el funcionamiento de todos los dispositivos de E/S para alcanzar los siguientes objetivos:
    • Facilitar el manejo de los dispositivos de E/S. Para ello debe ofrecer una interfaz entre los dispositivos y el resto del sistema que sea sencilla y fácil de utilizar.
    • Optimizar la E/S del sistema, proporcionando mecanismos de incremento de prestaciones donde sea necesario.
    • Proporcionar dispositivos virtuales que permitan conectar cualquier tipo de dispositivo físico sin que sea necesario remodelar el sistema de E/S del sistema operativo.
    • Permitir la conexión de dispositivos nuevos de E/S, solventando de forma automática su instalación usando mecanismos del tipo plug&play.
    • Conexión de un dispositivo de E/S a una computadora En la siguiente figura se muestra el esquema general de conexión de periféricos a una computadora. En el modelo de un periférico se distinguen dos elementos:
      • Periféricos o dispositivos de E/S. Elementos que se conectan a la unidad central de proceso a través de las unidades de entrada/salida. Son el componente mecánico que se conecta a la computadora.
      • Controladores de dispositivos o unidades de E/S. Se encargan de hacer la transferencia de información entre la memoria principal y los periféricos. Son el componente electrónico a través del cual se conecta el dispositivo de E/S. Tienen una conexión al bus de la computadora y otra para el dispositivo (generalmente mediante cables internos o externos).
                                     Una de las funciones principales de un S. O. es el control de todos los dispositivos de e / s de la computadora. 

    Las principales funciones   relacionadas son:
    • Enviar comandos a los dispositivos.
    • Detectar las interrupciones.
    • Controlar los errores.
    • Proporcionar una interfaz entre los dispositivos y el resto del sistema:
    El código de e / s representa una fracción significativa del S. O.
    El uso inapropiado de los dispositivos de e/s frecuentemente genera ineficiencias del sistema, lo que afecta al performance global.

    Principios del Hardware de E/S

    El enfoque que se considerará tiene que ver con la interfaz que desde el hardware se presenta al software
    • Comandos que acepta el hardware.
    • Funciones que realiza.
    • Errores que puede informar.

    Dispositivos de E / S


    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 que almacenan la información en bloques de tamaño fijo (discos)
    • Dispositivos de caracteres: maneja la información mediante un flujo de caracteres sin estructurarlos en bloques (mouse, teclado, impresora)
    Las principales características de los dispositivos de bloque son:
    • 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.
    Las principales características de los dispositivos de caracter son:
    • 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 ejemplos típico de dispositivos de caracter son las impresoras de línea, terminales, interfaces de una red, ratones, etc.
    Algunos dispositivos no se ajustan a este esquema de clasificación, por ejemplo los relojes, que no tienen direcciones por medio de bloques y no generan o aceptan flujos de caracteres.
    El sistema de archivos solo trabaja con dispositivos de bloque abstractos, por lo que encarga la partedependiente del dispositivo a un software de menor nivel, el software manejador del dispositivo.
    Todos los dispositivos de E/S se pueden agrupar en tres grandes grupos:
    • Dispositivos de interfaz de usuario. Se llama así a los dispositivos que 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 (ratón, teclado, etc.) como para salida (impresoras, pantalla, etc.). Existen periféricos menos habituales, pero más sofisticados, tales como un escáner, lectores de huella digital, lectores de cinta magnética, instrumentos musicales digitales (MIDI), etc.
    • Dispositivos de almacenamiento. 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 (discos y disquetes) y terciario (cintas).
    • Dispositivos de comunicaciones. 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.

    En cualquier caso, y sea como sea el controlador, su misión es convertir los datos del formato interno del dispositivo a uno externo que se ofrezca a través de una interfaz de programación bien definida. Los controladores de dispositivo se suelen agrupar en alguna de las siguientes categorías o clases:
    • Adaptadores de audio (tarjetas de sonido).
    • Dispositivos de comunicación (infrarrojos, módems, etc).
    • Dispositivos de visualización; pantallas (displays).
    • Teclados.
    • Ratón (“mouse” y otros señaladores gráficos).
    • Dispositivos multimedia.
    • Dispositivos de Red.
    • Impresoras.
    • Almacenamiento
    Algunos dispositivos de entrada y salida:
    • Entrada:
      • Teclado
      • Ratón
      • Joystick
      • Lápiz óptico
      • Micrófono
      • Webcam
      • Escáner
      • Escáner de código de barras
    • Salida:
      • Monitor
      • Altavoz
      • Auriculares
      • Impresora
      • Plotter
      • Proyector
    • Entrada/salida (mixtos):
      • Unidades de almacenamiento: CD,DVD, Blu-ray, Memory cards, Disco Duro Externo, Disco duro, Pendrive USB.
      • Módem
      • Router
      • Pantalla táctil
      • Tarjeta de red

    Controladores de Dispositivos

    Un controlador (instaladores) de disposotivos, normalmente llamado controlador en inglés (device driver) es un programa que infórmatico que permite al sistema operativo interactuar con un periférico, haciendo una abstracción del hardware del dispositivo y proporcionando una interfaz - posiblemente estardarizada - para usarlo. Se puede esquematizar como un manual de instrucciones que se indica al sistema operativo, cómo debe controlar y comunicarse con un dispositivo en particular. Por lo tanto es una pieza esencial, sin el cual,  no se podría usar el hardware.Los controladores de dispositivos son programas añanidos al núcleo del sistema para gestionar periféricos y dispositivos oficiales.
    Existen tantos tipos de controladores como tipos de periféricos y es común mas de un tipo de controlador posible para el mismo dispositivo, cada uno ofreciendo un nivel distinto defuncionalidades. Por ejemplo, aparte de los oficiales ( normalmente disponibles en la página web del fabricante se pueden encontrar tambienlos proporcinados por el sistema operativo o tambien versiones no oficiales hechas por terceros.

    Las unidades de e / s generalmente constan de:
    • Un componente mecánico.
    • Un componente electrónico, el controlador del dispositivo o adaptador.
    Muchos controladores pueden manejar más de un dispositivo. El S. O. generalmente trabaja con el controlador y no con el dispositivo.Los modelos más frecuentes de comunicación entre la cpu y 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:
    • La comunicación es mediante un flujo de bits en serie que:
      • Comienza con un preámbulo.
      • Sigue con una serie de bits (de un sector de disco, por ej.).
      • Concluye con una suma para verificación o un código corrector de errores.
    • El preámbulo:
      • Se escribe al dar formato al disco.
      • Contiene el número de cilindro y sector, el tamaño de sector y otros datos similares.
    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.
    La cpu obtiene los resultados y el estado del dispositivo al leer uno o más bytes de información de los registros del controlador.Ejemplos de controladores, sus direcciones de e / s y sus vectores de interrupción en la PC IBM pueden verse en la Tabla 5.1.
     
     

    Controlador de e / sDirección de e / sVector de interrupciones
    Reloj040 - 0438
    Teclado060 - 0639
    Disco duro320 - 32f 13
    Impresora378 - 37f 15
    Disco flexible3f0 - 3f714
    Rs232 primario3f8 - 3ff 12
    Rs232 secundario2f8 - 2ff 11
    Tabla 5.1: Controladores de e / s, direcciones de e / s y vector de interrupciones.

    MANEJADORES DE DISPOSITIVOS


    MECANISMOS Y FUNCIONES DE LOS 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. El Sistema Operativo generalmente trabaja con el controlador y no con el dispositivo.
    Tecnicas 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. Las instrucciones siguientes pueden ser del mismo proceso, si no es necesario para este esperar la terminación de E/S. en otro caso, el proceso se suspende a la espera de la interrupción, mientras se realiza otro trabajo.
    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.
    En la mayoría de los sistemas informáticos, el DMA es la forma dominante de transferencia ofrecida por el sistema operativo.

    Sin interrupciones
    Con interrupciones
    Transferencia de E/S a memoria a través del procesador
    E/S programada
    E/S dirigida por interrupciones
    Transferencia de E/S directa a memoria

    Acceso directo a memoria (DMA)
    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.
    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.
    A medida que sigue la evolución, una mayor parte de la funciones de E/S se realiza sin la participación del procesador. El procesador central se libera cada vez más de las tareas relacionadas con la E/S, mejorando así el rendimiento.
    Funciones de los manejadores de dispositivos
    Funciones 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.
    El software independiente del dispositivo asocia los nombres simbólicos de los dispositivos con el nombre adecuado.
    Un nombre de dispositivo determina de manera única el nodo-i de un archivo especial:
    • 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.
    BIBLIOGRAFIA
    https://sites.google.com/site/materiasisoperativo/unidad-4-administracion-de-entrada-salida/4-2-mecanismos-y-funciones-de-los-manejadores-de-dispositivos-device-drivers

    ORGANIZACION DE LA MEMORIA VIRTUAL

    Organizacion de la memoria virtual

    Memoria Virtual

    La memoria virtual es una técnica para proporcionar la simulación de un espacio de memoria mucho mayor que la memoria física de una maquina.Esta ilusión permite que los programas se hagan sin tener en cuenta el tamaño exacto de la memoria física.

    La memoria virtual ha llegado a ser un componente esencial de la mayoría de los S.O actuales. Y como en un instante dado, en la memoria solo se tienen unos pocos fragmentos de un proceso dado, se pueden mantener mas procesos en la memoria.

    La memoria virtual también simplifica la carga del programa para su ejecución llamado reubicación, este procedimiento permite que el mismo programa se ejecute en cualquier posición de la memoria física

    Evalucacion de las Organizaciones de Almacenamiento


    Almacenamiento virtual "significa la capacidad de direccional un espacio de almacenamiento mucho mayor que el disponible en el almacenamiento primario de determinado sistema de computación” .
    Esta tecnología apareció en 1960 en la Universidad de Manchester (Inglaterra), en el sistema “Atlas”.
    Los métodos más comunes de implementación son mediante:

    ·                  Técnicas de “paginación”.
    ·                  Técnicas de “segmentación”.
    ·                  Una combinación de ambas técnicas.

    Las direcciones generadas por los programas en su ejecución no son, necesariamente, aquellas contenidas en el almacenamiento primario (memoria real), ya que las direcciones virtualessuelen seleccionarse dentro de un numero mucho mayor de direcciones que las disponibles dentro del almacenamiento primario.
    La evolución en las organizaciones de almacenamiento puede resumirse como sigue:

    ·                  Real:
    ·                                      Sistemas dedicados a un solo usuario.
    ·                  Real:
    ·                                      Sistemas de multiprogramación en memoria real:
    ·                                                          Multiprogramación en partición fija:
    ·                                                                              Absoluta.
    ·                                                                              Relocalizable (reubicadle).
    ·                                                          Multiprogramación en partición variable.
    ·                  Virtual:
    ·                                      Multiprogramación en almacenamiento virtual:
    ·                                                          Paginación pura.
    ·                                                          Segmentación pura.
    ·                                                          Combinación paginación / segmentación.
    ¿Qué es la paginación? 

    El termino memoria virtual se asocia normalmente con sistemas que emplean paginación, aunque también se puede usar memoria virtual basada en la segmentación. El uso de la paginación en la memoria virtual fue presentado por primera vez en el computador Atlas. 
    Cada proceso tiene su propia tabla de paginas y cuando carga todas sus paginas en la o memoria principal. Puesto que solo algunas de las páginas de un proceso pueden estar en la memoria principal, se necesita un bit en cada entrada de la tabla para indicar si la pagina perteneciente esta presente en la memoria principal o no. Si el bit indica que la pagina esta en la memoria, la entrada incluye también el número de marco para esa pagina. 
    Otro bit de control necesario en la entrada de la tabla de páginas es el bit de modificación (M), para indicar si el contenido de la página correspondiente se ha alterado desde que la página se cargo en la memoria principal. Si no ha habido cambios, no es necesario escribir la página cuando sea sustituida en el marco que ocupa actualmente.

    Estructura de la tabla de páginas

    El mecanismo básico de lectura de una palabra de la memoria supone la traducción por medio de la tabla de páginas de una dirección virtual o lógica (ver figura 3.3.2.1 y 3.3.2.2), formada por un numero de pagina y un desplazamiento, a una dirección física que esta formada por un numero de marco y un desplazamiento. 
    Con la memoria virtual, la CPU produce direcciones virtuales que son traducidas por una combinación de hardware y software a direcciones físicas, pues pueden ser utilizadas para acceder a memoria principal. Este proceso se denomina correspondencia de memoria o traducción de direcciones. Actualmente los dos niveles de la jerarquía de memoria controlados por la memoria virtual son las DRAM y los Discos magnéticos.

    Puesto que la tabla de páginas es de longitud variable, en función del tamaño del proceso, no es posible suponer que quepa en los registros.

    Implicaciones de la memoria virtual 

    La segmentación permite al programador contemplar la memoria como si constara de varios espacios de direcciones o segmentos. Los segmentos pueden ser de distintos tamaños, incluso de forma dinámica. Las referencias a la memoria constan de una dirección de la forma (numero de segmento, desplazamiento).

    Esta organización ofrece al programador varias ventajas sobre un espacio de direcciones no segmentado:
    1. Simplifica la gestión de estructuras de datos crecientes. Si el programador no conoce a priori cuan larga puede llegar a ser una estructura de datos determinada, es necesario suponerlo a menos que se permitan tamaños de segmentos dinámicos. Con memoria virtual segmentada, a la estructura de datos se le puede asignar a su propio segmento y el S.O expandirá o reducirá el segmento cuando se necesite.
    2. Permite modificar y recopilar los programas independientemente, sin que sea necesario recopilar o volver a montar el conjunto de programas por completo.
    3. Se presta a la comparición entre procesos. Un programador puede situar un programa de utilidades o una tabla de datos en un segmento que puede ser referenciado por otros procesos.
    4. Se presta a la protección. Puesto que un segmento puede ser construido para albergar un conjunto de procedimientos y datos bien definido, el programador o el administrador del sistema podrán asignar los permisos de acceso de la forma adecuada.

    Organización

      
    En el estudio de la segmentación simple, se llego a la conclusión de que cada proceso tiene su propia tabla de segmento y que, cuando todos los segmentos se encuentran en la memoria principal, la tabla de segmentos del proceso se crea y se carga en la memoria. Cada entrada de la tabla contiene la dirección de comienzo del segmento correspondiente de la memoria principal, así como su longitud. La misma estructura se necesitara al hablar de un esquema de memoria virtual basado en la segmentación donde las entradas de la tabla de segmentos pasan a ser mas complejas.

    Puesto que solo algunos de los segmentos de un proceso estarán en la memoria principal, se necesita un bit en cada entrada de la tabla de segmentos para indicar si el segmento correspondiente esta presente en la memoria principal. Si el bit indica que el segmento esta en la memoria, la entrada incluye también la dirección de comienzo y la longitud del segmento.

    Otro bit de control necesario en la entrada de la tabla de segmentos es un bit de modificación que indique si el contenido del segmento correspondiente ha sido modificado desde que se cargo por última vez en la memoria principal. Si no ha habido cambios, no será necesario escribir en el disco el segmento cuando llegue el momento de reemplazarlo en el espacio que ocupa actualmente.

    Sistema de paginacion / segmentacion


    La paginación y la segmentación puras son métodos de manejo de memoria bastante efectivos, aunque la mayoría de los sistemas operativos modernos implantan esquemas combinados, es decir, combinan la paginación y la segmentación.

    La idea de combinar estos esquemas se debe a que de esta forma se aprovechan los conceptos de la división lógica de los programas (segmentos) con la granularidad de las páginas. De esta forma, un proceso estará repartido en la memoria real en pequeñas unidades (paginas) cuya liga son los segmentos. También es factible así el compartir segmentos a medida que las partes necesitadas de los mismos se van reverenciando (paginas).

    Para comprender este esquema, nuevamente se vera como se traduce una dirección virtual en una localidad de memoria real. Para la paginación y segmentación puras se puede decir que el direccionamiento es `bidimensional' porque se necesitan dos valores para hallar la dirección real.
    Para el caso combinado, se puede decir que se tiene un direccionamiento `tridimensional'.

    El sistema debe contar con una tabla de procesos (TP) (Ver figura 3.3.4.1). Por cada renglón de esa tabla se tiene un número de proceso y una dirección a una tabla de segmentos. Es decir, cada proceso tiene una tabla de segmentos. Cuando un proceso hace alguna referencia a memoria, se consulta TP para encontrar la tabla de segmentos de ese proceso. En cada tabla de segmentos de proceso (TSP) se tienen los números de los segmentos que componen a ese proceso.

    Por cada segmento se tiene una dirección a una tabla de páginas. Cada tabla de páginas tiene las direcciones de las páginas que componen a un solo segmento. Por ejemplo, el segmento `A' puede estar formado por las paginas reales `a','b','c','p' y `x'. El segmento `B' puede estar compuesto de las paginas `f','g','j','w' y `z'. Otro aspecto importante es la estrategia para cargar páginas (o segmentos) a la memoria RAM.

    Se usan más comúnmente dos estrategias: cargado de páginas por demanda y cargado de páginas anticipada. La estrategia de cargado por demanda consiste en que las páginas solamente son llevadas a RAM si fueron solicitadas, es decir, si se hizo referencia a una dirección que cae dentro de ellas.

    La carga anticipada consiste en tratar de adivinar que paginas serán solicitadas en el futuro inmediato y cargarlas de antemano, para que cuando se pidan ya no ocurran fallos de pagina.
    Ese `adivinar' puede ser que se aproveche el fenómeno de localidad y que las paginas que se cargan por anticipado sean aquellas que contienen direcciones contiguas a la dirección que se acaba de refenciar. De hecho, el sistema operativo VMS usa un esquema combinado para cargar páginas: cuando se hace referencia a una dirección cuya página no esta en RAM, se provoca un fallo de página y se carga esa página junto con algunas páginas adyacentes. En este caso la página solicitada se cargo por demanda y las adyacentes se cargaron por anticipación.