Cap. 4 - Gerenciamento de Memória

Lista 4.2 - Algorítmos de Gerenciamento de Memória

 

1. Implementar de forma simulada um esquema de segmentação de memória baseado na política de first-fit. O esquema mantém uma lista única de blocos de memória (tanto livres quanto ocupados). A seguintes rotinas são providas: a. "u_long alloc_mem(int tamanho)" - aloca um bloco de memória de tamanho dado, retornado seu endereço físico e b. "void libera_mem(u_long endereco)" - libera um bloco alocado com a rotina anterior, dado o endereço do início do bloco.

O procedimento é iniciado com um único bloco livre na lista. A medida que a memória for sendo requisitada, um bloco livre de tamanho adequado é particionado em dois: um com a memória requisitada e outro com o restante livre. Caso não seja possível alocar a memória requisitada, um código de erro é retornado. Quando um bloco é liberado, deve-se atentar para o fato deste bloco ter blocos livres adjacentes. Neste caso, dois ou três blocos se fundem para gerar um bloco livre maior, ou seja, há a necessidade de atualizar a lista de blocos.

Simule o comportamento do esquema implementado para memórias de tamanho 512KB, 1024KB e 2048KB. Para tal, gere aleatóriamente sequências de requisições e liberações simulando processos começando e terminando. Para simular um cenário, obtenha um dado de 6 faces (não viciado):

Pelo exposto acima, note que um período de simulação tem duração máxima de 11 segundos. Para dez cenários diferentes determine a relação entre o número de sucessos e falhas na alocação de memória para os três tamanhos propostos. Para facilitar a simulação, implemente as funções "alloc_mem" e "libera_mem" de forma interativa.

2. Considere um esquema de gerenciamento de memória com particoes variáveis que emprega a política "quick-fit". Defina através de uma "struct" em C, a principal estrutura de dados necessária à implementação desta política. Quais as rotinas de interfaceamento externo com o gerenciador de memória? Cite as operações básicas sobre esta estrutura utilizadas nas chamadas das rotinas de interfaceamento externo.

3. No exercício anterior você simulou o comportamento de um gerenciador de memória que empregava partições variáveis. Se mudarmos o gerenciador por outro que empregue a técnica de paginação por demanda, como voce simularia uma falta de página ("page fault")?

 


Luís Fernando Faina
Last modified: Wed Sep 4 08:06:06 2002