RSS

jueves, 19 de noviembre de 2009

UNIDAD 4: ADMINISTRACION DE LA MEMORIA

4.1GESTION DE MEMORIA
• Memoria Principal


– Área de almacenamiento dividido en unidades a las que se puede referenciar a través de una dirección.

– Recurso básico: Para que un programa se ejecute debe encontrarse en memoria principal, al menos, una parte

• Gestor de Memoria

– Parte del Sistema Operativo que se encarga de las tareas relacionadas con la administración de la Memoria Principal.

– Dependencia total del Hardware

• Según sea este, será el tipo de gestión de memoria

• Tareas del Gestor de Memoria

– Asignación de Memoria Principal a los procesos que la solicitan

– Localización de espacios libres, y ocupados

– Aprovechamiento máximo de dicha memoria

• Relación con otras partes del sistema operativo

Planificadores

2. Requisitos de un Sistema de Gestión de Memoria

• Reubicación o Correspondencia

– El programador debe trabajar al margen de la localización de su código en memoria

– El gestor de memoria (HW+SW) debe establecer la correspondencia de direcciones lógicas y físicas

• Protección

– El gestor de memoria debe proteger las zonas asignadas a cada proceso de accesos por parte de terceros.

• Compartición

– El gestor de memoria debe permitir compartición de memoria entre varios procesos.

• Organización lógica

– El gestor de memoria debe comprender la organización lógica formada por módulos que tienen los programas (texto, datos, procedimientos, pila...)

• Organización física

– Debe encargarse de la localización de espacios libres en memoria principal donde cargar los programas.

– Debe poder proporcionar un mecanismo para poder ejecutar programas cuyo tamaño supere el de la propia memoria principal (Memoria Virtual)

4.1.1 ORGANIZACION DE LA MEMORIA



En primer lugar tenemos que distinguir claramente entre tres tipos de memoria:


Una: la memoria EEPROM donde almacenaremos el programa que haremos, esta memoria solo podrá ser leida por el pic (el pic va leyendo las instrucciones del programa almacenado en esta memoria y las va ejecutando). Al apagar el pic esta memoria no se borra. Dos: la memoria RAM en cuyos registros se irán almacenando los valores de las variables que nosotros queramos y cuando nosotros queramos (por programa), al apagar el pic esta memoria se borra. Tres: la memoria EEPROM para datos, es un espacio de memoria EEPROM en la que se pueden guardar variables que queremos conservar aunque se apague el pic. No se tratará aquí por ser una memoria mas difícil de emplear.



El límite original de direccionamiento de la PC-XT, basado en el procesador

8088, era de 1 MB (AB = 20 bits). Por otra parte el procesador Motorola 68000

(usada en la Mac y Amiga, por ejemplo) contó desde sus comienzos con un límite de

memoria de 16 MB. Estas cotas fijaban la capacidad de ambos procesadores de

direccionar tanto Memoria de Datos como Memoria de Programa.

Los primeros 640 KB (en el caso de la línea Intel) de la memoria RAM se

transformaron en el área de memoria para el Sistema Operativo (S.O.) y los programas

de aplicación, conocida como la memoria convencional.

Figura 4.1

La diferencia entre el límite fijado por los 20 bits del bus de direcciones y la

memoria convencional, es lo que se conoce como memoria superior. Se trataba de un

área asignada a diferentes dispositivos periféricos tales como extensiones de la ROM,

buffer de video, adaptadores para dispositivos periféricos, controladores de red, etc.

Sin embargo gran parte de esta zona quedaba en la mayoría de los casos

desaprovechada, lo que indujo a que posteriores versiones del MS-DOS (versión 5.0

en adelante) hicieran uso de estos bloques libres, cargando el S.O., controladores de

dispositivos y programas residentes en los mismos (dichos bloques son conocidos

como UMB).

Los procesadores 80286 en adelante permiten trabajar en lo que se llama modo

protegido para alcanzar direcciones mayores al megabyte. O sino, bajo un esquema de

mapeo de memoria similar al del 8088, se torna al modo real.

La memoria que se puede acceder en modo real, con el uso de lo que se conoce

como manejadores de memoria, se llama memoria extendida (XMS). Ésta es

sumamente necesaria, por ejemplo, para correr aplicaciones for Windows. Los

primeros 64 KB de memoria extendida es lo que se denomina memoria alta (HMA).

La memoria expandida (EMS) se instala en una tarjeta de EMS y viene

incorporada a su administrador. Los programas emplean EMS en bloques de 64 KB

dirigiéndose a una parte del área de memoria superior llamada marco de página EMS,

debido a que un administrador de memoria EMS proporciona acceso sólo a una

cantidad limitada de memoria expandida.

4.1.2 ADMINISTRADOR DE LA MEMORIA

El Administrador 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 e 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.



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 forma posible el espacio disponible. Existen cuatro tipos de esquema s de asignación de memoria, estos esquemas de la administración de la memoria rara vez se utilizan en los sistemas operativos actuales.
Configuración de un solo usuario
Particiones fijas
Particiones dinámicas
Particiones dinámicas reubicables
Ya que estos eran utilizados en los primeros sistemas de computo. Pero es importante su estudio, ya que cada uno introdujo conceptos fundamentales que ayudaron a la evolución de la administración de la memoria.

ESQUEMA CONTIGUO DE USUARIO UNICO
El primer esquema de asignación de la memoria funcionaba de la siguiente manera:
Si el programa era demasiado grande y no cabía en el espacio de memoria disponible, no se podía ejecutar. A pesar de que las primeras computadoras eran demasiado grandes tenían muy poca memoria.
Esto demuestra un factor limitante para todas las computadoras, tiene una cantidad finita de memoria y si un programa no cabe, hay que incrementar el tamaño de la memoria principal o modificar el programa.
PARTICIONES FIJAS
El primer intento para posibilitar la multiprogramación fue la creación de las particiones fijas o estáticas, en la memoria principal, una partición para cada tarea. El tamaño de la partición se especificaba al encender el sistema, cada partición podía reconfigurarse al volver encender el sistema o reiniciar el sistema.
Este esquema introdujo un factor esencial, la protección del espacio de memoria para la tarea. Una vez asignada una partición a una tarea, no se permitía que ninguna otra tarea entrara en sus fronteras.
Este esquema de partición es mas flexible que la de usuario único, por que permite que varios programas estén en memoria al mismo tiempo.
PARTICIONES DINÁMICAS
Con las particiones dinámicas, la memoria principal disponible aun se conserva en bloques contiguos, pero a las tareas nada mas se les da memoria que solicitan cuando se cargan para su procesamiento. Aunque es una mejoría significativa en relación con las particiones fijas, no se elimina el problema de las mismas.
Un esquema de particiones dinámicas utiliza toda la memoria al cargar las primeras tareas, pero conforme entran nuevas tareas en el sistema que no son del mismo tamaño de las que acaban de salir de la memoria se acomodan en los espacios disponibles de acuerdo con su prioridad.
PARTICIONES DINÁMICAS RE LOCALIZABLES
Con este esquema de asignación de memoria, el administrador de memoria relocaliza los programas para reunir los bloques vacios y compactarlos, para hacer un bloque de memoria lo bastante grande para aceptar algunas o todas las tareas en espera de entrar.
La compactación no es una tarea sencilla. Primero, todos los programas en memoria se deben relocalizar, de manera que queden contiguos; luego hay que ajustar cada dirección y cada referencia a una dirección en todo programa para tomar en consideración la nueva localización del programa en memoria.
ADMINISTRACIÓN DE LA MEMORIA SISTEMAS RECIENTE
ASIGNACIÓN DE LA MEMORIA EN PÁGINAS
Se basa en el concepto de dividir cada tarea de llegada en páginas de igual tamaño. Algunos sistemas operativos escogen el tamaño de la página igual al tamaño de bloque de memoria. Que es el tamaño de las secciones de disco en las cuales se almacena la tarea.

Las secciones de un disco se conocen como “sectores”. Y los sectores de la memoria principal se denominan marcos de página.

Antes de ejecutar un programa, el administrador de la memoria lo prepara mediante:

1.-la determinación del número de páginas del programa.

2.-la ubicación de suficientes marcos de pagina vacios en la memoria principal.

3.-la carga de todas las páginas del programa de los mismos.



PAGINACIÓN POR DEMANDA
La paginación por demanda introdujo la idea de cargar nada más una porción del programa en la memoria para su procesamiento. Fue el primer esquema ampliamente utilizado que elimino la necesidad de colocar toda la tarea en la memora desde el principio hasta el final.
Ejemplo: cuando los usuarios escogen la primera opción del menú de un programa de aplicación, los otros módulos que no se requieren en ese momento se pueden extraer de la memoria y cargar de nuevo cuando sean llamados. No requiere todas las páginas al mismo tiempo.
1.- Los módulos de manejo de errores escritos por el usuario se procesan solo cuando se detectan un error específico durante la ejecución.
2.-Muchos módulos son mutuamente excluyentes.
3.- Ciertas opciones de programa son excluyentes entre si o no resultan siempre accesibles.

ASIGNACIÓN DE MEMORIA EN SEGMENTOS
El concepto de segmentación se basa en la práctica común entre los programadores de estructurar programas en módulos, agrupamientos lógicos de código. Con la asignación de memoria en segmentos, cada tarea se divide en varios segmentos de tamaños diferentes, uno por cada modulo que contiene piezas que ejecutan funciones relacionadas.
La tabla de tareas lista todas las tareas en proceso.
La tabla de mapa de segmentos lista detalles sobre cada segmento.
La tabla de mapa de memoria vigila la asignación de la memoria.
Es una combinación de segmentos y de paginación por demanda y ofrece los beneficios lógicos de la segmentación y las ventajas físicas de la paginación.

4.1.3 JERARQUIA DE MEMORIA



Jerarquía de memorias


En el diseño del sistema informático, en lo que a la decisión de la memoria a utilizar, se ha de encontrar un compromiso entre su capacidad y su velocidad. Ocurre que en algunas situaciones se necesita una gran capacidad de almacenamiento (es el caso de la memoria secundaria) y en otros es conveniente una mayor velocidad (memoria principal, caché, etc..).

La memoria secundaria trata de proveer una gran capacidad de almacenamiento (sacrificando la velocidad), mientras que la memoria que almacena la información que se está procesando en un determinado momento ha de ser rápida aunque no cuente con una gran capacidad.

Desde el punto de vista de la ejecución de un programa, no todos los datos son accedidos con la misma frecuencia estadística. Datos próximos (e instrucciones próximas) tienen una mayor probabilidad de ser accedidos. Por esta razón las cachés, aunque no cuentan con una capacidad suficiente como para almacenar un proceso en ejecución, aumentan notablemente la velocidad del sistema informático.

Actualmente se suelen utilizar dos niveles de caché en los ordenadores domésticos. La caché de primer nivel está integrada en el interior del µP, la caché de segundo nivel normalmente está integrada en la placa base o bien en el circuito impreso que contiene a la CPU.

4.1.4 ESTRATEGIAS PARA LA ADMINISTRACION DE MEMORIA

Se dividen en las siguientes categorías:

• Estrategias de búsqueda:

o Estrategias de búsqueda por demanda.
o 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 cuándo 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 colocará (cargará) un programa nuevo.

Las “estrategias de reposición” están relacionadas con la determinación de qué fragmento de programa o de datos desplazar para dar lugar a los programas nuevos.


4.1.5 MULTIPROGRAMACIÓN DE PARTICIÓN FIJA, PARTICIÓN VARIABLE CON INTERCAMBIO DE ALMACENAMIENTO.



MULTIPROGRAMACIÓN CON PARTICIONES FIJAS

El sistema de multiprogramación en los cuales varios usuarios compiten al mismo tiempo por los recursos del sistema. El trabajo está esperando la terminación de una operación E/S cederá la CPU a otro trabajo que este listo para realizar cálculos. Si es que hay una espera. De esta forma pueden efectuarse simultáneamente las operaciones de E/S y cálculos de la CPU.
PROTECCION EN LOS SISTEMAS CON MULTIPROGRAMACIÓN.

En os sistemas con multiprogramación contigua, la protección se logra a menudo con varios registros de limites. Con dos registros se puede establecer los límites superior e inferior de la partición de un usuario o se puede indicar el límite inferior y la longitud de la región.


FRAGMENTACIÓN EN LA MULTIPROGRAMACIÓN CON PARTICIONES FIJAS.
La fragmentación de almacenamiento ase presenta en todos los sistemas de cómputo, sea cual sea la organización de su almacenamiento. En los sistemas con multiprogramación y particiones fijas, la fragmentación ocurre porque los trabajos de los usuarios no llenan por completo las particiones designadas o porque una partición se queda sin utilizar por ser demasiado pequeña para contener un trabajo en espera.

MULTIPROGRAMACIÓN CON PARTICIONES VARIABLES

Esta hace suposiciones sobre el tamaño de los trabajos. Llega un espacio cuando lo necesite. No hay desperdicio, pues la partición de un trabajo tiene exactamente el tamaño del trabajo.
COMPACTACION DE ALMACENAMIENTO

La técnica de compactación del almacenamiento implica trasladar todas las áreas ocupadas del almacenamiento a algún extremo de la memoria principal. Esto deja un gran vació único de almacenamiento libre, en lugar de los numerosos vacíos pequeños característicos de la multiprogramación con particiones variables. Ahora todo el almacenamiento libre está contiguo, así que un trabajo en espera puede ejecutarse si sus necesidades de memoria son satisfechas por el hueco único resultante de la compactación.


MULTIPROGRAMACIÓN CON INTERCAMBIO DE ALMACENAMIENTO

En el esquema de “intercambio” los programas del usuario no requieren permanecer en la memoria principal hasta su terminación. Una variante consiste en que un trabajo se ejecuta hasta que ya no pueda continuar: Cede el almacenamiento y la CPU al siguiente trabajo. La totalidad del almacenamiento se dedica a un trabajo durante un breve periodo de tiempo. Los trabajos son “intercambiados”, dándose que un trabajo puede ser intercambiado varias veces antes de llegar a su terminación.

Los sistemas de intercambio fueron los predecesores de los sistemas de paginación.

Manteniendo al mismo tiempo varias “imágenes de usuario o imágenes de memoria” en la memoria principal.

Retirando una imagen de usuario de la memoria principal solo cuando es necesario su almacenamiento para una nueva imagen.

Incrementando la cantidad de memoria principal disponible en el sistema.

Las imágenes de usuario (imágenes de memoria) retiradas del almacenamiento principal se graban en el almacenamiento secundario (discos)


4.2 MEMORIA VIRTUAL

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 más rápido acceso. Solo la memoria cache es más rápida que la principal, pero su costo es a su vez mayor. 


4.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. 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 más rápido acceso. Solo la memoria cache es más rápida que la principal, pero su costo es a su vez mayor.

4.2.1 Administracion de memoria con mapas de bits

Administración de la memoria con mapas de bits



Podemos dividir la memoria en pequeñas unidades, y registrar en un mapa de bits las unidades ocupadas y desocupadas. Las unidades pueden ser de unas pocas palabras cada una, hasta de un par de KB. A mayor tamaño de las unidades, menor espacio ocupa el mapa de bits, pero puede haber mayor fragmentación interna. Desventaja: para encontrar hoyo de n unidades hay que recorrer el mapa hasta encontrar n ceros seguidos (puede ser caro).










Con un mapa de bits, la memoria se divide en unidades de asignación, las cuales pueden ser tan pequeñas como unas cuantas palabras o tan grandes como varios kilobytes. A cada unidad de asignación le corresponde un bit en el mapa de bits, el cual toma el valor de 0 si la unidad está libre y El tamaño de la unidad de asignación es un aspecto importante del diseño. Mientras más pequeña sea esta unidad, más grande será el mapa de bits. Una memoria de 32n bits utilizará n bits del mapa, de forma que dicho mapa sólo ocupa 1/33 de la memoria. Si la unidad de asignación es grande el mapa de bits será pequeño, pero se podría desperdiciar una parte valiosa de la memoria en la última unidad si el tamaño del proceso no es un múltiplo exacto de la unidad de asignación.


Un mapa de bits es una forma sencilla para llevar un registro de las palabras de la memoria en una cantidad fija de memoria, puesto que el tamaño del mapa sólo depende del tamaño de la memoria y del tamaño de la unidad de asignación. El problema principal de esto es que, cuando se decide traer a la memoria un proceso de k unidades, el administrador de la memoria debe buscar en el mapa una cadena de k ceros consecutivos.

La búsqueda en un mapa de bits de ciertas cadenas es una operación lenta, por lo que los mapas no se utilizan con frecuencia.




4.2.2 Administracion de memoria con listas enlazadas





Otra forma es con una lista enlazadas: estado (ocupado o en uso), dirección (de inicio), tamaño. Cuando un proceso termina o se pasa a disco, si quedan dos hoyos juntos, se funden en un solo segmento. Si la lista se mantiene ordenada por dirección, podemos usar uno de los siguientes algoritmos para escoger un hoyo donde poner un nuevo proceso.













 First-fit.
Asignar el primer hoyo que sea suficientemente grande como para contener al proceso.


Best-fit.
Asignar el menor hoyo en el que el proceso quepa.


Worst-fit.
 Asignar el mayor hoyo.


Cada vez que se asigna un hoyo a un proceso, a menos que quepa exactamente, se convierte en un segmento asignado y un hoyo más pequeño. Best-fit deja hoyos pequeños y worst-fit deja hoyos grandes. Simulaciones han mostrado que first-fit y best-fit son mejores en términos de utilización de la memoria. First-fit es más rápido .

 

 



Cada entrada de la lista especifica un hueco (H) o un proceso (P), la dirección donde comienza, su longitud y un apuntador a la siguiente entrada.


La lista de segmentos está ordenada por direcciones. Este orden tiene la ventaja de que al terminar o intercambiar un proceso, la actualización de la lista es directa.


Cuando los procesos y los huecos se mantienen en una lista ordenada por direcciones, se pueden utilizar diversos algoritmos para asignar la memoria para un proceso de reciente creación o intercambio


Algoritmo primero en ajustarse.

El administrador de la memoria revisa toda la lista de segmentos hasta encontrar un espacio lo suficientemente grande. El espacio se divide entonces en dos partes, una para el proceso y otra para la memoria no utilizada, excepto por el caso poco probable de un ajuste exacto. Este algoritmo es rápido, puesto que busca lo menos posible.

4.2.3 Distribucion del espacio para el intercambio

Los grupos de software son colecciones de paquetes que admiten distintas funciones y controladores de hardware.



Para una instalación inicial, debe seleccionar el grupo de software que se va a instalar basándose en las funciones que desea realizar en el sistema.


En el caso de una modernización, deberá realizarla al grupo de software instalado en el sistema. por ejemplo, si ha instalado previamente en el sistema el grupo de software Usuario final, no puede usar la opción de modernización especificando el grupo de software. Sin embargo, durante la modernización puede agregar software al sistema que no forme parte del grupo de software instalado en ese momento.

Al instalar el software, puede elegir, agregar o suprimir paquetes del grupo de software que haya seleccionado. Para ello es necesario que conozca las dependencias de software y la manera como está empaquetado el software.


La compatibilidad reducida de red contiene el número mínimo de paquetes y el grupo completo de software más compatibilidad contiene todos los paquetes.








Las recomendaciones sobre el espacio de disco


  • Espacio de intercambio 
  • Modificaciones 
  • Paquetes adicionales de software
Es posible que descubra que los grupos de software necesitan menos espacio en disco







4.3 MEMORIA VRTUAL

La memoria virtual es una técnica para proporcionar la ilusión de un espacio de memoria mayor que la memoria física, sin tener en cuenta el tamaño de la memoria física.



Está soportada por el mecanismo de traducción de memoria, junto con un almacenamiento rápido en disco duro (swap).


El espacio de direcciones virtual, está mapeado de tal forma que una pequeña parte de él, está en memoria real y el resto almacenado en el disco.


4.3.1 Paginacion memoria virtual

  • Igual que la paginación simple.
  • No es necesario cargar todas las páginas.
  • Las páginas no residentes se cargan por demanda.







Ventajas.

No fragmentación externa. Alto grado de multiprogramación. Gran espacio virtual para el proceso.



Desventaja.

Sobrecarga por gestión compleja de memoria.




Cada proceso tiene su propia tabla de paginas.








Si la pagina no se modifica, al realizarse el swap a disco no se necesitara copiar desde la memoria principal a la memoria secundaria.



Ocurre cuando se referencia a una dirección virtual y ella no reside en la memoria real, se presenta una interrupción fallo de página.

TAMAÑO DE PAGINAS

Páginas pequeñas



Menos fragmentación interna.


Más páginas para el proceso.


Muchas páginas por proceso.


La tabla de paginas crecerá en tamaño.


Se necesita mas MV para carga la tabla.


El fallo de página se reduce.


Páginas grandes


Mas fragmentación interna.


C/página contiene mas porciones del proceso.


Se ocupa memoria innecesariamente.


El fallo de página se incrementa.


4.3.2 Segmentacion memoria virtual

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: subrutina, arreglo, etc. Luego, cada espacio de direcciones de programa consiste de una colección de segmentos, que generalmente reflejan la división lógica del programa. La segmentación permite alcanzar los siguientes objetivos:




1. Modularidad de programas: cada rutina del programa puede ser un bloque sujeto a cambios y recopilaciones, sin afectar por ello al resto del programa.


2. Estructuras de datos de largo variable: ejm. Stack, donde cada estructura tiene su propio tamaño y este puede variar.


3. Protección: se puede proteger los módulos del segmento contra accesos no autorizados.


4. Comparición: dos o más procesos pueden ser un mismo segmento, bajo reglas de protección; aunque no sean propietarios de los mismos.


5. 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 solo cuando sea necesario.








  • Igual que la segmentación simple.
  • No es necesario cargar todos los segmentos. 
  • Las segmentos se cargan por demanda. 
  • Segmentos de tamaño dinámico, según la demanda.
  • Se puede alterar los programas y recompilarlos independientemente.


Tabla de Segmentos


El SO debe mantener una lista de huecos libres.

Un bit expresa si el segmento se encuentra ya en memoria.
Un bit expresa si el segmento ha sido modificado.





 






4.3.3 Algoritmos de Sustitución de Páginas

El SO perfecto eliminaría siempre la página menos necesaria, aquella que en el futuro resultará ser la última en ser usada de todas las existentes en la tabla




En la práctica, la mejor estrategia es aquella que tenga el menor número de fallas-de-página, i.e. page-fault rate








 
Primera en entrar, primera en salir (FIFO, First In, First Out)
 
 
En este método el sistema operativo sólo tiene que guardar en qué orden las páginas fueron cargadas, de modo que al necesitar hacer espacio pueda fácilmente elegir la primera página cargada. Se usa una cola, al cargar una página nueva se ingresa en el último lugar. Aunque las colas FIFO son simples e intuitivas, no se comportan de manera aceptable en la aplicación práctica, por lo que es raro su uso en su forma simple. Uno de los problemas que presentan es la llamada Anomalía FIFO o Anomalía de Belady. Belady encontró ejemplos en los que un sistema con un número de marcos de páginas igual a tres tenía menos fallos de páginas que un sistema con cuatro marcos de páginas. El problema consiste en que podemos quitar de memoria una página de memoria muy usada, sólo porque es la más antigua.





Segunda oportunidad

Es una pequeña modificación al algoritmo FIFO, que funciona bastante mejor que aquel. En este caso cuando una página debe ser sacada se toma la primera en la cola, y en vez de sacarla, consulta el valor de un bit de referencia. En caso de estar fijado (en 1) se cambia el bit a 0 y se lo coloca al final de la cola, actualizando su tiempo de carga como si recién hubiera llegado a la memoria. De esta forma, se le da una segunda oportunidad. Si el bit se encuentra sin fijar(en 0), la página se saca de memoria. Cada vez que la MMU accede a una página, fija su bit de referencia a 1. Para esto es necesario soporte para bit de referencia por hardware.











Reloj

Existe una variante de este algoritmo que sobre la misma idea presenta una mejora en la implementación. Es el algoritmo del reloj, que lo que hace es tener una lista circular, de forma que al llegar al último elemento de la lista, pasa automáticamente al primero. Los elementos no se mueven al final de la cola cuando son accedidos, simplemente se pone su bit de referencia a 1. Esto nos evita tener que hacer movimientos de punteros en el caso de implementarlo con una lista enlazada. De hecho, se puede implementar con un array perfectamente, ahorrando así memoria.








No usada recientemente (Not Recently Used, NRU)

Este algoritmo favorece a las páginas que fueron usadas recientemente. Funciona de la siguiente manera: cuando una página es referenciada, fija el bit de referencia para esa página. Similarmente, cuando una página es modificada, fija su bit de modificación. Usualmente estas operaciones son realizadas por el hardware, aunque puede hacerse también por software. En un tiempo fijo, el sistema operativo pone en 0 los bits de referencia de todas las páginas, de modo que las páginas con su bit de referencia en 1 son las que fueron referenciadas dentro del último intervalo de reloj. Cuando una página debe ser reemplazada, el sistema operativo divide las páginas en cuatro categorías:






  • Categoría 0: no referenciada, no modificada


  • Categoría 1: no referenciada, modificada


  • Categoría 2: referenciada, no modificada


  • Categoría 3: referenciada, modificada



Las mejores páginas para cambiar son las que se encuentran en la categoría 0, mientras que las peores son las de la categoría 3. Se desaloja al azar una página de la categoría más baja que no esté vacía. Este algoritmo se basa en la suposición de que es mejor desalojar una página modificada a la que no se ha hecho referencia en al menos un tic de reloj, en vez de una página limpia que se está usando mucho.




Menos usada recientemente (Least Recently Used, LRU)


Este algoritmo difiere del de 'No usada recientemente' en el hecho de que aquel sólo se fija en el intervalo de tiempo desde que se pusieron en 0 los bits de referencia de las páginas, mientras que el algoritmo de 'Menos usada recientemente' intenta proveer un comportamiento casi óptimo mediante la observación de las páginas que menos fueron usadas recientemente. Este tipo de páginas, estadísticamente son las que tienen menor probabilidad de ser usadas nuevamente.
























4.3.4 Aspectos de diseño para el sistema

El modelo de conjunto de trabajo 


 En la forma más pura de paginación, los procesos se inician con ninguna de sus páginas en la memoria. Tan pronto como la CPU trata de obtener la primera instrucción, detecta una falla página que hace que el sistema operativo traiga a la memoria la página que contiene dicha instrucción. Por lo regular, pronto ocurren otras fallas de página al necesitarse variables globales y la pila. Después de un tiempo, el proceso tiene la mayor parte de las páginas que necesita y se dedica a ejecutarse con relativamente pocas fallas de página. Tal estrategia se denomina paginación por demanda porque las páginas se cargan sólo cuando se piden, no por adelantado. 











En un sistema de tiempo compartido

Los procesos a menudo se transfieren al disco (esto es, todas sus páginas se eliminan de la memoria) para que otro proceso tenga oportunidad de usar la CPU. Surge la pregunta de qué hacer cuando se vuelve a traer un proceso a la memoria. Técnicamente, no hay que hacer nada. El proceso simplemente causará fallas de página hasta que haya cargado su conjunto de trabajo. El problema es que tener 20, 50 o incluso 100 fallas de página cada vez que se carga un proceso hace lento el funcionamiento y además desperdicia mucho tiempo de CPU, pues el sistema operativo requiere unos cuantos milisegundos de tiempo de CPU para procesar una falla de página.


Seguridad



El análisis va a determinar las acciones que los usuarios pueden o no realizar en función de su situación en el juego, pero hay diversas formas de saltarse estas reglas mediante el funcionamiento normal.  A continuación se detallan algunas medidas para evitar esto:


 •Comprobar que el usuario puede ver la página o realizar la acción solicitada, ya que la web permite acceder directamente escribiendo la dirección de una página, pudiendo acceder de esta forma a páginas que no tienen un enlace directo por no estar permitidas a ese usuario.


•Comprobar cada parámetro recibido, asegurándose de que los valores que toma son coherente, ya que ha podido modificarlos mediante el método anterior e incluso creando sus propios formularios.

Rendimiento


Gran parte de las decisiones que se han de tomar, y que pueden influir incluso en el análisis recaen sobre la necesidad de ajustar el consumo de recursos del sistema a las posibilidades de la máquina.




•Ancho de banda:

Es la cantidad de información que se puede enviar desde el servidor hasta los ordenadores clientes en un periodo de tiempo. El mejor aliado para mejorar el rendimiento en este concepto es la caché. Es trabajo del servidor indicar cuando va a volver a cambiar la página, lo que muchas veces no se sabe con exactitud, pero se puede aproximar. En nuestro caso hay páginas que no cambiarán, y otras que lo harán con una periodicidad definida.

•Capacidad de proceso:

 El proceso de datos en nuestro caso se puede dividir en aquel necesario para la creación de las páginas dinámicas, y los procesos periódicos que simulan el mundo. El primer caso es mas sencillo y a veces innecesario gracias a la caché. Aún así hay muchas peticiones debido al alto número de usuarios, con lo que habrá que tratar de optimizar cada petición de página. Los procesos periódicos si consumirán mas recursos ya que alguno tendrá incluso que tratar variables .

•Capacidad de almacenamiento:

Otro problema a tratar es la capacidad del disco duro ya que se va a almacenar mucha información, pero sobre todo por que el consumo de espacio dependerá entre otras cosas de las acciones de los usuarios. En caso de que el espacio se reduzca demasiado se utilizará un algoritmo que liberará estos recursos irrelevantes, comenzando por aquellos que menos uso han recibido.











Accesibilidad


Al sistema se va a poder acceder de tres maneras distintas:




Mediante un interfaz complejo:
 que use las últimas tecnologías (XHTML, ecmascript, CSS, SVG,...), que pueda ser usado por la mayoría de las personas pero que no sacrifique la calidad a un acceso generalizado con cualquier navegador.


Con un interfaz diseñado:
 mediante el uso de XHTML, y que por extensión pueda ser usado por cualquier otro usuario. Se podrán añadir hojas de estilo e incluso scripts siempre que el incluirlos no impida el buen funcionamiento para los usuarios invidentes o con software limitado (navegadores antiguos).

Usabilidad


Mide la facilidad de uso del interfaz. En este campo el objetivo es que no sea necesario leer un manual para saber como realizar las distintas acciones, que la intuición sea suficiente para que cualquie usuario pueda navegar por el interfaz. Se realizarán abundantes pruebas con usuarios reales mediante diversos prototipos hasta sacar la versión definitiva.

Aspectos legales


Hay dos leyes que van a afectar al diseño en mayor o menor medida:






•Ley de Servicios de la Sociedad de la Información (LSSI): El aspecto que nos interesa de esta ley es aquel que obliga a controlar los contenidos de un sitio, no permitiendo aquellos que atenten contra los derechos humanos. Esto se traduce en que cualquier contenido que pueda editar el usuario debe poder eliminarse fácilmente.


•Ley Orgánica de Protección de Datos (LOPD): Legisla sobre el tratamiento de los datos de carácter personal. Estos son definidos como cualquier información concerniente a personas físicas identificadas o identificables. Hay que aclarar si se va a almacenar esta información y si es así adaptar el sistema a los requisitos establecidos por esta ley.







4.3.5 Liberación de Páginas


Asignar bloques de páginas tiende a fragmentar la memoria al dividir los bloques grandes para conseguir bloques más pequeños.
El código de liberación de páginas recombina páginas en bloques de mayor tamaño siempre que es posible.






De hecho, el tamaño de bloque de página es importante pues facilita la recombinación enbloques grandes.


Siempre que se libera un bloque de páginas, se comprueba si está libre el bloque adyacente de igual tamaño.

Si es así, se combina con el bloque de páginas recién liberado para formar un bloque nuevo de tamaño doble.

Cada vez que dos bloques de páginas se recombinan en uno mayor, el algoritmo de liberación intenta volver a recombinarlo en otro aún mayor.

De esta forma, los bloques de páginas libres son tan grandes como la utilización de la memoria permita.






Un proceso usuario puede emitir una “liberación voluntaria de página” para liberar el marco de página cuando ya no necesitara esa página



Se puede eliminar el “desperdicio” y acelerar la ejecución.


El inconveniente es que la incorporación de mandatos de liberación de páginas dentro de los programas de usuarios puede ser peligroso y retrasar el desarrollo de aplicaciones.


“Los compiladores y S. O. deberían detectar automáticamente situaciones de liberación de página mucho antes de lo que es posible con estrategias de conjuntos de trabajo”.




jueves, 5 de noviembre de 2009

UNIDAD 3 "ADMINISTRACION DEL PROCESADOR"

3.1 PLANEACION DE TRABAJOS (JOB SCHEDULING)


Objetivo de la planificación: Minimizar el tiempo de espera y minimizar el tiempo de respuesta. La planificación (scheduling) es la base para lograr la multiprogramación.



Un sistema multiprogramado tendrá varios procesos que requerirán el recurso procesador a la vez. Esto sucede cuando los procesos están en estado ready (pronto). Si existe un procesador disponible, se debe elegir el proceso que será asignado para ejecutar. La parte del sistema operativo que realiza la elección del proceso es llamada planificador (Schedule)



La planificación hace referencia a un conjunto de políticas Y mecanismos incorporados a sistemas operativos que gobiernan el orden en que se ejecutan los trabajos.


Un planificador es un módulo del S.O que selecciona el siguiente trabajo que hay que admitir en el sistema y el siguiente proceso que hay que ejecutar


En muchos sistemas, la actividad de planificación se divide en tres funciones independientes: planificación a largo, medio, y corto plazo.


se trata de obtener un plan, y por otra, delimitar la ejecutabilidad de las acciones en el tiempo, asignándoles los recursos necesarios y teniendo en cuenta las restricciones generales del problema (posiblemente utilizando criterios de optimización y garantizando su ejecutabilidad).





 Tradicionalmente, los métodos para solucionar problemas de planificación y scheduling se dividen en dos etapas diferentes. Sin embargo, la resolución de estos problemas no es abordable mediante estos procesos por separados. La idea principal es la integración de ambos (ver Fig. 2). Si los procesos de planificación y scheduling colaboran durante la resolución del problema, se podría obtener una mejor solución. Por ello, trabajamos en una arquitectura independiente del dominio en la que el planificador opera de forma simultánea con el scheduler. Esta integración permite garantizar la ejecutabilidad del plan y satisfacer óptimamente las restricciones del problema, simultáneamente con la construcción del plan.






Mediante el lenguaje de especificación, basado en frames, del que ya disponemos, se puede definir el dominio del problema. Una vez obtenido el plan óptimo mediante el proceso de planificación-scheduling, éste pasa a ejecución. Durante la ejecución del plan pueden aparecer nuevas restricciones del problema, incidencias, etc., debiéndose producir una reactividad en el proceso readaptando el plan obtenido.


3.2 CONCEPTOS BÁSICOS

CONCEPTOS


Maximizar la utilización del CPU obtenida con la multiprogramación

Ciclo de ráfaga CPU–I/O. La ejecución del proceso consiste de un ciclo de CPU y de una espera de I/O.


Distribución de las ráfagas de CPU


Un planificador de tareas es una aplicación de software de la empresa que se encarga de la ejecución desatendida fondo, comúnmente conocido por razones históricas como del procesamiento por lotes.


Los sinónimos son lote sistema, Sistema de Gestión de Recursos Distribuidos (SGDD), y Distributed Resource Manager (DRM). Hoy en día el trabajo de programadores suelen ofrecer una interfaz gráfica de usuario y un único punto de control para la definición y el seguimiento de las ejecuciones en el fondo de una red distribuida de computadoras. Trabajo cada vez más programadores están obligados a organizar la integración de los negocios en tiempo real con las actividades tradicionales de transformación de fondo que, a través de diferentes plataformas de sistemas operativos y entornos de aplicaciones de negocio.





Utilización máxima de la CPU se obtiene vía multiprogramación


Ciclo ráfagas CPU–I/O – la ejecución de un proceso consiste de un ciclo de ejecución de CPU continuado por un ciclo de espera por I/O


Distribución de ráfagas de CPU



• Job – Un job es una tarea de base de datos definida en términos de una secuencia válida de comandos Transact-SQL, como por ejemplo una serie de comandos dump o dbcc.


• Schedule – Un schedule es un horario de ejecución, definido en términos de atributos particulares, como fecha y hora de inicio, periodicidad, fecha y hora de finalización, etc.


• Scheduled Job – Un scheduled job es un job que ha sido asociado a un schedule y que, en consecuencia, se ejecutará automáticamente de acuerdo a lo definido en dicho schedule. La ejecución del scheduled job se lleva a cabo en el ASE denominado Target Server.


• Target Server – Es el servidor ASE en el cual se ejecutará un scheduled job.


• JS Server – Es el servidor ASE que almacena y administra los componentes del Job Scheduler (jobs, Schedule y scheduled jobs) y es el encargado de controlar la ejecución de los scheduled jobs a través de los JS Tasks e interactuando con el JS Agent. En este servidor reside la base de datos sybmgmtdb en donde se almacena toda la información del sistema del Job Scheduler.


• JS Task – Es una tarea interna que corre en el ASE denominado JS Server, encargada de determinar qué scheduled jobs deben ser ejecutados en cada momento del tiempo. Cuando una tarea JS Task determina que una scheduled job debe ser ejecutado, pasa la información al JS Agent, quien inicia la ejecución en el ASE denominado Target Server.


• JS Agent – Es un proceso del sistema operativo que corre en la mísma máquina del JS Server. El JS Agent es el encargado de controlar la ejecución de los scheduled jobs en el Target Server, de acuerdo a la información recibida por los JS Task.