4. Administración de Memoria Flashcards

(36 cards)

1
Q

Que es la administracion de memoria?

A

Es una de las tareas mas importantes del sistema operativo, ya que todos los procesos tienen que usar memoria para ejecutar, las instrucciones estan en memoria.

Es la parte del sistema operativo responsable de:
* mantener que partes de la memoria estan en uso y por que procesos
* decidir cuales procesos seran cargados a memoria cuando esista espacio de memoria disponible
* asignar y liberar espacio de moemoria segun se necesite
* proteger los datos y garantizar la integridad entre procesos

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Como se prepara un programa para ejecutar?

A

Los programas son escritos en lenguajes de lato nivel y deben pasar por diferentes etapas antes de ser ejecutados:
1. Compilacion (compile): el compilador traduce del codigo de fuente del programa a un codigo objeto. El archivo objeto no es completo, ya que utiliza información de otros archivos.
2. Enlace (link): el linker enlaza varios codigos objeto de un programa en un unico archivo ejecutable
3. Carga (load): el loader asigna el archivo ejecutable a la memoria principal del sistema.

Compilador: traduce código fuente → código objeto.
Linker: combina códigos objeto y bibliotecas → ejecutable.
Loader: carga ejecutable en memoria y ajusta direcciones.

El sistema operativo carga los programas en memoria, permite compartir la memoria entre varios procesos y brinda mecanismos a los procesos para obtener más memoria en forma dinámica.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Cual es la funcion del linker?

A

Toma los distintos archivos objeto (si el programa es modular) y los combina en un ejecutable único, resolviendo las referencias externas.

Si usa bibliotecas, estas pueden:
* Incluirse directamente en el ejecutable (enlace estático).
* Referenciarse para ser cargadas en tiempo de ejecución (enlace dinámico).

El linker surgio ante la necesidad de modularizar y reutilizar codigo. Resuelve referencias externas y las posiciones relativas de los simbolos en los diferentes modulos, formando un modulo consolidado..

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Cuales son las areas de memoria de un proceso?

A

Las areas de memoria de un proceso (en ejecucion) son:
(dir baja - base)
* codigo (instrucciones)
* datos (variables estaticas)
* biblotecas dinamicas locales
* biblotecas dinamicas compartidas
* mapeo de archivos
* heap (memoria dinamica)
….
* stack (pila de llamadas y variables locales)
(dir alta - limit)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Que es la carga dinamica (dynamic loading)?

A

Es una tenica en la que ciertas rutinas o modulos de un programa no se cargan completamente a memoria fisica hasta que realmente se usan.

  • surge ante la limitaion de la cantidad de memoria fisica disponible
  • para aprovecha mejor la momoria
  • ahora memoria, ya que las rutinas que no son usadas no son cargadas, por lo que no consumen recursos innecesariamente
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Que es un enlace dinamico (dynamic linking)?

A

Es una tecnica que consiste en posponer la incorporacion de las biblotecas compartidas hasta el momento de ejecución.

En los archivos ejecutable se incorporan las biblotecas estaticas y para las dinamicas se mantiene una referencia.

El enlace dinamico usado junto con la carga dinamica permite un uso mas eficiente de memoria, dado que las biblotecas se cargan una unica vez en memoria principal.

A diferencia de la carga dinámica, el enlace dinámico de bibliotecas compartidas generalmente requiere la intervención del sistema operativo.
Dado que la memoria de un proceso está protegida, solamente el sistema operativo puede verificar si la rutina necesaria está alojada en el espacio de memoria de otro proceso o si puede permitir que múltiples procesos accedan a las mismas direcciones de memoria.

En la etapa de enlace de un programa, pueden incorporarse las bibliotecas compartidas al archivo ejecutable generado (enlace estático, static linking).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Que es la asociacion de direcciones (address binding)?

A

El programa pasa por diferentes etapas antes de ejecutarse y durante esas etapas las direcciones de memoria se pueden representar de diferentes formas:
* programa fuente: simbolicas (variables)
* luego de compilar: direcciones reubicadas
* luego de cargarse: direcciones absolutas

describe cómo las direcciones simbólicas o lógicas de un programa se convierten finalmente en direcciones físicas en la memoria del sistema

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

En que etapas puede ocurrir la asociacion de direcciones?

A

La asociación de instrucciones y datos a direcciones de memoria se puede realizar en las diferentes etapas:

Tiempo de compilación (compile time)
* El programa se asigna a un lugar específico y conocido de la memoria física.
* Se genera código absoluto: las direcciones de memoria son referenciadas en forma absoluta.
* Si la ubicación de inicio cambia, debe recompilarse el código.

Tiempo de carga (load time)
* Si no se conoce la ubicación exacta al compilar, el compilador genera código reubicable.
* Las direcciones de memoria se referencian en forma relativa.
* La asociación se retrasa hasta el momento de la carga. Si la dirección inicial cambia, solo se necesita recargar el código de usuario para tomar en cuenta el valor modificado.
* el loader es el que calcula las direcciones fisicas reales
* no permite mover el proceso mientras se ejecuta

** Tiempo de ejecución** (execution time)
* Si el proceso puede moverse durante su ejecución (desde un segmento de memoria a otro), la asignación debe retrasarse hasta el tiempo de ejecución.
* Se requiere hardware especial disponible para que este esquema funcione, la unidad de gestion de memoria (MMU)
* La mayoría de los sistemas operativos de uso general utilizan este método.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Cuales son los diferentes tipos de direccionamiento?

A

Se definen 2 tipos de direccionamiento:
* Direccionamiento físico (physical address): La dirección física manipulada por la unidad de memoria. Generada por la MMU.
* Direccionamiento virtual o ** direccionamiento lógico** (virtual address): La dirección lógica generada por asociación de direcciones. Generada por la CPU.

Para la asociación de direcciones en tiempo de compilación y en tiempo de carga, las direcciones lógicas y físicas coinciden. No es así para la asociación en tiempo de ejecución.

En tiempo de ejecución resulta en direcciones lógicas y físicas diferentes. La dirección lógica pasa a ser una dirección virtual.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Quien se encarga de hacer las traducciones de direcciones logicas a direcciones fisicas?

A

La traducciones de direcciones lógicas a físicas son hechas por la Unidad de Manejo de Memoria (Memory Management Unit, MMU).
Los procesos solo manipulan direcciones lógicas y no visualizan las físicas, que solamente son vistas por la MMU.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Que es la reubicación?

A

Es una técnica que permite mover un proceso a diferentes lugares de la memoria física sin que el programa o proceso tenga que ser modificado.

Cuando el sistema operativo carga un proceso le asigna un segmento contiguo de memoria. La dirección física inicial (más baja) del proceso es la dirección base y la dirección física más grande a la que puede acceder el proceso es la dirección límite.

Existen dos métodos de reubicación: estática y dinámica.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Cuales son los metodos de reubicacion?

A

Existen 2 metodos:

Reubicación Estatica
* El sistema operativo ajusta la dirección de memoria de un proceso para reflejar su posición inicial en la memoria (compilacion o carga)
* el proceso ejecuta dentro del espacio asignado
* una vez el proceso es reubicado estaticamente, ya no puede reubicarse hasta que finalice

Reubicación Dinámica
* La ubicacion del proceso se ajusta constantemente.
* El hardware agrega un registro de reubicación (valor base) a la dirección virtual generada por el compilador.
* Cada vez que el proceso accede a memoria, la dirección lógica generada por la CPU se suma a un registro de base (o de reubicación) para obtener la dirección de memoria física.
* El hardware compara la dirección de memoria con el registro límite (valor más alto disponible en la sección asignada). Si la dirección de memoria es mayor que el límite ocurre un error de direccionamiento.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Cuales son las ventajas y desventajas de la reubicacion dinamica?

A

Ventajas
* permite mover procesos para mejor uso de memoria
* los proceso pueden crecer con el tiempo y ser reubicados a un espacio mas grande
* es simple y se realiza por hardware (optimo): requiere dos registros especiales, una adición simple y una comparación simple.

Desventajas
* Existe un overhead en el procesamiento.
* Los procesos no pueden compartir memoria entre si.
* Los procesos requieren una cantidad fija de memoria física, lo que puede limitar la multiprogramación porque cada proceso activo debe caber en la memoria.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Que propiedades tiene la reubicacion?

A

La reubicación tiene tres propiedades principales:
* Transparencia: los procesos no son conscientes de que están compartiendo el recurso memoria.
* Seguridad: las referencias a la memoria se verifican para garantizar que se encuentren entre los registros base y límite. Mantiene a otros procesos a salvo de errores.
* Eficiencia: los chequeos de memoria y rangos son rápidos porque se realizan en hardware. Sin embargo, si un proceso crece, moverlo es una operación que requiere tiempo.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Como es la asignacion de memoria a nivel del sistema?

A

La memoria está dividida en dos secciones:
Sistema operativo residente
* Parte fija de la memoria que contiene el núcleo del sistema operativo y sus estructuras esenciales.
* Generalmente ubicada en las direcciones bajas de la memoria física.

Procesos de usuarios
* El resto de la memoria se destina a los procesos de usuario y sus datos.

Es necesario un mecanismo de protección de memoria entre los procesos y con el sistema operativo. Se utiliza el registro de reubicación y el registro límite para realizar la verificación de accesos válidos a la memoria.
Toda dirección lógica debe ser menor al valor del registro límite.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Como se proteje la memoria entre procesos y el sistema operativo?

A

Para que un proceso no lea ni escriba en memoria ajena o del sistema, se usan dos registros en hardware:

  • Registro base (reubicación): indica la dirección física inicial asignada al proceso.
  • Registro límite: indica el tamaño del bloque asignado al proceso.

Cuando el proceso accede a una dirección lógica, el sistema operativo (o la MMU) verifica que: Dirección lógica < límite
y calcula: Dirección física = dirección lógica + base

Si intenta acceder fuera de su rango, el sistema genera una interrupción por violación de memoria y termina o bloquea el proceso.

17
Q

Que y cuales son los esquemas de asignacion de particiones?

A

El sistema operativo define particiones de tamaño variable y las asigna a los procesos.
* Inicialmente, toda la memoria se considera disponible y asignable. Los procesos indican sus requerimientos de memoria y el sistema operativo les asigna particiones.
* El sistema operativo debe conocer las particiones ocupadas y libres (mapa de bits o la lista encadenada)

La asignacion de particiones puede ser:
* Asignacion Fija: el sistema reserva bloques de tamaño fijo
* Asignación Dinamica: los procesos pueden pedir más memoria durante la ejecución (por ejemplo, al crecer el heap o el stack).

Se genera fragmentación de la memoria.
Los sistemas operativos optan por delegar la administración de esta memoria a bibliotecas de usuario.
Los procesos liberan memoria (explícitamente o cuando terminan): se generan huecos en la memoria

18
Q

Cuales son las estrategias de asignación de memoria?

A

Existen varias estrategias para la asignación de memoria a un proceso:
* First fit: Asigna el primer hueco de memoria libre que satisface la necesidad.
* Best fit: Asigna el mejor hueco de memoria libre que exista en la memoria principal.
* Worst fit: Asigna el requerimiento en el hueco más grande que exista en la memoria principal.

Estudios de simulación han mostrado que first fit y best fit logran mejores rendimientos en tiempo de asignación y utilización de la memoria que worst fit.

19
Q

Que problemas sufren las estrategias de asignacion?

A

Las estrategias de asignación sufren el problema de fragmentación externa.

En la memoria se generan muchos huecos pequeños, que no son asignados. La memoria libre está fragmentada en una gran cantidad de huecos pequeños.

La fragmentación externa se da cuando existe suficiente memoria libre en el sistema para satisfacer un requerimiento de memoria, pero no es posible asignarla debido a que no es contigua.

Regla del 50 %. El análisis estadístico de first fit indica que, incluso optimizando, cada N bloques asignados se pierden 0.5 N bloques debido a la fragmentación (un tercio de la
memoria disponible).

Fragmentación interna. Sobrecarga por gestionar huecos muy pequeños. Dado un hueco de 18.464 B y un proceso que solicita 18.462 B. Se genera un hueco de 2 B, la sobrecarga de
gestionarlo será sustancialmente mayor que el beneficio.

Para evitar el problema, se divide la memoria física en bloques de tamaño fijo y se asigna la memoria en unidades del tamaño del bloque. La memoria asignada a un proceso
puede ser ligeramente mayor que la memoria solicitada. La diferencia es la fragmentación interna: memoria no utilizada, interna a una partición.

20
Q

Como se soluciona el problema de fragmentacion?

A

Existen 2 soluciones al problema de fragmentacion:
Compatacion
* se mueve el contenido de memoria para juntar los espacios ibres en un bloque grande y contiguo.
* solo es posible si se aplica reubicacion dinamica en tiempo de ejecucion.
* puede ser costoso ya que requiere mover muchos datos

Espacion de direcciones no contiguo
* Permitir que el espacio de direcciones lógicas de los procesos sea no contiguo.
* Se permite asignar memoria física a un proceso siempre que exista memoria disponible
* Dos técnicas complementarias logran esta solución: la segmentación y la paginación.

21
Q

Que es el swapping?

A

El swapping consiste en intercambiar un proceso completo desde la memoria principal (RAM) a memoria secundaria (backing store), a un área del disco llamada espacio de swap, y traer de vuelta otro proceso desde el swap a la RAM.

  • Esto permite “liberar” memoria física para que otros procesos puedan ejecutarse.
  • Más procesos pueden residir en el sistema, aunque no todos estén activos en la RAM al mismo tiempo.

Al mecanismo de llevar un proceso desde memoria principal a memoria secundaria se le denomina swap-out. Al mecanismo inverso se le denomina swap-in.

22
Q

Que objetivos tiene el swapping?

A
  • Aumentar la multiprogramación: más procesos en ejecución lógica.
  • Maximizar el uso de CPU: no dejarla ociosa por falta de procesos listos.
  • Liberar memoria física para procesos prioritarios.
23
Q

Como funciona el swapping?

A
  1. El sistema operativo identifica un proceso en memoria que está inactivo o en espera.
  2. Copia su imagen completa al disco (swap out).
  3. Carga en su lugar otro proceso desde el disco (swap in).
  4. Cuando el proceso original vuelve a ser necesario, se vuelve a cargar en memoria física.

Para esto el sistema mantiene una cola de procesos listos para ejecutarse, cuyas imágenes están en la memoria o en el backing store.

El despachador:
1. verifica si el siguiente proceso en la cola está en la memoria que está inactivo o en espera
2. Si no está y no hay una región de memoria libre, intercambia un proceso actualmente en la memoria y el proceso deseado.
3. Recarga los registros y transfiere el control al proceso seleccionado.

Desventajas
* Es una operación lenta, porque implica acceso a disco (miles de veces más lento que la RAM).
* Si el sistema swapea demasiado frecuentemente (hiperpaginación), puede degradar severamente el rendimiento del sistema.

24
Q

Que es la segmentacion?

A

La segmentación es una técnica que divide el espacio lógico de un proceso en segmentos lógicos de distinto tamaño, según su estructura lógica.

25
Como funciona la **segmentacion**?
* Cada área de un proceso (código, stack, heap, tabla de símbolos, etc.) se asigna a un segmento de tamaño independiente y con una finalidad especifica. Cada segmento tiene su numero. * La CPU genera una direccion virtual de memoria para cada area en su segmento correspondiente. Esta direccion logica tiene 2 parte: Numero de segmento y Desplazamiento dentro del segmento. * En memoria principal se tiene la **table de segmentos** para mantener la informacion de cada segmento. Cada entrada (segmento) tiene: la direccions fisica base (*segment base*) y el largo del segmento (*segment limit*). La tabla se referencia por un registr: Segment Table Base Register, STBR. * Cuando un proceso genera un direccion virtual (S,D), el sistema busca en la tabla la entrada S , verifica que D sea menor al limite del segmento y calcula la direccion fisica (segment base+D)
26
Que beneficios tiene la **segmentación**?
**Proteccion de memoria** * Dividir la memoria en segmentos permite asociar a cada segmento un conjunto de permisos. * Lo habitual es que un segmento de código tenga permisos de lectura y ejecución y no de escritura. * Un segmento de datos tiene permisos de lectura y escritura. * Se define un conjunto de bits de protección (protection bits) controlados por el hardware. **Posibilidad de Compartir memoria/segmentos** * Los segmentos proporcionan una forma clara y sencilla para compartir memoria entre varios procesos. * Como cada segmento tiene su propia entrada en la tabla de segmentos, dos o más procesos pueden tener entradas en sus tablas que apuntan al mismo segmento físico. * Esto permite que ambos procesos accedan a los mismos datos, usando su espacio lógico.
27
Como es la **Paginación**?
La **paginacion** es una tecnica que divide el espacio logico y la memoria fisica en bloques de igual tamaño fijo (*page size*): **Paginas** o *pages* (virtuales) en el espacio logico y **Marcos** o *frames* (fisicos) en el espacio fisico. * Cada proceso tiene su propia tabla de paginas y cada entrada de la tabla indica en que frame de la memoria fisica esta la pagina correspondiente * Cuando la CPU (ejecutando una instruccion de un proceso) genera una direccion logica: numero de pagina (p) y el desplazamiento (*offset*) dentro de la pagina (d). El sistema operativo busca la entrada p en la tabla de pagina para obtener el numero de frame (f) y se obtiene la direccion fisica: f + d.
28
Que beneficios tiene la **paginación**?
* permite usar una memoria física mayor a la que puede ser direccionada por la CPU. * evita la fragmentación externa * elimina la necesidad de compactación * resuelve el problema de colocar fragmentos de memoria de diferentes tamaños en el swap (fragmentacion de swap), en el swap la compactaion no es aplicable poque el acceso es lento.
29
Que problema tiene la **paginación**?
Puede haber **fragmentación interna** en la ultima pagina de cada proceso (si no se llena). * Si el tamaño del proceso es independiente del tamaño de página, el valor esperado de la fragmentación interna es de media página por proceso. Los tamaños de página pequeños son deseables. * Pero existe una sobrecarga asociada a cada entrada de la tabla de páginas, que se reduce a medida que aumenta el tamaño de página. * Además, la E/S del disco es más eficiente cuando la cantidad de datos que se transfieren es mayor. * Los tamaños de página han crecido a medida que los procesos, los datos y la memoria principal se han incrementado. Actualmente, el tamaño de página es de 4 KB u 8 KB o mas.
30
Como se implementa la **paginación**?
Se asigna una tabla de pagina por proceso, en el PCB del proceso hay un puntero al comienzo de su tabla de paginas. Hay dos formas de implementar esto por hardware: **Por Registros** * se usan registros dedicados para almacenar la tabla de paginas * con logica de alta velocidad para traducir las direcciones * se recargan estos registros usando el despachador con instrucciiones privilegiadas * es rapido * tiene cantidad limitada de entradas **Por PTBR** (*Page Table Base Register*) * la tabla se mantiene en memoria principal y se asigna un registro que apunta a la direccion de la tabla (PTBR) * para cambiar la tabla requiere cambiar solo el PTBR, reduce el tiempo de cambio de contexto * duplica el numero de accesos a memoria: 1 vez para acceder a la tabla y 1 vez para obtener el frame * para reducir el impacto del doble acceso, se usa una cache de la tabla de paginas: **Translation Look-Aside Buffer** (TLB), asociativa y rapida.
31
Que es la TLB? | Translation Lookaside Buffer
Es una pequeña memoria caché asociativa que está en el hardware (dentro o junto a la MMU) y que guarda las últimas traducciones de direcciones virtuales a físicas. * Cada entrada consiste de dos parate: clave (tag) y valor (numero de frame). * La busqueda de una clave en la TLB es simultanea entre todas la tags. * Si se ecuentre la clave **TLB hit** entonces se genera la direccion buscada a partir del valor asociado * Si no, occure **TLB miss**, se debe acceder a memoria para obtener la entrada. Luego se guarda el valor obtenido en la TLB para posteriores accesos ## Footnote * Una búsqueda en la TLB en un hardware moderno es parte del pipeline de instrucciones: no penaliza el rendimiento. Sin embargo, para poder ejecutar la búsqueda dentro de una etapa del pipeline, la TLB debe ser pequeña * Algunas CPU implementan TLB independientes para direcciones de instrucciones y de datos, y logran duplicar la cantidad de entradas disponibles * Algunas caché TLB agregan a cada entrada un identificador de espacio de direccionamiento (Address Space IDentifier, ASID). * En la búsqueda de una clave solo se toman en cuenta las entradas cuyo ASID coincide con el del proceso en ejecución. * El uso del identificador permite que la cache TLB contenga entradas para varios procesos de forma simultánea. * Si no se utiliza el ASID, en cada cambio de contexto se debe limpiar las entradas de la TLB, para no realizar accesos equivocados a memoria.
32
Cual es le tiempo efectivo de la TLB?
El **Tiempo efectivo de acceso** (*Effective Access Time*, EAT): es el porcentaje de veces que un número de página es encontrado en la cache TLB se denomina hit ratio. EAT= tiempo de búsqueda en TLB + (hit ratio × tiempo de acceso a memoria) + (1− hit ratio) × (2 × tiempo de acceso a memoria) EAT determina la ganancia de la utilización de la caché TLB.
33
Que mecanismo de proteccion tiene la **paginación**?
* La tabla de páginas tiene una entrada por cada posible página que tenga el proceso. * Es necesario identificar cuales son entradas válidas y cuales no. * Se utiliza un bit de protección en cada entrada (valid-invalid bit) para determinar si la página es válida o inválida. * El acceso a una página cuyo bit marca que es inválida genera una excepción a nivel del sistema operativo.
34
Cuales son las estructuras de la tabla de paginas?
Los sistemas tiene un gran espacio de direcciones logicas, por lo que es necesario usar una estructura mas eficiente, que ocupe menos espacio para almacenar la tabla de paginas. Existen varias estructuras para resolver esto: **Jerarquica** * se basa en dividir la tabla de paginas, definiendo una jerarquia. * se separa el campo de indexado de la direccion virtual en varios niveles (ej: seccion, pagina y offset) * este esquema se llama *forward-mapped page table* y se puede aplicar con multiples niveles de indexación **Diccionarios** * consiste en implementar una tabla de hash abierto con el valor de la componente de numero de pagina * la direccion virtual (o la parte de indexado) se pasa por la funcio de hash, la funcion de hash devuelve el frame fisico si existe, sino significa que no esta mapeada y occure un *page fault* * ocupa poca memoria, compleja de manejar **Invertida** * consite en una unica tabla de paginas global a todos los procesos * aimenta el tiempo de busqueda * reduce el espacio de almacenamiento en memoria principal * Cada frame en memoria tiene una entrada indicando qué proceso/página virtual lo usa, cuando un proceso genera una dirección virtual, el sistema recorre (o busca en un índice) para encontrar el frame correspondiente. ## Footnote dirlog = indexado (base) + offset
35
Como funciona la memoria compartida en la paginacion?
* Los procesos se componen de una parte privada de código y datos y de otras partes que pueden ser compartidas. * La posibilidad de dividir el espacio de direccionamiento en páginas permite a los procesos compartir de forma eficiente las páginas comunes en memoria. Ejemplos: * La sección de código de un mismo proceso. * El código de una biblioteca dinámica. * Memoria compartida. * Esta estrategia permite un uso más eficiente de la memoria.
36
Como se compara la **segmentación** con la **paginación**?
* La segmentación logra implementar la visión que el usuario tiene de la memoria. * En la paginación, el espacio de direccionamiento de un proceso se distribuye de forma no contigua. * La segmentación sufre de fragmentación externa. Los segmentos se asignan de forma contigua, pero a medida que se liberan generan huecos que, si no se completan totalmente, generan huecos menores no utilizables. Para solucionar el problema es necesario reorganizar/compactar la memoria (tarea costosa). * La paginación genera fragmentación interna. Dado que la granularidad es a nivel de página, se generan espacios de memoria dentro de las páginas que quedan sin uso. * La segmentación logra compartir y proteger memoria entre procesos de forma más directa que la paginación. * En la paginación, compartir un espacio de direccionamiento de un proceso implica mantener una gran cantidad de referencias de páginas compartidas, mientras que en la segmentación solo se comparte el segmento. * Con la paginación la asignación de una página en memoria es más rápida. Utilizando un mapa de bits se obtiene de forma sencilla un frame libre de memoria donde puede ser asignada la página. * En segmentación es necesario mantener una lista y la búsqueda se hace más costosa. ## Footnote La paginación y la segmentación se pueden combinar para potenciar las ventajas de cada técnica. La memoria es segmentada y los segmentos se dividen en páginas. La MMU se compone de una unidad de segmentación y una unidad de paginación. Las direcciones virtuales contienen un identificador de segmento y un desplazamiento. A partir de ellos se generauna dirección lineal (de 32 bits en IA32). Luego, la dirección es traducida a una dirección física por parte de una unidad de paginación