miércoles, 4 de noviembre de 2015

4.3 ESTRUCTURA DE DATOS PARA EL MANEJO DE DISPOSITIVOS



ESTRUCTURA DE DATOS PARA EL MANEJO DE DISPOSITIVOS

Estructura simple o sistema monolítico


El sistema MS-DOS es, sin duda, el mejor sistema operativo para
microcomputadoras. Sin embargo, sus interfaces y niveles de funcionalidad no están bien definidos. Los programas de aplicación pueden acceder a operaciones básicas de entrada / salida para escribir directamente en pantalla o discos. Este libre acceso, hace que el sistema sea vulnerable, ya que un programa de aplicación puede eliminar por completo un disco rígido por alguna falla. Además este sistema, también está limitado al hardware sobre el que corre.

Otra estructura simple es la utilizada por la versión original de UNIX, esta consiste de dos partes separadas, el kernel y los programas de sistemas. El kernel fue posteriormente separado en manejadores (drivers) de dispositivos y una serie de interfaces. El kernel provee el sistema de archivos, la programación de CPU, el administrador de memoria y otras funciones del sistema operativo que responden a las llamadas del sistema enunciadas anteriormente




Es una forma  de relación entre el kernel y el software los sistemas operativos que usaron este sistema fueron freedbsd, unix y linux.

Estructura por capas (layers)

Las nuevas versiones de UNIX se diseñaron para hardware más avanzado. Para dar mayor soporte al hardware, los sistemas operativos se dividieron en pequeñas partes. Ahora los sistemas operativos tienen mayor control sobre el hardware y las aplicaciones que se ejecutan sobre este.

        La modularizacion de un sistema se puede presentar de varias formas, la más utilizada es la de capas, la cual consiste en dividir al sistema operativo en un número de capas. La capa de menor nivel es el hardware y la de mayor nivel es la interfaz con el usuario.
        La principal ventaja es que cada capa cumple con una serie de funciones y servicios que brinda a las otras capas, esto permite una mejor organización del sistema operativo y una depuración más fácil de este. 
 Es una estructura organizada jerárquica mente cada una construidas de menor a mayor.





Cada capa se implementa solo utilizando las operaciones provistas por la capa de nivel inferior. Una capa no necesita saber cómo se implementan estas funciones, solo necesita saber que operaciones puede realizar. 

Los procesos de usuario emiten peticiones de E/S 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.

En el manejo de los dispositivos de E/S es necesario, introducir dos nuevos términos:

BUFFERING (uso de memoria interna)

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 introducido para iniciar inmediatamente la siguiente lectura.

La CPU y el dispositivo de entrada permanecen ocupados. Cuando la CPU este 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 iniciara la lectura de los datos siguientes.

SPOOLING

Esta forma de procesamiento de denomina spooling, utiliza el disco como un buffer muy grade 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.

Manejadores de interrupción

Los manejadores de interrupción se encargan de tratar las interrupciones que generan los controladores de dispositivos una vez que éstos están listos para la transferencia de datos o bien han leído o escrito los datos de memoria principal en caso de acceso directo a memoria. Para tratar dicha interrupción se ejecuta el correspondiente manejador de interrupción cuyo efecto es el de salvar los registros, comunicar el evento al manejador del dispositivo y restaurar la ejecución de un proceso (que no tiene por qué ser el interrumpido).





4.2 MECANISMOS Y FUNCIONES DE LOS MANEJADORES DE DISPOSITIVOS: DEVICE DRIVERS



Mecanismos y funciones de los manejadores de dispositivos: Device Drivers


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.
Técnicas de E/S
E/S programada: El procesador emite una orden de E/S de parte de un proceso a un módulo 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 módulo 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 módulo de DMA controla el intercambio de datos entre la memoria principal y un módulo de E/S. El procesador envía una petición de transferencia de un bloque de datos al módulo 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.
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.


UNIDAD 4.1 DISPOSITIVOS Y MANEJADORES DE DISPOSITIVOS : DEVICE DRIVERS




 DISPOSITIVOS Y MANEJADORES DE DISPOSITIVOS : DEVICE DRIVERS


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 carácter 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 ejemplo típico de dispositivos de carácter son las impresoras de línea, terminales, interfaces de una red, ratones, etc.
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 dispositivos, normalmente llamado controlador en inglés (device driver) es un programa que informático que permite al sistema operativo interactuar con un periférico, haciendo una abstracción del hardware del dispositivo y proporcionando una interfaz - posiblemente estandarizada - 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ñadidos 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 más de un tipo de controlador posible para el mismo dispositivo, cada uno ofreciendo un nivel distinto de funcionalidades. Por ejemplo, aparte de los oficiales (normalmente disponibles en la página web del fabricante se pueden encontrar también los proporcionados por el sistema operativo o también 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.
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.

Manejadores de dispositivos
Cada dispositivo de E/S, o cada clase de dispositivos, tiene un manejador asociado en el sistema operativo.
Dicho manejador incluye: código independiente del dispositivo para proporcionar al nivel superior del sistema operativo una interfaz de alto nivel y el código dependiente del dispositivo necesario para programar el controlador del dispositivo a través de sus registros y datos. La tarea de un manejador de dispositivo es aceptar peticiones en formato abstracto, de la parte del código de E/S independiente del dispositivo, traducir dichas peticiones a términos que entienda el controlador, enviar al mismo las órdenes adecuadas en la secuencia correcta y esperar a que se cumplan.
Todos los manejadores tienen una lista de peticiones pendientes por dispositivo donde se encolan las peticiones que llegan de niveles superiores.
·   El manejador explora la lista de peticiones, extrae una petición pendiente y ordena su ejecución.
·       La política de extracción de peticiones de la lista es dependiente de manejador y puede ser FIFO.
·      Una vez enviada la petición al controlador, el manejador se bloquea o no, dependiendo de la velocidad del dispositivo. Para los lentos (discos) se bloquea esperando una interrupción. Para los rápidos (pantalla, discos RAM, etcétera) responde inmediatamente.

·      Después de recibir el fin de operación, controla la existencia de errores y devuelve al nivel superior el estado de terminación de la operación. Si tiene operaciones pendientes en la cola de peticiones, atiende a la siguiente, en caso de que le toque ejecutar después de la operación de E/S. En caso contrario se bloquea.










3.4 ADMINISTRACIÓN DE MEMORIA



ADMINISTRACIÓN DE MEMORIA

 •Método mediante el cual, un sistema operativo simula tener más memoria principal que la que existe físicamente. Para implementar la memoria virtual se utiliza un medio de almacenamiento secundario de alta velocidad de acceso, generalmente en disco duro de la maquina. 

Estrategias de colocación en almacenamiento

Estrategias del mejor ajuste: Un trabajo que entre en el sistema se colocará en el espacio vació del almacenamiento principal en el que quepa mejor y que deje la menor cantidad posible de espacio sin utilizar.
Estrategias del primer ajuste: Un trabajo que entre en el sistema se colocara en el almacenamiento principal en el primer vació disponibles lo bastante grande para contenerlo.
Estrategias del peor ajuste: Consiste en colocar un programa en el almacenamiento primario en el espacio vació donde peor se ajusta es decir en el espacio más grande posible.

Estrategias de administración de la memoria virtual

Estrategias de Obtención: Determinan cuando se debe de transferir una página o un segmento de almacenamiento secundario al primario.
Estrategias de Colocación: Determinan en que lugar del almacenamiento primario se debe colocar una página o un segmento entrante.
Estrategias de Reemplazo: Sirven para decidir cual página o segmento se debe desplazar para dar espacio a una página o segmento entrante cuando está completamente ocupado el almacenamiento primario.


3.3 ORGANIZACIÓN DE MEMORIA REAL



ORGANIZACIÓN DE MEMORIA REAL

     La ilusión de la memoria virtual está soportada por el mecanismo de traducción de memoria, junto con una gran cantidad de almacenamiento rápido en disco duro. .Debido a que sólo la parte de memoria virtual que está almacenada en la memoria principal, es accesible a la CPU, según un programa va ejecutándose, la proximidad de referencias a memoria cambia, necesitando que algunas partes de la memoria virtual se traigan a la memoria principal desde el disco, mientras que otras ya ejecutadas, se pueden volver a depositar en el disco (archivos de paginación).

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.




EVALUACIÓN DE LAS ORGANIZACIONES DE ALMACENAMIENTO

La evolución en las organizaciones de almacenamiento puede resumirse como sigue:

• Real:
o Sistemas dedicados a un solo usuario.
• Real:
o Sistemas de multiprogramación en memoria real:
§ Multiprogramación en partición fija:
§ Absoluta.
§ Re localizable (reubicadle).
§ Multiprogramación en partición variable.
• Virtual:
o Multiprogramación en almacenamiento virtual:
§ Paginación pura.
§ Segmentación pura.
§ Combinación paginación / segmentación.


PAGINACIÓN 

Los sistemas de paginación de memoria dividen los programas en pequeñas partes o páginas. Del mismo modo, la memoria es dividida en trozos del mismo tamaño que las páginas llamados marcos de página. De esta forma, la cantidad de memoria desperdiciada por un proceso es el final de su última página, lo que minimiza la fragmentación interna y evita la externa.

SEGMENTACIÓN
En un esquema de segmentación un espacio de direcciones lógicas es un conjunto de segmentos. Cada segmento tendrá un nombre y un largo. Las direcciones van a hacer referencia tanto al nombre como al desplazamiento dentro del segmento.
Segmentos Compartidos.-
Similar a lo visto para paginación. Se comparte la totalidad de un segmento.



SISTEMAS DE PAGINACIÓN SEGMENTACIÓN


Ofrecen las ventajas de las dos técnicas de organización del almacenamiento virtual.
El tamaño de los segmentos es múltiplo del de las páginas.
No es necesario que todas las páginas de un segmento se encuentren al mismo tiempo en el almacenamiento primario.
Las páginas de almacenamiento virtual, que son contiguas en este almacenamiento, no necesitan ser contiguas en el almacenamiento real.
El direccionamiento es tridimensional con una dirección de almacenamiento virtual “v = (s,p,d)”:
• “s” es el número del segmento.
• “p” es el número de página.
• “d” es el desplazamiento en la página donde se encuentra asignado el elemento deseado.



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





3,2 MEMORIA REAL




MEMORIA REAL 

La memoria real o principal es en donde son ejecutados los programas y procesos de una computadora y es el espacio real que existe en memoria para que se ejecuten los procesos. 
Por lo general esta memoria es de mayor costo que la memoria secundaria, pero el acceso a la información contenida en ella es de mas rápido acceso. 
       

Solo la memoria cache es mas rápida que la principal, pero su costo es a su vez mayor.

Cuando no existe memoria virtual no hay diferenciación entre el espacio de direcciones y la memoria real;. Si se utiliza memoria virtual, el espacio de direcciones disponibles para los programas es aquel determinado por el tamaño de la memoria virtual implementada y no el espacio de direcciones provisto por la memoria real disponible (el espacio de la memoria virtual será mayor que el de la memoria real).


3.2.1 Administración de almacenamiento

La gestión de archivos es uno de los componentes mas visibles de un sistema operativo. Las computadores pueden almacenar la información en diferentes tipos de medios físicos. Los discos magnéticos, discos ópticos y cintas magnéticas son habituales. .
Cada uno de estos medios tiene sus propias características y organización física. Cada medio se controla mediante un dispositivo, tal como una unidad de disco o una cinta, que también tiene sus propias características distintivas
Estas propiedades incluyen la velocidad de acceso, la capacidad, la velocidad de transferencia de datos y el método de acceso (secuencial o aleatorio).
Un archivo es una colección de información relacionada definida por su creador. Comúnmente, los archivos representan programas(tanto en formato fuente como en objeto) y datos. Los archivos de datos pueden ser numéricos, alfabéticos, alfanuméricos o binarios. Los archivos pueden tener un formato libre(como, por ejemplo, los archivos de texto) o un formato rígido, como por ejemplo una serie de campos fijos.


3.2.2 jerarquía

Los programas y datos tienen que estar en la memoria principal para poder ejecutarse o ser referenciados.
Los programas y datos que no son necesarios de inmediato pueden mantenerse en el almacenamiento secundario.
El almacenamiento principal es mas costoso y menor que el secundario pero de acceso mas rápido.
Los sistemas con varios niveles de almacenamiento requieren destinar recursos para administrar el movimiento de programas y datos entre niveles. 




3.2.3 Estrategias de administración de memoria


Están dirigidas a la obtención del mejor uso posible del recurso del almacenamiento principal.

Se dividen en las siguientes categorías:

•Estrategias de búsqueda:
–Estrategias de búsqueda por demanda.
–Estrategias de búsqueda anticipada.
•Estrategias de colocación.
•Estrategias de reposición.


Las “estrategias de búsqueda” están relacionadas con el hecho de cuando obtener el siguiente fragmento de programa o de datos para su inserción en la memoria principal.
En la “búsqueda por demanda” el siguiente fragmento de programa o de datos se carga al almacenamiento principal cuando algún programa en ejecución lo referencia.
Se considera que la “búsqueda anticipada” puede producir un mejor rendimiento del sistema.
Las “estrategias de colocación” están relacionadas con la determinación del lugar de la memoria donde se colocara (cargara) un programa nuevo.
Las “estrategias de reposición” están relacionadas con la determinación de que fragmento de programa o de datos desplazar para dar lugar a los programas nuevos.