memorias

memorias
La tecnologia nos invade cada dia y debemos prepararnos para tal invasion

viernes, 8 de mayo de 2015

GESTION DE MEMORIA SECUNDARIA

  A diferencia de la Memoria Principal la Memoria Secundaria, auxiliar, masiva, externa no es tan veloz pero tiene gran capacidad para almacenar información en dispositivos tales como discos, cintas magnéticas, discos ópticos. Frecuentemente los datos y programas se graban en la Memoria Secundaria, de esta forma, cuando se ejecuta varias veces un programa o se utilicen repetidamente unos datos, no es necesario darlos de nuevo a través del dispositivo de entrada.
Un sistema de almacenamiento secundario es necesario, ya que la memoria principal (almacenamiento primario) es volátil y además muy pequeña para almacenar todos los programas y datos. También es necesario mantener los datos que no convenga mantener en la memoria principal. El SO se encarga de:

Planificar los discos.
Gestionar el espacio libre. 
Asignar el almacenamiento.

     Definición de Archivos
 En la Memoria Secundaria un archivo consta de un conjunto de bloques (correspondiente a la cantidad de información que se transfiere físicamente en cada operación de acceso (lectura o escritura).
El Sistema Operativo o Sistema de Gestión de Archivos es el encargado de la asignación de bloques a archivos, de lo que surgen dos cuestiones, en primer lugar, debe asignarle el espacio de Memoria Secundaria a los archivos y, en segundo lugar, es necesario guardar constancia del espacio disponible para asignar.

Características de los Archivos
 ESTRUCTURA: El sistema de archivos permite al usuario especificar alguna estructura adicional a los archivos, aparte de su estructura básica (bits, bytes).
Algunos sistemas operativos permiten el uso del ALIAS, lo cual hace que los usuarios hagan referencia a un mismo archivo físico mediante nombres lógicos diferentes.
Cuando se utiliza un archivo, el descriptor es copiado en memoria principal para las referencias que a éste se hagan.
Nombre: Nombre asignado por el usuario.


Atributos de un archivo
 Los atributos de un archivo son: el nombre, el tipo, la localización (donde se ubica), derechos de acceso, tiempo de creación/acceso/modificación, UID del creador, etc.
Cada archivo tiene:
  • Su nombre y datos.
  • Elementos adicionales llamados atributos, que varían considerablemente de sistema a sistema.
Algunos de los posibles atributos de archivo son:
  • “Protección”: quién debe tener acceso y de qué forma.
  • “Contraseña”: contraseña necesaria para acceder al archivo.
  • “Creador”: identificador de la persona que creó el archivo.
  • “Propietario”: propietario actual.
  • “Bandera exclusivo - para - lectura”: 0 lectura / escritura, 1 para lectura exclusivamente.
  • “Bandera de ocultamiento”: 0 normal, 1 para no exhibirse en listas.
  • “Bandera de sistema”: 0 archivo normal, 1 archivo de sistema.
  • “Bandera de biblioteca”: 0 ya se ha respaldado, 1 necesita respaldo.
  • “Bandera ascii / binario”: 0 archivo en ascii, 1 archivo en binario.
  • “Bandera de acceso aleatorio”: 0 solo acceso secuencial, 1 acceso aleatorio.
  • “Bandera temporal”: 0 normal, 1 eliminar al salir del proceso.
  • “Banderas de cerradura”: 0 no bloqueado, distinto de 0 bloqueado.
  • “Longitud del registro”: número de bytes en un registro.
  • “Posición de la llave”: ajuste de la llave dentro de cada registro.
  • “Longitud de la llave”: número de bytes en el campo llave.
  • “Tiempo de creación”: fecha y hora de creación del archivo.
  • “Tiempo del último acceso”: fecha y hora del último acceso al archivo.
  • “Tiempo de la última modificación”: fecha y hora de la última modificación al archivo.
  • “Tamaño actual”: número de bytes en el archivo.
  • “Tamaño máximo”: tamaño máximo al que puede crecer el archivo.
Podemos también citar como características las siguientes:
  • Volatilidad, que es la frecuencia con la que se agregan y borran ítems en un archivo;
  • Actividad, que es el porcentaje de ítems accedidos durante un determinado período detiempo;
  • Medida, que es la cantidad de información almacenada en el archivo
Bloque de Control de Archivo
      Existen varios mecanismos para acceder los archivos: Directorios, descriptores de archivos, mecanismos de control de acceso y procedimientos para abrir y cerrar archivos.
ü Descriptores de archivos.
ü El descriptor de archivos o bloque de control de archivos es un bloque de control que contiene información que el sistema necesita para administrar un archivo.
ü Es una estructura muy dependiente del sistema.
ü Los descriptores de archivos suelen mantenerse en el almacenamiento secundario; se pasan al almacenamiento primario al abrir el archivo.
ü El descriptor de archivos es controlado por el sistema de archivos ; el usuario puede no hacer referencia directa a él.
A cada uno de los archivos se le asigna un descriptor el cual contendrá toda la información que necesitará el sistema de archivos para ejecutar con él los comandos que se le soliciten. El descriptor se mantendrá en memoria principal desde que el archivo es abierto hasta que sea cerrado, y debe tener al menos la siguiente información, identificación del archivo, lugar de almacenamiento, información del modo de acceso.
Identificación del archivo. Consiste de dos partes que es el nombre simbólico que es el que le da el usuario y un identificador interno que es asignado por el sistema operativo (número). Lugar de almacenamiento así como el tamaño del archivo. Modo de acceso. Se debe indicar en forma explícita quien puede accesar el archivo y conque derecho.
Mecanismo De Control De Acceso.
    Control de un sistema de información especializado en detectar los intectos de acceso, permitiendo el paso de las entidades autorizadas, y denegando el paso a todas las demás. Involucra medios técnicos y procedimientos operativos.
Mecanismo que en función de la identificación ya autenticada permite acceder a datos o recursos.
Los Directorios son utilizados por el sistema operativo para llevar un registro de los archivos que incluye el nombre, los atributos y las direcciones en disco donde se almacenan los datos del archivo referenciado.
Open (abrir): antes de utilizar un archivo, un proceso debe abrirlo. La finalidad es permitir que el sistema traslade los atributos y la lista de direcciones en disco a la memoria principal para un rápido acceso en llamadas posteriores.
Close (cerrar): cuando concluyen los accesos, los atributos y direcciones del disco ya no son necesarios, por lo que el archivo debe cerrarse y liberar la tabla de espacio interno.

Operaciones Sobre El Bloque De Control De Archivo
El sistema operativo brinda servicios para la manipulación de archivos:
  • Crear y abrir: provee la creación de un archivo en el sistema de archivos. Se debe proveer un nombre del nuevo archivo. Además, se provee la apertura de un archivo ya existente para acceder o modificar la información.
  • Escribir: poder escribir información en un archivo previamente abierto.
  •  Leer: poder leer información en un archivo previamente abierto.
  • Reposicionar dentro de un archivo: lograr acceder a cualquier parte del archivo.
  • Eliminar: destruir el archivo a nivel del sistema de archivo.
  • Truncar: eliminar la información que está dentro del archivo, pero sin eliminar el archivo.
Por lo general, los sistemas tienen una tabla de archivos abierto por proceso. Estos archivos se abren a través de un llamado al sistema y, de esa forma, se puede operar con ellos (leer, escribir, etc.). Finalmente, el archivo es cerrado antes que finalice la ejecución del proceso.
Tener un archivo abierto para el sistema implica mantener una estructura que tenga por lo menos:
  • puntero de archivo (file pointer) para operaciones de lectura y escritura, contador de archivos abiertos
  • ubicación del archivo en el dispositivo, derechos de acceso.
  • Algunos sistemas proveen sistema de acceso único a un archivo (lock) por parte de los procesos.
  • A su vez, varios sistemas implementan el mapeo de archivos al espacio de usuario del proceso. De esta forma, no es necesario realizar read y write para operar sobre el archivo, sino accederlo directamente. Esto trae el beneficio de no hacer el llamado a sistema para operar sobre el archivo.

Directorios de Memoria Secundaria

Definición:
      Un directorio es una agrupación de archivos de datos, atendiendo a su contenido, a su propósito o a cualquier criterio que decida el usuario. Técnicamente el directorio almacena información acerca de los archivos que contiene: como los atributos de los archivos o dónde se encuentran físicamente en el dispositivo de almacenamiento.
 Tipos de Directorios
De un único nivel: el sistema tiene un solo directorio con todos los archivos de todos los usuarios.
De dos niveles: el sistema habilita un solo directorio por cada usuario.
Tipo Árbol: el sistema permite que cada usuario tenga tantos directorios como necesite, respetando una jerarquía.
Manejo de espacio de memoria secundaria
      A diferencia de la Memoria Principal la Memoria Secundaria, auxiliar, masiva, externa no es tan veloz pero tiene gran capacidad para almacenar información en dispositivos tales como discos, cintas magnéticas, discos ópticos. Frecuentemente los datos y programas se graban en la Memoria Secundaria, de esta forma, cuando se ejecuta varias veces un programa o se utilicen repetidamente unos datos, no es necesario darlos de nuevo a través del dispositivo de entrada.
En la Memoria Secundaria un archivo consta de un conjunto de bloques (correspondiente a la cantidad de información que se transfiere físicamente en cada operación de acceso (lectura o escritura).
El Sistema Operativo o Sistema de Gestión de Archivos es el encargado de la asignación de bloques a archivos, de lo que surgen dos cuestiones, en primer lugar, debe asignarle el espacio de Memoria Secundaria a los archivos y, en segundo lugar, es necesario guardar constancia del espacio disponible para asignar.
El sistema de archivos se ocupa primordialmente de administrar el espacio de almacenamiento secundario, sobre todo el espacio en disco. El manejo del espacio libre en disco se lleva a cabo de la siguiente manera:
Vector de bits. El espacio libre en disco es frecuentemente implementado como un mapa de bits, donde cada block es representado por un bit y si el bloc es libre el bit es cero de lo contrario está asignado.11000111
Lista ligada. Una lista ligada de todos los blocks libres. Otra implantación se consigue guardando la dirección del primer block libre y el número de los blocks libres contiguos que le siguen. Cada entrada de la lista de espacio libre consiste de una dirección de disco y un contador (por conteo).
Por agrupación. Se almacena la dirección en n blocks libres en el primer block libre y el último contiene la dirección de otro block que contiene la dirección de otros blocks libres.
Para manejar los espacios en disco existen los siguientes métodos:
Contiguos. Esta asignación requiere que cada archivo ocupe un conjunto de direcciones contiguas en el disco, su asignación es definida por la dirección del primer bloc y la longitud del archivo.
Asignación ligada o encadenada. Cada archivo es una lista ligada de blocks y el directorio contiene un apuntador al primer bloc y al último.
Asignación Indexada. Cada archivo tiene su propio bloc de índice el cual es un arreglo de direcciones de bloc.
Modelo Jerárquico


Diseño del Sistema Jerárquico de Directorios

El directorio contiene un conjunto de datos por cada archivo referenciado.


Una posibilidad es que el directorio contenga por cada archivo referenciado:
·                     El nombre.
·                     Sus atributos.
·                     Las direcciones en disco donde se almacenan los datos.
Otra posibilidad es que cada entrada del directorio contenga:
·                     El nombre del archivo.
·                     Un apuntador a otra estructura de datos donde se encuentran los atributos y las direcciones en disco.
Al abrir un archivo el S. O.:
·                     Busca en su directorio el nombre del archivo.
·                     Extrae los atributos y direcciones en disco.
·                     Graba esta información en una tabla de memoria real.
·                     Todas las referencias subsecuentes al archivo utilizarán la información de la memoria principal.
El número y organización de directorios varía de sistema en sistema:
·                     Directorio único: el sistema tiene un solo directorio con todos los archivos de todos los usuarios (ver Figura 4.1).
  • Un directorio por usuario: el sistema habilita un solo directorio por cada usuario 

  • Un árbol de directorios por usuario: el sistema permite que cada usuario tenga tantos directorios como necesite, respetando una jerarquía general.



jueves, 7 de mayo de 2015

GESTION DE MEMORIA PRINCIPAL

Organización Interna De La Memoria Principal.
Una memoria principal se compone de un conjunto de celdas básicas dotadas de una determinada organización. Cada celda soporta un bit de información. Los bits se agrupan en unidades direccionables denominadas palabras. La longitud de palabra la determina el número de bits que la componen y constituye la resolución de la memoria (mínima cantidad de información direccionable). La longitud de palabra suele oscilar desde 8 bits (byte) hasta 64 bits.

Cada celda básica es un dispositivo físico con dos estados estables (o semi-estables) con capacidad para cambiar el estado (escritura) y determinar su valor (lectura). Aunque en los primeros computadores se utilizaron los materiales magnéticos como soporte de las celdas de memoria principal (memorias de ferritas, de película delgada, etc.) en la actualidad sólo se utilizan los materiales semiconductores.
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.
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.
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”:
ü  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.

Organización del almacenamiento:
La organización del almacenamiento es la forma de considerar el almacenamiento principal, bajo los siguientes esquemas de organización:

-    sistemas de usuario único
-    multiprogramación con particiones fijas, con traducción y carga con reubicación
-    multiprogramación con particiones fijas, con traducción y carga absoluta
-    multiprogramación con particiones variables
-    sistemas de intercambio de almacenamiento
Sea cual sea el esquema de organización de la memoria que se adopte, hay que decidir qué estrategias de deben utilizar para obtener un rendimiento óptimo de la misma.
Históricamente el almacenamiento principal se ha considerado como un recurso costoso, por lo cual su utilización debía optimizarse. La memoria está dividida en primaria y secundaria. El traspaso de información entre éstas es la preocupación más grande del sistema; esta responsabilidad puede ser asignada al programador, pero esto sería una gran pérdida de tiempo, por esto el sistema debe ocuparse de ello.
Por organización del almacenamiento se entiende la manera de considerar este almacenamiento:
§  ¿Se coloca un solo programa de usuario o varios?
§  Si se encuentran varios programas de usuario:
ü  ¿Se concede a cada uno la misma cantidad de espacio o se divide el almacenamiento en porciones o “particiones” de diferente tamaño?
ü  ¿Se utilizará un esquema rígido de número y tamaño de particiones o un esquema dinámico y adaptable?
ü  ¿Se requerirá que los trabajos de los usuarios sean diseñados para funcionar en una partición específica o se permitirá que se ejecuten en cualquiera donde quepan?
ü  ¿Se requerirá o no que cada trabajo sea colocado en un bloque contiguo de memoria?


La Organización de almacenamiento Realiza funciones en relación a:
§  Número de usuarios en memoria
§  Cantidad de procesos de un usuario
§  Forma estática o dinámica.
§  Almacenamiento continuo o disperso
§  Los programas deben almacenarse en un sitio específico o puede variar

ADMINISTRACIÓN
            La administración de almacenamiento define el comportamiento de una forma de organización, también se define como: Serie de estrategias diseñadas para obtener un rendimiento óptimo
Según Andrew S. Tanenbaum-1994. La memoria principal es el lugar donde el CPU lee las instrucciones a ejecutar, así como algunos datos a emplear.  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. Independientemente del esquema de organización hay que decidir las estrategias que se utilizarán para optimizar el rendimiento. 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:
v  Partición fija: que es la división de la memoria libre en varias partes (de igual o distinto tamaño)
v  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
1.      La reubicación: Que consiste en trasladar procesos activos dentro y fuera e la memoria principal para maximizar la utilización del procesador
2.      La protección: Son mecanismos que protegen los procesos que se ejecutan de interferencias de otros procesos.
3.      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.
Independientemente del esquema de organización hay que decidir las estrategias que se utilizarán para optimizar el rendimiento.
Las “estrategias de administración” deben considerar:
ü  ¿Cuándo se consigue un nuevo programa para colocar en la memoria?:
ü  ¿Cuándo el sistema lo pide específicamente o se intenta anticiparse a las peticiones?
ü  ¿Dónde se colocará el programa que se ejecutará a continuación?:
ü  ¿Se prioriza el tiempo de carga o la optimización en el uso del almacenamiento?
ü  ¿Con qué criterio se desplazarán programas?


JERARQUIA DE ALMACENAMIENTO
Considera las transferencias de información entre los diversos niveles de memoria
Los niveles de almacenamiento incluyen:
v  Almacenamiento primario: memoria principal.
v  Almacenamiento secundario: discos, cintas, etc.
v  Almacenamiento “caché”: memoria muy veloz diseñada para aumentar la velocidad de ejecución de los programas: Aloja la parte (instrucciones y datos) en ejecución de un programa.
            Los niveles de almacenamiento crean “jerarquías de almacenamiento”: caché, almacenamiento primario, almacenamiento secundario.
            Al bajar en la jerarquía:
  • Descienden el costo y la velocidad.
  • Aumenta la capacidad.
“Espacio de direcciones”: conjunto de todas las direcciones disponibles para un programa
Los programas y datos necesitan estar en el almacenamiento principal para ser ejecutados o para poder hacer referencia de ellos.
Los programas o datos que no se necesitan de inmediato pueden guardarse en el almacenamiento secundario hasta que se necesiten, y en ese momento se transfieren al almacenamiento principal para ser ejecutados o hacer referencia a ellos.



Los sistemas con varios niveles de almacenamiento requieren destinar recursos para administrar el movimiento de programas y datos entre niveles
La memoria caché o memoria de alta velocidad es mucho más rápida que el almacenamiento principal. La memoria caché es extremadamente cara, por lo que sólo se utilizan memorias caché relativamente pequeñas.
La memoria caché introduce un nivel adicional de transferencia de información en el sistema, los programas son traspasados de la memoria principal al caché antes de su ejecución.
Los programas en la memoria caché se ejecutan mucho más rápido que en la memoria principal.
Al utilizar memoria caché se espera que la sobrecarga que supone el traspaso de programas de un nivel de memoria a otro sea mucho menor que la mejora en el rendimiento obtenida por la posibilidad de una ejecución mucho más rápida en la caché.

                                             

PARTICIONES
El sistema operativo (S. O.) es el responsable de asignar memoria principal a los procesos para que puedan ser ejecutados.


En un modelo de memoria con asignación contigua, todo el espacio lógico de un proceso (Código, Datos, Pila) ha de estar ubicado de forma contigua en memoria principal, es decir en direcciones físicas consecutivas

Cuando un proceso finaliza libera la memoria ocupada.

Particiones Múltiples de Memoria
En este esquema, la memoria principal se encuentra dividida de forma lógica en múltiples particiones de tamaño fijo. 


           Cada partición es considerada como un único hueco donde se ubicará un único proceso. 
El grado máximo de multiprogramación (número máximo de procesos que pueden ejecutarse concurremente) en estos sistemas es igual al número de particiones.

Un proceso únicamente puede ser ubicado en una partición, si el tamaño de dicha partición es igual o mayor que el de su espacio lógico. 


El tamaño de las particiones no varía con la evolución de la memoria.

Particiones Múltiples de Memoria con Múltiples Colas
Disponemos de un conjunto de colas donde esperan los procesos para asignarles memoria.

            Existen tantas colas como tamaños diferentes de particiones tenga la memoria.



            Cada proceso es colocado en una cola u otra en función del tamaño de memoria que solicita.
 Las solicitudes de memoria para cada cola se satisfacen por orden de llegada (FIFO).
 Los procesos no abandonan su cola de solicitud mientras no se les asigne memoria.
Cuando un proceso finaliza libera la partición de memoria que ocupaba y otro proceso de dicha cola puede ser ubicado en ella. 

FRAGMENTACIÓN DE MEMORIA

La fragmentación es generada cuando durante el reemplazo de procesos quedan huecos entre dos o más procesos de manera no contigua y cada hueco no es capaz de soportar ningún proceso de la lista de espera.
 Si un proceso requiere m palabras en memoria principal para correr y se ejecutan en una partición de n palabras, y si n es mayor que m la diferencia entre n-m es una fragmentación interna.
Si los programas no ocupan siempre todo el espacio disponible de memoria se denomina fragmentación Interna.

          La fragmentación interna viene dada por todos aquellos espacios de memoria no utilizados en las particiones ocupadas por procesos cuyo tamaño es inferior al de la partición que se le ha asignado.

Fragmentación ExternaOcurre cuando una partición está disponible y no es usada, es decir es muy pequeña para que pueda correr un proceso.

           La fragmentación externa se puede reducir mediante la compactación para colocar toda la memoria libre en un solo gran bloque, pero esta sólo es posible si la relocalización es dinámica y se hace en tiempo de ejecución.

CONDENSACION
            Unir o fusionar espacios o “huecos” adyacentes para formar uno más grande.
Por ejemplo, si hay una solicitud de usuario de  5k y en la memoria hay disponibles 2 “huecos” contíguos pero uno es de 2k y el otro es 3k, entonces, para poder atender ésa solicitud de usuario, se “unen” los 2 “huecos” que formarían un sólo “hueco” de 5k, por tanto ahora si cabría la solicitud en el “hueco” que hay disponible.


COMPACTACION
        Una solución para el problema de la fragmentación externa es la compactación. El objetivo consiste en desplazar el contenido de la memoria para colocar junta toda la memoria libre en un solo bloque de gran tamaño. Por ejemplo el siguiente mapa de memoria de la Figura # 12, que puede compactarse.
          Los tres huacos de 100K, 300K y 260K pueden compactarse en un hueco de 660K. La compactación no siempre es posible. En la figura 12 se han movido los procesos P4 y P3. Para que estos procesos puedan ejecutarse en sus nuevas posiciones, hay que relocalizar  todas las direcciones internas. Si la relocalización es estática y se efectúa durante el ensamblado, o la carga, la compactación sólo es posible si la relozalización es dinámica y se efectúa en el momento de la ejecución.
            Puede ocurrir que los agujeros (áreas libres) separados distribuidos por todo el almacenamiento principal constituyan una cantidad importante de memoria:
  • Podría ser suficiente (el total global disponible) para alojar a procesos encolados en espera de memoria.
  • Podría no ser suficiente ningún área libre individual (ver Figura 3.10).

La técnica de compresión de memoria implica pasar todas las áreas ocupadas del almacenamiento a uno de los extremos de la memoria principal:
  • Deja un solo agujero grande de memoria libre contigua.
  • Esta técnica se denomina “recogida de residuos” (ver Figura 3.11).
Principales desventajas de la compresión
Consume recursos del sistema (ver Figura 3.12).
El sistema debe detener todo mientras efectúa la compresión, lo que puede afectar los tiempos de respuesta.
Implica la relocalización (reubicación) de los procesos que se encuentran en la memoria:
  • La información de relocalización debe ser de accesibilidad inmediata.
Una alta carga de trabajo significa mayor frecuencia de compresión que incrementa el uso de recursos.

ESTRATEGIAS DE COLOCACION

Las “estrategias de colocación” están relacionadas con la determinación del lugar de la memoria donde se colocará (cargará un programa nuevo.
Se utilizan para determinar el lugar de la memoria donde serán colocados los programas y datos que van llegando y se las clasifica de la siguiente manera:
  • “Estrategia de mejor ajuste”:
    • Un trabajo nuevo es colocado en el agujero en el cual quepa de forma más ajustada:
      • Debe dejarse el menor espacio sin usar.
  • “Estrategia de primer ajuste”:
    • Un trabajo nuevo es colocado en el primer agujero disponible con tamaño suficiente para alojarlo.
  • “Estrategia de peor ajuste”:
    • Consiste en colocar un programa en el agujero en el que quepa de la peor manera, es decir en el más grande posible:
      • El agujero restante es también grande para poder alojar a un nuevo programa relativamente grande.
Las estrategias de colocación determinan en qué lugar del almacenamiento primario se debe colocar una página o segmento entrante.

NOTA: Esto es trivial, porque una página o segmento entrante se puede ubicar en cualquier marco de página disponible.

ADMINISTRACION DE MEMORIA VIRTUAL
Es un método mediante el cual, un sistema operativo simula tener más memoria principal que la que existe físicamente. Para implementar la memoria virtual se utiliza un medio de almacenamiento secundario de alta velocidad de acceso, generalmente en disco duro de la máquina. Un sistema de memoria virtual se implementa utilizando paginación como método de administración de memoria básica y algún mecanismo de intercambio (para descargar páginas de la memoria principal hacia el disco duro y para cargar esas páginas de nuevo a la memoria).
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 ilusión de la memoria virtual esta soportada por el mecanismo de traducción de memoria, junto con una gran cantidad de almacenamiento rápido en disco duro. Así en cualquier momento el espacio de direcciones virtual hace un seguimiento de tal forma que una pequeña parte del, está en memoria real y el resto almacenado en el disco, y puede ser referenciado fácilmente.

ESPACIOS DE DIRECCIONES LOGICAS VS FISICAS
Espacio de direcciones lógico: conjunto de direcciones lógicas o virtuales generadas por un programa
Espacio de direcciones físico: conjunto de direcciones físicas correspondientes a las direcciones lógicas en un instante dado

PAGINACION
En la gestión de memoria con intercambio, cuando había que pasar un proceso a ejecución, era necesario traer el proceso entero de disco a memoria principal.

           Con memoria virtual hemos dicho que no se trae todo el proceso, sino que cuando se hace referencia a una dirección de memoria virtual cuya correspondiente memoria física reside en disco, se trae el contenido de disco a RAM.

           ¿Quiere esto decir que la unidad de intercambio de memoria es el byte? Si lo fuera, daría lugar a que continuamente se estuviesen generando operaciones de E/S, lo cual sería poco eficaz. Claramente, parece más conveniente utilizar bloques más grandes, para aprovechar de manera más eficiente cada operación de E/S.


Características de la paginación
  • El espacio de direcciones lógico de un proceso puede ser no contiguo.
  • Se divide la memoria física en bloques de tamaño fijo llamados marcos (frames).
  • Se divide la memoria en bloques de tamaño llamados páginas.
  • Se mantiene información en los marcos libres.
  • Para correr un programa de en páginas de tamaño, se necesitan encontrar n marcos y cargar el programa.
  • Se establece una tabla de páginas para trasladar las direcciones lógicas a físicas.
  • Se produce fragmentación interna.

Ventajas de la paginación
  • Es posible comenzar a ejecutar un programa, cargando solo una parte del mismo en memoria, y el resto se cargara bajo la solicitud.
  • No es necesario que las paginas estén contiguas en memoria, por lo que no se necesitan procesos de compactación cuando existen marcos de páginas libres dispersos en la memoria.
  • Es fácil controlar todas las páginas, ya que tienen el mismo tamaño.
  • El mecanismo de traducción de direcciones (DAT) permite separar los conceptos de espacio de direcciones y espacios de memoria. Todo el mecanismo es transparente al usuario.
Desventajas de la paginación
  • El costo de hardware y software se incrementa, por la nueva información que debe manejarse y el mecanismo de traducción de direcciones necesario. Se consumen muchos más recursos de memoria, tiempo en el CPU para su implantación.
  • Se deben reservar áreas de memoria para las PMT de los procesos. Al no ser fijo el tamaño de estas, se crea un problema semejante al de los programas (cómo asignar un tamaño óptimo sin desperdicio de memoria, u ovearhead del procesador).

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

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: Ejm. Stack, 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 de la segmentación
El esquema de segmentación ofrece las siguientes ventajas: 
  •           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.

PAGINACION POR DEMANDA
            Las paginas son cargadas por demanda, no se llevan páginas del almacenamiento secundario al primario hasta que son referenciadas explícitamente por un proceso en ejecución.
Las razones del atractivo de esta estrategia son:
v  Los resultados de computabilidad, en especial el “problema de parada”, indican que el camino que tomará la ejecución de un programa no se puede predecir con exactitud.
v  Garantiza que solo las páginas que necesita el proceso sean traídas al almacenamiento principal.
v  La sobrecarga de proceso para decidir qué página traer al almacenamiento principal es mínima.
v  El principal inconveniente está en los procesos que requieren acumular sus páginas una por una:
v  Los tiempos de espera de páginas son considerables.
  • Es creciente la cantidad de almacenamiento primario afectada al proceso que espera páginas, por lo que el “producto espacio - tiempo” se incrementa.
El “producto espacio - tiempo” indica la cantidad de almacenamiento que usa un proceso y la cantidad de tiempo que lo usa.
“La reducción del producto espacio - tiempo de las esperas de páginas de un proceso es una meta importante de las estrategias de administración del almacenamiento” (ver Figura 3.38).


FALLO DE PÁGINA
            Un fallo de página es la secuencia de eventos que ocurren cuando un programa intenta acceder a datos (o código) que está en su espacio de direcciones, pero que no está actualmente ubicado en la RAM del sistema. El sistema operativo debe manejar los fallos de página haciendo residentes en memoria los datos accedidos, permitiendo de esta manera que el programa continue la operación como que si el fallo de página nunca ocurrió.

En el caso de nuestra aplicación hipotética, el CPU primeramente presenta la dirección deseada (12374) al MMU. Sin embargo, el MMU no tiene traducción para esta dirección. Por tanto, interrumpe al CPU y causa que se ejecute un software, conocido como el manejador de fallos de página. El manejador de fallos de página determina lo que se debe hacer para resolver esta falla de página. El mismo puede:
Encontrar dónde reside la página deseada en disco y la lee (este es usualmente el caso si el fallo de página es por una página de código)
Determina que la página deseada ya está en RAM (pero no está asignada al proceso actual) y reconfigura el MMU para que apunte a el
Apunta a una página especial que solamente contiene ceros y asigna una nueva página para el proceso solamente si este intenta alguna vez escribir a la página especial (esto se llama una página de copia en escritura y es utilizada a menudo por páginas que contienen datos inicializados a cero)
Obtener la página deseada desde otro lugar (lo que se discute en detalle más adelante)
Mientras que las primeras tres acciones son relativamente sencillas, la última no lo es. Por eso necesitamos cubrir algunos tópicos

SEGMENTACION PAGINADA

Paginación y segmentación son técnicas diferentes, cada una de las cuales busca brindar las ventajas enunciadas anteriormente. 
Para la segmentación se necesita que estén cargadas en memoria áreas de tamaños variables. Si se requiere cargar un segmento en memoria que antes estuvo en ella y fue removido a memoria secundaria, se necesita encontrar una región de la memoria lo suficientemente grande para contenerlo, lo cual no es siempre factible. En cambio recargar una página implica sólo encontrar un marco de página disponible. 
A nivel de paginación, si quiere referenciar en forma cíclica n páginas, estas deberán ser cargadas una a una, generándose varias interrupciones por fallas de páginas. Bajo segmentación, esta página podría conformar un sólo segmento, ocurriendo una sola interrupción por falla de segmento. No obstante, si bajo segmentación se desea acceder un área muy pequeña dentro de un segmento muy grande, este deberá cargarse Completamente en memoria, desperdiciándose memoria. Bajo paginación sólo se cargará la página que contiene los ítems referenciados. 
Puede hacerse una combinación de segmentación y paginación para obtener las ventajas de ambas. En lugar de tratar un segmento como una unidad contigua, éste puede dividirse en páginas. Cada segmento puede ser descrito por su propia tabla de páginas. 

Las direcciones tienen tres componentes: (s, p, d), donde la primera indica el número del segmento, la segunda el número de la página dentro del segmento y la tercera el desplazamiento dentro de la página. Se deberán usar varias tablas: 

- SMT (tabla de mapas de segmentos): Una para cada proceso. En cada entrada de la SMT se almacena la información descrita bajo segmentación pura, pero en el campo de dirección se indicara la dirección de la PMT (tabla de mapas de páginas) que describe a las diferentes páginas de cada segmento. 
- PMT (tabla de mapas de páginas): Una por segmento; cada entrada de la PMT describe una página de un segmento, en la forma que se presentó la pagina pura. 
- TBM (tabla de bloques de memoria): Para controlar asignación de páginas por parte del sistema operativo. 
- JT (tabla de Jobs): Que contiene las direcciones de comienzo de cada una de las SMT de los procesos que se ejecutan en memoria. 

: "Times New Roman"; mso-fareast-language: ES-VE;">Ventajas de la segmentación paginada: 


·                     El esquema de segmentación paginada tiene todas las ventajas de la segmentación y la paginación:  
·                      Debido a que los espacios de memorias son segmentados, se garantiza la facilidad de implantar la compartición y enlace. 
·                     Como los espacios de memoria son paginados, se simplifican las estrategias de almacenamiento. 
·                     Se elimina el problema de la fragmentación externa y la necesidad de compactación.
  
Desventajas de la segmentación paginada: 

·                     Los tres componentes de la dirección y el proceso de formación de direcciones hace que se incremente el costo de su implantación. El costo es mayor que en el caso de de segmentación pura o paginación pura. 
·                     Se hace necesario mantener un número mayor de tablas en memoria, lo que implica un mayor costo de almacenamiento. 
·                     Sigue existiendo el problema de fragmentación interna de todas -o casi todas- las páginas finales de cada uno de los segmentos. Bajo paginación pura se desperdicia sólo la última página asignada, mientras que bajo segmentación paginada el desperdicio puede ocurrir en todos los segmentos asignados.


PAGINACION SEGMENTADA
            Las direcciones virtuales se componen de 3 partes:   segmento, página  y desplazamiento.

·        El segmento sirve para indizarse en una tabla de segmentos en la cual se encuentra la longitud y dirección de la tabla de páginas.
·        La página sirve para indizarse en la tabla de páginas, en donde se encuentra la dirección de la página correspondiente; se puede llegar a la dirección en memoria real.
Las estrategias para la administración de sistemas de almacenamiento virtual condicionan la conducta de los sistemas de almacenamiento virtual que operan según esas estrategias.
Se consideran las siguientes estrategias:

“Estrategias de búsqueda”:
Tratan de los casos en que una página o segmento deben ser traídos del almacenamiento secundario al primario.
Las estrategias de “búsqueda por demanda” esperan a que se haga referencia a una página o segmento por un proceso antes de traerlos al almacenamiento primario.
Los esquemas de “búsqueda anticipada” intentan determinar por adelantado a qué páginas o segmentos hará referencia un proceso para traerlos al almacenamiento primario antes de ser explícitamente referenciados.
“Estrategias de colocación”:
Tratan del lugar del almacenamiento primario donde se colocará una nueva página o segmento.
Los sistemas toman las decisiones de colocación de una forma trivial ya que una nueva página puede ser colocada dentro de cualquier marco de página disponible.
“Estrategias de reposición”:
Tratan de la decisión de cuál página o segmento desplazar para hacer sitio a una nueva página o segmento cuando el almacenamiento primario está completamente comprometido.