Manejo de Memoria FreeBSD
Upcoming SlideShare
Loading in...5
×
 

Manejo de Memoria FreeBSD

on

  • 10,530 views

 

Statistics

Views

Total Views
10,530
Views on SlideShare
10,491
Embed Views
39

Actions

Likes
1
Downloads
262
Comments
0

1 Embed 39

http://www.slideshare.net 39

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Manejo de Memoria FreeBSD Manejo de Memoria FreeBSD Presentation Transcript

  • Sistemas Operativos Ing. Gerardo Amaya [email_address]
  • Manejo de Memoria
  • Un poco de historia de Unix
  • Historia de Unix
    • Desarrollado por Bell Labs en 1970. Primera versión fue creada por Ken Thompson en assembler para la PDP-7
    • Seguido la creación para la versión PDP-11 en un lenguaje llamado C, implementado por Dennis Ritchie
    • En 1974, Ambos publican el paper que inicia todo el fenómeno.
    • Esto estimula universidades a obtener copias
  • Historia de Unix
    • Universidad de California en Berkeley es una de las Universidades que adquiere Unix
    • Berkeley hizo cambios significativos en:
      • Port para computadora VAX
      • Agregar Paged Virtual Memory
      • Extensión de filenames de 14 a 255 caracteres
      • Inclusión del protocolo TCP/IP
  • Unix Kernel
  • Que comprende Manejo de Memoria?
  • Manejo de Memoria en Sistemas Operativos
    • Los aspectos mas importantes a tratar para un manejo de memoria son los siguientes:
      • Manejo de Memoria Virtual, capa lógica entre requerimientos de aplicación y la memoria física
      • Manejo de Memoria física
      • Manejo de Memoria Virtual del Kernel/Kernel Memory Allocator, componente que satisface los request de memoria, ya sea del kernel o del usuario
      • Manejo del espacio de memoria virtual
      • Swapping y Caching
  • Un poco de historia de Memoria Virtual
  • Historia de Memoria Virtual
    • Desarrollada entre 1959-1962, en la Universidad de Manchester para la computadora Atlas
    • En 1961,Burroughs libera la B5000, la primera computadora comercial con VM
    • En 1969, IBM research team, muestra las ventajas de la memoria virtual
    • En 1970, Modelos de mini computadoras como modelos VAX corriendo VMS implementan memoria virtual
  • FreeBSD Memory Management
    • Porque hablamos de BSD?
    • Ha sido el sistema base de todos los Unixes de Hoy en día
    • De aquí surgen implementaciones para todos los Sistemas Unix
  • FreeBSD Memory Management
    • Versiones 4.2BSD y 4.3BSD utilizaron el sistema de memoria virtual utilizado por arquitectura VAX
    • VAX tiene dependencias de Hardware
    • 4.2BSD se concentro en TCP/IP
    • 4.3BSD se decidió rediseñar el sistema
    • Pues tenia 10 años, ya no era utilizable
    • 40 compañías deciden diseñar este nuevo sistema
  • FreeBSD Memory Management
    • En la versión 4.4BSD se realiza la implementación de Memoria Virtual
    • Basado en Mach 2.0 con updates de Mach 2.5 y Mach 3.0
    • Pero quien es Mach? 2.0? 2.5? 3.0?
  • Mach Memory Management
    • Mach 3.0 es un microkernel
    • No tiene dependencias de Hardware
    • Diseño de VM 100% portable
    • Multi-address-space sharing de objetos de memoria a través de address maps, share maps y shadow objects
    • Posible definición de manejadores por usuario
    • Mac OS X se basa en Mach 3.0 también
  • Manejo de Memoria Virtual, capa lógica entre requerimientos de aplicación y la memoria física
  • 4.4BSD VMS
    • Sistema completamente diferente a sus predecesores
    • Soporte altamente eficiente para compartir
    • Separación clara de características dependientes e independientes de maquina
      • Kernel y User Mode
    • Soporte Multiprocesador
      • No usado en esa época
  • Manejo de Memoria Física
  • 4.4BSD VMS
    • System Call Interface rediseñada
    • Memoria física es utilizada como cache de paginas mas usadas
    • Administrado por un algoritmo global de reemplazo
    • Divido en dos partes
      • Top 30MB-100MB reservado para el kernel
      • Procesos
    • Proceso en 32-bits  4Gbyte address space
  • Manejo de Memoria Virtual del Kernel
  • 4.4BSD Kernel Memory Management
    • 2 formas en que la memoria del kernel puede ser organizada:
      • Mapeado permanentemente en la parte alta del address space de cada proceso (el mas comun)
      • Mapear unicamente el proceso que esta corriendo actualmente
  • 4.4BSD Kernel Memory Management
    • Mapeado permanentemente en la parte alta del address space de cada proceso (el mas comun)
      • Switch entre procesos no afecta en nada la porcion del kernel
      • Reduce el costo de copia de datos
  • 4.4BSD Kernel Memory Management
    • Mapear únicamente el proceso que esta corriendo actualmente
      • Requiere instrucciones especiales para copiar la data desde y hacia el kernel
  • 4.4BSD Kernel Memory Management
    • Mapas y Submapas en el Kernel
      • Boot time, kernel tiene que configurar su propio espacio de memoria
      • Estos son llamados mapas
      • Submapas con porciones que reserva el kernel para procesos internos
  • Kernel Memory Allocator
  • 4.4BSD Kernel Memory Allocator
    • Funciones en C
      • malloc: Dato un numero de bytes, retorna un puntero que apunta a este bloque da datos, si no hay memoria disponible retorna el null pointer
      • free: Elimina el puntero del bloque de memoria asignado por malloc, y lo retorna para ser usado por el programa o el sistema operativo
    • Estas son las funciones que usa el OS? NO
  • 4.4BSD Kernel Memory Allocator
    • Existen diferentes implementaciones de malloc:
      • Doug Lea Malloc: Doug Lea Malloc es una familia “allocators”, que incluye Doug Lea's original allocator, GNU libc allocator y ptmalloc.
      • BSD Malloc: Implementación realizada en 4.2 BSD
      • Hoard: Hoard finalidad manejo de multithreads. (Microsoft Style!)
  • 4.4BSD Kernel Memory Allocator
    • BSD MALLOC:
      • Es un allocator que asigna objetos basados en pools predefinidos.
      • Estos valores son tamanos de potencias de 2 menos una constante
      • Cuando se le pide un bloque de memoria, simplemente lo asigna
      • Esto provee una implementacion rapida
      • Pero puede causar desperdicios de memoria
  • 4.4BSD Memory Allocator
  • Manejo del espacio de memoria virtual
  • 4.4BSD VMS
    • Un Proceso tiene la libertad de manejar su address space a su antojo
    • Normalmente IPC es el único medio de comunicación:
      • Pipes
      • Sockets
      • Archivos
      • Dispositivos especiales
  • 4.4BSD VMS
    • Esto se hace a través de system calls
    • System calls muy lentos en ocasiones
    • Existe una sección del address space de cada proceso que todos pueden ver
    • Esto reduce el uso de system calls y mas eficiencia entre procesos
  • 4.4BSD VMS
    • 2 procesos pueden accesar un archivo al mismo tiempo por medio de este address space
    • Cambios hechos por un proceso se reflejan en el otro proceso y en el archivo mismo
  • 4.4BSD VMS
    • Para debugging existe la opción de Private Mapping
    • Esto permite que los cambios no sean vistos por otros procesos
    • Esto permite que los cambios no sean escritos al archivo mismo
  • 4.4BSD VMS
    • Vmspace
    • Vm_map
    • Vm_map_entry
    • Object
    • Shadow Object
    • Vm_page
    • Estructuras que comprende todo
    • Machine independent Virtual Space
    • Rangos continuos de address space
    • Estructura de datos
    • Copia modificada de la data original
    • Virtual Memory system
  • 4.4BSD VMS
  • Paging, Swapping y Caching
  • 4.4BSD Paging
    • A diferencia de MACH 3.0, 4.4BSD es un sistema de pagineo interno
    • Compilado dentro del kernel
    • Algoritmo Global least recently used
    • El kernel divide la memoria en 4 listas:
      • Wired: Paginas que no se pueden remover
      • Active: Utilizada en regiones de la memoria
  • 4.4BSD Paging
      • Inactive: Contenidos conocidos, no es parte de ninguna regio
      • Free: no tiene contenidos
    • Kernel puede distinguir si la pagina esta limpia o esta sucia
      • El sistema distingue entre paginas
        • “ Clean” listas para liberarse de memoria
        • “ Dirty” hay que escribir data antes de reutilizarse
  • 4.4BSD Paging
    • Caching de filesystem es parte de la implementación de memoria virtual.
    • Esto con el fin de memojara el desempeño de I/O
    • Distributed Shared Memory facility, permite procesos corriendo en host separados por red, compartir memoria virtual de una manera transparente como si estuvieran localmente
  • 4.4BSD Swapping
    • A pesar que el Sistema Operativo evita el uso de Swapping, es se utiliza:
      • Baja Memoria en el sistema
      • Procesos inactivos por mas 20 segundos
    • Remueve completamente el proceso de memoria
    • Este se utiliza únicamente si el proceso de paging no se da a basto con las necesidades de memoria del sistema
  • Gracias por su atención