Docsity
Docsity

Prepare for your exams
Prepare for your exams

Study with the several resources on Docsity


Earn points to download
Earn points to download

Earn points by helping other students or get them with a premium plan


Guidelines and tips
Guidelines and tips

Gerenciamento de Memória: Pilhas, Heaps e Garbage Collectors, Slides of Computer Science

Conceitos fundamentais de gerenciamento de memória em programação, explorando a estrutura de pilhas e heaps, o papel do garbage collector e a importância da alocação e desalocação de memória. O documento também discute diferentes mecanismos de passagem de parâmetros, como passagem por valor, passagem por referência e passagem por valor-resultado, e suas implicações na manipulação de dados em programas. Além disso, o documento apresenta convenções de chamada em diferentes arquiteturas de processadores, como arm e amd64, e ilustra como o código de chamada e retorno funciona em cada caso.

Typology: Slides

2017/2018

Uploaded on 03/22/2025

ines-alessandra
ines-alessandra 🇺🇸

1 document

1 / 73

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
PCS-3566 / PCS-3866
LINGUAGENS E COMPILADORES
Prof. João José Neto
Aula 12 Ambientes de Execução
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f
pf20
pf21
pf22
pf23
pf24
pf25
pf26
pf27
pf28
pf29
pf2a
pf2b
pf2c
pf2d
pf2e
pf2f
pf30
pf31
pf32
pf33
pf34
pf35
pf36
pf37
pf38
pf39
pf3a
pf3b
pf3c
pf3d
pf3e
pf3f
pf40
pf41
pf42
pf43
pf44
pf45
pf46
pf47
pf48
pf49

Partial preview of the text

Download Gerenciamento de Memória: Pilhas, Heaps e Garbage Collectors and more Slides Computer Science in PDF only on Docsity!

PCS-3566 / PCS- 3866

LINGUAGENS E COMPILADORES

Prof. João José Neto

Aula 12 – Ambientes de Execução

Ambiente de Execução ( run-time environment )

  • É o ambiente computacional em que se

executa o programa-objeto.

  • Temas considerados nesta apresentação:
    • Alocações de memória
    • Acessos a variáveis e dados
    • Gerenciamento de memória:
      • alocação de pilha,
      • gerenciamento de heap ,
      • garbage collection

Temas a serem estudados

  • Organização da memória
  • Códigos e dados binários
  • Alocação de área para a pilha
  • Dados não locais
  • Gerenciamento de Heap
  • Arquiteturas

ORGANIZAÇÃO DA MEMÓRIA

Garbage Collector

  • Em ambientes com alocação dinâmica de uma memória que
não seja organizada em pilha, a devolução ao sistema, em
instantes arbitrários, das áreas de memória previamente
alocadas, causa o fenômeno da fragmentação da memória
  • Por isso, é preciso, de tempos em tempos, compactar a
memória (defragmentá-la) para que ela possa ser utilizada
mais eficientemente
  • Propósito do garbage collector
    • Permitir que o ambiente de execução detecte elementos de dados inúteis, com a finalidade de reaproveitar a área de memória por eles ocupada.
    • Na maior parte das implementações de linguagens de programação modernas, esta operação costuma ser efetuada automaticamente pelo ambiente de execução da linguagem.

Organização da memória

  • Representação de um programa objeto em

tempo de execução:

  • Área de código, para instruções e ponteiros (endereços)
  • Heap , onde são dinamicamente alocados:
    • Objetos, registros, vetores, matrizes, cadeias variáveis,.
  • Pilha, na qual são alocados estaticamente:
    • Registros de ativação e stack frames
    • Objetos, registros, vetores, matrizes e cadeias variáveis

CÓDIGOS E DADOS BINÁRIOS

Endereços de memória

  • A memória consiste de um banco de bits, contiguamente dispostos
  • A memória se organiza em unidades formadas por grupos de n bits, cada qual associado a seu próprio endereço, que é único no sistema
  • Computadores clássicos (até 1980) apresentavam n entre 1 e 80
  • A linguagem de programação C consagrou o byte (n=8) como a única escolha realística
  • Deseja-se em geral guardar números e instruções na memória
  • Idealmente, existem, para cada byte, 2 8 =256 combinações possíveis, mas deseja-se armazenar números pertencentes a domínios bem mais amplos
  • Para isso, a palavra é um conceito mais adequado, pois constitui uma entidade formada por 4 bytes consecutivos, comportando 2 8x = 2 32 = 4294967296 combinações diferentes de bits.

Endianness Byte Byte Byte Byte 0 1 2 3 32 bits Big-endian word 32 bits Little-endian word Byte Byte Byte Byte Byte Byte Byte Byte

Endianness

  • ARM32 é um processador little-endian
    • O byte menos significativo fica na

posição de memória de endereço mais

baixo

Adição, em complemento de dois 111 110 100 101 011 010 000 001 Consideremos todos os inteiros de 3 bits:

111 110 100 101 011 010 000 001

Consideremos todos os inteiros de 3 bits
Consideremos agora a operação de
somar uma unidade

Adição, em complemento de dois

Adição, em complemento de dois 111 110 100 101 011 010 000 001

Consideremos todos os inteiros de 3 bits
Consideremos a operação de
somar outra unidade

Adição, em complemento de dois 111 110 100 101 011 010 000 001

Consideremos todos os inteiros de 3 bits
Consideremos a operação de
somar mais outra unidade +