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

Manejo de Memoria FreeBSD

  • 6,064 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
6,064
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
264
Comments
0
Likes
1

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. Sistemas Operativos Ing. Gerardo Amaya [email_address]
  • 2. Manejo de Memoria
  • 3. Un poco de historia de Unix
  • 4. 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
  • 5. 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
  • 6. Unix Kernel
  • 7. Que comprende Manejo de Memoria?
  • 8. 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
  • 9. Un poco de historia de Memoria Virtual
  • 10. 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
  • 11. 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
  • 12. 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
  • 13. 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?
  • 14. 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
  • 15. Manejo de Memoria Virtual, capa lógica entre requerimientos de aplicación y la memoria física
  • 16. 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
  • 17. Manejo de Memoria Física
  • 18. 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
  • 19. Manejo de Memoria Virtual del Kernel
  • 20. 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
  • 21. 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
  • 22. 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
  • 23. 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
  • 24. Kernel Memory Allocator
  • 25. 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
  • 26. 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!)
  • 27. 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
  • 28. 4.4BSD Memory Allocator
  • 29. Manejo del espacio de memoria virtual
  • 30. 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
  • 31. 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
  • 32. 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
  • 33. 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
  • 34. 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
  • 35. 4.4BSD VMS
  • 36. Paging, Swapping y Caching
  • 37. 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
  • 38. 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
  • 39. 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
  • 40. 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
  • 41. Gracias por su atención