SlideShare una empresa de Scribd logo
1 de 25
AL MISMO
TIEMPO, MUCHOS
PARECEN TENER QUE
VER CON RECREAR
COSAS QUE NOSOTROS
U OTROS YA HEMOS
HECHO; PARECE
BASTANTE TRILLADO
INTELECTUALMENTE;
¿HAY ESCASEZ DE
IDEAS REALMENTE
NUEVAS?
DIEGO CAMILO AGUIRRE LORA
DAVID ESTEBAN RODRÍGUEZ GÓMEZ
Algoritmos de administración de memoria
PRIMER AJUSTE –
(FIRST FIT)
Algoritmo de administración y ajuste de
memoria
Primer ajuste- (First Fit)
Consiste en asignar el primer espacio disponible que
tenga un espacio suficiente para almacenar el
programa. Las dos principales desventajas son su alto
desperdicio interno, y el elevado uso de las primeras
posiciones de memoria. Este último inconveniente
repercute negativamente en la circuitería, debido a que
se produce un mayor desgaste en dichas posiciones.
Ejemplo:
 Suponiendo una memoria principal de 32 K
 Solución
Algoritmo
 Algorithm for allocate (n)
size(block) = n + size(header)
Scan free list for first block with nWords >= size(block)
If block not found
Failure (time for garbage collection!)
Else if free block nWords >= size(block) + threshold*
Split into a free block and an in-use block
Free block nWords = Free block nWords - size(block)
In-use block nWords = size(block)
Return pointer to in-use block
Else
Unlink block from free list
Return pointer to block
*Threshold must be at least size(header) + 1 to leave room for header and
link
Threshold can be set higher to combat fragmentation
 Allocation time is O(K) (K = number of blocks in free list)
CÓDIGO JAVA
 public class Ajustes {
 public static int ultimoBloqueAsignado = 0;

 /**
 * Implementación del método de primer ajuste.
 *
 * @param listaControl
 * - Lista de control.
 * @param tamanyo
 * - Tamaño del hueco requerido.
 * @return Devuelve el índice del lugar en el que se encuentra el primer
 * bloque libre con el que satisfacer la petición, o -1 en el caso
 * de no haber ninguno disponible.
 */
 public static int primerAjuste(List<int[]> listaControl, int tamanyo) {
 int res = 0;
 for (int[] bloque : listaControl) {
 if (bloque[0] == 0 && bloque[2] >= tamanyo) {
 break;
 }
 res++;
 }
 if (res == listaControl.size()) {
 res = -1;
 }
 return res;
 }
Algoritmo de administración y ajuste de memoria
Mejor ajuste –(Best Fit)
Mejor ajuste- (Best Fit)
Consiste en asignarle al proceso al espacio de
memoria con menor ajuste interno, el espacio vacio
al cual se le es asignado el proceso deja menos
espacio sin utilizar
Su mayor inconveniente es su orden de complejidad
debido a que hay que recorrer todo el mapa de bits o
toda la lista de control
una posible solución seria usar una lista de control
encadenada que mantenga los espacios vacios
ordenado por tamaño creciente
Otro problema es la fragmentación externa, debido
a que se asigna el menor espacio vacio posible, el
espacio sobrante será del menor tamaño posible lo
que da lugar a huecos de tamaño normalmente
insuficiente para contener programas.
Código en java
 public class Ajustes {
 public static int ultimoBloqueAsignado = 0;
 /**
 * Implementación del método de mejor ajuste.
 *
 * @param listaControl
 * - Lista de control.
 * @param tamanyo
 * - Tamanyo del hueco requerido.
 * @return Devuelve el índice del lugar en el que se encuentra el primer
 * bloque libre con el que satisfacer la petición, o -1 en el caso
 * de no haber ninguno disponible.
 */
 public static int mejorAjuste(List<int[]> listaControl, int tamanyo) {
 int i = 0;
 int menorBloque = -1;
 int tamMenorBloque = -1;
 for (int[] bloque : listaControl) {
 if (bloque[0] == 0 && bloque[2] >= tamanyo
 && (menorBloque == -1 || bloque[2] < tamMenorBloque)) {
 menorBloque = i;
 tamMenorBloque = bloque[2];
 }
 i++;
 }
 return menorBloque;
 }
SIGUIENTE AJUSTE- (NEXT FIT)
Algoritmo de administración y ajuste de memoria
Se continúa a partir de la
posición de la última asignación
realizada.
Es muy probable que haya un
hueco a partir de esa posición,
reduciendo la longitud de la
búsqueda.
De esta forma se resuelve el
inconveniente de usar en
exceso las primeras posiciones
de la memoria.
Cuando se alcanza el final de la
memoria se vuelve a comenzar
la búsqueda desde el principio
(por ello este criterio es también
conocido como primer ajuste
circular).
SIGUIENTE AJUSTE- (NEXT FIT)
public class Ajustes {
public static int ultimoBloqueAsignado = 0;
* @param listaControl
* - Lista de control.
* @param tamanyo
* - Tamanyo del hueco requerido.
* @return Devuelve el índice del lugar en el que se encuentra el
primer
* bloque libre con el que satisfacer la petición, o -1 en el
caso
* de no haber ninguno disponible.
*/
public static int siguienteAjuste(List<int[]> listaControl, int
tamanyo) {
int res = ultimoBloqueAsignado;
boolean listaRecorrida=false;
while (res!=-1) {
int bloque[] = listaControl.get(res);
if (bloque[0] == 0 && bloque[2] >= tamanyo) {
ultimoBloqueAsignado=res;
break;
}
res++;
if (res>=listaControl.size()) {
if (listaRecorrida) {
res=-1;
} else {
res%=listaControl.size();
listaRecorrida=true;
}
}
}
return res;
}
CÓDIGO EN JAVA
A L G O R I T M O D E A D M I N I S T R A C I Ó N Y A J U S T E
D E M E M O R I A
Peor Ajuste- (Worst Fit)
Peor Ajuste-
(Worst Fit)
S E B U S C A E L H U E C O C O N M A Y O R A J U S T E I N T E R N O , E L
H U E C O E L C U A L A L S E R L E A S I G N A D O E L P R O C E S O D E J A
M Á S E S P A C I O S I N U T I L I Z A R , Y S E C O R T A D E É L E L T R O Z O
N E C E S A R I O ( A S Í L A P O R C I Ó N S O B R A N T E S E R Á D E L
M A Y O R T A M A Ñ O P O S I B L E Y S E R Á M Á S A P R O V E C H A B L E ) .
T I E N E E L M I S M O I N C O N V E N I E N T E E N C U A N T O A O R D E N
D E C O M P L E J I D A D Q U E E L M E J O R A J U S T E ( D E B I D O A L A
L O N G I T U D D E L A S B Ú S Q U E D A S ) Y L A F R A G M E N T A C I Ó N
N O R E S U L T A D E M A S I A D O E F I C I E N T E .
public class Ajustes {
public static int ultimoBloqueAsignado = 0;
*
* @param listaControl
* - Lista de control.
* @param tamanyo
* - Tamanyo del hueco requerido.
* @return Devuelve el índice del lugar en el que se encuentra el primer
* bloque libre con el que satisfacer la petición, o -1 en el caso
* de no haber ninguno disponible.
*/
public static int peorAjuste(List<int[]> listaControl, int tamanyo) {
int i = 0;
int mayorBloque = -1;
int tamMayorBloque = -1;
for (int[] bloque : listaControl) {
if (bloque[0] == 0 && bloque[2] >= tamanyo
&& (mayorBloque == -1 || bloque[2] > tamMayorBloque)) {
mayorBloque = i;
tamMayorBloque = bloque[2];
}
i++;
}
return mayorBloque;
}
Código en Java
Algoritmo de administración y ajuste de memoria
Ajuste rápido- (Fast Fit)
Mediante listas
de control, se
agrupan los
huecos
disponibles
según su
tamaño (0 < t <
10, 10 < t <
20, etc.)
De esta
manera, cuando
se necesite un
hueco, se
seleccionarán
los del grupo
del tamaño que
corresponda.
En el caso de
que haya varios
huecos
disponibles, se
seleccionará
uno en base a
cualquiera de
los criterios
anteriores.
Punteros a listas Lista de punteros
Lista de huecos según
tamaño
__________________
[ ] _____ _____ _____
[ 0<t<10 ]  |_____| |_____| |_____|
[ ]
[________________ ]
[ ] _____ _____
[ 10<t<20 ]  |_____| |_____|
[ ]
[________________ ]
[ ]
[ …......... ]
[ ]
[________________ ]
[ ] _____
[ t<200 ]  |_____|
[ ]
[________________ ]
Algoritmo de administración
y ajuste de memoria
 Es una variante del ajuste rápido, en el que los huecos se dividen en
potencias de 2: 21, 22, ..., 2k. No es un método usado en la práctica, ya que
al realizar redondeos a potencias de 2, se produce un elevado desperdicio
interno. Es un método rápido tanto en la asignación como en la liberación
de bloques. El funcionamiento es el siguiente: Cuando se necesita un bloque
de tamaño T se busca en la lista de la 1ª potencia mayor o igual a T (por
ejemplo 2^k), si no hay ninguno se busca en la lista de la siguiente potencia
(2^k+1), si encontramos un bloque libre se retira y se divide por la mitad: una
parte se le asigna al proceso y la otra se almacena en la lista de los huecos
de tamaño 2^k.
Organización de los bloques
__________________
[ ] _____ _____ _____
[ 2^(k+1) ]  |_____| |_____|
|_____|
[ ]
[________________ ]
[ ] _____ _____
[ 2^k ]  |_____| |_____|
[ ]
[________________ ]
[ ]
[ …......... ]
[ ]
[________________ ]
[ ] _____
[ 1 ]  |_____|
[ ]
[________________ ]
Debido a la forma de dividir los
bloques al liberarse uno de ellos
solamente podrá fusionarse con sus
compañeros (bloques del mismo
tamaño) con los que formará un
bloque de tamaño superior.
METODO DE LOS COMPAÑEROS
División de los bloques
______________________________________________
__________
0 8
______________________________________________
__________
0 4 8 12
______________________________________________
__________
0 2 4 6 8 10
12 14
______________________________________________
__________
0 1 2 3 4 5 6 7 8 9 10 11 12
DiegoCamiloAguirre Lora
David Esteban Rodríguez Gómez
Gracias

Más contenido relacionado

La actualidad más candente

Asignación de memoria
Asignación de memoriaAsignación de memoria
Asignación de memoria
guestca1de2e
 
Administración de procesos y del procesador
Administración de procesos y del procesadorAdministración de procesos y del procesador
Administración de procesos y del procesador
Fernando Camacho
 
Planificación por prioridad
Planificación por prioridadPlanificación por prioridad
Planificación por prioridad
GarNav
 
Método de ordenamiento por selección (selection sort
Método de ordenamiento por selección (selection sortMétodo de ordenamiento por selección (selection sort
Método de ordenamiento por selección (selection sort
linkinpark03
 
Administracion y manejo de memoria
Administracion y manejo de memoriaAdministracion y manejo de memoria
Administracion y manejo de memoria
giovatovar
 

La actualidad más candente (20)

Unidad 5
Unidad 5Unidad 5
Unidad 5
 
Arquitectura de Computadoras - Memoria
Arquitectura de Computadoras - MemoriaArquitectura de Computadoras - Memoria
Arquitectura de Computadoras - Memoria
 
Asignación de memoria
Asignación de memoriaAsignación de memoria
Asignación de memoria
 
Modelos de arquitecturas de computadoras
Modelos de arquitecturas de computadorasModelos de arquitecturas de computadoras
Modelos de arquitecturas de computadoras
 
Métodos de ordenación externa
Métodos de ordenación externaMétodos de ordenación externa
Métodos de ordenación externa
 
Planificacion de CPU FCFS (First Come, First Served)
Planificacion de CPU FCFS (First Come, First Served)Planificacion de CPU FCFS (First Come, First Served)
Planificacion de CPU FCFS (First Come, First Served)
 
Estrategias de búsqueda
Estrategias de búsquedaEstrategias de búsqueda
Estrategias de búsqueda
 
Arquitectura del computador
Arquitectura del computadorArquitectura del computador
Arquitectura del computador
 
Tema manejo de la entrada
Tema manejo de la entradaTema manejo de la entrada
Tema manejo de la entrada
 
Administración de procesos y del procesador
Administración de procesos y del procesadorAdministración de procesos y del procesador
Administración de procesos y del procesador
 
Administración de memoria
Administración de memoriaAdministración de memoria
Administración de memoria
 
Lecture 2 process
Lecture 2   processLecture 2   process
Lecture 2 process
 
Memory Management
Memory ManagementMemory Management
Memory Management
 
Unidad 3 administracion de la memoria
Unidad 3 administracion de la memoriaUnidad 3 administracion de la memoria
Unidad 3 administracion de la memoria
 
Planificación por prioridad
Planificación por prioridadPlanificación por prioridad
Planificación por prioridad
 
Método de ordenamiento por selección (selection sort
Método de ordenamiento por selección (selection sortMétodo de ordenamiento por selección (selection sort
Método de ordenamiento por selección (selection sort
 
Sistemas Operativos Gestion de procesos
Sistemas Operativos Gestion de procesosSistemas Operativos Gestion de procesos
Sistemas Operativos Gestion de procesos
 
Arquitectura de Computadores Cap VI:Repertorio de Instrucciones
Arquitectura de Computadores Cap VI:Repertorio de InstruccionesArquitectura de Computadores Cap VI:Repertorio de Instrucciones
Arquitectura de Computadores Cap VI:Repertorio de Instrucciones
 
Administracion y manejo de memoria
Administracion y manejo de memoriaAdministracion y manejo de memoria
Administracion y manejo de memoria
 
Operating Systems 1 (9/12) - Memory Management Concepts
Operating Systems 1 (9/12) - Memory Management ConceptsOperating Systems 1 (9/12) - Memory Management Concepts
Operating Systems 1 (9/12) - Memory Management Concepts
 

Destacado

4 Administracion De Memoria
4 Administracion De Memoria4 Administracion De Memoria
4 Administracion De Memoria
UVM
 
C9 administracion memoria
C9 administracion memoriaC9 administracion memoria
C9 administracion memoria
Reyna Huallpa M
 
Administracion memoria
Administracion memoriaAdministracion memoria
Administracion memoria
1993mely
 
3.1 politica y_filosofia
3.1 politica y_filosofia3.1 politica y_filosofia
3.1 politica y_filosofia
beymarlopez
 
Modelacion de algoritmo de paginacion
Modelacion de algoritmo de paginacionModelacion de algoritmo de paginacion
Modelacion de algoritmo de paginacion
LuisFernandoCarranza
 
Segmentación Memoria Virtual
Segmentación Memoria VirtualSegmentación Memoria Virtual
Segmentación Memoria Virtual
Ana Brooks
 
Paginación y Segmentación
Paginación y SegmentaciónPaginación y Segmentación
Paginación y Segmentación
gabosand
 
Administracion de memoria en una PC
Administracion de memoria en una PCAdministracion de memoria en una PC
Administracion de memoria en una PC
Simón Aranguren
 

Destacado (18)

4 Administracion De Memoria
4 Administracion De Memoria4 Administracion De Memoria
4 Administracion De Memoria
 
C9 administracion memoria
C9 administracion memoriaC9 administracion memoria
C9 administracion memoria
 
Administracion memoria
Administracion memoriaAdministracion memoria
Administracion memoria
 
3.1 politica y_filosofia
3.1 politica y_filosofia3.1 politica y_filosofia
3.1 politica y_filosofia
 
Modelacion de algoritmo de paginacion
Modelacion de algoritmo de paginacionModelacion de algoritmo de paginacion
Modelacion de algoritmo de paginacion
 
Segmentación Memoria Virtual
Segmentación Memoria VirtualSegmentación Memoria Virtual
Segmentación Memoria Virtual
 
Paginación y Segmentación
Paginación y SegmentaciónPaginación y Segmentación
Paginación y Segmentación
 
SO - Administración de Memoria
SO - Administración de MemoriaSO - Administración de Memoria
SO - Administración de Memoria
 
Administración de Memoria
Administración de MemoriaAdministración de Memoria
Administración de Memoria
 
Gestion de Memoria
Gestion de MemoriaGestion de Memoria
Gestion de Memoria
 
Paginación, Segmentación y Fragmentación
Paginación, Segmentación y FragmentaciónPaginación, Segmentación y Fragmentación
Paginación, Segmentación y Fragmentación
 
PAGINACION Y SEGMENTACION DE MEMORIA
PAGINACION Y SEGMENTACION DE MEMORIAPAGINACION Y SEGMENTACION DE MEMORIA
PAGINACION Y SEGMENTACION DE MEMORIA
 
Administracion de memoria en una PC
Administracion de memoria en una PCAdministracion de memoria en una PC
Administracion de memoria en una PC
 
Procesos y Planificación de la CPU
Procesos y Planificación de la CPUProcesos y Planificación de la CPU
Procesos y Planificación de la CPU
 
Administración de Memoria - Sistemas Operativos
Administración de Memoria - Sistemas OperativosAdministración de Memoria - Sistemas Operativos
Administración de Memoria - Sistemas Operativos
 
Sistema operativo
Sistema operativoSistema operativo
Sistema operativo
 
Administracion de Memoria
Administracion de MemoriaAdministracion de Memoria
Administracion de Memoria
 
Sistemas de Archivos
Sistemas de ArchivosSistemas de Archivos
Sistemas de Archivos
 

Similar a Administracion de memoria

Algoritmo metodo quicksort
Algoritmo metodo quicksortAlgoritmo metodo quicksort
Algoritmo metodo quicksort
Patricia Correa
 
Capítulo 2 - Libro Azúl (Profesor)
Capítulo 2 - Libro Azúl (Profesor)Capítulo 2 - Libro Azúl (Profesor)
Capítulo 2 - Libro Azúl (Profesor)
fredur
 
Comandos y funciones sql postgres
Comandos y funciones sql postgresComandos y funciones sql postgres
Comandos y funciones sql postgres
HIPOLITO GRULLON
 
Administracion de la memoria, primeros sistemas
Administracion de la memoria, primeros sistemasAdministracion de la memoria, primeros sistemas
Administracion de la memoria, primeros sistemas
ANIUX77
 
Unidad 1 1
Unidad 1   1Unidad 1   1
Unidad 1 1
VivianaG
 
METODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTOMETODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTO
LuiS YmAY
 

Similar a Administracion de memoria (20)

Complejidad Computacional
Complejidad ComputacionalComplejidad Computacional
Complejidad Computacional
 
Privilegios y funciones en MySQL
Privilegios y funciones en MySQLPrivilegios y funciones en MySQL
Privilegios y funciones en MySQL
 
Tema 11
Tema 11Tema 11
Tema 11
 
Algoritmo metodo quicksort
Algoritmo metodo quicksortAlgoritmo metodo quicksort
Algoritmo metodo quicksort
 
ADMINISTRACIÓN DE BASE DE DATOS
ADMINISTRACIÓN DE BASE DE DATOSADMINISTRACIÓN DE BASE DE DATOS
ADMINISTRACIÓN DE BASE DE DATOS
 
Capitulo 2
Capitulo 2Capitulo 2
Capitulo 2
 
Capítulo 2 - Libro Azúl (Profesor)
Capítulo 2 - Libro Azúl (Profesor)Capítulo 2 - Libro Azúl (Profesor)
Capítulo 2 - Libro Azúl (Profesor)
 
Algoritmos divide y vencerás
Algoritmos divide y vencerásAlgoritmos divide y vencerás
Algoritmos divide y vencerás
 
Comandos y funciones sql postgres
Comandos y funciones sql postgresComandos y funciones sql postgres
Comandos y funciones sql postgres
 
Practica 2 unidad 2
Practica 2 unidad 2Practica 2 unidad 2
Practica 2 unidad 2
 
Administracion de la memoria, primeros sistemas
Administracion de la memoria, primeros sistemasAdministracion de la memoria, primeros sistemas
Administracion de la memoria, primeros sistemas
 
Bus99
Bus99Bus99
Bus99
 
Etapa 4 Web.pdf
Etapa 4 Web.pdfEtapa 4 Web.pdf
Etapa 4 Web.pdf
 
Sesion05 - Manipulacion de datos (Oracle)
Sesion05 - Manipulacion de datos (Oracle)Sesion05 - Manipulacion de datos (Oracle)
Sesion05 - Manipulacion de datos (Oracle)
 
Estructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamientoEstructura de Datos - Unidad 5 metodos de ordenamiento
Estructura de Datos - Unidad 5 metodos de ordenamiento
 
Inteligencia Artificial del Juego SUDOKU SAMURAI
Inteligencia Artificial del Juego SUDOKU SAMURAIInteligencia Artificial del Juego SUDOKU SAMURAI
Inteligencia Artificial del Juego SUDOKU SAMURAI
 
Unidad 1 1
Unidad 1   1Unidad 1   1
Unidad 1 1
 
METODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTOMETODOS DE ORDENAMIENTO
METODOS DE ORDENAMIENTO
 
Evid 5 ED S42B Eq 8.pptx
Evid 5 ED S42B Eq 8.pptxEvid 5 ED S42B Eq 8.pptx
Evid 5 ED S42B Eq 8.pptx
 
Mysql
MysqlMysql
Mysql
 

Más de David Rodríguez Gómez (14)

Isam (método de acceso secuencial indexado)
Isam (método de acceso secuencial indexado)Isam (método de acceso secuencial indexado)
Isam (método de acceso secuencial indexado)
 
Algoritmos de planificador
Algoritmos de planificadorAlgoritmos de planificador
Algoritmos de planificador
 
Fcfs fss
Fcfs   fssFcfs   fss
Fcfs fss
 
Sjf srtf
Sjf   srtfSjf   srtf
Sjf srtf
 
Fifo hrrn
Fifo   hrrnFifo   hrrn
Fifo hrrn
 
Round robin
Round robinRound robin
Round robin
 
Sistemas operativos
Sistemas operativosSistemas operativos
Sistemas operativos
 
Robotica
RoboticaRobotica
Robotica
 
Modelos de informacion
Modelos de informacionModelos de informacion
Modelos de informacion
 
Inteligencias multiples0
Inteligencias multiples0Inteligencias multiples0
Inteligencias multiples0
 
Inteligencias múltiples
Inteligencias múltiplesInteligencias múltiples
Inteligencias múltiples
 
Ingenieria de Software
Ingenieria de SoftwareIngenieria de Software
Ingenieria de Software
 
Modelos de programacion
Modelos de  programacionModelos de  programacion
Modelos de programacion
 
Modelo informático
Modelo informáticoModelo informático
Modelo informático
 

Administracion de memoria

  • 1. AL MISMO TIEMPO, MUCHOS PARECEN TENER QUE VER CON RECREAR COSAS QUE NOSOTROS U OTROS YA HEMOS HECHO; PARECE BASTANTE TRILLADO INTELECTUALMENTE; ¿HAY ESCASEZ DE IDEAS REALMENTE NUEVAS?
  • 2. DIEGO CAMILO AGUIRRE LORA DAVID ESTEBAN RODRÍGUEZ GÓMEZ Algoritmos de administración de memoria
  • 3. PRIMER AJUSTE – (FIRST FIT) Algoritmo de administración y ajuste de memoria
  • 4. Primer ajuste- (First Fit) Consiste en asignar el primer espacio disponible que tenga un espacio suficiente para almacenar el programa. Las dos principales desventajas son su alto desperdicio interno, y el elevado uso de las primeras posiciones de memoria. Este último inconveniente repercute negativamente en la circuitería, debido a que se produce un mayor desgaste en dichas posiciones.
  • 5. Ejemplo:  Suponiendo una memoria principal de 32 K  Solución
  • 6. Algoritmo  Algorithm for allocate (n) size(block) = n + size(header) Scan free list for first block with nWords >= size(block) If block not found Failure (time for garbage collection!) Else if free block nWords >= size(block) + threshold* Split into a free block and an in-use block Free block nWords = Free block nWords - size(block) In-use block nWords = size(block) Return pointer to in-use block Else Unlink block from free list Return pointer to block *Threshold must be at least size(header) + 1 to leave room for header and link Threshold can be set higher to combat fragmentation  Allocation time is O(K) (K = number of blocks in free list)
  • 7.
  • 8. CÓDIGO JAVA  public class Ajustes {  public static int ultimoBloqueAsignado = 0;   /**  * Implementación del método de primer ajuste.  *  * @param listaControl  * - Lista de control.  * @param tamanyo  * - Tamaño del hueco requerido.  * @return Devuelve el índice del lugar en el que se encuentra el primer  * bloque libre con el que satisfacer la petición, o -1 en el caso  * de no haber ninguno disponible.  */  public static int primerAjuste(List<int[]> listaControl, int tamanyo) {  int res = 0;  for (int[] bloque : listaControl) {  if (bloque[0] == 0 && bloque[2] >= tamanyo) {  break;  }  res++;  }  if (res == listaControl.size()) {  res = -1;  }  return res;  }
  • 9. Algoritmo de administración y ajuste de memoria Mejor ajuste –(Best Fit)
  • 10. Mejor ajuste- (Best Fit) Consiste en asignarle al proceso al espacio de memoria con menor ajuste interno, el espacio vacio al cual se le es asignado el proceso deja menos espacio sin utilizar Su mayor inconveniente es su orden de complejidad debido a que hay que recorrer todo el mapa de bits o toda la lista de control una posible solución seria usar una lista de control encadenada que mantenga los espacios vacios ordenado por tamaño creciente Otro problema es la fragmentación externa, debido a que se asigna el menor espacio vacio posible, el espacio sobrante será del menor tamaño posible lo que da lugar a huecos de tamaño normalmente insuficiente para contener programas.
  • 11. Código en java  public class Ajustes {  public static int ultimoBloqueAsignado = 0;  /**  * Implementación del método de mejor ajuste.  *  * @param listaControl  * - Lista de control.  * @param tamanyo  * - Tamanyo del hueco requerido.  * @return Devuelve el índice del lugar en el que se encuentra el primer  * bloque libre con el que satisfacer la petición, o -1 en el caso  * de no haber ninguno disponible.  */  public static int mejorAjuste(List<int[]> listaControl, int tamanyo) {  int i = 0;  int menorBloque = -1;  int tamMenorBloque = -1;  for (int[] bloque : listaControl) {  if (bloque[0] == 0 && bloque[2] >= tamanyo  && (menorBloque == -1 || bloque[2] < tamMenorBloque)) {  menorBloque = i;  tamMenorBloque = bloque[2];  }  i++;  }  return menorBloque;  }
  • 12. SIGUIENTE AJUSTE- (NEXT FIT) Algoritmo de administración y ajuste de memoria
  • 13. Se continúa a partir de la posición de la última asignación realizada. Es muy probable que haya un hueco a partir de esa posición, reduciendo la longitud de la búsqueda. De esta forma se resuelve el inconveniente de usar en exceso las primeras posiciones de la memoria. Cuando se alcanza el final de la memoria se vuelve a comenzar la búsqueda desde el principio (por ello este criterio es también conocido como primer ajuste circular). SIGUIENTE AJUSTE- (NEXT FIT)
  • 14. public class Ajustes { public static int ultimoBloqueAsignado = 0; * @param listaControl * - Lista de control. * @param tamanyo * - Tamanyo del hueco requerido. * @return Devuelve el índice del lugar en el que se encuentra el primer * bloque libre con el que satisfacer la petición, o -1 en el caso * de no haber ninguno disponible. */ public static int siguienteAjuste(List<int[]> listaControl, int tamanyo) { int res = ultimoBloqueAsignado; boolean listaRecorrida=false; while (res!=-1) { int bloque[] = listaControl.get(res); if (bloque[0] == 0 && bloque[2] >= tamanyo) { ultimoBloqueAsignado=res; break; } res++; if (res>=listaControl.size()) { if (listaRecorrida) { res=-1; } else { res%=listaControl.size(); listaRecorrida=true; } } } return res; } CÓDIGO EN JAVA
  • 15. A L G O R I T M O D E A D M I N I S T R A C I Ó N Y A J U S T E D E M E M O R I A Peor Ajuste- (Worst Fit)
  • 16. Peor Ajuste- (Worst Fit) S E B U S C A E L H U E C O C O N M A Y O R A J U S T E I N T E R N O , E L H U E C O E L C U A L A L S E R L E A S I G N A D O E L P R O C E S O D E J A M Á S E S P A C I O S I N U T I L I Z A R , Y S E C O R T A D E É L E L T R O Z O N E C E S A R I O ( A S Í L A P O R C I Ó N S O B R A N T E S E R Á D E L M A Y O R T A M A Ñ O P O S I B L E Y S E R Á M Á S A P R O V E C H A B L E ) . T I E N E E L M I S M O I N C O N V E N I E N T E E N C U A N T O A O R D E N D E C O M P L E J I D A D Q U E E L M E J O R A J U S T E ( D E B I D O A L A L O N G I T U D D E L A S B Ú S Q U E D A S ) Y L A F R A G M E N T A C I Ó N N O R E S U L T A D E M A S I A D O E F I C I E N T E .
  • 17. public class Ajustes { public static int ultimoBloqueAsignado = 0; * * @param listaControl * - Lista de control. * @param tamanyo * - Tamanyo del hueco requerido. * @return Devuelve el índice del lugar en el que se encuentra el primer * bloque libre con el que satisfacer la petición, o -1 en el caso * de no haber ninguno disponible. */ public static int peorAjuste(List<int[]> listaControl, int tamanyo) { int i = 0; int mayorBloque = -1; int tamMayorBloque = -1; for (int[] bloque : listaControl) { if (bloque[0] == 0 && bloque[2] >= tamanyo && (mayorBloque == -1 || bloque[2] > tamMayorBloque)) { mayorBloque = i; tamMayorBloque = bloque[2]; } i++; } return mayorBloque; } Código en Java
  • 18. Algoritmo de administración y ajuste de memoria
  • 19. Ajuste rápido- (Fast Fit) Mediante listas de control, se agrupan los huecos disponibles según su tamaño (0 < t < 10, 10 < t < 20, etc.) De esta manera, cuando se necesite un hueco, se seleccionarán los del grupo del tamaño que corresponda. En el caso de que haya varios huecos disponibles, se seleccionará uno en base a cualquiera de los criterios anteriores.
  • 20. Punteros a listas Lista de punteros Lista de huecos según tamaño __________________ [ ] _____ _____ _____ [ 0<t<10 ]  |_____| |_____| |_____| [ ] [________________ ] [ ] _____ _____ [ 10<t<20 ]  |_____| |_____| [ ] [________________ ] [ ] [ …......... ] [ ] [________________ ] [ ] _____ [ t<200 ]  |_____| [ ] [________________ ]
  • 21. Algoritmo de administración y ajuste de memoria
  • 22.  Es una variante del ajuste rápido, en el que los huecos se dividen en potencias de 2: 21, 22, ..., 2k. No es un método usado en la práctica, ya que al realizar redondeos a potencias de 2, se produce un elevado desperdicio interno. Es un método rápido tanto en la asignación como en la liberación de bloques. El funcionamiento es el siguiente: Cuando se necesita un bloque de tamaño T se busca en la lista de la 1ª potencia mayor o igual a T (por ejemplo 2^k), si no hay ninguno se busca en la lista de la siguiente potencia (2^k+1), si encontramos un bloque libre se retira y se divide por la mitad: una parte se le asigna al proceso y la otra se almacena en la lista de los huecos de tamaño 2^k.
  • 23. Organización de los bloques __________________ [ ] _____ _____ _____ [ 2^(k+1) ]  |_____| |_____| |_____| [ ] [________________ ] [ ] _____ _____ [ 2^k ]  |_____| |_____| [ ] [________________ ] [ ] [ …......... ] [ ] [________________ ] [ ] _____ [ 1 ]  |_____| [ ] [________________ ]
  • 24. Debido a la forma de dividir los bloques al liberarse uno de ellos solamente podrá fusionarse con sus compañeros (bloques del mismo tamaño) con los que formará un bloque de tamaño superior. METODO DE LOS COMPAÑEROS División de los bloques ______________________________________________ __________ 0 8 ______________________________________________ __________ 0 4 8 12 ______________________________________________ __________ 0 2 4 6 8 10 12 14 ______________________________________________ __________ 0 1 2 3 4 5 6 7 8 9 10 11 12
  • 25. DiegoCamiloAguirre Lora David Esteban Rodríguez Gómez Gracias