lunes, 25 de noviembre de 2013

U3: 3.2 Memoria Real

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 conetenida en ella es de más rápido acceso.

Sólo la memoria caché es más rapida que la principal, pero su costo es a su vez mayor. Cuando no existe memoria vitual no hay diferenciación entre el espacio de direcciones y la memoria real; el espacio de direcciones que puede ser usado en los programas tiene el mismo tamaño al espacio de la memoria real posible.

Si se utiliza memoria virtual, el espacio de direcciones posibles 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.

La organización y administración de la memoria real de un sistema ha sido y es uno de los factores mas importantes en el diseño de los sistemas operativos.



U3: 3.1 Política y Filosofía


Filosofía:
  
La memoria principal puede ser considerada como un arreglo lineal de localidades de almacenamiento de un byte de tamano. Cada localidad de almacenamiento tiene asignada una direccion que la identifica. 

La filosofía del administrador de memoria consiste en optimizar el uso de este recurso, ya que la memoria es uno de los componentes críticos de todo sistema de cómputo.

POLITICA 


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 politica FIFO actualmente no se usa como el esquema principal de un sistema, pero si por ejemplo cuando se usa una politica de prioridades y hay procesos con la misma prioridad, a estos se les podria 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 podrian llegar a rezagarse mucho tiempo e incluso nunca ejecutarse.

 SRT (Sortest remaining time scheduling ? Tiempo restante mas corto. En SJF una vez que un proceso comienza su ejecucion continua hasta terminar. En SRT, un proceso en ejecucion puede ser desposeido por uno nuevo de menor tiempo de ejecucion.

 HRN: (highest response ratio next ? Prioridad de la tasa de respuesta mas alta): Politica no apropiativa que corrige el retraso excesivo de procesos grandes que produce el SJF, para asi no caer en un favoritismo excesivo por los procesos cortos, lo logra usando una formula basada en el tiempo de espera y el tiempo de servicio, con lo cual la prioridad de cada trabajo no solo esta en funcion del tiempo de servicio sino tambien del tiempo que ha esperado para ser atendido.














U3. Administración de Memoria

U2: 2.6 Técnicas de Administración de Planificar

Planificación Round-Robin:

En este tipo de planificación cada proceso tiene asignado un quantum de tiempo para ejecutarse y en el caso de que no pueda terminar la ejecución en su quantum el proceso pasa de nuevo a la cola de procesos para ser ejecutado por otro quantum luego de recorrer la cola para asegurarse que todos los procesos reciban ese quantum de procesamiento.


Planificación por Prioridad:


En la planificación Round-Robin todos los procesos son tratados con la misma prioridad. Para el caso de este tipo de planificación a cada proceso se le asigna una prioridad y los mismos son ejecutados.



Colas Múltiples:

Las colas múltiples están basadas en una pila que sirve como índice de una lista de procesos que se tienen que ejecutar.

Planificación Garantizada:

En este modelo de planificación se tiene en cuenta la cantidad de usuarios en el sistema y se le asigna a cada uno el tiempo de ejecución de 1/n (siendo n la cantidad total de usuarios) de esa forma el planificador tiene que llevar cuenta del tiempo de ejecución de los procesos y balancear el tiempo que están utilizando el procesador para cumplir con la ecuación previa.

U2: 2.5 Niveles Objetivos y Criterios de Planificación


Planificación de alto nivel: 
Se encarga de llevar procesos de disco a memoria y viceversa. Seleccionando los trabajos que deben admitirse en el sistema.

Planificación de nivel intermedio: 
En algunos casos, en especial cuando el sistema está sobrecargado, el planificador de nivel medio encuentra ventajoso retirar trabajos activos de la memoria para reducir el grado de multiprogramación, y por lo tanto, permitir que los trabajos se completen mas aprisa.

Planificación de bajo nivel: 
Se encarga de pasar de un proceso a otro en memoria principal. Determinando a cuál proceso listo se le asignará el CPU cuando éste se encuentra disponible. O Determina a qué proceso listo se le asigna la CPU cuando esta queda disponible y asigna la CPU al mismo, es decir que “despacha” la CPU al proceso.

Objetivos de la Planificación:

Justicia: 
La planificación debe ser lo mas justa posible con todos los procesos, sin favorecer a unos y perjudicar a otros.

Máxima capacidad de ejecución: 
Debe dar un servicio eficiente para que todos los trabajos se realicen lo mas rápidamente posible. Esto se puede lograr disminuyendo el numero de cambios de proceso.

Máximo número de usuarios interactivos: 
En los sistemas de tiempo compartido se tratara de que puedan estar trabajando el mayor numero de usuarios al mismo tiempo.
Productividad:
La planificación debe realizarse de tal forma que en todo momento pueda saberse como será su ejecución.

Minimización de la sobrecarga: 
La computadora debe tener poca sobrecarga ya que esta afecta directamente al rendimiento final del sistema: a menor sobrecarga mayor velocidad de proceso. 

Equilibrio en el uso de recursos: 
Para obtener un mayor rendimiento en el uso de los recursos y que estos estén ocupados equitativamente el mayor tiempo posible.

Seguridad de las prioridades: 
Si un proceso tiene mayor prioridad que otro, este debe ejecutarse mas rápidamente.

Evitar la postergación indefinida: 
Esto se logra aumentando la prioridad de un proceso mientras espere por un recurso. La prioridad llegara a ser tan alta que al proceso le será asignado el recurso que pidió. 

Criterios de la Planificación:

Tiempo de respuesta: 
Velocidad con que la computadora responde a una petición, depende mucho de la velocidad de los dispositivos E/S.

Tiempo de servicio: 
Tiempo que tarda en ejecutarse un proceso, desde su carga en memoria, espera en la lista de listos, ejecución en CPU y operaciones E/S.

Tiempo de ejecución: 
Tiempo de servicio menos la espera en la lista de listos, o sea, el tiempo teórico que necesitaría el proceso para ejecutarse si fuera el único.

Tiempo de CPU: 
Tiempo que un proceso usa el CPU sin contar el tiempo de bloqueado.

Tiempo de espera: 
Tiempo en que el proceso está activo pero sin ser ejecutado (listas)

Eficiencia:
Que el CPU siempre esté ocupado para lograr un buen rendimiento.

Rendimiento: 
Número de procesos realizados por unidad de tiempo, mientras mayor, mejor. 

U2: 2.4 Concurrencia y Secuenciabilidad


La concurrencia comprende un gran número de cuestiones de diseño, incluyendo la comunicación entre procesos, competencia por los recursos, sincronización de la ejecución de varios procesos y asignación del tiempo de procesador a los procesos y es fundamental para que existan diseños como Multiprogramación, Multiproceso y Proceso distribuido.

Los procesos son concurrentes si existen simultáneamente dos o más y llegan al mismo tiempo a ejecutarse.

La concurrencia puede presentarse en tres contextos diferentes:

• Varias aplicaciones: (multiprogramación) para permitir que el CPU sea compartido entre varios trabajos.

• Aplicaciones estructuradas: Como ampliación del diseño modular y la programación estructurada, algunas aplicaciones pueden implementarse eficazmente como un conjunto de procesos concurrentes.



• Estructura del sistema operativo: Las mismas ventajas de estructuración son aplicables a los sistemas operativos que están implementados como un conjunto de procesos.


Tipos de computadora en los que puede haber concurrencia:

• Multiprogramación con un CPU. El sistema operativo se encarga de repartir el CPU entre los procesos, intercalando su ejecución para dar una apariencia de ejecución simultánea.

• Multiprocesador. Máquina formada por más de un CPU que comparten memoria principal. Los procesos no sólo intercalan su ejecución sino también la superponer.

Tipos de procesos concurrentes:

Proceso independiente: El que se ejecuta sin cooperación de otros. 

Procesos cooperantes: Los que están diseñados para trabajar conjuntamente, deben comunicarse e interactuar.

Tipos de interacción:

• Motivada porque los procesos comparten o compiten por el acceso a recursos. 

• Motivada porque los procesos se comunican y sincronizan entre sí para alcanzar un objetivo común. 

Aspectos de un sistema operativo para gestionar la concurrencia:

1.Debe seguir la pista de los distintos procesos activos, por medio de PBC’s
2. Debe asignar y quitar recursos a cada proceso activo:
• Tiempo de procesador. 
• Memoria: (virtual, swapping). 
• Archivos .
• E/S.
3. Debe proteger datos y recursos de cada proceso contra injerencias no intencionadas de otros procesos.

U2: 2.3 Procesos Ligeros: Hilos y hebras


Los procesos ligeros son programas en ejecución son básicamente procesos pero a diferencia de éstos últimos que solo tienen un hilo de ejecución los primeros tienen el hilo principal más hilos secundarios o hijos, en éste caso todos los procesos hijos comparten la información del hilo principal pero además puede cada hilo tener su información privada.


Dentro de la información propia tenemos:

*Contador de programa
*Pila
*Registros.
*Estado del proceso ligero.
*Dentro de la información compartida tenemos:
*Variables globales.
*Archivos abiertos
*Señales
*Semáforos.
*Contabilidad.



Los hilos o procesos ligeros son una parte de código o miniprograma que puede ser ejecutada independientemente, de forma que una aplicación o un applet puede tener varios hilos ejecutándose simultáneamente y efectuando distintas tareas; estos hilos se encuentran dentro de un programa y son parte de él. 


Los hilos, a veces también llamados contextos de ejecución, pueden ser utilizados para la implementacion de algoritmos paralelos o procesos concurrentes, sin ser necesario disponer de equipos con estructura de multiprocesador. En el caso de un solo procesador, los procesos ligeros incorporan mecanismos para compartirlo, estableciéndose prioridades 
entre ellos y también facilidades de sincronización, cuando es necesario. 

Multiproceso:

Se refiere a dos programas que se ejecutan "aparentemente" a la vez, bajo el control del sistema operativo.


Multihilo: 

Se refiere a que dos o mas tareas se ejecutan "aparentemente" a la vez, dentro de un mismo programa.