martes, 29 de noviembre de 2011

Resumen de La Administracion de Memoria

En definitiva, creemos que conocer y manejar los procesos y lo que es en escencia la Administracion de Datos, es sumamente importante, como Informaticos debemos manejar totalmente esta informacion.
 Es asi como se desprende que la operación principal en la gestión de la memoria es traer los procesos a la memoria principal para que el procesador las pueda ejecutar. Para esto, la gestión de memoria debe satisfacer los siguientes requisitos ;Reubicación como el sistema operativo se encarga de gestionar la memoria y traer el proceso a la memoria principal a través de direcciones, al ser cargado o ejecutado el proceso no adquiere la misma dirección,  por lo tanto es necesario reubicar las direcciones y con la ayuda del sistema operativo es fácil adquirirlas para localizar los procesos presentes en memoria; Protección, es un requisito que se encarga de regular que los procesos presentes en memoria no invadan o violen el espacio en memoria de otros procesos ya sea de forma accidental o por error. La reubicación dificulta un poco la protección, por esto las referencias de memoria se deben confirmar o comprobar en tiempo de ejecución para asegurar que se refiere al espacio de memoria asignado a dicho proceso. 


La organización y administración de la “memoria principal ”, “memoria primaria” o “memoria real” de un sistema ha sido y es uno de los factores más importantes en el diseño de los S. O. [1987, Deitel].
Los términos “memoria” y “almacenamiento” se consideran equivalentes.
Los programas y datos deben estar en el almacenamiento principal para:
  • Poderlos ejecutar.
  • Referenciarlos directamente.
Se considera almacenamiento secundario” o “almacenamiento auxiliar” al generalmente soportado en discos. (Morris Mano - 1994)
Los hechos demuestran que generalmente los programas crecen en requerimientos de memoria tan rápido como las memorias:
  • “Ley de Parkinson parafraseada”: Los programas se desarrollan para ocupar toda la memoria disponible para ellos.
La parte del S. O. que administra la memoria se llama “administrador de la memoria”: (David Luis la Red Martínez)
  • Lleva un registro de las partes de memoria que se están utilizando y de aquellas que no.
  • Asigna espacio en memoria a los procesos cuando estos la necesitan.
  • Libera espacio de memoria asignada a procesos que han terminado. 

lunes, 14 de noviembre de 2011

Sincronizacion de procesos

                                           Sobre los procesos cooperantes:

- Pueden compartir espacios de direcciones o datos a través de un archivo.
- Problema a considerar:
- Como evitar la inconsistencia de los datos compartidos
- Como acceder a espacios critico de código compartido.

                                            Alternativas de sincronización :
-Semáforos
-Monitores
-Paso de mensajes

                                                    Sección crítica

 Sean un conjunto de procesos cooperantes. Cada proceso tiene un segmento de código
en el cual puede modificar variables comunes, o un archivo, o una tabla.
 Llamamos sección crítica (SC) a ese segmento de código.


                                                       Exclusión mutua
 Cuando un proceso esta ejecutando ese segmento de código crítico, ningún otro proceso
puede ejecutarlo.
 La ejecución de la sección crítica es mutuamente exclusiva en el tiempo.
Solución al problema de la sección crítica
Aplicación del protocolo
 Las instrucciones de maquina (load, test, load) se ejecutan atómicamente.
La solución para múltiples procesos la da el Algoritmo del panadero (bakery algorithm).
Semáforos
Es una herramienta de sincronización Sirve para solucionar el problema de la sección crítica.
 Sirve para solucionar problemas de sincronización.
Implementación
 Es una variable entera sujeta a dos operaciones: wait y signal
 Estas operaciones se ejecutan de manera indivisible.
 Cuando un proceso modifica el valor del semáforo, otros procesos no pueden
modificarlo simultáneamente. Se inicializa con valor no negativo
 Wait decrementa el valor del semáforo. Si el valor se hace negativo, el proceso se bloquea.
 Signal incrementa el valor del semáforo. Si el valor no es positivo, se desbloquea un
proceso bloqueado por un wait.
Esquema de la SC con semáforos

domingo, 30 de octubre de 2011

Algoritmos de planificación


Planificación Primero en Entrar-Primero en Salir (FIFO, First In First Out)

Cuando se tiene que elegir a qué proceso asignar la CPU se escoge al que llevara más tiempo listo. El proceso se mantiene en la CPU hasta que se bloquea voluntariamente.

La ventaja de este algoritmo es su fácil implementación, sin embargo, no es válido para entornos interactivos ya que un proceso de mucho cálculo de CPU hace aumentar el tiempo de espera de los demás procesos . Para implementar el algoritmo (ver figura 2) sólo se necesita mantener una cola con los procesos listos ordenada por tiempo de llegada. Cuando un proceso pasa de bloqueado a listo se sitúa el último de la cola.
En a) el proceso P7 ocupa la CPU, los procesos P2, P4 y P8 se mantienen en la lista de preparados. En b) P7 se bloquea (ya sea al realizar una E/S, una operación WAIT sobre un semáforo a cero u otra causa) y P2 pasa a ocupar la CPU. En c) ocurre un evento (finalización de la operación de E/S, operación SIGNAL, ...) que desbloquea a P7, esto lo vuelve listo, pasando al final de la cola de procesos listos.

Algunas de las características de este algoritmo es que es no apropiativo y justo en el sentido formal, aunque injusto en el sentido de que: los trabajos largos hacen esperar a los cortos y los trabajos sin importancia hacen esperar a los importantes. Por otro lado es predecible pero no garantiza buenos tiempos de respuesta y por ello se emplea como esquema secundario.

Planficación por Turno Rotatorio (Round Robin).

Este es uno de los algoritmos más antiguos, sencillos y equitativos en el reparto de la CPU entre los procesos, muy válido para entornos de tiempo compartido. Cada proceso tiene asignado un intervalo de tiempo de ejecución, llamado cuantum o cuanto. Si el proceso agota su cuantum de tiempo, se elige a otro proceso para ocupar la CPU. Si el proceso se bloquea o termina antes de agotar su cuantum también se alterna el uso de la CPU. El round robin es muy fácil de implementar. Todo lo que necesita el planificador es mantener una lista de los procesos listos, como se muestra en la figura 6.2.
En esta figura en a) el proceso P7 ocupa la CPU. En b) P7 se bloquea pasando P2 a ocupar la CPU. En c) P2 agota su cuantum con lo que pasa al final de la lista y P4 ocupa la CPU. La figura 4 representa un ejemplo más largo de la ocupación de la CPU utilizando el algoritmo round robin.


Este algoritmo presupone la existencia de un reloj en el sistema. Un reloj es un dispositivo que genera periódicamente interrupciones. Esto es muy importante, pues garantiza que el sistema operativo (en concreto la rutina de servicio de interrupción del reloj) coge el mando de la CPU periódicamente. El cuantum de un proceso equivale a un número fijo de pulsos o ciclos de reloj. Al ocurrir una interrupción de reloj que coincide con la agotación del cuantum se llama al dispatcher.



 
Planificación por Prioridad al más corto (SJF, Short Job First).

Al igual que en el algoritmo FIFO las ráfagas se ejecutan sin interrupción, por tanto, sólo es útil para entornos batch. Su característica es que cuando se activa el planificador, éste elige la ráfaga de menor duración. Es decir, introduce una noción de prioridad entre ráfagas. Hay que recordar que en los entornos batch se pueden hacer estimaciones del tiempo de ejecución de los procesos.
  La ventaja que presenta este algoritmo sobre el algoritmo FIFO es que minimiza el tiempo de finalización promedio, como puede verse en el siguiente ejemplo:
Ej: Supongamos que en un momento dado existen tres ráfagas listos R1, R2 y R3, sus tiempos de ejecución respectivos son 24, 3 y 3 ms. El proceso al que pertenece la ráfaga R1 es la que lleva más tiempo ejecutable, seguido del proceso al que pertenece R2 y del de R3. Veamos el tiempo medio de finalización (F) de las ráfagas aplicando FIFO y SJF:

  FIFO F = (24 + 27 + 30) / 3 = 27 ms.
  SJF F = (3 + 6 + 30) / 3 = 13 ms.

Se puede demostrar que este algoritmo es el óptimo. Para ello, consideremos el caso de cuatro ráfagas, con tiempos de ejecución de a, b, c y d. La primera ráfaga termina en el tiempo a, la segunda termina en el tiempo a+b, etc. El tiempo promedio de finalización es (4a+3b+2c+d)/4. Es evidente que a contribuye más al promedio que los demás tiempos, por lo que debe ser la ráfaga más corta, b la siguiente, y así sucesivamente. El mismo razonamiento se aplica a un número arbitrario de ráfagas.
No obstante, este algoritmo sólo es óptimo cuando se tienen simultáneamente todas las ráfagas. Como contraejemplo, considérense cinco ráfagas desde A hasta E, con tiempo se ejecución de 2, 4, 1, 1 y 1 respectivamente. Sus tiempos de llegada son 0, 0, 3, 3 y 3. Primero se dispone de A y B, puesto que las demás ráfagas no han llegado aún. Con el algoritmo SJF las ejecutaríamos en orden A, B, C, D, y E con un tiempo de finalización promedio de 4.6. Sin embargo, al ejecutarlas en orden B, C, D, E y A se tiene un promedio de finalización de 4.4.
 
Planificación por Prioridad al Tiempo Restante más Corto (SRTF, Short Remaining Time First).
Es similar al anterior, con la diferencia de que si un nuevo proceso pasa a listo se activa el dispatcher para ver si es más corto que lo que queda por ejecutar del proceso en ejecución. Si es así el proceso en ejecución pasa a listo y su tiempo de estimación se decrementa con el tiempo que ha estado ejecutándose.
 
En la figura 6.5 tenemos un ejemplo de funcionamiento del algoritmo en el que se observa cómo se penalizan las ráfagas largas (como en SJF). Un punto débil de este algoritmo se evidencia cuando una ráfaga muy corta suspende a otra un poco más larga, siendo más largo la ejecución en este orden al ser preciso un cambio adicional de proceso y la ejecución del código del planificador.