Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Usando la llamada al sistema sbrk() la cual provee un valor entero positivo incrementa el tamaño
del montículo en la memoria principal
Considere muchos procesos que necesitan ser asignados en memoria, si se asigna memoria para
un procesos y se mueve al segundo proceso para la asignación de un bloque de memoria, entonces
como se mantendrá un seguimiento del último bloque de memoria asignado?, para esto
necesitamos almacenar metada con los bloques de asignación de memoria como un puntero a un
puntero al siguiente bloque, direcciones de memoria, esta libre etc.
Así esto formara una estructura de datos (lista ligada) como se presenta a continuación.
bool isfree;
size_t size;
void *memoryAddress;
}_SBLOCK;
Donde
if(allocate_mem == (void*)-1){
return NULL;
}else{
block->next = NULL;
block->isfree = false;
block->size = size;
block->memoryAddress = memadr+BLOCK_SIZE;
return block;
}
}
#include<stdio.h>
#include<stdbool.h>
if(allocate_mem == (void*)-1){
return NULL;
}else{
block->next = NULL;
block->isfree = false;
block->size = size;
block->memoryAddress = memadr+BLOCK_SIZE;
return block;
}
}
if(current==NULL){
*head = allocateMemBlock(size);
}else{
while(current->next != NULL){
current = current->next;
}
_SBLOCK *newblock = sbrk(0);
int main()
{
_SBLOCK *sMemBlock = NULL;
allocateNextMemBlock(10,&sMemBlock);
allocateNextMemBlock(35,&sMemBlock);
allocateNextMemBlock(62,&sMemBlock);
printMemBlocks(sMemBlock);
printf("\nAfter freeing second node\n");
freeMemBlock(&(sMemBlock->next));
printMemBlocks(sMemBlock);
return 0;
}
Ejecute ./a.out