Revisão do exame de sistema operacional - Capítulo 4 4.3 Método de gerenciamento de armazenamento de alocação contínua

No início aqui precisamos falar sobre fragmentos , que são divididos em dois tipos: fragmentos internos e fragmentos externos .

Fragmentação interna : espaço não utilizado dentro de uma partição.Fragmentação
externa: partições livres entre partições difíceis de usar (geralmente pequenas partições livres).

Método de gerenciamento de armazenamento de alocação contínua:

Para carregar um programa de usuário na memória, uma certa quantidade de espaço de memória deve ser alocada para ele.

1. Alocação única contínua

Somente em um ambiente de programa único, todo o espaço de usuário da memória é ocupado exclusivamente por um único programa.

Para obter detalhes sobre o método de alocação restante, consulte o sistema operacional - alocação e reciclagem de memória_reciclagem de memória do sistema operacional_um blog sobre como escrever poemas com programação-blog CSDN

2. Alocação de partição fixa

O número de partições é fixo e o tamanho das partições é fixo. Observe que tamanho fixo não significa tamanho igual! ! !

Divida o espaço do usuário da memória em diversas áreas de tamanho fixo e carregue apenas uma tarefa em cada partição.

Os métodos de delimitação de partições são: partições fixas e partições não fixas

Geralmente, uma tabela de alocação de partição será gerada conforme mostrado na figura:

Vantagens do particionamento fixo: É o método de particionamento mais antigo. A ideia e a implementação deste método são muito simples e fáceis de implementar.

Desvantagens da partição fixa: Como seu tamanho é fixo, é provável que haja desperdício de espaço e muita fragmentação interna.

3. Alocação de partição dinâmica

A alocação de partição dinâmica também é chamada de alocação de partição variável. Como pode ser visto pelo nome, a diferença entre ela e a alocação de partição fixa é que ela é dinâmica na alocação de partições de memória . Embora resolva o problema da fragmentação interna, também provocará o problema da fragmentação externa.

Ele gera uma tabela de partições livres que é diferente da tabela de descrição de partições atribuída a partições fixas. Conforme mostrado na tabela a seguir:

 O tamanho da partição dinâmica é incerto, portanto, quando ela é alocada, não é tão simples quanto procurar apenas o tamanho e encontrar uma partição com tamanho semelhante. O algoritmo de alocação dinâmica de partições precisa ser considerado. Três algoritmos de pesquisa sequencial são propostos aqui :

1. Primeiro algoritmo de adaptação:

Pesquise sequencialmente começando pelo primeiro endereço até encontrar uma partição livre com tamanho que atenda aos requisitos.

Vantagens deste algoritmo:

1. Utiliza preferencialmente as partições livres na parte de baixo endereço da memória, retendo assim o grande espaço livre na parte de alto endereço.

Mas as suas deficiências também são óbvias:

1. A parte de baixo endereço é dividida continuamente, deixando muitas pequenas partições livres e difíceis de usar, ou seja, fragmentos.

2. Cada pesquisa começa no endereço inferior. Como os endereços inferiores são ocupados primeiro, a pesquisa só pode ser feita mais tarde, o que sem dúvida aumenta muito o overhead.

2. Melhor algoritmo de adaptação:

Isso significa que sempre ao alocar, sempre aloque a menor partição livre que possa atender aos requisitos para evitar a utilização excessiva de materiais . Este algoritmo exige que todas as partições livres sejam organizadas em ordem, de pequena a grande, para melhorar a velocidade de pesquisa. Encontre a melhor localização diretamente.

Vantagens deste algoritmo:

1. A partição livre encontrada pela primeira vez deve ser a melhor e mais adequada. Do ponto de vista isolado , este algoritmo é o melhor .

Mas as suas deficiências também são óbvias:

1. Primeiro, ele precisa classificar do pequeno para o grande e procurar os locais, o que adicionará muita sobrecarga, especialmente para computadores com milhares de locais livres.

2. Em segundo lugar, embora tenha encontrado a melhor localização, o espaço livre gerado após a divisão deve ser o menor. Por exemplo, se um sistema que precisa ocupar 8K de memória aloca 9K, é definitivamente o melhor isoladamente, porém, o 1K de espaço gerado tem grande probabilidade de ser inutilizável, então muitos fragmentos serão gerados, levando a desperdício.

3. Pior algoritmo de adaptação:

O pior algoritmo de adaptação é o oposto do melhor algoritmo de adaptação, exigindo que o sistema aloque a maior partição livre para alocação. Requer que as partições livres sejam classificadas de grandes para pequenas . Ao pesquisar, basta verificar se o primeiro satisfaz a alocação.

Vantagens deste algoritmo:

1. Como o espaço alocado no início é o maior, o espaço restante após a alocação não será muito pequeno, portanto os fragmentos gerados não serão muitos e não causarão problemas de fragmentação.

2. Ao pesquisar a tabela de partições livres durante a alocação, ele só precisa verificar se o primeiro tamanho está satisfeito, para que a eficiência seja muito rápida.

Mas as suas deficiências também são óbvias:

1. Como a maior partição é sempre dividida, no final não haverá partições grandes no sistema, fazendo com que grandes processos subsequentes não consigam alocar espaço de tamanho correspondente.

O algoritmo de pesquisa baseado em sequência descrito acima, o algoritmo de pesquisa baseado em índice é apresentado abaixo. Isso compreende principalmente suas idéias básicas.

1. Algoritmo de adaptação rápida: classifica as partições livres de acordo com o tamanho econfigura uma lista vinculada de partições livres separada para todas as partições livres com a mesma capacidade em cada categoria. Este algoritmo só precisa encontrar a menor lista vinculada de área livre que possa acomodá-la com base na duração do processo e, em seguida, remover o primeiro bloco para alocação. Durante o processo de alocação, nenhuma partição é dividida .

2. Sistema parceiro: se o tamanho da partição alocada ou da partição livre é a potência K de 2.

Quando for necessário alocar um espaço de armazenamento de comprimento n para um processo, primeiro calcule um valor i tal que 2^(i-1) < n ≤ 2^i, e então pesquise na lista vinculada de partição livre com uma partição livre tamanho de 2^ i . Se encontrado, ele será alocado diretamente. Caso contrário, pesquise na lista de partições livres com um tamanho de partição de 2^(i+1). Se houver uma partição livre de 2^(i+1), a partição livre será dividida em duas partições iguais. Essas duas partições são chamadas de par de parceiros, um dos quais é usado para alocação e o outro é adicionado. No lista vinculada de partição gratuita com tamanho de partição 2^i. Se ainda não for encontrado, siga o mesmo procedimento para encontrar uma partição com potência 1 maior.
Tal como uma atribuição pode exigir múltiplas divisões,uma reciclagem também pode exigir múltiplas fusões.Por exemplo,ao reciclar uma partição livre com um tamanho de 2^i,se houver uma partição livre de 2^i blocos parceiros correspondentes ao bloco reciclado . , ele deve ser mesclado com a partição parceira em uma partição livre com um tamanho de 2^(i+1).Se houver uma partição livre de 2^(i+1) bloco parceiro correspondente ao bloco livre recém-mesclado, e assim por diante.

3. Algoritmo de hash: Construa uma tabela hash com o tamanho da partição livre como chave. Cada entrada na tabela registra um ponteiro de cabeçalho de lista vinculada de partição livre correspondente.

Em relação a problemas de reciclagem de memória:

Em relação à reciclagem de memória, pode haver um total de quatro situações:

1. A divisória acima da área de reciclagem é uma divisória livre

2. A divisória abaixo da área de reciclagem é uma divisória livre.

3. As divisórias acima e abaixo da área de reciclagem são divisórias livres

4. As divisórias acima e abaixo da área de reciclagem não são divisórias livres.

Reciclagem em cada caso

1. A área de reciclagem fica abaixo da área livre:

Use a estrutura de dados da lista vinculada gratuita para salvar a área livre. Não há necessidade de criar um novo nó da lista vinculada gratuita. Você só precisa aumentar a capacidade da área livre até a soma da área livre original e da área de reciclagem ( isto é, inclui a área de reciclagem)

2. A área de reciclagem fica acima da área livre:

A capacidade de mesclar a área recuperada e a área livre é a capacidade da nova área livre. O endereço na nova área livre na lista vinculada gratuita usa o endereço da área recuperada anterior.

3. A área de reciclagem fica entre duas áreas livres:

A capacidade das duas áreas recuperadas e da área livre combinadas é a capacidade da nova área livre. O endereço da nova área livre na lista vinculada livre usa o endereço da área livre 1 anterior.

4. Área de reciclagem separada:

Crie um novo nó de endereço separado e coloque-o na lista vinculada gratuita, cujo tamanho é igual ao tamanho da área de reciclagem.

 

Acho que você gosta

Origin blog.csdn.net/m0_53345417/article/details/130535312
Recomendado
Clasificación