Como o SO sabe qual ram físico é gratuito?

0

Como o SO sabe / rastreia qual parte do RAM físico está livre, então ele pode mapear o endereço da página virtual na tabela de páginas para um frame físico na memória RAM em uma falha de página?

    
por Lewis Kelsey 21.08.2018 / 23:47

3 respostas

0

O sistema operacional deve manter as estruturas de dados, controlando o uso de cada quadro de página da memória física. O que isto é feito depende do sistema operacional - abaixo está uma descrição simplificada de como o Linux faz isso.

O kernel do Linux tem uma matriz de descritores de página , um para cada quadro de página na RAM. Qual quadro de página corresponde a um descritor de página é determinado pelo índice do descritor de página na matriz do descritor. Cada descritor contém, entre outras coisas, uma variedade de sinalizadores e uma contagem de referência informando se a página está livre ou não.

No topo da matriz de descritores de página, o Linux implementa o sistema Alocação de memória de amigos para agrupar quadros de página gratuitos em listas contendo grupos de quadros de páginas contíguas. A primeira lista contém descritores de quadros de página única, os segundos grupos de dois quadros de página contíguos, o terceiro grupo de quatro quadros de página contíguos e assim por diante. Os blocos são sempre alocados em tamanhos de 2 k páginas. Quando um pedido de ordem k tiver sucesso, o bloco é removido da lista livre k . Se nenhum bloco estiver disponível na lista k , um bloco em uma lista de ordem mais alta poderá ser dividido e as partes restantes serão movidas para listas de ordem inferior, conforme apropriado.

    
por 22.08.2018 / 19:54
3

A memória é monitorada pela MMU (unidade de gerenciamento de memória). A MMU é uma peça de hardware que faz parte da CPU. Com hardware mais antigo, a MMU pode ser separada da CPU.

A MMU tem o que é chamado de tabela de páginas. A tabela de páginas mapeia os números de páginas virtuais para os números de páginas físicas na memória principal. Normalmente, cada local de memória virtual ou "página" é um par de kilobytes. Cada um desses mapeamentos é rastreado individualmente na tabela de páginas. Eles são conhecidos como entradas da tabela de páginas (PTE).

Quando ocorre uma falha de página, a MMU envia um sinal de volta à CPU, informando que ocorreu uma falha. O sistema operacional, em seguida, tenta encontrar um quadro de RAM extra e, em seguida, solicita um PTE para mapear o endereço virtual para o endereço físico.

Claro que esta é uma resposta muito breve, sobre algo que pode ser muito profundo e complexo. Se você quiser aprender mais, eu começaria lendo sobre MMU, endereços virtuais e algum gerenciamento básico de memória.

    
por 22.08.2018 / 00:43
0

Para expandir levemente a resposta da DrZoo, o sistema operacional é responsável por (de alguma forma ...) conhecer o status atual e a propriedade de todas as "páginas" de armazenamento físico. Também é responsável por conhecer a situação virtual de cada processo.

Ele deve saber isso para configurar as estruturas de dados físicas que a MMU usa e para saber quais comandos dar a essa unidade em vários momentos apropriados.

Todo sistema operacional tem necessariamente algum tipo de arranjo de estrutura de dados que lhe permite acompanhar isso, e todo sistema operacional faz isso de maneira diferente.

    
por 22.08.2018 / 19:45