miércoles, 18 de mayo de 2016

Paginación (Técnica actual)


Para solucionar el problema de fragmentación externa dada con particiones variables. Usar particiones fijas en memoria virtual y física

Memoria Virtual



Paginación


Permiten la ubicación no contigua de programas para combatir la fragmentación y la degradación de la memoria. Al poder ubicarse de forma no contigua, un programa ya no necesita un hueco de su tamaño, sino que la cantidad total de memoria libre sea mayor o igual. 
Traduciendo direcciones virtuales

Una dirección virtual tiene dos partes:
Número de página virtual y offset
Número de página virtual es un índice en tabla de páginas
Entrada en tabla de página contiene número de marco de página
Dirección física se traduce a:

 Número Marco de página:offset



Ventajas de la Paginación


Fácil para asignar memoria física
Memoria física se administra usando una lista de marcos de páginas libres
Para asignar un marco de página, se saca de la lista
Fragmentación externa no es un problema
Fácil quitarle páginas a programas
Páginas son del mismo tamaño
Uso de bit válido para saber que páginas ha perdido el proceso
Tamaño de páginas definido como múltiplos de tamaños de bloques de disco

Desventajas de Paginación


Expone Fragmentación interna
Proceso no puede usar memoria de marco de página que le sobra a otro proceso
Referencia a memoria en 2 pasos
Tabla de página y luego Memoria
Solución, usar hardware como cache para acelerar referencias : Memoria requerida para mantener tablas de páginas puede ser grande
Necesita una entrada en tabla de página por número de página virtual

Segmentación


Es un esquema de manejo de memoria mediante el cual la estructura del programa refleja su división lógica, llevándose a cabo una agrupación lógica de la información en bloques de tamaño variable denominados segmentos. Cada uno de ellos tienen información lógica del programa.Luego, cada espacio de direcciones de programa consiste de una colección de segmentos, que generalmente reflejan la división lógica del programa. 

OBJETIVOS: 

Modularidad de programas: Cada rutina del programa puede ser un bloque sujeto a cambios y recopilaciones, sin afectar por ello al resto del programa. 
Estructuras de datos de largo variable: Donde cada estructura tiene su propio tamaño y este puede variar. 
Protección: Se pueden proteger los módulos del segmento contra accesos no autorizados. 
Compartición: Dos o más procesos pueden ser un mismo segmento, bajo reglas de protección; aunque no sean propietarios de los mismos. 
Enlace dinámico entre segmentos: Puede evitarse realizar todo el proceso de enlace antes de comenzar a ejecutar un programa. Los enlaces se establecerán sólo cuando sea necesario.


Ventajas y Desventajas


El programador puede conocer las unidades lógicas de su programa, dándoles un tratamiento particular. 
Es posible compilar módulos separados como segmentos el enlace entre los segmentos puede suponer hasta tanto se haga una referencia entre segmentos. 
Debido a que es posible separar los módulos, se hace más fácil la modificación de los mismos. Cambios dentro de un módulo no afecta al resto de los módulos. 
Es fácil el compartir segmentos. 
Es posible que los segmentos crezcan dinámicamente según las necesidades del programa en ejecución. 
Existe la posibilidad de definir segmentos que aún no existan. Así, no se asignará memoria, sino a partir del momento que sea necesario hacer usos del segmento. Un ejemplo de esto, serían los arreglos cuya dimensión no se conoce hasta tanto no se comienza a ejecutar el programa. En algunos casos, incluso podría retardar la asignación de memoria hasta el momento en el cuál se referencia el arreglo u otra estructura de datos por primera vez.

GESTIÓN DE MEMORIA

La gestión de memoria representa un vínculo delicado entre el rendimiento (tiempo de acceso) y la cantidad (espacio disponible).
Siempre se busca obtener el mayor espacio disponible en la memoria, pero pocas veces existe la predisposición para comprometer el rendimiento.

La gestión de memoria también debe realizar las siguientes funciones:
Permitir que la memoria se comparta (en sistemas de multiprocesos).
Asignar bloques de espacio de memoria a distintas tareas;
Proteger los espacios de memoria utilizados (evitar que un usuario modifique una tarea realizada por otro usuario).
Optimizar la cantidad de memoria disponible, específicamente a través de sistemas de expansión de memoria.

Los mecanismos de distribución de memoria
Segmentación: los programas se dividen en paquetes de longitudes variadas conocidos como "segmentos".
Paginación: consiste en dividir la memoria en bloques y los programas en páginas de longitud fija.


Particiones Fijas


Memoria física se divide en particiones fijas

Todas las particiones son de tamaño fijo y nunca cambian, pero pueden haber particiones de diferentes tamaños

Hardware requerido: registro base y registro límite
Dirección física = dirección virtual + registro base

Registro base es cargado por el SO después de cambio de contexto, y entonces un proceso se va a ejecutar

Ventajas
Sencillo, cambio de contexto rápido
Desventajas
Fragmentación interna
Partición mas grande de lo necesario (sobra memoria que no puede utilizar otro proceso)
Fragmentación externa
Caso en que dos particiones disponibles pero ambas muy pequeñas para contener un proceso mas grande

martes, 17 de mayo de 2016

Objetivos y Criterios de Planificación

Los objetivos del planificador se resumen en:

a) Reparto equitativo del tiempo de procesador
b) Eficiencia en el uso del procesador
c) Menor tiempo de respuesta en uso interactivo
d) Cumplir plazos de ejecución de los sistemas de tiempo real

  • Ser equitativa: debe intentar hacer una planificación justa, esto es, se debe tratar a todos los procesos de la misma forma y no aplazar indefinidamente ningún proceso. 
  • Ser eficiente: debe maximizar el uso de los recursos tales como intentar que la ocupación de la CPU sea máxima. Al mismo tiempo se debe intentar reducir el gasto extra por considerar que es trabajo no productivo. 
  • Lograr un tiempo bueno de respuesta, es decir, que los usuarios interactivos reciban respuesta en tiempos aceptables.
  • Lograr un tiempo de proceso global predecible. Esto quiere decir que un proceso debe ejecutarse aproximadamente en el mismo tiempo y casi al mismo costo con independencia de la carga del sistema.
  • Elevar al máximo la productividad o el rendimiento, esto es, maximizar el número de trabajos procesados por unidad de tiempo.

Planificación Apropiativa y No apropiativa 

MODOS DE DECISIÓN:

PREFERENTE        ----------------------> NO APROPIATIVO

NO PREFERENTE ----------------------> APROPIATIVO


No Apropiativo(Una vez que se le ha otorgado la cpu a un proceso, no le puede ser retirada)

Características
  • Significa que los trabajos “largos” hacen esperar a los trabajos “cortos”.
  • Logra más equidad en el tratamiento de los procesos.
  • Logra hacer más predecibles los tiempos de respuesta puesto que los trabajos nuevos de prioridad alta no pueden desplazar a los trabajos en espera.

Apropiativo(Una vez que se le ha otorgado la cpu a un proceso, le puede ser retirada) El proceso que se está ejecutando actualmente puede ser interrumpido y pasado al estado de listos por el sistema operativo.

Características
  • Es útil cuando los procesos de alta prioridad requieren atención rápida.
  • Es importante para garantizar buenos tiempos de respuesta en sistemas interactivos de tiempo compartido.
  • Tiene su costo en recursos, ya que el intercambio de contexto implica sobrecarga y además requiere mantener muchos procesos en el almacenamiento principal, en espera de la cpu, lo que también implica sobrecarga.
Niveles de Planificación


Conjunto de políticas y mecanismos construidos dentro del sistema operativo
que planifican la forma de conseguir que los procesos a ejecutar lleguen a ejecutarse.


El scheduling está muy relacionado con la gestión de los recursos.

Existen tres niveles de scheduling, estos niveles son:
  • Planificador de la CPU o a corto plazo.
  • Planificador a medio plazo.
  • Planificador a largo plazo
En la planificación de procesos se suelen incluir varios niveles,
en función del periodo temporal que cubren

PLANIFICACIÓN A LARGO PLAZO
La planificación a largo plazo determina cuáles son los programas admitidos en
el sistema. De este modo, se controla el grado de multiprogramación.
Una vez admitido, un proceso es añadido a la cola del planificador a corto plazo.
PLANIFICACIÓN A MEDIANO PLAZO
La planificación a medio plazo forma parte de la función de intercambio.
La decisión de cargar un proceso en memoria principal.Pasar a listo
PLANIFICACIÓN A CORTO PLAZO
Pasar un proceso a Nuveo pasando por la transición admitir. El planificador a
medio plazo se ejecuta con algo más de frecuencia, para tomar la decisión del
intercambio. El planificador a corto plazo, también conocido como distribuidor
(dispatcher), es el de ejecución más frecuente y toma decisiones con un mayor
detalle sobre el proceso que se ejecutará a continuación.
El planificador a corto plazo se ejecuta cuando ocurre un suceso que puede
conducir a la interrupción del proceso actual o que ofrece la oportunidad de
expulsar de la ejecución al proceso actual en favor de otro.



·Interrupciones del reloj
·Interrupciones de E/S
·Llamadas al sistema operativo

·Señales

domingo, 10 de abril de 2016

Ronda (Round Robin)


Ronda (Round Robin)


A cada proceso que esté en la lista de procesos listos lo atenderemos por un sólo quantum  Si un proceso no ha terminado de ejecutar al final de su quantum, será interrumpido y puesto al final de la lista de procesos listos, para que espere a su turno nuevamente. Los procesos que nos entreguen los planificadores a mediano o largo plazo se agregarán también al final de esta lista.




El proceso más corto a continuación (SPN)

Se selecciona para entrar a ejecutarse el proceso de menor duración. Esta planificación es  óptima para los tiempos medios de respuesta, finalización y espera. 






Menor Tiempo restante (SRT)

Este método busca favorecer a los procesos que ya han pasado tiempo ejecutando que a los recién llegados. De hecho, los nuevos procesos no son programados directamente para su ejecución, sino que se les forma en la cola de procesos nuevos, y se avanza únicamente con la cola de procesos aceptados.




Highest Reponse Ratio Next (HRRN)



Políticas de PLanificación

Modos de decisiónPreferente: Es el que puede tener varios procesos en cola
No preferente: No elije prioridad entre procesos, y lo hace en cola y libera el procesador cuando termine el proceso.
CONCEPTOS DE PLANIFICACIÓNTIEMPOSTiempo de llegada: Cuando el proceso es admitido lo establece el usuario o el S.O.
Tiempo de servicio: Lo define el programador cuando diseña el código del programa y su duración.
Tiempo de retorno: EL tiempo total que gasto el proceso en instancia de ejecución.
Tiempo de espera: El proceso ya está en memoria (Admitido) peor no está en ejecución.
Tiempo de latencia: Es el intervalo entre fin de un proceso e inicio de otro B/R guarda un backup del proceso 1 e inicia otro para que recupere los datos cuando el proceso 1 reinicie su ejecución, que se guarda en BCP (Bloque de control de procesos)

Quantum
El tiempo mínimo que se permitirá a un proceso el uso del procesador. En Windows, dependiendo de la clase de proceso que se trate, un quantum durará entre 2 y 12 ticks (esto es, entre 20 y 180 ms), y en Linux, entre 10 y 200 ticks (o milisegundos).


Tiempo de retorno (Turnaround time): Es el intervalo de tiempo desde que un proceso es cargado hasta que este finaliza su ejecución.
Tiempo de espera (Waiting time): Es la suma de los intervalos de tiempo que un proceso estuvo en la cola de procesos listos
Tiempo de respuesta (Response time): Es el intervalo de tiempo desde que un proceso es cargado hasta que brinda su primer respuesta. 

Politica FCFS (FIRST COME FIRST SERVERD)


Este es un mecanismo cooperativo, con la mínima lógica posible: Cada proceso se ejecuta en el órden en que fue llegando, y hasta que suelta el control. El despachador es muy simple, básicamente una cola




Objetivos y Criterios de planificación de porcesos

Objetivo de la Planificación 
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, y podemos nombrar los siguientes:
  • 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 numero de usuarios interactivos. En los sistemas de tiempo compartido se tratara de que puedan estar trabajando el mayor numero de usuarios al mismo tiempo.
  • Predecibilidad. La planificacion debe realizarse de tal forma que en todo momento pueda saberse como sera su ejecucion.
  • Minimizacion 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 postergacion 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 sera asignado el recurso que pidió.
Criterios de planificación 
Para realizar los objetivos de la planificación,  debe considerar lo siguiente:
  • La limitación de un proceso a las operaciones de Entrada / Salida: cuando un proceso consigue la cpu, ?la utiliza solo  antes de generar una petición de Entrada / Salida?
  • Si un proceso es por lote (batch) o interactivo: los usuarios interactivos deben recibir inmediato servicio para garantizar buenos tiempos de respuesta.
  • La prioridad de un proceso: a mayor prioridad mejor tratamiento.
  • Frecuentemente un proceso genera fallos (carencias) de pagina:
    • Probablemente los procesos que generan pocos fallos de pagina hayan acumulado sus “conjuntos de trabajo” en el almacenamiento principal.
    • Los procesos que experimentan gran cantidad de fallos de pagina aun no han establecido sus conjuntos de trabajo.
    • Un criterio indica favorecer a los procesos que han establecido sus conjuntos de trabajo.
    • Otro criterio indica favorecer a los procesos con una tasa alta de fallos de pagina ya que rapidamente generaran una peticion de Entrada / Salida.
  • Frecuentemente un proceso ha sido apropiado por otro de mas alta prioridad, lo cual significa lo siguiente:
    • A menudo los procesos apropiados deben recibir un tratamiento menos favorable.
    • Cada vez que el Sistema Operativo asume la sobrecarga para hacer ejecutar este proceso, el corto tiempo de ejecucion antes de la apropiacion no justifica la sobrecarga de hacer ejecutar al proceso en primer lugar.
  • Cuanto tiempo de ejecución real ha recibido el proceso?: un criterio considera que debe ser favorecido un proceso que ha recibido muy poco tiempo de cpu.