Your SlideShare is downloading. ×
0
Sistemas Operativos Ing. Gerardo Amaya [email_address]
Manejo de Memoria
Un poco de historia de Unix
Historia de Unix <ul><li>Desarrollado por Bell Labs en 1970. Primera versión fue creada por Ken Thompson en assembler para...
Historia de Unix <ul><li>Universidad de California en Berkeley es una de las Universidades que adquiere Unix </li></ul><ul...
Unix Kernel
Que comprende Manejo de Memoria?
Manejo de Memoria en Sistemas Operativos <ul><li>Los aspectos mas importantes a tratar para un manejo de memoria son los s...
Un poco de historia de  Memoria Virtual
Historia de Memoria Virtual <ul><li>Desarrollada entre 1959-1962, en la Universidad de Manchester para la computadora Atla...
FreeBSD Memory Management <ul><li>Porque hablamos de BSD? </li></ul><ul><li>Ha sido el sistema base de todos los Unixes de...
FreeBSD Memory Management <ul><li>Versiones 4.2BSD y 4.3BSD utilizaron el sistema de memoria virtual utilizado por arquite...
FreeBSD Memory Management <ul><li>En la versión 4.4BSD se realiza la implementación de Memoria Virtual </li></ul><ul><li>B...
Mach Memory Management <ul><li>Mach 3.0 es un microkernel </li></ul><ul><li>No tiene dependencias de Hardware </li></ul><u...
Manejo de Memoria Virtual,  capa lógica entre requerimientos de aplicación y la memoria física
4.4BSD VMS <ul><li>Sistema completamente diferente a sus predecesores </li></ul><ul><li>Soporte altamente eficiente para c...
Manejo de Memoria Física
4.4BSD VMS <ul><li>System Call Interface rediseñada </li></ul><ul><li>Memoria física es utilizada como cache de paginas ma...
Manejo de Memoria Virtual del Kernel
4.4BSD Kernel Memory Management <ul><li>2 formas en que la memoria del kernel puede ser organizada: </li></ul><ul><ul><li>...
4.4BSD Kernel Memory Management <ul><li>Mapeado permanentemente en la parte alta del address space de cada proceso (el mas...
4.4BSD Kernel Memory Management <ul><li>Mapear únicamente el proceso que esta corriendo actualmente </li></ul><ul><ul><li>...
4.4BSD Kernel Memory Management <ul><li>Mapas y Submapas en el Kernel </li></ul><ul><ul><li>Boot time, kernel tiene que co...
Kernel Memory Allocator
4.4BSD Kernel Memory Allocator <ul><li>Funciones en C </li></ul><ul><ul><li>malloc:  Dato un numero de bytes, retorna un p...
4.4BSD Kernel Memory Allocator <ul><li>Existen diferentes implementaciones de malloc: </li></ul><ul><ul><li>Doug Lea Mallo...
4.4BSD Kernel Memory Allocator <ul><li>BSD MALLOC:   </li></ul><ul><ul><li>Es un allocator que asigna objetos basados en p...
4.4BSD Memory Allocator
Manejo del espacio de memoria virtual
4.4BSD VMS <ul><li>Un Proceso tiene la libertad de manejar su address space a su antojo </li></ul><ul><li>Normalmente IPC ...
4.4BSD VMS <ul><li>Esto se hace a través de system calls </li></ul><ul><li>System calls muy lentos en ocasiones </li></ul>...
4.4BSD VMS <ul><li>2 procesos pueden accesar un archivo al mismo tiempo por medio de este address space </li></ul><ul><li>...
4.4BSD VMS <ul><li>Para debugging existe la opción de Private Mapping </li></ul><ul><li>Esto permite que los cambios no se...
4.4BSD VMS <ul><li>Vmspace </li></ul><ul><li>Vm_map </li></ul><ul><li>Vm_map_entry </li></ul><ul><li>Object </li></ul><ul>...
4.4BSD VMS
Paging, Swapping y Caching
4.4BSD Paging <ul><li>A diferencia de MACH 3.0, 4.4BSD es un sistema de pagineo interno </li></ul><ul><li>Compilado dentro...
4.4BSD Paging <ul><ul><li>Inactive: Contenidos conocidos, no es parte de ninguna regio </li></ul></ul><ul><ul><li>Free: no...
4.4BSD Paging <ul><li>Caching de filesystem es parte de la implementación de memoria virtual. </li></ul><ul><li>Esto con e...
4.4BSD Swapping <ul><li>A pesar que el Sistema Operativo evita el uso de Swapping, es se utiliza: </li></ul><ul><ul><li>Ba...
Gracias por su atención
Upcoming SlideShare
Loading in...5
×

Manejo de Memoria FreeBSD

6,208

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
6,208
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
267
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Transcript of "Manejo de Memoria FreeBSD"

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

    Clipping is a handy way to collect important slides you want to go back to later.

×