Powered By Blogger

martes, 28 de octubre de 2014

4.4 Operaciones de Entrada y Salida




Funciones que realizan 


Vamos a señalar las funciones que debe realizar un computador para ejecutar trabajos de entrada/salida: 

- Direccionamiento o selección del dispositivo que debe llevar a cabo la operación de E/S. 
- Transferencia de los datos entre el procesador y el dispositivo (en uno u otro sentido). 
- Sincronización y coordinación de las operaciones. 
Esta ultima función es necesaria debido a la deferencia de velocidades entre los dispositivos y la CPU y a la independencia que debe existir entre los periféricos y la CPU (por ejemplo, suelen tener relojes diferentes). 


Se define una transferencia elemental de información como la transmisión de una sola unidad de información (normalmente un byte) entre el procesador y el periférico o viceversa. Para efectuar una transferencia elemental de información son precisas las siguientes funciones: 

- Establecimiento de una comunicación física entre el procesador y el periférico para la transmisión de la unidad de información. 
- Control de los periféricos, en que se incluyen operaciones como prueba y modificación del estado del periférico. Para realizar estas funciones la CPU gestionara las líneas de control necesarias. 


Definiremos una operación de E/S como el conjunto de acciones necesarias para la transferencia de un conjunto de datos (es decir, una transferencia completa de datos). Para la realización de una operación de E/S se deben efectuar las siguientes funciones: 

- Recuento de las unidades de información transferidas (normalmente bytes) para reconocer el fin de operación. 
- Sincronización de velocidad entre la CPU y el periférico. 
- Detección de errores (e incluso corrección) mediante la utilización de los códigos necesarios (bits de paridad, códigos de redundancia cíclica, etc.) 
- Almacenamiento temporal de la información. Es más eficiente utilizar un buffer temporal específico para las operaciones de E/S que utilizan el área de datos del programa. 
- Conversión de códigos , conversión serie/paralelo, etc

4.3 Estructura de Datos para Manejo de Dispositivos


Estructura de datos para manejo de dispositivos





¿Qué es una estructura? 

Los sistemas operativos actuales son grandes y complejos, estos deben poseer una ingeniería correcta para su fácil actualización y para que puedan cumplir su función correctamente. La estructura es generalmente modular, cada modulo cumple una función determinada e interactúa con los demás módulos. 


Estructura simple 

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


Estructura por capas (layers) 

Las nuevas versiones de UNIX se diseñaron para hardware mas 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 mas utilizada es la de capas, la cual consiste en dividir al sistema operativo en un numero 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 mas fácil de este. Cada capa se implementa solo utilizando las operaciones provistas por la capa de nivel inferior. Una capa no necesita saber como se implementan estas funciones, solo necesita saber que operaciones puede realizar. 



4.2 Mecanismos y Funciones de los Manejadores de Dispositivos: Device Drivers.




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:
  • 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.

4.1 Dispositivos y Manejadores de Dispositivos: Device Drivers




4.1 Dispositivos y manejadores de dispositivos

Dispositivos de entrada/salida 

Se pueden clasificar en dos grandes categorías: 

1. Dispositivos de bloque
2. Dispositivos de carácter
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 busqueda. 
- Unos ejemplos típicos de dispositivos de carácter son las impresoras de línea, terminales, interfaces de una red, ratones, etc.





4 Administración de Entrada y Salida






Funciones que realizan 

Una de las principales funciones de un sistema operativo es controlar todos los dispositivos de E/S (entrada/salida) del computador. Debe enviar los comandos a los dispositivos, atrapar interrupciones y manejar errores. También debe proporcionar una interfaz sencilla y fácil de usar entre los dispositivos y el resto del sistema. En la medida de lo posible, la interfaz deberá ser la misma para todos los dispositivos (independiente del dispositivo). El código de E/S representa una fracción importante del sistema operativo total. La forma en que administra la E/S es el tema de este capitulo.



domingo, 26 de octubre de 2014

3.4 Administración de Memoria Virtual



La clave del concepto de memoria (almacenamiento) virtual esta en la disociación:

  • De las direcciones a las que hace referencia un programa. 
  • De las direcciones disponibles en la memoria real (almacenamiento primario). 

Mientras el proceso se ejecuta con sus páginas actuales, el sistema carga las demás páginas que estarán disponibles cuando las requiera el proceso. El S. O. intenta predecir las páginas que un proceso va a necesitar y a continuación precarga estas páginas cuando hay espacio disponible Mientras el proceso ejecuta sus páginas actuales, el sistema carga páginas nuevas que estarán disponibles cuando el proceso las pida, debido a ello, el tiempo de ejecución de un proceso se puede reducir.

3.3 Organización de 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 máquina. 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 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.

Los métodos más comunes de implementación son: 

• Técnicas de “paginación”. 

• Técnicas de “segmentación”. 

• Una combinación de ambas técnicas

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

La organización y administración de la “memoria principal”“memoria 
primaria” “memoria real” de un 
sistema ha sido y es uno de los factores 
mas importantes en el diseño de los 
S.O.
   
Lostérminos “memoria” “almacena ento” se consideran equivalentes.   Los programas y datos deben estar en el almacenamiento principal  para:
Poderlos ejecutar.
Referenciarlos directamente

3.1 Política y Filosofía

FILOSOFIA



La memoria principal puede ser considerada como un arreglo lineal de localidades de almacenamiento de un byte de tamaño. Cada localidad de almacenamiento tiene asignada una dirección que la identifica.
Una de las funciones básicas que debe implementar un SO es la Administración de la Memoria para tener un control sobre los lugares donde están almacenados los procesos y datos que actualmente se están utilizando.
Sea cual sea es esquema de organización del almacenamiento que se adopte para un sistema específico, es necesario decidir que estrategias se deben utilizar para obtener un rendimiento óptimo .las estrategias de administración del almacenamiento determinan el comportamiento de la administración de memoria cuando se siguen ciertas políticas.

POLÍTICAS.

FIFO: Los procesos se despachan de acuerdo a su tiempo de llega a la cola de procesos listos, si un proceso llega al procesador sale hasta que termine. La política FIFO actualmente no se usa como el esquema principal de un sistema, pero si por ejemplo cuando se usa una política de prioridades y hay procesos con la misma prioridad, a estos se les podría aplicar FIFO.
Round Robin: Los procesos se despachan en la forma que lo hace el FIFO, pero se les asigna una cantidad limitada de tiempo (CUANTUM) en el procesador, si no termina en ese lapso se manda al final de la lista de procesos listos.
SJF (Shortest job first - Prioridad del trabajo mas corto): Se ejecuta primero el proceso en espera que tiene el menor tiempo estimado. SJF favorece a los procesos cortos, ya que los largos podrían llegar a rezagarse mucho tiempo e incluso nunca ejecutarse.

Unidad 3 Administración de Memoria

La administración de memoria se refiere a los distintos métodos y operaciones que se encargan de obtener la máxima utilidad de la memoria, organizando los procesos y programas que se ejecutan de manera tal que se aproveche de la mejor manera posible el espacio disponible.
Para poder lograrlo, la operación principal que realiza es la de trasladar la información que deberá ser ejecutada por el procesador, a la memoria principal. Actualmente esta administración se conoce como Memoria Virtual ya que no es la memoria física del procesador sino una memoria virtual que la representa. Entre algunas ventajas, esta memoria permite que el sistema cuente con una memoria más extensa teniendo la misma memoria real, con lo que esta se puede utilizar de manera más eficiente. Y por supuesto, que los programas que son utilizados no ocupen lugar innecesario.
Las técnicas que existen para la carga de programas en la memoria son: partición fija, que es la división de la memoria libre en varias partes (de igual o distinto tamaño) y la partición dinámica, que son las particiones de la memoria en tamaños que pueden ser variables, según la cantidad de memoria que necesita cada proceso.
Entre las principales operaciones que desarrolla la administración de memoria se encuentran la reubicación, que consiste en trasladar procesos activos dentro y fuera de la memoria principal para maximizar la utilización del procesador; la protección, mecanismos que protegen los procesos que se ejecutan de interferencias de otros procesos; uso compartido de códigos y datos, con lo que el mecanismo de protección permite que ciertos procesos de un mismo programa que comparten una tarea tengan memoria en común

2.6 Técnicas de administración del Planificador


Los algoritmos (técnicas) tienen distintas propiedades según los criterios en los que se basen para su construcción, lo cual se refleja en qué tipo de procesos se puede ver favorecido frente a otro en la disputa del procesador. Antes de realizar la elección de un algoritmo se debe considerar las propiedades de estos frente al criterio de diseño elegido. Algunos de estos son:

EFICACIA
RENDIMIENTO
TIEMPO DE RETORNO O REGRESO
TIEMPO DE ESPERA
TIEMPO DE RESPUESTA A UN EVENTO

2.5 Niveles, Objetivos y Criterios de Planificación

• 

  •   La mayoría de los recursos, si no es que todos, se planifican antes de que se utilicen. La asignación de procesadores físicos a los procesos hace posible que estos realicen su trabajo, y tal asignación es un problema complejo manejado por el Sistema Operativo.

  •   La planificación hace referencia a un conjunto de políticas y mecanismos incorporados al sistema operativo que gobiernan el orden en que se ejecutan los trabajos que deben ser cumplimentados por el sistema informático. 
Objetivos

 El objetivo principal de la planificación es optimizar el rendimiento del sistema y proporcionar un buen servicio a todos los procesos que se encuentren en el. En general, la planificación trata de cubrir los siguientes objetivos:

Justicia.
Máxima capacidad de ejecución.
Máximo numero de usuarios interactivos.
Predecibilidad
Minimización de la sobrecarga.
Equilibrio en el uso de recursos
Seguridad de las prioridades.
Evitar la postergación indefinida. 

CRITERIOS
  Para realizar los objetivos de la planificación, un mecanismo de planificación debe considerar lo siguiente: 
La limitación de un proceso a las operaciones de Entrada / Salida
La limitación de un proceso a la CPU
¿Que urgencia tiene una respuesta rápida?
La prioridad de un proceso
Frecuentemente un proceso genera fallos (carencias) de pagina
Frecuentemente un proceso ha sido apropiado por otro de mas alta prioridad, lo cual significa lo siguiente
¿Cuanto tiempo de ejecución real ha recibido el proceso?



2.4 Concurrencia y secuencialidad





• Los procesos son concurrentes si existen simultáneamente. Los procesos concurrentes pueden funcionar en forma totalmente independiente unos de otros, o pueden ser asíncronos, lo cual significa que en ocasiones requieren cierta sincronización o cooperación.


• Cuando dos o mas procesos llegan al mismo tiempo a ejecutarse, se dice que se ha presentado una concurrencia de procesos. 

modelos de computadora en los que se puede pueden ejecutar procesos concurrentes:

Multiprogramación con un único procesador.
•En este modelo todos los procesos concurrentes ejecutan sobre un único procesador. El sistema operativo se encarga de ir repartiendo el tiempo del procesador entre los distintos procesos, intercalando la ejecución de los mismos para dar así una apariencia de ejecución simultanea.
Multiprocesador.
• Un multiprocesador es una maquina formada por un conjunto de procesadores que comparten memoria principal.
Multicomputadora.

  •    Una multicomputadora es una maquina de memoria distribuida, en contraposición con el multiprocesador que es de memoria compartida. 


2.3 Procesos ligeros: Hilos o hebras





El concepto de proceso es más complejo y sutil que el presentado hasta ahora. Engloba dos conceptos separados y potencialmente independientes: uno relativo a la propiedad de recursos y otro que hace referencia a la ejecución.

Unidad que posee recursos: A un proceso se le asigna un espacio de memoria y, de tanto en tanto, se le puede asignar otros recursos como dispositivos de E/S o ficheros.


Unidad a la que se le asigna el procesador: Un proceso es un flujo de ejecución (una traza) a través de uno o más programas. Esta ejecución se entremezcla con la de otros procesos. De tal forma, que un proceso tiene un estado (en ejecución, listo, etc)

En la mayoría de los sistemas operativos, estas dos características son, de hecho, la esencia de un proceso. Sin embargo, son independientes, y pueden ser tratadas como tales por el sistema operativo. Esta distinción ha conducido en los sistemas operativos actuales a desarrollar la construcción conocida como thread, cuyas traducciones más frecuentes son hilo, hebra y proceso ligero

2.2 Estados y transiciones de los procesos



ESTADOS

El estado de un proceso puede plasmarse como un gráfico el cual asemeja una maquina virtual, así  por ejemplo sea la siguiente figura que especifica el estatus de un proceso:



TRANSICIONES

Nuevo–>Listo
Al crearse un proceso pasa inmediatamente al estado listo.
Listo–>Ejecutando
En el estado de listo, el proceso solo espera para que se le asigne un procesador para ejecutar.
Ejecutando–>Listo
Ante una interrupción que se generé, el proceso puede perder el recurso procesador y pasar al estado de listo
Ejecutando–>Bloqueado
A medida que el proceso ejecuta instrucciones realiza pedidos en distintos componentes (ej.: genera un pedido de E/S).

Bloqueado–>Listo
Una vez que ocurre el evento que el proceso estaba esperando en la cola de espera, el proceso es puesto nuevamente en la cola de procesos listos.
Ejecutando->Terminado
Cuando el proceso ejecuta su última instrucción pasa al estado terminado.



2.1 Concepto de proceso




 Un proceso no es mas que un programa en ejecución, e incluye los valores actuales del contador de programa, los registros y las variables. Conceptualmente cada unos de estos procesos tiene su propia CPU virtual. Desde luego, en la realidad la verdadera CPU conmuta de un proceso a otro. Un proceso es un concepto manejado por el sistema operativo que consiste en el conjunto formado por: Las instrucciones de un programa destinadas a ser ejecutadas por el microprocesador.

Unidad 2 Administración de procesos y del procesador



La gestión de procesos es la tarea fundamental de cualquier sistema operativo moderno. El sistema operativo debe asignar recursos a los procesos, permitir el intercambio de información entre los mismos, proteger los recursos de un proceso del resto y facilitar la sincronización de procesos. Para alcanzar estos objetivos, el sistema operativo mantiene una estructura de datos para cada proceso que describe su estado y los recursos que posee y que permite al sistema operativo imponer un control sobre los procesos (PCB Bloque de Control de Proceso).
En un monoprocesador multiprogramado, debe intercalarse en el tiempo, la ejecución de múltiples procesos. En un multiprocesador, no sólo puede intercalarse la ejecución sino que los procesos se pueden ejecutar simultáneamente. Ambos, intercalación y ejecución simultánea, son formas de concurrencia y llevan a una multitud de problemas complejos, tanto para el programador de aplicaciones como para el sistema operativo. El sistema operativo debe llevar a cabo la función de planificar y ofrecer mecanismos para compartir y sincronizar procesos.