Your SlideShare is downloading. ×
  • Like
Sistemas Operativos
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Sistemas Operativos

  • 35,885 views
Published

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
No Downloads

Views

Total Views
35,885
On SlideShare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
714
Comments
2
Likes
3

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. CAPÍTULO I: GESTIÓN DE MEMORIA 3.1 Antecedentes 3.2 Espacio de direcciones físico y lógico. 3.3 Requisitos de Gestión de Memoria 3.3.1 Reubicación 3.3.2 Protección 3.3.3 Compartición
  • 2. Antecedentes de la Gestión de Memoria
    • La gestión de la memoria es uno de aspectos más complicados del diseño de los SO
    • Gestionar memoria implica traer y llevar bloques de datos de memoria secundaria.
    • El SO se encarga de las siguientes actividades relacionadas con la gestión de memoria:
    • Saber cuáles partes de la memoria se están usando actualmente y quién las está usando.
    • Decidir cuáles procesos se cargarán en la memoria cuando se disponga de espacio.
    • Asignar y liberar espacio de memoria según se necesite.
  • 3. Introducción a la Gestión de Memoria
    • La memoria es un conjunto de registros que sirven para almacenar información.
    • La memoria se la puede clasificar según:
    • Tecnología de Manufactura
    • Ubicación
    • Densidad
    • Método de Acceso
    • Velocidad
    • Costo
    Clasificación de la memoria según Tecnología de Manufactura
  • 4. Jerarquía de la Gestión de Memoria Las memoria rápidas son caras. Las memorias grandes son lentas.
  • 5. Jerarquía de la Gestión de Memoria Relación de Capacidad vs Costo
  • 6. Jerarquía de Memoria Memoria R eal : 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 memori a secundaria, pero el acceso a la información contenida en ella es de más rápido acceso. Solo la memoria cach é es más rápida que la principal, pero su costo es a su vez mayor.
  • 7. Jerarquía de Memoria Memoria virtual : 1. El uso de almacenamiento secundario para ofrecer al conjunto de las aplicaciones la ilusión de tener m á s memoria RAM de la que realmente hay en el sistema. 2. Ofrecer a las aplicaciones la ilusión de que están solas en el sistema, y que por lo tanto, pueden usar el espacio de direcciones completo..
  • 8. Gestor de Memoria
    • Con los antecedentes anteriores, se puede concluir que los objetivos del Gestor de Memoria son:
      • Ofrecer a cada proceso un espacio lógico propio.
      • • Proporcionar protección entre los procesos.
      • • Permitir que los procesos compartan memoria.
      • • Dar soporte a las distintas regiones del proceso.
      • • Maximizar el rendimiento del sistema.
      • • Proporcionar a los procesos mapas de memoria muy grandes.
  • 9. Espacio de direcciones lógico y físico
    • Direcciones físicas: S on aquellas que referencian alguna posici ó n en la memoria física .
    • Direcciones lógicas: S on las direcciones utilizadas por los procesos. Sufren una serie de transformaciones, realizadas por el procesador (la MMU), antes de convertirse en direcciones físicas.
    • -       
    • Las direcciones lógicas son direcciones generadas por la CPU.
  • 10. Espacio de direcciones lógico y físico
  • 11. TRADUCCIÓN DE DIRECCIONES
    • C uando un proceso es asignado al estado de ejecución, un registro base ( en la CPU ) es cargado con la dirección física de inicio del proceso.
    • Un registro limite es cargado con la dirección física de final.
    • Cuando una dirección relativa es encontrada es adicionada al registro base y comparada con el registro límite.
    • Esto provee protección de hardware.
    • Si está dentro del tamaño del proceso se realiza la traducción, caso contrario se envía una interrupción al Sistema Operativo.
    • Registro Base: establece la direccion física donde comienza el espacio de memoria del proceso.
    • Registro Límite: establece la dirección donde termina el espacio de memoria del proceso, en relación al registro base.
  • 12. TRADUCCIÓN DE DIRECCIONES Traducción(IdProc, dir_lógica)  dir_física
  • 13. TRADUCCIÓN DE DIRECCIONES
    • Reubicación Hardware : la MMU (memory management unit) se encarga de la traducción
    • Proceso :
      • Programa se carga en memoria sin modificar
      • El S.O. almacena por cada proceso su función de traducción
      • El S.O. especifica a la MMU qué función aplicar para cada proceso
  • 14. TRADUCCIÓN DE DIRECCIONES
    • Reubicación software : traducción de direcciones durante carga del programa. Esta solución se usa en sistemas sin el hardware específico de traducción (MMU).
    • Proceso :
      • El programa se carga con las direcciones ya traducidas
      • Se genera un código diferente del programa ejecutable
    • Desventajas :
      • No asegura protección (no se verifica cada dirección a usar, sino que se usan las direcciones generadas tras el proceso de carga)
      • No permite mover programa en tiempo de ejecución (suponer que es necesaria la reubicación del espacio asignado al proceso, por necesitar más espacio.....)
  • 15. UNIDAD DE MANEJO DE MEMORIA
    • La unidad de manejo de memoria (MMU) es parte del procesador. Sus funciones son:
    • Convertir las direcciones lógicas emitidas por los procesos en direcciones físicas.
    • Comprobar que la conversión se puede realizar. La dirección lógica podría no tener una dirección física asociada. Por ejemplo, la p á gina correspondiente a una dirección se puede haber trasladado a una zona de almacenamiento secundario temporalmente.
    • Comprobar que el proceso que intenta acceder a una cierta direcci ó n de memoria tiene permisos para ello.
  • 16. UNIDAD DE MANEJO DE MEMORIA
    • La MMU se i nicializa para cada proceso del sistema. Esto permite que cada proceso pueda usar el rango completo de direcciones lógicas (memoria virtual), ya que las conversiones de estas direcciones serán distintas para cada proceso.
  • 17. INTERCAMBIO Un proceso puede estar continuamente modificando su estado, lo cual implica que muchas veces un mismo proceso está en memoria principal para luego pasar a memoria auxiliar o secundaria, y volver a memoria principal para continuar su ejecución. Este proceso de retirada e incorporación de los procesos de y a la memoria se denomina Intercambio o swapping. El objetivo del intercambio es dar cabida a la ejecución de m á s aplicaciones de las que pueden residir simultáneamente en la memoria del sistema: Por lo que el intercambio c onsiste en trasladar el código y los datos de un proceso completo de memoria al sistema de almacenamiento secundario, para cargar otro previamente almacenado, no permite a un proceso utilizar m á s memoria RAM de la que realmente existe en el sistema.
  • 18. INTERCAMBIO El lugar de almacenamiento temporal suele ser un espacio suficientemente grande como para acomodar copias de las imágenes de me m oria de todos los usuarios.
  • 19. INTERCAMBIO Las funciones que un intercambiador debe cumplir son:   -          Selección de los procesos para retirarlos de memoria. -          Selección de procesos para incorporarlos a memoria. Gestión y asignación del espacio de intercambio.
  • 20. REUBICACIÓN La reubicación se refiere se refiere al hecho de cargar y ejecutar un programa en una posición arbitraria de memoria. Existen dos tipos de reubicación: -  Reubicación estática : cuando un proceso que ha sido bajado a memoria secundaria al ser cargado nuevamente ocupará el mismo lugar en memoria principal donde se ubicaba al inicio; aún cuando el área esté ocupado deberá esperar para poderse colocar. Este esquema no ofrece muchas ventajas.  
  • 21. REUBICACIÓN Reubicación dinámica: cuando el proceso se va ha subir en memoria principal puede ser colocado en cualquier partición libre. En este caso es necesario realizar un reasignación de direcciones cada vez que el programa se ejecute. Este esquema resulta costoso por el hardware que se utiliza, así como aumenta el tiempo de acceso a memoria.
  • 22. PROTECCIÓN * Para garantizar seguridad, el hardware puede trabajar con un par de registros base/límite.
  • 23. PROTECCIÓN * Registrar los derechos de acceso en la propia memoria - A cada dirección se le añade un número de bits para identificar al propietario - Problema: costoso - Mejora: Asociar estos bits a bloques de memoria física - Comprobación: tiempo de ejecución - SO => Clave “maestra” única que le da acceso sin restricciones a todos los bloques de memoria
  • 24. COMPARTICIÓN * Utilizar particiones de memoria compartidas (comunes) ¿Protección? - Registros base/límite: requeriría conjuntos separados de pares de registros base/limite dedicados para acceder a los espacio de memoria privado y compartido. - Implica la existencia de algún mecanismo que indique en cada acceso que conjunto de registros emplear * Claves de protección: requeriría controlar los bloques compartidos para que en los conmutaciones de contexto se cambien las claves de protección - Necesidad de llevar la cuenta de que bloques están siendo .compartidos y ¿por quién?
  • 25. ASIGNACIÓN CONTIGUA Cuando hablamos de asignación contigua significa que cada objeto lógico es colocado en un conjunto de posiciones de memoria con direcciones estrictamente consecutivas.   Un espacio de memoria se divide generalmente en dos: una parte destinada para el Sistema Operativo residente y otra destinada a proceso del usuario; tal como se ve en la siguiente figura:
  • 26. ASIGNACIÓN CONTIGUA Existen dos esquemas de manejo:     Asignación con una sola partición: En este caso, en el espacio correspondiente a los procesos de usuario se carga un solo proceso a la vez; estos procesos se los conoce como procesos transitorios. El sistema operativo gasta poco tiempo y esfuerzo en gestionar la memoria de este modo. Básicamente el SO necesita llevar la cuenta de las posiciones primera y última disponibles para la asignación de procesos transitorios. Cuando un proceso transitorio termina, el SO puede cargar otro para que se ejecute. El SO debe asegurarse que el tamaño de la imagen de procesos a cargar esté dentro de los límites de la memoria disponible, caso contrario se no se puede cargar el proceso.
  • 27. ASIGNACIÓN CONTIGUA El proceso anuncia su terminación y transfiere el control al SO invocando el servicio TERMINAR (EXIT) o su equivalente ; en cuyo momento puede cargarse otro proceso que esté esperando. Un monitor monoproceso raramente soporta protección entre procesos de usuario, ya que en cada momento sólo permite que haya un único proceso residente en memoria. Sin embargo es deseable proteger el código del sistema operativo para que no sea deteriorado por el proceso transitorio en ejecución, sino está protegido, el sistema puede caerse frecuentemente y necesitar ser arrancado de nuevo cuando se ejecutan programas de usuario sin depurar. Este tipo de asignación fue usada en PCs basadas en DOS.
  • 28. ASIGNACIÓN CONTIGUA Asignación con múltiples particiones: La técnica anterior permita la ejecución de un solo proceso de usuario a la vez. Sin embargo, lo que se requiere generalmente es que existan varios procesos en memoria.   Uno de los esquemas consiste en dividir la memoria en varias particiones de tamaño fijo, ubicando un proceso en cada partición. La división puede realizarse de manera estática y dinámica.
  • 29. ASIGNACIÓN DE MEMORIA PARTICIONADA ESTÁTICA Se divide a la memoria principal en un conjunto de regiones no sobrepuestas llamadas particiones. Las particiones se efectúan en algún momento antes de ejecutar los programas de usuario y desde ahí las particiones permanecen fijas. El número de particiones distintas representan un límite superior al número de procesos activos en el sistema. A este valor se le puede denominar grado de multiprogramación.
  • 30. ASIGNACIÓN DE MEMORIA PARTICIONADA ESTÁTICA Principios de Operación: -   Cualquier proceso cuyo tamaño sea menor o igual que el tamaño de una partición puede ser cargado . -   Si todas las particiones están ocupadas, el Sistema Operativo puede intercambiar un proceso fuera de una partición Un programa puede ser demasiado grande para caber en una partición. El programador debe entonces diseñar el programa con soporte para overlays ( uso de la memoria principal es ineficiente). Un programa, cualquiera sea su tamaño ocupa una partición entera. Esto es llamado fragmentación interna . El esquema de particiones no iguales disminuye el problema pero no lo elimina.
  • 31. TABLA DE DESCRIPCIÓN DE PARTICIONES El Sistema Operativo maneja una estructura en la cual se señala que partes de la memoria están disponibles y cuáles ocupadas; ésta estructura se conoce como TDP
  • 32. TABLA DE DESCRIPCIÓN DE PARTICIONES Las particiones se asignan a procesos nuevos y a procesos que han sido suspendidos y retirados de memoria y nuevamente están activos.   Puesto que en algún momento dado existe un conjunto de espacios libres o huecos de diferentes tamaños dispersos en memoria. De ahí surge un problema, como asignar memoria a un proceso de tamaño n a partir de una lista de huecos libres. Esto se puede resolver a través de los siguientes algoritmos:   - Primer ajuste : asignar el primer hueco que tenga el tamaño suficiente. - Mejor ajuste: asignar el hueco más pequeño que tenga tamaño suficiente. - Peor ajuste : asignar el hueco más grande.
  • 33. TABLA DE DESCRIPCIÓN DE PARTICIONES EEjemplo: A partir del siguiente mapa de memoria, debemos ubicar el Pn= 70Kb utilizando los tres algoritmos mencionados
  • 34. TABLA DE DESCRIPCIÓN DE PARTICIONES PPrimer Ajuste Mejor Ajuste Peor Ajuste
  • 35. ASIGNACIÓN ESTÁTICA Los algoritmos más utilizados son: Primer Ajuste y Mejor Ajuste. La elección entre estos dos métodos implica escoger entre la velocidad de ejecución y utilización de la memoria. Cabe indicar que ambos algoritmos deben buscar en las entradas de la TDP para identificar la partición que se ajuste más exactamente. Las peticiones para asignar particiones pueden provenir de una de dos fuentes principalmente: 1) Las creaciones de nuevos procesos. 2) Las reactivaciones de procesos retirados de memoria.
  • 36. ASIGNACIÓN ESTÁTICA Existen situaciones que impiden que se pueda asignar memoria a un proceso, las más comunes son: 1) Ninguna partición es suficientemente grande para acomodar el nuevo proceso. 2) Todas las particiones están asignadas. 3) Algunas particiones están libres, pero ninguna de ellas es lo suficientemente grande para acomodar el proceso.
  • 37. ASIGNACIÓN ESTÁTICA Protección: Un SO debe estar protegido contra intervenciones no autorizadas de procesos de usuario y prohibir el acceso inadvertido a áreas de de memoria asignadas a otros procesos. En los SO que utilizan registro base para la reubicación, una práctica habitual es utilizar registros límite (dirección virtual más alta de un programa) para la protección.
  • 38. ASIGNACIÓN ESTÁTICA En el caso de que haya error se produce una llamada al SO. Los valores base y límite de cada proceso se guardan normalmente en su BPC; en cada conmutación de proceso estos registros son cargado con los valores requeridos por el nuevo proceso en ejecución. Otro método de protección es registrar los derechos de acceso en la propia memoria a través de la utilización de claves mediante la cual pueden acceder sin restricciones a todos los bloques de memoria.
  • 39. ASIGNACIÓN ESTÁTICA Compartición: El gestor de memoria debe permitir la compartición de memoria entre procesos cooperativos. Hay tres técnicas básicas de compartición en sistemas con partición fija de memoria: * Confiar los objetos compartidos al sistema operativo * Mantener múltiples copias de los objetos compartidos, una por cada partición participante. * Utilizar particiones de memoria compartidas.
  • 40. ASIGNACIÓN ESTÁTICA Protección: Para garantizar seguridad, el hardware puede trabajar con un par de registros base/límite.
  • 41. Protección
    • Registrar los derechos de acceso en la propia memoria
    • A cada dirección se le añade un número de bits para identificar al propietario
    • Problema: costoso
    • Mejora: Asociar estos bits a bloques de memoria física
    • Comprobación: tiempo de ejecución
    • SO => Clave “maestra” única que le da acceso sin restricciones a todos los bloques de memoria
  • 42. PARTICIÓN DINÁMICA El n ú mero de particiones y su tamaño es variable, las cuales son creadas dinámicamente para que se acomoden a las necesidades de cada proceso solicitante. Cuando un proceso termine o sea retirado de memoria el gestor de memoria puede devolver el espacio vacante al fondo de áreas de memoria libres a partir del cual se efectúan las asignaciones de particiones. El gestor de memoria puede continuar creando y asignando particiones a procesos solicitantes hasta que agote toda la memoria física o alcance el máximo grado de multiprogramación permitido.
  • 43. PARTICIÓN DINÁMICA Principios de Operación: - Cuando se le pide que carge una imagen de proceso, el módulo de gestión de memoria del SO intenta crear una partición adecuada para asignar al proceso solicitante. -Para lo cual se debe localizar un área libre contigua de memoria que sea igual o mayor que el tamaño del proceso, si se encuentra un área libre adecuada. -El SO fabrica una partición a partir de ella para conseguir un ajuste exacto a las necesidades del proceso, el trozo restante de memoria libre, es devuelto al fondo de la memoria libre para ser usado posteriormente por el módulo asignación. -  La partición se crea introduciendo su base, tamaño y estado (ASIGNADA) en la TDP.
  • 44. PARTICIÓN DINÁMICA -  * Si no es posible asignarle un área libre adecuada, el SO devuelve una indicación de error. * Cuando un proceso termina o es retirado de memoria, el SO devuelve el espacio de la partición al fondo de la memoria libre e invalida la entrada correspondiente a la TDP. * Cuando una partición es creada se le atribuyen dirección, tamaño y base los cuales permanecen inalterados hasta que exista la partición. * Las áreas libres de memoria se producen al terminar de usar particiones y con los restos generados por la creación de particiones. * Para la creación y asignación de particiones el SO debe llevar la cuenta de las direcciones iniciales y el tamaño de cada área libre de memoria.
  • 45. PARTICIÓN DINÁMICA -  A continuación se citan el proceso de creación de las particiones: * El sistema es inicializado declarando como libre toda la memoria disponible para asignación dinámica y marcando como no USADA todas las entradas de la TDP. *La lista de espacio libre contiene una sola entrada: toda la memoria disponible formando un solo bloque contiguo. Desde ese momento, la creación de una partición P de tamaño P_TAMAÑO se efectúa así: -Buscar en la lista de memoria libre un área libre L, tal que L_TAMAÑO ≥ P_TAMAÑO, en caso de no encontrar ninguna se termina con un error. - Calcular DIFE=L_TAMAÑO – P_TAMAÑO. Si DIFE ≤ c; donde c es una constante (pequeña), asignar entonces el área libre entera para crear la partición P haciendo P_TAMAÑO= L_TAMAÑO y P_BASE=L_BASE, ajustando los enlaces de los bloques adyacentes en la lista de memoria libre.
  • 46. PARTICIÓN DINÁMICA -  Si DIFE > c; entonces asignar espacio a la partición P en el bloque L, haciendo P_BASE= L_BASE, en donde L_BASE= P_BASE + P_TAMAÑO, y L_TAMAÑO= L_TAMAÑO – P_TAMAÑO. Encontrar una entrada no utilizada en la TDP y anotar en ella la base (P_BASE) y el tamaño (P_TAMAÑO). Cambiar el estado a asignada. Anotar el número de entrada en la TDP en el bloque de control del proceso, T, para el cual se está creando la partición P. Los Algoritmos más habituales para la selección de un área libre de memoria en la creación de una partición son: * Primer Ajuste y su variante, siguiente ajuste. * Mejor Ajuste. * Peor Ajuste.
  • 47. PARTICIÓN DINÁMICA -  El siguiente ajuste es una modificación del primer ajuste en donde el puntero a lista de memoria libre se guarda después de una asignación y se utiliza para comenzar a partir de él búsqueda de la asignación siguiente; en donde la siguiente búsqueda continúa en donde se quedó la última, en vez de comenzar siempre desde el principio de la lista de memoria libre. El primer ajuste y el mejor ajuste se encuentran entre los algoritmos más populares para asignación dinámica de memoria; así el primer ajuste recorre la mitad de la lista de memoria libre entera siendo más rápido pero no minimiza la memoria desaprovechada para una asignación determinada; en cambio el mejor ajuste es más lento y tiende a producir bloques de restos libres pequeños que puedan resultar demasiado pequeños para asignaciones posteriores.
  • 48. PARTICIÓN DINÁMICA -   Las particiones pueden terminarse después de un intercambio o tras la finalización del proceso R de la siguiente forma: UPasar el bloque del control de R para localizar la entrada en TDP, TDP [BCP [R]], que describe la partición P que va a ser anulada. Si el proceso R va a ser retirado de memoria, copiar su imagen en tiempo de ejecución desde la partición P al lugar designado en el archivo de intercambio. HHacer que el puntero [BCP[R]], a la partición asignada tome el valor de NINGUNA. DDevolver P a la lista de memoria libre, e integrarla con las áreas libres vecinas si es posible. IInvalidar la entrada en TDP que describe la partición anulada.
  • 49. COMPACTACIÓN -  La integración de áreas libres adyacentes cuando se devuelven bloques libres es un método normalmente utilizado para reducir la fragmentación, y consecutivamente la cantidad de memoria desaprovechada. La compactación de memoria es utilizada para solucionar la memoria fragmentada, la cual consiste en reubicar algunas o todas las particiones en un extremo de la memoria y así combinar los huecos en un área libre grande. La compactación puede realizarse siempre que sea posible o sólo cuando sea necesaria. Existen dos clases de traslados de las particiones: selectivo y global.