Questão nº 47
Questão de Tecnologia da Informação · FGV CVM 2024 (nº 47)
Enquanto trabalha na otimização de um sistema operacional de alta performance, a analista Jane se depara com o desafio de aprimorar o gerenciamento de memória dos processos em execução. Sua tarefa é analisar as áreas de memória de um processo e identificar estratégias para melhorar a eficiência e a performance do sistema.
Considerando as funções específicas e características de cada área de memória de um processo, a melhor estratégia para otimizar o gerenciamento de memória é:
- Alimitar o tamanho da Stack a um valor fixo e pequeno para todos os processos, a fim de forçar uma programação mais eficiente e evitar o uso excessivo de chamadas de função;
- Balocar um grande segmento de memória para o código de todos os processos, presumindo que mais espaço para código resultará em melhor performance;
- Cimplementar uma política de alocação de memória que ajuste dinamicamente o tamanho da Heap e da Stack com base no comportamento em tempo real dos processos; (alternativa correta)
- Dmanter a área de dados não inicializados (BSS) em um tamanho mínimo constante, independentemente das necessidades específicas do programa, para simplificar o gerenciamento de memória;
- Eaumentar o espaço dedicado ao segmento de dados inicializados, supondo que isso automaticamente otimizará o acesso a variáveis globais e constantes.
Resposta comentada
Gabarito Alternativa C
O gerenciamento de memória de um processo é a forma como o sistema operacional organiza e aloca diferentes tipos de dados e instruções na memória, crucial para a eficiência e performance do sistema.
(A) Incorreta: Limitar a Stack a um valor fixo e pequeno causaria Stack Overflow (estouro de pilha) em muitos programas legítimos com chamadas de função profundas ou grandes variáveis locais, levando a falhas em vez de otimização.
(B) Incorreta: O tamanho do segmento de código é definido pelo programa compilado; alocar mais espaço do que o necessário desperdiçaria memória sem melhorar a performance, que depende da eficiência do código, não do seu espaço alocado.
(C) Correta: Uma política que ajusta dinamicamente o tamanho da Heap (memória alocada em tempo de execução) e da Stack (memória para chamadas de função e variáveis locais) permite que o processo use apenas a memória necessária, evitando desperdício e prevenindo estouros, adaptando-se às demandas em tempo real e otimizando o uso dos recursos.
(D) Incorreta: O tamanho da área BSS (dados não inicializados) é determinado pelas variáveis globais e estáticas do programa; mantê-lo em um mínimo constante, independentemente das necessidades, levaria a falhas se o programa precisar de mais ou desperdiçaria espaço se precisar de menos.
(E) Incorreta: O tamanho do segmento de dados inicializados é fixo pelo programa; aumentar arbitrariamente esse espaço não otimiza o acesso a variáveis globais, que é influenciado por fatores como cache e arquitetura de memória, não pelo tamanho alocado além do necessário.
Fonte: FGV CVM 2024 Analista CVM - TI Sistemas e Desenvolvimento (Perfil 8) (Caderno Tipo 1). Reproduzida para fins de estudo.