Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.
left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

left-side-bubbles-backgroundright-side-bubbles-background

Crie sua conta grátis para liberar esse material. 🤩

Já tem uma conta?

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

Organização de memória - Compiladores
Exercícios
1. Gerir os recursos disponibilizados pela máquina é um processo que demanda
habilidade tanto do desenvolvedor quanto da eficiência do compilador.
A alocação de memória, qualquer que seja consiste em: 
Você acertou!
E. atribuir espaço suficiente e o tipo de alocação mais adequado para cada variável.
A   reserva   de   espaço   extra   pode   ocorrer   em   variáveis   cujo tamanho   é
desconhecido, embora a maioria delas já tenha um tamanho definido. A alocação
de   memória   pode   lidar   com   o   código   a   ser   executado,   mas   para   alocá-lo   na
memória RAM em tempo de execução, enquanto a posição em um disco rígido é
atribuição   do   sistema   operacional.  A  seleção   de   registradores   diz   respeito   ao
processo de otimização do código. A eliminação de objetos não mais referenciados
faz   parte   do   processo   de   coleta   de   lixo   na   memória heap,   mas   que   não   está
necessariamente presente, tampouco integrando outras formas de alocação. No
entanto, para todos os casos, é necessário encontrar a quantidade de memória
suficiente para armazenar um dado e se este poderá ou não ser alterado —
não podendo ser estático —, além do tempo de vida para determinar entre as
modalidades de alocação dinâmica.
2. As variáveis alocadas estaticamente não podem ter seus valores alterados.
Assinale a alternativa que cita uma vantagem da alocação de memória do tipo
estático.
Você acertou!
A. Velocidade de acesso.
Por serem fixas e permanentes, espera-se um maior uso de memória na alocação
estática.   A   alocação   não   é   feita   em   tempo   de   execução,   e   sim   durante   a
compilação. Os endereços, uma vez definidos, não serão alterados, tampouco o
tamanho   da   memória   alocada. A velocidade de acesso é maior, já que os
endereços são fixos e previamente conhecidos, constituindo esta uma
vantagem.
3. Na alocação de memória dinâmica, o tamanho e o endereço a ser utilizado
somente serão conhecidos pelo sistema no momento da execução.
Assinale a alternativa que apresenta uma desvantagem desse tipo de alocação.
Você acertou!
A. Requer mecanismo de limpeza.
A alocação dinâmica pode ocorrer de duas formas: pilha ou heap. Os dados são
alocados   em   tempo   de   execução,   o   que   torna   a   compilação   mais   rápida.   É
possível aumentar o tamanho de uma variável utilizando a alocação heap. Uma
vez que muitas variáveis podem ser criadas em tempo de execução, é necessário
implementar um sistema de limpeza, a fim de liberar espaço sempre que
variáveis anteriormente alocadas se tornem inúteis, sendo esta uma
desvantagem.
4. A alocação de memória dinâmica pode ser feita em modo pilha (stack) e em
modo heap (monte). Apesar de não existir uma regra única, existem situações em
que determinado tipo é mais benéfico que o outro.
A pilha é a principal implementação quando se dá a alocação em virtude da(do):
Você acertou!
C. chamada de uma função.
Valores   constantes   podem   ser   armazenados   na   memória   estática,   liberando
espaço na memória dinâmica para outras variáveis, além de aproveitarem a maior
velocidade   de   acesso   nesse   caso.   Dentro   da   pilha,   não   é   possível   alterar   o
tamanho de uma variável em virtude do mecanismo de LIFO. Variáveis globais são
utilizadas em diferentes escopos e não podem ser eliminadas, como no sistema
LIFO. O carregamento do programa na memória durante a inicialização faz uso da
memória estática,  uma vez que é mais  rápida e o programa não pretende ser
alterado em tempo de execução. Já durante a chamada de uma função, espera-
se que variáveis necessárias somente dentro daquele escopo sejam
utilizadas, como os argumentos e dados de retorno, que poderão ser
eliminados da memória tão logo a função retorne.
5. Normalmente, a pilha apresenta um tamanho previamente definido e que, se
ultrapassado, resultará em uma exceção conhecida como stack overflow (ou
“estouro de pilha”).
Qual das alternativas a seguir apresenta uma forma de reduzir as ocorrências
de stack overflow?
Você acertou!
A. Manter somente a referência ao objeto na stack.
Ao fazer uso de argumentos de tamanho flexível, caso o sistema tente usar a pilha
para essa  finalidade,  pode ser alocado um espaço menor que o necessário e,
quando a variável aumentar, ocorra a sobreposição de dados, podendo inclusive
superar o próprio tamanho da pilha. Os argumentos das funções costumam ser
armazenados em uma pilha junto a outros valores, como os dados temporários, os
endereços de referência para retorno, os valores de retorno, entre outros. Assim, a
quantidade e o tamanho desses argumentos impactam diretamente no tamanho
da pilha. Chamadas consecutivas, sem retorno, seja por instrução recursiva, seja
por   aninhamento   de   múltiplas   funções,   podem   fazer   com   que   a   pilha   precise
armazenar mais dados que o comportado. Para cada chamada, um novo conjunto
de dados é armazenado, o qual somente será eliminado ao retornar da função.
Assim, variáveis muito grandes devem ser passadas como argumento, e a pilha
pode ser utilizada para armazenar apenas um ponteiro para essa variável e alocar
os   dados   em   si   na   memória heap.   Portanto, uma maneira de reduzir as
ocorrências de stack overflow consiste em manter somente a referência ao
objeto na stack.
	Organização de memória - Compiladores
	Exercícios

Mais conteúdos dessa disciplina