41
Sistemas Operativos Sistemas Operativos Ing. Gerardo Amaya Ing. Gerardo Amaya [email protected] [email protected]

Manejo de Memoria FreeBSD

Embed Size (px)

Citation preview

Page 1: Manejo de Memoria FreeBSD

Sistemas OperativosSistemas OperativosIng. Gerardo AmayaIng. Gerardo Amaya

[email protected]@galileo.edu

Page 2: Manejo de Memoria FreeBSD

Manejo de MemoriaManejo de Memoria

Page 3: Manejo de Memoria FreeBSD

Un poco de historia de Unix

Page 4: Manejo de Memoria FreeBSD

Historia de UnixHistoria de Unix Desarrollado por Bell Labs en 1970. Primera Desarrollado por Bell Labs en 1970. Primera

versión fue creada por Ken Thompson en versión fue creada por Ken Thompson en assembler para la PDP-7assembler para la PDP-7

Seguido la creación para la versión PDP-11 en Seguido la creación para la versión PDP-11 en un lenguaje llamado C, implementado por Dennis un lenguaje llamado C, implementado por Dennis RitchieRitchie

En 1974, Ambos publican el paper que inicia todo En 1974, Ambos publican el paper que inicia todo el fenómeno.el fenómeno.

Esto estimula universidades a obtener copiasEsto estimula universidades a obtener copias

Page 5: Manejo de Memoria FreeBSD

Historia de UnixHistoria de Unix Universidad de California en Berkeley es Universidad de California en Berkeley es

una de las Universidades que adquiere una de las Universidades que adquiere UnixUnix

Berkeley hizo cambios significativos en:Berkeley hizo cambios significativos en: Port para computadora VAXPort para computadora VAX Agregar Paged Virtual MemoryAgregar Paged Virtual Memory Extensión de filenames de 14 a 255 caracteresExtensión de filenames de 14 a 255 caracteres Inclusión del protocolo TCP/IPInclusión del protocolo TCP/IP

Page 6: Manejo de Memoria FreeBSD

Unix KernelUnix Kernel

Page 7: Manejo de Memoria FreeBSD

Que comprende Manejo de Memoria?

Page 8: Manejo de Memoria FreeBSD

Manejo de Memoria en Sistemas Manejo de Memoria en Sistemas OperativosOperativos

Los aspectos mas importantes a tratar para un manejo de Los aspectos mas importantes a tratar para un manejo de memoria son los siguientes:memoria son los siguientes: Manejo de Memoria Virtual, capa lógica entre requerimientos de Manejo de Memoria Virtual, capa lógica entre requerimientos de

aplicación y la memoria físicaaplicación y la memoria física Manejo de Memoria físicaManejo de Memoria física Manejo de Memoria Virtual del Kernel/Kernel Memory Allocator, Manejo de Memoria Virtual del Kernel/Kernel Memory Allocator,

componente que satisface los request de memoria, ya sea del componente que satisface los request de memoria, ya sea del kernel o del usuariokernel o del usuario

Manejo del espacio de memoria virtualManejo del espacio de memoria virtual Swapping y CachingSwapping y Caching

Page 9: Manejo de Memoria FreeBSD

Un poco de historia de Memoria Virtual

Page 10: Manejo de Memoria FreeBSD

Historia de Memoria VirtualHistoria de Memoria Virtual Desarrollada entre 1959-1962, en la Universidad Desarrollada entre 1959-1962, en la Universidad

de Manchester para la computadora Atlasde Manchester para la computadora Atlas En 1961,Burroughs libera la B5000, la primera En 1961,Burroughs libera la B5000, la primera

computadora comercial con VMcomputadora comercial con VM En 1969, IBM research team, muestra las En 1969, IBM research team, muestra las

ventajas de la memoria virtualventajas de la memoria virtual En 1970, Modelos de mini computadoras como En 1970, Modelos de mini computadoras como

modelos VAX corriendo VMS implementan modelos VAX corriendo VMS implementan memoria virtualmemoria virtual

Page 11: Manejo de Memoria FreeBSD

FreeBSD Memory ManagementFreeBSD Memory Management Porque hablamos de BSD?Porque hablamos de BSD? Ha sido el sistema base de todos los Ha sido el sistema base de todos los

Unixes de Hoy en díaUnixes de Hoy en día De aquí surgen implementaciones para De aquí surgen implementaciones para

todos los Sistemas Unixtodos los Sistemas Unix

Page 12: Manejo de Memoria FreeBSD

FreeBSD Memory ManagementFreeBSD Memory Management Versiones 4.2BSD y 4.3BSD utilizaron el sistema Versiones 4.2BSD y 4.3BSD utilizaron el sistema

de memoria virtual utilizado por arquitectura VAXde memoria virtual utilizado por arquitectura VAX VAX tiene dependencias de HardwareVAX tiene dependencias de Hardware 4.2BSD se concentro en TCP/IP4.2BSD se concentro en TCP/IP 4.3BSD se decidió rediseñar el sistema4.3BSD se decidió rediseñar el sistema Pues tenia 10 años, ya no era utilizablePues tenia 10 años, ya no era utilizable 40 compañías deciden diseñar este nuevo 40 compañías deciden diseñar este nuevo

sistemasistema

Page 13: Manejo de Memoria FreeBSD

FreeBSD Memory ManagementFreeBSD Memory Management En la versión 4.4BSD se realiza la En la versión 4.4BSD se realiza la

implementación de Memoria Virtualimplementación de Memoria Virtual Basado en Mach 2.0 con updates de Mach Basado en Mach 2.0 con updates de Mach

2.5 y Mach 3.02.5 y Mach 3.0 Pero quien es Mach? 2.0? 2.5? 3.0?Pero quien es Mach? 2.0? 2.5? 3.0?

Page 14: Manejo de Memoria FreeBSD

Mach Memory ManagementMach Memory Management Mach 3.0 es un microkernelMach 3.0 es un microkernel No tiene dependencias de HardwareNo tiene dependencias de Hardware DiseñoDiseño de VM 100% portable de VM 100% portable Multi-address-space sharing de objetos de Multi-address-space sharing de objetos de

memoria a través de address maps, share maps memoria a través de address maps, share maps y shadow objectsy shadow objects

Posible definición de manejadores por usuarioPosible definición de manejadores por usuario Mac OS X se basa en Mach 3.0 tambiénMac OS X se basa en Mach 3.0 también

Page 15: Manejo de Memoria FreeBSD

Manejo de Memoria Virtual, capa lógica entre requerimientos de

aplicación y la memoria física

Page 16: Manejo de Memoria FreeBSD

4.4BSD VMS4.4BSD VMS Sistema completamente diferente a sus Sistema completamente diferente a sus

predecesorespredecesores Soporte altamente eficiente para compartirSoporte altamente eficiente para compartir Separación clara de características dependientes Separación clara de características dependientes

e independientes de maquinae independientes de maquina Kernel y User ModeKernel y User Mode

Soporte MultiprocesadorSoporte Multiprocesador No usado en esa épocaNo usado en esa época

Page 17: Manejo de Memoria FreeBSD

Manejo de Memoria Física

Page 18: Manejo de Memoria FreeBSD

4.4BSD VMS4.4BSD VMS System Call Interface rediseñadaSystem Call Interface rediseñada Memoria física es utilizada como cache de Memoria física es utilizada como cache de

paginas mas usadaspaginas mas usadas Administrado por un algoritmo global de Administrado por un algoritmo global de

reemplazoreemplazo Divido en dos partesDivido en dos partes

Top 30MB-100MB reservado para el kernelTop 30MB-100MB reservado para el kernel ProcesosProcesos

Proceso en 32-bits Proceso en 32-bits 4Gbyte address space 4Gbyte address space

Page 19: Manejo de Memoria FreeBSD

Manejo de Memoria Virtual del Kernel

Page 20: Manejo de Memoria FreeBSD

4.4BSD Kernel Memory 4.4BSD Kernel Memory ManagementManagement

2 formas en que la memoria del kernel 2 formas en que la memoria del kernel puede ser organizada:puede ser organizada: Mapeado permanentemente en la parte alta Mapeado permanentemente en la parte alta

del address space de cada proceso (el mas del address space de cada proceso (el mas comun)comun)

Mapear unicamente el proceso que esta Mapear unicamente el proceso que esta corriendo actualmentecorriendo actualmente

Page 21: Manejo de Memoria FreeBSD

4.4BSD Kernel Memory 4.4BSD Kernel Memory ManagementManagement

Mapeado permanentemente en la parte alta Mapeado permanentemente en la parte alta del address space de cada proceso (el mas del address space de cada proceso (el mas comun)comun) Switch entre procesos no afecta en nada la Switch entre procesos no afecta en nada la

porcion del kernelporcion del kernel Reduce el costo de copia de datosReduce el costo de copia de datos

Page 22: Manejo de Memoria FreeBSD

4.4BSD Kernel Memory 4.4BSD Kernel Memory ManagementManagement

Mapear únicamente el proceso que esta Mapear únicamente el proceso que esta corriendo actualmentecorriendo actualmente Requiere instrucciones especiales para copiar Requiere instrucciones especiales para copiar

la data desde y hacia el kernella data desde y hacia el kernel

Page 23: Manejo de Memoria FreeBSD

4.4BSD Kernel Memory 4.4BSD Kernel Memory ManagementManagement

Mapas y Submapas en el KernelMapas y Submapas en el Kernel Boot time, kernel tiene que configurar su propio Boot time, kernel tiene que configurar su propio

espacio de memoriaespacio de memoria Estos son llamados mapasEstos son llamados mapas Submapas con porciones que reserva el kernel Submapas con porciones que reserva el kernel

para procesos internospara procesos internos

Page 24: Manejo de Memoria FreeBSD

Kernel Memory Allocator

Page 25: Manejo de Memoria FreeBSD

4.4BSD Kernel Memory Allocator4.4BSD Kernel Memory Allocator Funciones en CFunciones en C

malloc:malloc: Dato un numero de bytes, retorna un Dato un numero de bytes, retorna un puntero que apunta a este bloque da datos, si puntero que apunta a este bloque da datos, si no hay memoria disponible retorna el null no hay memoria disponible retorna el null pointerpointer

free:free: Elimina el puntero del bloque de memoria Elimina el puntero del bloque de memoria asignado por malloc, y lo retorna para ser asignado por malloc, y lo retorna para ser usado por el programa o el sistema operativousado por el programa o el sistema operativo

Estas son las funciones que usa el OS? NOEstas son las funciones que usa el OS? NO

Page 26: Manejo de Memoria FreeBSD

4.4BSD Kernel Memory Allocator4.4BSD Kernel Memory Allocator Existen diferentes implementaciones de Existen diferentes implementaciones de

malloc:malloc: Doug Lea Malloc:Doug Lea Malloc: Doug Lea Malloc es una Doug Lea Malloc es una

familia “allocators”, que incluye Doug Lea's familia “allocators”, que incluye Doug Lea's original allocator, GNU libc allocator y ptmalloc. original allocator, GNU libc allocator y ptmalloc.

BSD Malloc:BSD Malloc: Implementación realizada en 4.2 Implementación realizada en 4.2 BSDBSD

Hoard:Hoard: Hoard finalidad manejo de Hoard finalidad manejo de multithreads. (Microsoft Style!)multithreads. (Microsoft Style!)

Page 27: Manejo de Memoria FreeBSD

4.4BSD Kernel Memory Allocator4.4BSD Kernel Memory Allocator BSD MALLOC:BSD MALLOC:

Es un allocator que asigna objetos basados en pools Es un allocator que asigna objetos basados en pools predefinidos. predefinidos.

Estos valores son tamanos de potencias de 2 menos una Estos valores son tamanos de potencias de 2 menos una constanteconstante

Cuando se le pide un bloque de memoria, simplemente Cuando se le pide un bloque de memoria, simplemente lo asignalo asigna

Esto provee una implementacion rapidaEsto provee una implementacion rapida Pero puede causar desperdicios de memoriaPero puede causar desperdicios de memoria

Page 28: Manejo de Memoria FreeBSD

4.4BSD Memory Allocator4.4BSD Memory Allocator

Page 29: Manejo de Memoria FreeBSD

Manejo del espacio de memoria virtual

Page 30: Manejo de Memoria FreeBSD

4.4BSD VMS4.4BSD VMS Un Proceso tiene la libertad de manejar su Un Proceso tiene la libertad de manejar su

address space a su antojoaddress space a su antojo Normalmente IPC es el único medio de Normalmente IPC es el único medio de

comunicación:comunicación: PipesPipes SocketsSockets ArchivosArchivos Dispositivos especialesDispositivos especiales

Page 31: Manejo de Memoria FreeBSD

4.4BSD VMS4.4BSD VMS Esto se hace a través de system callsEsto se hace a través de system calls System calls muy lentos en ocasionesSystem calls muy lentos en ocasiones Existe una sección del address space de Existe una sección del address space de

cada proceso que todos pueden vercada proceso que todos pueden ver Esto reduce el uso de system calls y mas Esto reduce el uso de system calls y mas

eficiencia entre procesoseficiencia entre procesos

Page 32: Manejo de Memoria FreeBSD

4.4BSD VMS4.4BSD VMS 2 procesos pueden accesar un archivo al 2 procesos pueden accesar un archivo al

mismo tiempo por medio de este address mismo tiempo por medio de este address spacespace

Cambios hechos por un proceso se reflejan Cambios hechos por un proceso se reflejan en el otro proceso y en el archivo mismoen el otro proceso y en el archivo mismo

Page 33: Manejo de Memoria FreeBSD

4.4BSD VMS4.4BSD VMS Para debugging existe la opción de Private Para debugging existe la opción de Private

MappingMapping Esto permite que los cambios no sean Esto permite que los cambios no sean

vistos por otros procesosvistos por otros procesos Esto permite que los cambios no sean Esto permite que los cambios no sean

escritos al archivo mismoescritos al archivo mismo

Page 34: Manejo de Memoria FreeBSD

4.4BSD VMS4.4BSD VMS1.1. VmspaceVmspace2.2. Vm_mapVm_map3.3. Vm_map_entryVm_map_entry4.4. ObjectObject5.5. Shadow ObjectShadow Object6.6. Vm_pageVm_page

1.1. Estructuras que Estructuras que comprende todocomprende todo

2.2. Machine independent Machine independent Virtual SpaceVirtual Space

3.3. Rangos continuos de Rangos continuos de address spaceaddress space

4.4. Estructura de datosEstructura de datos5.5. Copia modificada de la Copia modificada de la

data originaldata original6.6. Virtual Memory systemVirtual Memory system

Page 35: Manejo de Memoria FreeBSD

4.4BSD VMS4.4BSD VMS

Page 36: Manejo de Memoria FreeBSD

Paging, Swapping y Caching

Page 37: Manejo de Memoria FreeBSD

4.4BSD Paging4.4BSD Paging A diferencia de MACH 3.0, 4.4BSD es un A diferencia de MACH 3.0, 4.4BSD es un

sistema de pagineo internosistema de pagineo interno Compilado dentro del kernelCompilado dentro del kernel Algoritmo Algoritmo Global least recently usedGlobal least recently used El kernel divide la memoria en 4 listas:El kernel divide la memoria en 4 listas:

Wired: Paginas que no se pueden removerWired: Paginas que no se pueden remover Active: Utilizada en regiones de la memoriaActive: Utilizada en regiones de la memoria

Page 38: Manejo de Memoria FreeBSD

4.4BSD Paging4.4BSD Paging Inactive: Contenidos conocidos, no es parte de Inactive: Contenidos conocidos, no es parte de

ninguna regioninguna regio Free: no tiene contenidosFree: no tiene contenidos

Kernel puede distinguir si la pagina esta Kernel puede distinguir si la pagina esta limpia o esta sucialimpia o esta sucia El sistema distingue entre paginasEl sistema distingue entre paginas

““Clean” listas para liberarse de memoriaClean” listas para liberarse de memoria ““Dirty” hay que escribir data antes de reutilizarseDirty” hay que escribir data antes de reutilizarse

Page 39: Manejo de Memoria FreeBSD

4.4BSD Paging4.4BSD Paging Caching de filesystem es parte de la Caching de filesystem es parte de la

implementación de memoria virtual.implementación de memoria virtual. Esto con el fin de memojara el desempeño de I/OEsto con el fin de memojara el desempeño de I/O Distributed Shared Memory facility, permite Distributed Shared Memory facility, permite

procesos corriendo en host separados por red, procesos corriendo en host separados por red, compartir memoria virtual de una manera compartir memoria virtual de una manera transparente como si estuvieran localmentetransparente como si estuvieran localmente

Page 40: Manejo de Memoria FreeBSD

4.4BSD Swapping4.4BSD Swapping A pesar que el Sistema Operativo evita el uso de A pesar que el Sistema Operativo evita el uso de

Swapping, es se utiliza:Swapping, es se utiliza: Baja Memoria en el sistemaBaja Memoria en el sistema Procesos inactivos por mas 20 segundosProcesos inactivos por mas 20 segundos

Remueve completamente el proceso de memoriaRemueve completamente el proceso de memoria Este se utiliza únicamente si el proceso de Este se utiliza únicamente si el proceso de

paging no se da a basto con las necesidades de paging no se da a basto con las necesidades de memoria del sistemamemoria del sistema

Page 41: Manejo de Memoria FreeBSD

Gracias por su atención