Resumo sistemas operacionais
Gerenciamento de memória do Linux
• Paginação sob demanda e swapping. o A paginação consiste em dividir a memória em vários pedaços de tamanho fixo de forma que um dado processo possa utilizar várias páginas para a sua execução. o A área de swap é a região do disco rígido utilizada para implementar a memória virtual. Essa região pode ser definida como um arquivo ou como uma partição.
Segmentação
Unidade lógica de memória contínua, com semântica definida pelo usuário.
O espaço se decompõe naturalmente em vários segmentos lógicos.
• 1 segmento = 1 espaço de endereçamento linear.
.Os processos são divididos em segmentos:
• Text/codigo - área onde se encontra o código binário executável do processo
• Data - área onde ficam armazenadas as variáveis do processo
• Bss – área onde se encontram as variáveis não inicializadas.
Data (áreas especificas)
• Heap –> memória para alocação sob demanda durante a execução (alocação dinâmica – malloc/free)
• Pilha –> memória para alocação de sub-rotinas, endereços de retorno de sub-rotina, etc.
Mecanismos de alocação de memória
Algoritmo companheiro (Buddy):
Gerenciar a memória com a utilização de vetores nos elementos de cada bloco constando tamanho e unidade, dessa forma qualquer bloco pode ser encontrado rapidamente, digamos que esse algoritmo gera certa fragmentação interna.
• Mantém lista de blocos;
• Cada bloco tem tamanho igual a uma potência de 2;
• No início, um único bloco contém toda a memória;
• Para alocar: o Enquanto o tamanho do processo for menor do que a metade do menor bloco divida o bloco em 2 partes o Se o vizinho estiver livre, recombine em um único bloco.
Slab :
O slab allocator divide um ou vários moldes de página (slabs) em pequenas porções de memória (objetos).
MMU
Memory Management Unit (MMU) é um dispositivo que transforma endereços virtuais em endereços físicos.
Memória Virtual
A ideia básica da memória virtual é permitir que programas muito maiores