Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 Organização da Memória de um Programa Complexidade Média Fonte Faculdade Status Completo Introdução A memória é um componente do computador, responsável pelo armazenamento de dados e instruções necessárias para execuçãso de programas. • As células de memória em um computador são responsáveis por armazenar informações na forma de bits, os quais podem ter dois valores: 0 ou 1. Um conjunto organizado de 8 bits é chamado de byte. Esses bytes são como pequenos conjuntos de dados e cada byte pode representar diferentes informações. A razão para isso é que os bits individuais dentro de um byte podem estar ligados (valor 1� ou desligados (valor 0�. Por exemplo, em um byte, o padrão "00101011" significa algo específico, enquanto "11001100" representa outra coisa. • Endereçamento de Memória Cada célula de memória possui um endereço único que a identifica e indica sua localização específica na memória do computador, permitindo ao sistema encontrar e acessar precisamente a informação armazenada. Segmentos Lógicos São diferentes partes ou seções que organizam a informação armazenada na memória do computador. Cada segmento tem uma função específica: 2 Segmento de Código (code) ou de Texto É o espaço reservado quando o programa é iniciado para armazenar as instruções do código fonte. • O sistema operacional carrega o código executável do programa na memória RAM, permitindo que essas instruções sejam acessadas pelo processador. • Uma vez alocado, o segmento de código permanece na memória enquanto o processo está em execução. • Segmento de Dados (data) Armazena os dados que estão sendo processados e manipulados pelo programa em execução, como por exemplo as variáveis globais e estáticas. • Dúvida O segmento de dados tem o tamanho fixo ou variável durante a execução do programa? No site da estácio diz que o tamanho é fixo, mas isso não faz muito sentido pra mim, porquê esse tamanho poderia variar durante a execução a partir da criação de novas variáveis, por exemplo. Segmento de Stack ou de Pilha Gerencia o fluxo de execução e armazena informações temporárias em um bloco chamado "quadro de ativação" ou "frame de pilha", que guardam informações relacionadas às funções em execução, como parâmetros, endereços de retorno (indica para onde o controle deve voltar após a conclusão de uma função) e variáveis locais. Isso permite que cada chamada de função tenha sua própria instância isolada desses dados. • Essa área de memória é organizada como uma estrutura de dados do tipo pilha, onde dados são empilhados e desempilhados em ordem last-in, first-out �LiFo), ou seja, a última função chamada é a primeira a ser concluída, e seus dados associados são os primeiros a serem removidos da pilha. • Pode variar de tamanho dinamicamente durante a execução do processo, à medida que as funções são chamadas e retornam. Isso permite uma gestão eficiente da memória. • Segmento Heap Alocação e Liberação Dinâmica de Memória Os blocos de memória são alocados dinamicamente, ou seja, o programa pode solicitar espaço de memória conforme necessário durante sua execução. • Isso é útil quando o tamanho dos dados a serem armazenados não é conhecido antecipadamente ou pode variar • Além disso, o heap também permite a liberação de blocos de memória quando eles não são mais necessários, evitando o uso excessivo de recursos. • 3 Gerenciamento Manual O programador é responsável por alocar e liberar explicitamente a memória através do código, usando, por exemplo, na linguagem C, as funções malloc para alocar espaço na memória e free, para liberá-lo
Compartilhar