SlideShare una empresa de Scribd logo
1 de 25
ADMINISTRACIÓN Y MANEJO DE LA MEMORIA

Adaptado por:
GIOVANNI ANDRÉS TOVAR CLAVIJO
Sistemas Operativos
Administración y manejo de la memoria
 Relocalización
 Encadenamiento

 Carga
 Sin intercambio ni paginación
 Segmentación

 Algoritmos de sustitución de paginas
 Aspectos de diseño para sistemas de paginación
Introducción
La memoria física de un computador es comúnmente dividida en dos áreas,
memoria del monitor residente y memoria del usuario. El problema
principal de este esquema es el proporcionar una protección eficiente que
evite que programas del usuario modifiquen (accidentalmente o
intencionalmente) código o datos del monitor residente, ya que esto dejaría
fuera de acción al sistema operativo. Existen varias soluciones a este
problema, pero el mas común es el de utilizar un registro limite de dirección
comúnmente llamado "registro barrera" (fence register), en el cual se coloca
la dirección de la primera posición de memoria que un programa del usuario
puede utilizar.
Cada dirección generada por una instrucción o dato de un programa, es
comparada con el contenido del registro barrera. Si la dirección generada es
mayor o igual que la barrera, entonces la direcci6n es valida ya que
comprende alguna localidad de la memoria del usuario. En caso contrario,
se trata de una referencia ilegal, por lo que se genera una interrupción al
S.O. para que maneje este tipo de error (generalmente imprime un letrero y
aborta el programa)
Introducción
La dirección del registro de barrera puede ser cambiado según las
necesidades de memoria, por ejemplo si crece el monitor residente al
actualizarlo.
Otro problema a considerar es la carga en memoria de los programas del
usuario. Aunque la dirección de la memoria del computador empieza en
00000, la primera dirección del programa del usuario no puede ser 00000,
sino la primera direcci6n mas allá de la barrera. Una de las formas de
corregir esto es al tiempo de compilación, ya que si se conoce la direcci6n de
la barrera, se pueden generar direcciones absolutas que comiencen y se
extiendan a partir de la barrera. Sin embargo, si la dirección de la barrera
cambia, es necesario recompilar el programa para poder ser corrido
nuevamente.
Relocalización
Una mejor alternativa al método de direcciones absolutas, consiste en
generar direcciones relativas o re localizables, las cuales no toman en
cuenta el valor de la barrera al momento de compilación, sino que la
correcci6n es diferida hasta el tiempo de carga o de ejecución del
programa. En el primer método, al momento de cargar el programa
en memoria, el valor de la barrera es sumado a todas las direcciones
en que debería cargarse cada instrucción o dato del programa, así
como también a las direcciones a las que hace referencia cada
instrucci6n (variables del programa), de tal forma que siempre se
tengan direcciones a partir de la barrera.
Este método funciona siempre y cuando la barrera no cambie durante
la ejecución del programa, sino solamente antes de correr el programa
(p.e. entre programa y programa). Debido a esta condición de barrera
estática, se dice que se tiene "Relocalización Estática". En muchos
casos, los sistemas operativos cuentan con partes transitorias que se
pueden eliminar y volver a cargar.
Relocalización
Por ejemplo, en los casos en que algún manejador de dispositivo no se utilice
frecuentemente, puede ser quitado para utilizar ese espacio de memoria
para programas del usuario, y volver a cargarlo cuando sea requerido por
algún programa en ejecución. Este esquema, hace que sea necesario cambiar
la direcci6n de la barrera incluso durante la ejecución de un programa. Una
solución a este problema es cargar el programa en memoria igual que en el
método anterior, sumándole el valor de la barrera a todas las direcciones
generadas por el compilador, excepto a las direcciones a que hacen
referencia las instrucciones del programa (variables); estas son dejadas tal
cual. La corrección es hecha hasta el momento en que al ser ejecuta cada
instrucción en la CPU y se genere un intento de accesar la memoria.
En ese momento, a la direcci6n generada le es sumado el valor de la barrera y
luego es enviada a la memoria. Por lo tanto, el usuario siempre trabaja con
direcciones lógicas (las generadas por el compilador), y el hardware de
relocalización se encarga de generar direcciones físicas.
Relocalización
Por ejemplo si la barrera se encuentra en 1700, cualquier intento de accesar
la localidad 0000, será automáticamente relocalizada a 1700. Un acceso a la
localidad 515, será relocalizada a la 2215.

A este sistema se le llama relocalización dinámica ya que la barrera puede
ser cambiada en cualquier momento. Por lo tanto, si es necesario cambiar la
barrera, solo es necesario cambiar el contenido del registro base, y trasladar
el programa del usuario a las nuevas localidades de memoria relativas a la
nueva barrera, y continuar con la ejecuci6n del programa.
Sin embargo, si cargamos mas de un programa en el área del usuario, los
sistemas anteriormente vistos ya no proporcionan la protección debida, ya
que si bien el S. 0. queda protegido, los programas de los usuarios no.
Relocalización
Si ejecutamos el programa del usuario, es posible que este pueda modificar
el código o los datos de los programa 2 y 3. Si movemos la barrera hasta el
inicio del programa 2, el programa 1 queda protegido al igual que el monitor;
sin embargo, el programa 3 queda aun desprotegido.
0
Barrera

MONITOR
Usuario 1
Usuario 2
Usuario 3

Una solución a este problema, es utilizar dos registros para delimitar
plenamente la memoria del programa en ejecución.
Relocalización
0

MONITOR

Límite Inferior

Usuario 1

Barrera

Límite Superior

Usuario 2
Usuario 3

Los limites se implementan con registros igual que anteriormente. De esta
manera, si el programa en ejecución es el 2, el monitor y el programa 1
quedan protegidos por el limite inferior, mientras que el programa 3 queda
protegido por el limite superior. Una vez finalizada la ejecución del
programa 1, los registros son movidos al programa 2, y así sucesivamente .
Este esquema de cambio de barreras obviamente requiere un sistema de
relocalización dinámica.
Relocalización
El registro de limite checa por el limite superior que puede generar un
programa antes de ser relocalizado dinámicamente por el registro base
mientras que el limite inferior queda definido por la dirección 0000 que
generan los compiladores.
El use del esquema anteriormente mencionado u otros similares permiten
tener mas de un usuario residente en memoria simultáneamente, ya que es
posible dividir la memoria en múltiples regiones llamadas particiones.
Dos posibles métodos se derivan de este esquema:
 Múltiples particiones contiguas fijas
 Múltiples particiones contiguas variables.
Múltiples particiones contiguas fijas
En esta opción, se seleccionan regiones fijas de memoria para crear
procesos, por ejemplo una región de 10 K bytes para procesos muy
pequeños, regiones de 20 K para procesos de tamaño promedio, y 50 K para
procesos grandes.
Cuando un proceso llega del exterior, es puesto en la cola de procesos o
spool manejada por el asignador de procesos, cuando le toca su turno
(generalmente FIFO), la cantidad de memoria que requiere es tomada en
cuenta y es comparada contra las regiones de memoria vacías; si el proceso
puede ser cargado en alguna de ellas lo hace, pero si no, entonces busca el
siguiente que pueda ser cargado en las regiones disponibles. Para saber que
regiones de memoria están disponibles, se implementa una lista llamada
"cola de regiones de memoria disponibles", en la cual se anota la cantidad de
memoria del hueco libre y la direcci6n donde inicia.
Múltiples particiones contiguas fijas
El asignador de procesos también busca optimizar el desperdicio de
memoria; es decir, no cargar programas muy pequeños en regiones muy
grandes ya que estas son fijas. A este desperdicio se le llama fragmentación
interna.
0
COLA DE PROCESOS

MONITOR
33 K
Región de 15k
Proceso de 12k

7K 50K 40K 15K 12K 25K

Región de 30k
Proceso de 25k
128 k

Región de 50k
Proceso de 40k
Múltiples particiones contiguas fijas
Como puede verse, el primer proceso puede ser cargado en la región de 30K
con una fragmentación de 5K, el de 12K en la de 15K con fragmentación de 3,
el de 15K tendrá que esperar a que se desocupe la región de 15K (o decidir
cargarla en la de 40K con gran fragmentación), la de 40K puede ser cargada
en la de 50K con un desperdicio de 10K, y las de 50K y 7K tendrán que
esperar a que alguna regi6n adecuada se desocupe.
0
COLA DE PROCESOS

MONITOR
33 K

Región de 15k
Proceso de 12k

7K 50K 40K 15K 12K 25K

Región de 30k
Proceso de 25k
128 k

Región de 50k
Proceso de 40k
Múltiples particiones contiguas variables
El problema con particiones fijas es determinar los mejores tamaños de
regiones para minimizar la fragmentación interna y externa. Sin embargo,
con un conjunto de procesos dinámicos, es poco probable llegar a una
condición optima. La solución a este problema es permitir que las regiones
varíen de tamaño dinámicamente.
Esta solución es llamada múltiples particiones contiguas variables. Esta
forma de manejo de memoria consiste en tener una cola de regiones de
memoria que están disponibles. Al inicio se tiene un solo bloque de
memoria para programas del usuario que resulta de cargar el Sistema
Operativo en la memoria disponible. Cuando los procesos llegan, se checa
en la cola de regiones de memoria disponibles si se puede cargar el proceso.
Si la regi6n es muy grande, solo se asigna la necesaria y el resto es puesto en
la cola de regiones de memoria disponibles.
Múltiples particiones contiguas variables
Por ejemplo asuma que los siguientes procesos requieren servicio (memoria
total 256K):

COLA DE PROCESOS
No. de procesos
1
2
3
4
5

Memoria Requerida (K)
60
100
30
70
50

Tiempo Ráfaga
10
5
20
8
15

Si el algoritmo usado es del tipo primero en llegar primero en salir, podemos
cargar a memoria los 3 primeros procesos:
Múltiples particiones contiguas variables
COLA DE PROCESOS
No. de procesos

Memoria Requerida (K)

1
2
3
4
5

60
100
30
70
50
0
40 K
100 K
200 K
230 K
256 K

Tiempo Ráfaga
10
5
20
8
15

MONITOR
Proceso 1
Proceso 2
Proceso 3
###############
Múltiples particiones contiguas variables
La cola de regiones de memoria disponible queda con un hueco de 26K; sin
embargo, en ese hueco no es posible cargar ya ninguno de los procesos
pendientes, por lo que se dice que tenemos una fragmentación externa de
26K. Al terminar el proceso 2, regresa a la cola de regiones de memoria
disponibles un área de 100K en la cual podemos cargar el proceso 4 de 70K,
regresando a la cola el área restante de 30K.
La cola de regiones de memoria disponibles queda: 26, 30 con sus
respectivas direcciones de inicio. Como el proceso 5 no se puede cargar, nos
deja una fragmentación externa de 56K. El siguiente en terminar es el
proceso 1, permitiéndonos cargar el proceso 5 en el área de 60K dejado por el
proceso 1, y poniendo en la cola de regiones de memoria disponibles el área
no usada (10K). La cola de regiones de memoria nos queda: 26, 30, 10 con sus
respectivas direcciones.
Múltiples particiones contiguas variables
Como ya no hay procesos que cargar, no podemos afirmar que se tenga una
fragmentación externa de 66K. Esto dependerá de que se pueda cargar o no
el siguiente proceso que llegue. En caso negativo, entonces se tiene
efectivamente una fragmentación externa de 66K.
El esquema anterior, requiere de una estrategia para asignar los huecos de
memoria disponibles.

En general se tienen 3 algoritmos:
 "Primero en ajustar" (first-fit)
 "Mejor en ajustar" (best-fit)

 "Peor en ajustar" (worst-fit).
Múltiples particiones contiguas variables
 "PRIMERO EN AJUSTAR" (First Fit). Carga el programa en el primer

hueco suficientemente grande que encuentra en la lista de regiones de
memoria disponibles. Es el algoritmo mas rápido.
 "MEJOR EN AJUSTAR" (Best Fit). Busca por el hueco de memoria que

menos fragmentaci6n produzca. Si la lista de regiones de memoria
disponibles es mantenida en orden ascendente, es fácil y rápido encontrar la
mas adecuada. De otra manera debemos buscar toda la lista.
 "PEOR EN AJUSTAR" (Wosrt Fit). Carga el programa en el hueco mas

grande que encuentra y deja en la lista de regiones disponibles el tamaño del
resto de la memoria no usada. Esta estrategia a veces rinde mejores
resultados que la de mejor en caber, ya que produce huecos grandes de
fragmentaci6n que pueden ser mejor utilizados que fragmentaciones muy
pequeñas. Es adecuado mantener la lista ordenada de mayor a menor para
reducir el tiempo de búsqueda. El hardware usado para este sistema es
exactamente el mismo; es decir, dos registros que delimitan perfectamente
el área del programa a ejecutar.
Múltiples particiones contiguas variables
COMPACTACIÓN :

En la última parte del ejemplo, existe una fragmentación de 66K compuesta
por 3 huecos de 10, 30 y 26K, los cuales son mas difíciles de usar que si
fueran un solo bloque de 66K. Sin embargo, es posible compactar la
memoria haciendo que todos los huecos disponibles se junten ya sea en la
parte de abajo o del medio de la memoria.
Para efectuar la compactación, es necesario cambiar de localidad los
procesos, por lo que este sistema solo es posible si el hardware cuenta con
relocalización dinámica; ya que de otra forma, los procesos no podrían
trabajar en sus nuevas direcciones.
Paginación
El sistema de particiones variables sufre del problema de fragmentación
externa ya que un proceso debe ser cargado en memoria contigua. Este
problema puede ser resuelto por compactación o por paginación.
Paginación permite que un programa sea cargado en memoria no contigua;
es decir, en varios fragmentos fijos no contiguos .
Es importante notar que paginación es por si misma una forma de
relocalización dinámica. Un aspecto importante de paginación es la clara
separación entre la memoria desde el punto de vista del usuario y la
memoria %Ica actual. El usuario ve la memoria como un espacio contiguo,
conteniendo solo su programa. En realidad, el programa del usuario esta
disperso a través de toda la memoria %Ica, la cual también contiene otros
programas. La traducción entre ambas memorias es realizada por la tabla de
paginas que es manejada por el sistema operativo. Paginación viene a ser un
esquema de múltiples particiones fijas no contiguas.
Paginación
ASIGNACION DE MEMORIA EN PAGINACION.
En el sistema de paginación, cuando un proceso nuevo llega al dispositivo de
spool, es seleccionado por el asignador de procesos para ser cargado a
memoria. Primero comprueba su requerimiento de memoria en paginas. En
seguida busca en la lista de cuadros de memoria disponibles para ver si es
posible cargar el proceso. Cada pagina requiere un cuadro, por lo que si el
proceso consta de N paginas, deberá haber N cuadros de la memoria física
para poder cargarlo.
El sistema de paginación esta exento de fragmentación externa, ya que todos
los cuadros pueden ser otorgados a cualquier proceso que lo necesite. Sin
embargo, es posible tener fragmentaci6n interna ya que los cuadros son de
tamaño fijo y si un programa no logra llenar la pagina completa, se tendrá
un desperdicio. El peor caso es cuando un programa requiere de n paginas
mas una palabra, ya que casi toda la pagina quedara vacía.
Segmentación
Segmentación es otro método de administración de memoria, el cual
permite cargar un programa en memoria no contigua. Este método es mas
natural ya que generalmente un programa esta constituido por un programa
principal y varios subprogramas separados, por lo que cada una de estas
entidades puede ser guardada en un segmento de memoria individual de
tamaño exacto según lo requiera cada uno. Lo anterior indica que los
segmentos deben de ser de longitud variable, en contraste con paginación en
donde las paginas son de longitud fija. Cada segmento tiene un nombre o
numero y una longitud. El usuario por esto especifica cada dirección por dos
cantidades: un nombre de segmento y un desplazamiento.
Dado que ahora una dirección dentro de un programa del usuario (dirección
lógica), debe especificarse como una direcci6n de 2 dimensiones, y dado que
la memoria física es aun un arreglo de una sola dimensi6n, es necesario
implementar un dispositivo que mapee o convierta una direcci6n de dos
dimensiones en otra de una sola dimensi6n. Esto se hace por medio de la
tabla de segmentos.
Segmentación
FRAGMENTACION EN PAGINACION.
El asignador de procesos debe encontrar y cargar en memoria todos los
segmentos de un programa del usuario. Esta situación es similar a
paginación excepto que los segmentos son de longitud variable, (las paginas
son todas del mismo tamaño), por lo que la fragmentación interna puede ser
despreciable. Sin embargo, se puede tener fragmentación externa cuando
todos los segmentos disponibles son demasiado pequeños para cargar cierto
programa.
Segmentación viene a ser un esquema de múltiples particiones no contiguas
variables.
Administración y manejo de la memoria_Parte1

Más contenido relacionado

La actualidad más candente

1.1.5 Gestion de Memoria estática con TDA.pptx
1.1.5 Gestion de Memoria estática con TDA.pptx1.1.5 Gestion de Memoria estática con TDA.pptx
1.1.5 Gestion de Memoria estática con TDA.pptxFernando Solis
 
Programación 3: Grafos, representación y operaciones
Programación 3: Grafos, representación y operacionesProgramación 3: Grafos, representación y operaciones
Programación 3: Grafos, representación y operacionesAngel Vázquez Patiño
 
Procesos Ligeros: Hilos o Hebras
Procesos Ligeros: Hilos o HebrasProcesos Ligeros: Hilos o Hebras
Procesos Ligeros: Hilos o HebrasJ M
 
REGISTRO DE BANDERAS
REGISTRO DE BANDERASREGISTRO DE BANDERAS
REGISTRO DE BANDERASFabian Rojas
 
¿Qué es la máquina de turing y como funciona?
¿Qué es la máquina de turing y como funciona?¿Qué es la máquina de turing y como funciona?
¿Qué es la máquina de turing y como funciona?vmtorrealba
 
Paradigmas de programación
Paradigmas de programaciónParadigmas de programación
Paradigmas de programaciónTensor
 
Estructura de datos lineales y no lineales
Estructura de datos lineales y no linealesEstructura de datos lineales y no lineales
Estructura de datos lineales y no linealeslos4estatidinamicos
 
Memoria Estatica
Memoria EstaticaMemoria Estatica
Memoria EstaticaJ M
 
Funcionamiento de un pila
Funcionamiento de un pilaFuncionamiento de un pila
Funcionamiento de un pilajefer
 
Presentación MS Project
Presentación MS ProjectPresentación MS Project
Presentación MS ProjectMAURICIO
 
POO Unidad 1: Introducción a la Programación Orientada a Objetos
POO Unidad 1: Introducción a la Programación Orientada a ObjetosPOO Unidad 1: Introducción a la Programación Orientada a Objetos
POO Unidad 1: Introducción a la Programación Orientada a ObjetosFranklin Parrales Bravo
 
Ordenamiento por monticulo (heapsort)
Ordenamiento por monticulo (heapsort)Ordenamiento por monticulo (heapsort)
Ordenamiento por monticulo (heapsort)edopaz
 

La actualidad más candente (20)

Ordenamiento QuickSort
Ordenamiento QuickSortOrdenamiento QuickSort
Ordenamiento QuickSort
 
1.1.5 Gestion de Memoria estática con TDA.pptx
1.1.5 Gestion de Memoria estática con TDA.pptx1.1.5 Gestion de Memoria estática con TDA.pptx
1.1.5 Gestion de Memoria estática con TDA.pptx
 
Programación 3: Grafos, representación y operaciones
Programación 3: Grafos, representación y operacionesProgramación 3: Grafos, representación y operaciones
Programación 3: Grafos, representación y operaciones
 
Tópicos Avanzados de Programación - Unidad 1 GUI
Tópicos Avanzados de Programación - Unidad 1 GUITópicos Avanzados de Programación - Unidad 1 GUI
Tópicos Avanzados de Programación - Unidad 1 GUI
 
Procesos Ligeros: Hilos o Hebras
Procesos Ligeros: Hilos o HebrasProcesos Ligeros: Hilos o Hebras
Procesos Ligeros: Hilos o Hebras
 
Lenguaje Lisp
Lenguaje LispLenguaje Lisp
Lenguaje Lisp
 
REGISTRO DE BANDERAS
REGISTRO DE BANDERASREGISTRO DE BANDERAS
REGISTRO DE BANDERAS
 
Programación modular
Programación modularProgramación modular
Programación modular
 
¿Qué es la máquina de turing y como funciona?
¿Qué es la máquina de turing y como funciona?¿Qué es la máquina de turing y como funciona?
¿Qué es la máquina de turing y como funciona?
 
Tabla De Transicion
Tabla De TransicionTabla De Transicion
Tabla De Transicion
 
Paradigmas de programación
Paradigmas de programaciónParadigmas de programación
Paradigmas de programación
 
Estructura de datos lineales y no lineales
Estructura de datos lineales y no linealesEstructura de datos lineales y no lineales
Estructura de datos lineales y no lineales
 
Algoritmo de ordenamiento: Heap Sort
Algoritmo de ordenamiento: Heap SortAlgoritmo de ordenamiento: Heap Sort
Algoritmo de ordenamiento: Heap Sort
 
Archivo logico
Archivo logicoArchivo logico
Archivo logico
 
Memoria Estatica
Memoria EstaticaMemoria Estatica
Memoria Estatica
 
Funcionamiento de un pila
Funcionamiento de un pilaFuncionamiento de un pila
Funcionamiento de un pila
 
Presentación MS Project
Presentación MS ProjectPresentación MS Project
Presentación MS Project
 
POO Unidad 1: Introducción a la Programación Orientada a Objetos
POO Unidad 1: Introducción a la Programación Orientada a ObjetosPOO Unidad 1: Introducción a la Programación Orientada a Objetos
POO Unidad 1: Introducción a la Programación Orientada a Objetos
 
Ordenamiento por monticulo (heapsort)
Ordenamiento por monticulo (heapsort)Ordenamiento por monticulo (heapsort)
Ordenamiento por monticulo (heapsort)
 
1.2. El procesador y sus registros internos
1.2. El procesador y sus registros internos1.2. El procesador y sus registros internos
1.2. El procesador y sus registros internos
 

Destacado

I_Gerardo Morales actividad 2
I_Gerardo Morales actividad 2I_Gerardo Morales actividad 2
I_Gerardo Morales actividad 2igerardomorales
 
Simple Tricks To Get Killer Abs
Simple Tricks To Get Killer AbsSimple Tricks To Get Killer Abs
Simple Tricks To Get Killer AbsIvanBoikov
 
Procedimiento de gestión ESTRATEGIA INTEGRAL DEL VEHÍCULO ELÉCTRICO
Procedimiento de gestión ESTRATEGIA INTEGRAL DEL VEHÍCULO ELÉCTRICOProcedimiento de gestión ESTRATEGIA INTEGRAL DEL VEHÍCULO ELÉCTRICO
Procedimiento de gestión ESTRATEGIA INTEGRAL DEL VEHÍCULO ELÉCTRICOeixcinc
 
Workshop: Social Web-Tools für gemeinnützige Bildungsinstitutionen
Workshop: Social Web-Tools für gemeinnützige BildungsinstitutionenWorkshop: Social Web-Tools für gemeinnützige Bildungsinstitutionen
Workshop: Social Web-Tools für gemeinnützige BildungsinstitutionenBenjamin Jörissen
 
Violencia contra la mujer (1)
Violencia contra la mujer (1)Violencia contra la mujer (1)
Violencia contra la mujer (1)Massiel Mendoza
 
hebräische Zahlen 1 bis 10 ivrit zahlen 1 bis 10
hebräische Zahlen 1 bis 10 ivrit zahlen 1 bis 10hebräische Zahlen 1 bis 10 ivrit zahlen 1 bis 10
hebräische Zahlen 1 bis 10 ivrit zahlen 1 bis 10redux2
 
Cuaderno de prácticas
Cuaderno de prácticasCuaderno de prácticas
Cuaderno de prácticasnenamaryx
 
Verein angelio Kaufgemeinschaft
Verein angelio KaufgemeinschaftVerein angelio Kaufgemeinschaft
Verein angelio KaufgemeinschaftGerhard Fischer
 
Malca oleadas 1820/30/48_4ºESO
Malca oleadas 1820/30/48_4ºESOMalca oleadas 1820/30/48_4ºESO
Malca oleadas 1820/30/48_4ºESOMA LopezCozar
 
Bloom, kendall, marzano y vigostky
Bloom, kendall, marzano y vigostkyBloom, kendall, marzano y vigostky
Bloom, kendall, marzano y vigostkyBeto Höek
 
9 reloj con movimiento
9 reloj con movimiento9 reloj con movimiento
9 reloj con movimientoCindy Gonzalez
 
Material de laboratorio
Material de laboratorioMaterial de laboratorio
Material de laboratorioDaniel GZ
 

Destacado (20)

I_Gerardo Morales actividad 2
I_Gerardo Morales actividad 2I_Gerardo Morales actividad 2
I_Gerardo Morales actividad 2
 
Simple Tricks To Get Killer Abs
Simple Tricks To Get Killer AbsSimple Tricks To Get Killer Abs
Simple Tricks To Get Killer Abs
 
Procedimiento de gestión ESTRATEGIA INTEGRAL DEL VEHÍCULO ELÉCTRICO
Procedimiento de gestión ESTRATEGIA INTEGRAL DEL VEHÍCULO ELÉCTRICOProcedimiento de gestión ESTRATEGIA INTEGRAL DEL VEHÍCULO ELÉCTRICO
Procedimiento de gestión ESTRATEGIA INTEGRAL DEL VEHÍCULO ELÉCTRICO
 
Eric
Eric Eric
Eric
 
Workshop: Social Web-Tools für gemeinnützige Bildungsinstitutionen
Workshop: Social Web-Tools für gemeinnützige BildungsinstitutionenWorkshop: Social Web-Tools für gemeinnützige Bildungsinstitutionen
Workshop: Social Web-Tools für gemeinnützige Bildungsinstitutionen
 
Hochdruckreinigung 2
Hochdruckreinigung 2Hochdruckreinigung 2
Hochdruckreinigung 2
 
Violencia contra la mujer (1)
Violencia contra la mujer (1)Violencia contra la mujer (1)
Violencia contra la mujer (1)
 
hebräische Zahlen 1 bis 10 ivrit zahlen 1 bis 10
hebräische Zahlen 1 bis 10 ivrit zahlen 1 bis 10hebräische Zahlen 1 bis 10 ivrit zahlen 1 bis 10
hebräische Zahlen 1 bis 10 ivrit zahlen 1 bis 10
 
DigitalCLM presenta IMG Gestión Documental
DigitalCLM presenta IMG Gestión DocumentalDigitalCLM presenta IMG Gestión Documental
DigitalCLM presenta IMG Gestión Documental
 
Cuaderno de prácticas
Cuaderno de prácticasCuaderno de prácticas
Cuaderno de prácticas
 
Historia
HistoriaHistoria
Historia
 
Verein angelio Kaufgemeinschaft
Verein angelio KaufgemeinschaftVerein angelio Kaufgemeinschaft
Verein angelio Kaufgemeinschaft
 
Malca oleadas 1820/30/48_4ºESO
Malca oleadas 1820/30/48_4ºESOMalca oleadas 1820/30/48_4ºESO
Malca oleadas 1820/30/48_4ºESO
 
Navegadores
NavegadoresNavegadores
Navegadores
 
Bloom, kendall, marzano y vigostky
Bloom, kendall, marzano y vigostkyBloom, kendall, marzano y vigostky
Bloom, kendall, marzano y vigostky
 
Laptop
LaptopLaptop
Laptop
 
93 2007
93 200793 2007
93 2007
 
Presentación12
Presentación12Presentación12
Presentación12
 
9 reloj con movimiento
9 reloj con movimiento9 reloj con movimiento
9 reloj con movimiento
 
Material de laboratorio
Material de laboratorioMaterial de laboratorio
Material de laboratorio
 

Similar a Administración y manejo de la memoria_Parte1

Similar a Administración y manejo de la memoria_Parte1 (20)

Grupo1 Hhh
Grupo1 HhhGrupo1 Hhh
Grupo1 Hhh
 
tercera unidad :3
tercera unidad :3tercera unidad :3
tercera unidad :3
 
Opensuse2
Opensuse2Opensuse2
Opensuse2
 
semana 1.pdf
semana 1.pdfsemana 1.pdf
semana 1.pdf
 
Coordinacion Y Sincronizacion De Procesos
Coordinacion  Y  Sincronizacion  De  ProcesosCoordinacion  Y  Sincronizacion  De  Procesos
Coordinacion Y Sincronizacion De Procesos
 
Segunda unidas open suse
Segunda unidas open suseSegunda unidas open suse
Segunda unidas open suse
 
Clase 8 de sio administracion de la memoria
Clase 8 de sio administracion de la memoriaClase 8 de sio administracion de la memoria
Clase 8 de sio administracion de la memoria
 
Modos direccionamiento
Modos direccionamientoModos direccionamiento
Modos direccionamiento
 
Arquitectura de una computadora
Arquitectura de una computadoraArquitectura de una computadora
Arquitectura de una computadora
 
Capacidad de la unidad de procesamiento
Capacidad de la unidad de procesamientoCapacidad de la unidad de procesamiento
Capacidad de la unidad de procesamiento
 
Direccionamiento
DireccionamientoDireccionamiento
Direccionamiento
 
Diagrama de bloque procesador intel
Diagrama de bloque procesador intelDiagrama de bloque procesador intel
Diagrama de bloque procesador intel
 
Finalfinal
FinalfinalFinalfinal
Finalfinal
 
Gestión de memoria
Gestión de memoriaGestión de memoria
Gestión de memoria
 
Arquitectura de computadores y redes
Arquitectura de computadores y redesArquitectura de computadores y redes
Arquitectura de computadores y redes
 
Unidad2
Unidad2Unidad2
Unidad2
 
Sistemas Operativos
Sistemas OperativosSistemas Operativos
Sistemas Operativos
 
Capitulo3
Capitulo3Capitulo3
Capitulo3
 
Trabajo memoria virtual
Trabajo memoria virtualTrabajo memoria virtual
Trabajo memoria virtual
 
Capítulo 2 - Libro Azúl
Capítulo 2 - Libro AzúlCapítulo 2 - Libro Azúl
Capítulo 2 - Libro Azúl
 

Más de giovatovar

Lenguaje de máquina
Lenguaje de máquinaLenguaje de máquina
Lenguaje de máquinagiovatovar
 
Instrucciones de máquina
Instrucciones de máquinaInstrucciones de máquina
Instrucciones de máquinagiovatovar
 
Arquitectura del procesador
Arquitectura del procesadorArquitectura del procesador
Arquitectura del procesadorgiovatovar
 
Introducción Arquitectura Computadores
Introducción Arquitectura ComputadoresIntroducción Arquitectura Computadores
Introducción Arquitectura Computadoresgiovatovar
 
Administracion archivos sena
Administracion archivos senaAdministracion archivos sena
Administracion archivos senagiovatovar
 
Administracion y manejo de memoria parte2
Administracion y manejo de memoria parte2Administracion y manejo de memoria parte2
Administracion y manejo de memoria parte2giovatovar
 
S.o. distribuidos
S.o. distribuidosS.o. distribuidos
S.o. distribuidosgiovatovar
 
Programacion concurrente
Programacion concurrenteProgramacion concurrente
Programacion concurrentegiovatovar
 
Procesos y adm
Procesos y admProcesos y adm
Procesos y admgiovatovar
 
Administracion e s
Administracion e sAdministracion e s
Administracion e sgiovatovar
 
Administracion archivos
Administracion archivosAdministracion archivos
Administracion archivosgiovatovar
 
Administracion y manejo de memoria parte2
Administracion y manejo de memoria parte2Administracion y manejo de memoria parte2
Administracion y manejo de memoria parte2giovatovar
 
Administracion y manejo de memoria
Administracion y manejo de memoriaAdministracion y manejo de memoria
Administracion y manejo de memoriagiovatovar
 

Más de giovatovar (19)

Lenguaje de máquina
Lenguaje de máquinaLenguaje de máquina
Lenguaje de máquina
 
Instrucciones de máquina
Instrucciones de máquinaInstrucciones de máquina
Instrucciones de máquina
 
Arquitectura del procesador
Arquitectura del procesadorArquitectura del procesador
Arquitectura del procesador
 
Introducción Arquitectura Computadores
Introducción Arquitectura ComputadoresIntroducción Arquitectura Computadores
Introducción Arquitectura Computadores
 
Actividad 4
Actividad 4Actividad 4
Actividad 4
 
Administracion archivos sena
Administracion archivos senaAdministracion archivos sena
Administracion archivos sena
 
Actividad 2
Actividad 2Actividad 2
Actividad 2
 
Actividad 1
Actividad 1Actividad 1
Actividad 1
 
Administracion y manejo de memoria parte2
Administracion y manejo de memoria parte2Administracion y manejo de memoria parte2
Administracion y manejo de memoria parte2
 
S.o. distribuidos
S.o. distribuidosS.o. distribuidos
S.o. distribuidos
 
Redes petri
Redes petriRedes petri
Redes petri
 
Programacion concurrente
Programacion concurrenteProgramacion concurrente
Programacion concurrente
 
Procesos y adm
Procesos y admProcesos y adm
Procesos y adm
 
Presentación
PresentaciónPresentación
Presentación
 
Estructura so
Estructura soEstructura so
Estructura so
 
Administracion e s
Administracion e sAdministracion e s
Administracion e s
 
Administracion archivos
Administracion archivosAdministracion archivos
Administracion archivos
 
Administracion y manejo de memoria parte2
Administracion y manejo de memoria parte2Administracion y manejo de memoria parte2
Administracion y manejo de memoria parte2
 
Administracion y manejo de memoria
Administracion y manejo de memoriaAdministracion y manejo de memoria
Administracion y manejo de memoria
 

Administración y manejo de la memoria_Parte1

  • 1. ADMINISTRACIÓN Y MANEJO DE LA MEMORIA Adaptado por: GIOVANNI ANDRÉS TOVAR CLAVIJO Sistemas Operativos
  • 2. Administración y manejo de la memoria  Relocalización  Encadenamiento  Carga  Sin intercambio ni paginación  Segmentación  Algoritmos de sustitución de paginas  Aspectos de diseño para sistemas de paginación
  • 3. Introducción La memoria física de un computador es comúnmente dividida en dos áreas, memoria del monitor residente y memoria del usuario. El problema principal de este esquema es el proporcionar una protección eficiente que evite que programas del usuario modifiquen (accidentalmente o intencionalmente) código o datos del monitor residente, ya que esto dejaría fuera de acción al sistema operativo. Existen varias soluciones a este problema, pero el mas común es el de utilizar un registro limite de dirección comúnmente llamado "registro barrera" (fence register), en el cual se coloca la dirección de la primera posición de memoria que un programa del usuario puede utilizar. Cada dirección generada por una instrucción o dato de un programa, es comparada con el contenido del registro barrera. Si la dirección generada es mayor o igual que la barrera, entonces la direcci6n es valida ya que comprende alguna localidad de la memoria del usuario. En caso contrario, se trata de una referencia ilegal, por lo que se genera una interrupción al S.O. para que maneje este tipo de error (generalmente imprime un letrero y aborta el programa)
  • 4. Introducción La dirección del registro de barrera puede ser cambiado según las necesidades de memoria, por ejemplo si crece el monitor residente al actualizarlo. Otro problema a considerar es la carga en memoria de los programas del usuario. Aunque la dirección de la memoria del computador empieza en 00000, la primera dirección del programa del usuario no puede ser 00000, sino la primera direcci6n mas allá de la barrera. Una de las formas de corregir esto es al tiempo de compilación, ya que si se conoce la direcci6n de la barrera, se pueden generar direcciones absolutas que comiencen y se extiendan a partir de la barrera. Sin embargo, si la dirección de la barrera cambia, es necesario recompilar el programa para poder ser corrido nuevamente.
  • 5. Relocalización Una mejor alternativa al método de direcciones absolutas, consiste en generar direcciones relativas o re localizables, las cuales no toman en cuenta el valor de la barrera al momento de compilación, sino que la correcci6n es diferida hasta el tiempo de carga o de ejecución del programa. En el primer método, al momento de cargar el programa en memoria, el valor de la barrera es sumado a todas las direcciones en que debería cargarse cada instrucción o dato del programa, así como también a las direcciones a las que hace referencia cada instrucci6n (variables del programa), de tal forma que siempre se tengan direcciones a partir de la barrera. Este método funciona siempre y cuando la barrera no cambie durante la ejecución del programa, sino solamente antes de correr el programa (p.e. entre programa y programa). Debido a esta condición de barrera estática, se dice que se tiene "Relocalización Estática". En muchos casos, los sistemas operativos cuentan con partes transitorias que se pueden eliminar y volver a cargar.
  • 6. Relocalización Por ejemplo, en los casos en que algún manejador de dispositivo no se utilice frecuentemente, puede ser quitado para utilizar ese espacio de memoria para programas del usuario, y volver a cargarlo cuando sea requerido por algún programa en ejecución. Este esquema, hace que sea necesario cambiar la direcci6n de la barrera incluso durante la ejecución de un programa. Una solución a este problema es cargar el programa en memoria igual que en el método anterior, sumándole el valor de la barrera a todas las direcciones generadas por el compilador, excepto a las direcciones a que hacen referencia las instrucciones del programa (variables); estas son dejadas tal cual. La corrección es hecha hasta el momento en que al ser ejecuta cada instrucción en la CPU y se genere un intento de accesar la memoria. En ese momento, a la direcci6n generada le es sumado el valor de la barrera y luego es enviada a la memoria. Por lo tanto, el usuario siempre trabaja con direcciones lógicas (las generadas por el compilador), y el hardware de relocalización se encarga de generar direcciones físicas.
  • 7. Relocalización Por ejemplo si la barrera se encuentra en 1700, cualquier intento de accesar la localidad 0000, será automáticamente relocalizada a 1700. Un acceso a la localidad 515, será relocalizada a la 2215. A este sistema se le llama relocalización dinámica ya que la barrera puede ser cambiada en cualquier momento. Por lo tanto, si es necesario cambiar la barrera, solo es necesario cambiar el contenido del registro base, y trasladar el programa del usuario a las nuevas localidades de memoria relativas a la nueva barrera, y continuar con la ejecuci6n del programa. Sin embargo, si cargamos mas de un programa en el área del usuario, los sistemas anteriormente vistos ya no proporcionan la protección debida, ya que si bien el S. 0. queda protegido, los programas de los usuarios no.
  • 8. Relocalización Si ejecutamos el programa del usuario, es posible que este pueda modificar el código o los datos de los programa 2 y 3. Si movemos la barrera hasta el inicio del programa 2, el programa 1 queda protegido al igual que el monitor; sin embargo, el programa 3 queda aun desprotegido. 0 Barrera MONITOR Usuario 1 Usuario 2 Usuario 3 Una solución a este problema, es utilizar dos registros para delimitar plenamente la memoria del programa en ejecución.
  • 9. Relocalización 0 MONITOR Límite Inferior Usuario 1 Barrera Límite Superior Usuario 2 Usuario 3 Los limites se implementan con registros igual que anteriormente. De esta manera, si el programa en ejecución es el 2, el monitor y el programa 1 quedan protegidos por el limite inferior, mientras que el programa 3 queda protegido por el limite superior. Una vez finalizada la ejecución del programa 1, los registros son movidos al programa 2, y así sucesivamente . Este esquema de cambio de barreras obviamente requiere un sistema de relocalización dinámica.
  • 10. Relocalización El registro de limite checa por el limite superior que puede generar un programa antes de ser relocalizado dinámicamente por el registro base mientras que el limite inferior queda definido por la dirección 0000 que generan los compiladores. El use del esquema anteriormente mencionado u otros similares permiten tener mas de un usuario residente en memoria simultáneamente, ya que es posible dividir la memoria en múltiples regiones llamadas particiones. Dos posibles métodos se derivan de este esquema:  Múltiples particiones contiguas fijas  Múltiples particiones contiguas variables.
  • 11. Múltiples particiones contiguas fijas En esta opción, se seleccionan regiones fijas de memoria para crear procesos, por ejemplo una región de 10 K bytes para procesos muy pequeños, regiones de 20 K para procesos de tamaño promedio, y 50 K para procesos grandes. Cuando un proceso llega del exterior, es puesto en la cola de procesos o spool manejada por el asignador de procesos, cuando le toca su turno (generalmente FIFO), la cantidad de memoria que requiere es tomada en cuenta y es comparada contra las regiones de memoria vacías; si el proceso puede ser cargado en alguna de ellas lo hace, pero si no, entonces busca el siguiente que pueda ser cargado en las regiones disponibles. Para saber que regiones de memoria están disponibles, se implementa una lista llamada "cola de regiones de memoria disponibles", en la cual se anota la cantidad de memoria del hueco libre y la direcci6n donde inicia.
  • 12. Múltiples particiones contiguas fijas El asignador de procesos también busca optimizar el desperdicio de memoria; es decir, no cargar programas muy pequeños en regiones muy grandes ya que estas son fijas. A este desperdicio se le llama fragmentación interna. 0 COLA DE PROCESOS MONITOR 33 K Región de 15k Proceso de 12k 7K 50K 40K 15K 12K 25K Región de 30k Proceso de 25k 128 k Región de 50k Proceso de 40k
  • 13. Múltiples particiones contiguas fijas Como puede verse, el primer proceso puede ser cargado en la región de 30K con una fragmentación de 5K, el de 12K en la de 15K con fragmentación de 3, el de 15K tendrá que esperar a que se desocupe la región de 15K (o decidir cargarla en la de 40K con gran fragmentación), la de 40K puede ser cargada en la de 50K con un desperdicio de 10K, y las de 50K y 7K tendrán que esperar a que alguna regi6n adecuada se desocupe. 0 COLA DE PROCESOS MONITOR 33 K Región de 15k Proceso de 12k 7K 50K 40K 15K 12K 25K Región de 30k Proceso de 25k 128 k Región de 50k Proceso de 40k
  • 14. Múltiples particiones contiguas variables El problema con particiones fijas es determinar los mejores tamaños de regiones para minimizar la fragmentación interna y externa. Sin embargo, con un conjunto de procesos dinámicos, es poco probable llegar a una condición optima. La solución a este problema es permitir que las regiones varíen de tamaño dinámicamente. Esta solución es llamada múltiples particiones contiguas variables. Esta forma de manejo de memoria consiste en tener una cola de regiones de memoria que están disponibles. Al inicio se tiene un solo bloque de memoria para programas del usuario que resulta de cargar el Sistema Operativo en la memoria disponible. Cuando los procesos llegan, se checa en la cola de regiones de memoria disponibles si se puede cargar el proceso. Si la regi6n es muy grande, solo se asigna la necesaria y el resto es puesto en la cola de regiones de memoria disponibles.
  • 15. Múltiples particiones contiguas variables Por ejemplo asuma que los siguientes procesos requieren servicio (memoria total 256K): COLA DE PROCESOS No. de procesos 1 2 3 4 5 Memoria Requerida (K) 60 100 30 70 50 Tiempo Ráfaga 10 5 20 8 15 Si el algoritmo usado es del tipo primero en llegar primero en salir, podemos cargar a memoria los 3 primeros procesos:
  • 16. Múltiples particiones contiguas variables COLA DE PROCESOS No. de procesos Memoria Requerida (K) 1 2 3 4 5 60 100 30 70 50 0 40 K 100 K 200 K 230 K 256 K Tiempo Ráfaga 10 5 20 8 15 MONITOR Proceso 1 Proceso 2 Proceso 3 ###############
  • 17. Múltiples particiones contiguas variables La cola de regiones de memoria disponible queda con un hueco de 26K; sin embargo, en ese hueco no es posible cargar ya ninguno de los procesos pendientes, por lo que se dice que tenemos una fragmentación externa de 26K. Al terminar el proceso 2, regresa a la cola de regiones de memoria disponibles un área de 100K en la cual podemos cargar el proceso 4 de 70K, regresando a la cola el área restante de 30K. La cola de regiones de memoria disponibles queda: 26, 30 con sus respectivas direcciones de inicio. Como el proceso 5 no se puede cargar, nos deja una fragmentación externa de 56K. El siguiente en terminar es el proceso 1, permitiéndonos cargar el proceso 5 en el área de 60K dejado por el proceso 1, y poniendo en la cola de regiones de memoria disponibles el área no usada (10K). La cola de regiones de memoria nos queda: 26, 30, 10 con sus respectivas direcciones.
  • 18. Múltiples particiones contiguas variables Como ya no hay procesos que cargar, no podemos afirmar que se tenga una fragmentación externa de 66K. Esto dependerá de que se pueda cargar o no el siguiente proceso que llegue. En caso negativo, entonces se tiene efectivamente una fragmentación externa de 66K. El esquema anterior, requiere de una estrategia para asignar los huecos de memoria disponibles. En general se tienen 3 algoritmos:  "Primero en ajustar" (first-fit)  "Mejor en ajustar" (best-fit)  "Peor en ajustar" (worst-fit).
  • 19. Múltiples particiones contiguas variables  "PRIMERO EN AJUSTAR" (First Fit). Carga el programa en el primer hueco suficientemente grande que encuentra en la lista de regiones de memoria disponibles. Es el algoritmo mas rápido.  "MEJOR EN AJUSTAR" (Best Fit). Busca por el hueco de memoria que menos fragmentaci6n produzca. Si la lista de regiones de memoria disponibles es mantenida en orden ascendente, es fácil y rápido encontrar la mas adecuada. De otra manera debemos buscar toda la lista.  "PEOR EN AJUSTAR" (Wosrt Fit). Carga el programa en el hueco mas grande que encuentra y deja en la lista de regiones disponibles el tamaño del resto de la memoria no usada. Esta estrategia a veces rinde mejores resultados que la de mejor en caber, ya que produce huecos grandes de fragmentaci6n que pueden ser mejor utilizados que fragmentaciones muy pequeñas. Es adecuado mantener la lista ordenada de mayor a menor para reducir el tiempo de búsqueda. El hardware usado para este sistema es exactamente el mismo; es decir, dos registros que delimitan perfectamente el área del programa a ejecutar.
  • 20. Múltiples particiones contiguas variables COMPACTACIÓN : En la última parte del ejemplo, existe una fragmentación de 66K compuesta por 3 huecos de 10, 30 y 26K, los cuales son mas difíciles de usar que si fueran un solo bloque de 66K. Sin embargo, es posible compactar la memoria haciendo que todos los huecos disponibles se junten ya sea en la parte de abajo o del medio de la memoria. Para efectuar la compactación, es necesario cambiar de localidad los procesos, por lo que este sistema solo es posible si el hardware cuenta con relocalización dinámica; ya que de otra forma, los procesos no podrían trabajar en sus nuevas direcciones.
  • 21. Paginación El sistema de particiones variables sufre del problema de fragmentación externa ya que un proceso debe ser cargado en memoria contigua. Este problema puede ser resuelto por compactación o por paginación. Paginación permite que un programa sea cargado en memoria no contigua; es decir, en varios fragmentos fijos no contiguos . Es importante notar que paginación es por si misma una forma de relocalización dinámica. Un aspecto importante de paginación es la clara separación entre la memoria desde el punto de vista del usuario y la memoria %Ica actual. El usuario ve la memoria como un espacio contiguo, conteniendo solo su programa. En realidad, el programa del usuario esta disperso a través de toda la memoria %Ica, la cual también contiene otros programas. La traducción entre ambas memorias es realizada por la tabla de paginas que es manejada por el sistema operativo. Paginación viene a ser un esquema de múltiples particiones fijas no contiguas.
  • 22. Paginación ASIGNACION DE MEMORIA EN PAGINACION. En el sistema de paginación, cuando un proceso nuevo llega al dispositivo de spool, es seleccionado por el asignador de procesos para ser cargado a memoria. Primero comprueba su requerimiento de memoria en paginas. En seguida busca en la lista de cuadros de memoria disponibles para ver si es posible cargar el proceso. Cada pagina requiere un cuadro, por lo que si el proceso consta de N paginas, deberá haber N cuadros de la memoria física para poder cargarlo. El sistema de paginación esta exento de fragmentación externa, ya que todos los cuadros pueden ser otorgados a cualquier proceso que lo necesite. Sin embargo, es posible tener fragmentaci6n interna ya que los cuadros son de tamaño fijo y si un programa no logra llenar la pagina completa, se tendrá un desperdicio. El peor caso es cuando un programa requiere de n paginas mas una palabra, ya que casi toda la pagina quedara vacía.
  • 23. Segmentación Segmentación es otro método de administración de memoria, el cual permite cargar un programa en memoria no contigua. Este método es mas natural ya que generalmente un programa esta constituido por un programa principal y varios subprogramas separados, por lo que cada una de estas entidades puede ser guardada en un segmento de memoria individual de tamaño exacto según lo requiera cada uno. Lo anterior indica que los segmentos deben de ser de longitud variable, en contraste con paginación en donde las paginas son de longitud fija. Cada segmento tiene un nombre o numero y una longitud. El usuario por esto especifica cada dirección por dos cantidades: un nombre de segmento y un desplazamiento. Dado que ahora una dirección dentro de un programa del usuario (dirección lógica), debe especificarse como una direcci6n de 2 dimensiones, y dado que la memoria física es aun un arreglo de una sola dimensi6n, es necesario implementar un dispositivo que mapee o convierta una direcci6n de dos dimensiones en otra de una sola dimensi6n. Esto se hace por medio de la tabla de segmentos.
  • 24. Segmentación FRAGMENTACION EN PAGINACION. El asignador de procesos debe encontrar y cargar en memoria todos los segmentos de un programa del usuario. Esta situación es similar a paginación excepto que los segmentos son de longitud variable, (las paginas son todas del mismo tamaño), por lo que la fragmentación interna puede ser despreciable. Sin embargo, se puede tener fragmentación externa cuando todos los segmentos disponibles son demasiado pequeños para cargar cierto programa. Segmentación viene a ser un esquema de múltiples particiones no contiguas variables.