Sei sulla pagina 1di 20

Por dentro do Windows: Gerenciamento de Memria

Rodrigo Strauss http://www.1bit.com.br

Definindo Windows
Falaremos somente sobre Windows NT
NT 3.51 NT 4 Windows 2000 (NT5) Windows XP (NT 5.1) Windows 2003 Server (NT 5.2) Windows Vista e Longhorn Server (NT 6)

(Quase) nada disso se aplica a Windows 9x!


2

Viso Geral do Windows


kernel32 advapi32 ...

User Mode Kernel Mode


Object Manager Power Management

NTDLL

Registry InterInter-process Communication Scheduler

Security

Plug and Play

I/O Manager

Memory Manager

Hardware Abstraction Layer


3

O Memory Manager
Pea chave do Windows Baixo nvel, abaixo da implementao de gerenciamento de memria das linguagens ou frameworks
Nesse ponto do Windows, no importa se existe um Garbage Collector ou no

Isso faz parte do bsico do sistema operacional


Funcionamento parecido entre os sistemas operacionais de 32/64 bits, como UNIX, Linux, MacOS, OS/2, etc Conhecimento til para programadores, tcnicos, engenheiros, etc

Funcionalidades
Espao de memria linear para todos os processos Gerencia espao de endereamento dos processos e seus Working Sets Memria Virtual e memria fsica File Mapping (arquivos mapeados) Memria compartilhada e copy-on-write Trabalha em conjunto com o Cache Manager e o I/O Manager
5

Processo?
basicamente uma instncia de um executvel um container para um address space e suas threads Conceito de segurana (tokens), cota, tabela de handles.
Arquivos Chaves de registros Primitivas de sincronizao, etc

Tudo isso acaba quando o processo acaba


6

Memria Virtual
Os programas no acessam a memria fsica diretamente Prov acesso linear memria Permite usar mais memria do que a quantidade instalada na mquina
Memria no voltil como retaguarda para excesso de uso: arquivo de paginao

Permite realocar a memria fsica usada por um programa para outro


7

Layout de memria x86


4Gb
Memria de Sistema (kernel mode)

System
(Kernel, Executive, HAL)

2Gb
Memria do Processo (user mode)

Aplicao
(User Process Space)

0
8

Memria Virtual
Como a memria virtual mapeada para a memria fsica
CR3 PD PT page dados

1024 PDEs

1024 PTEs

4096 bytes

0000 0000 0000 0000 0000 0000 0000 0000

Pginas de memria
Alocao por pgina de memria (4kb ou 4MB) Limite abstrado pelo Heap Manager do Windows ou da linguagem ou framework usado Determinado pelo hardware

10

Acabou a memria, e agora?

Similaridades com o cache do processador Liberando memria fsica


Tirar memria de quem? Gravando (ou no) no arquivo de paginao Marcando as pginas de memria como invlidas Usando a memria fsica liberada na nova alocao
11

Ainda existe memria disponvel...


O Windows pode rearranjar o uso da memria fsica por diversos motivos
Cache para arquivos Programas inativos Responsividade para novos programas

A memria solitada pelos programas fornecida sob demanda

12

Page Faults
O que acontece quando o programa acessa um dado que no est mais na memria?
Exceo/interrupo de hardware tratada pelo Memory Manager Restaurao da memria O que acontece se no existe memria fsica disponvel

Colaborao entre I/O Manager, File System e Cache Manager


13

Indicadores de memria
Virtual Memory Working Set Private Bytes

14

Mais funcionalidades
Flags de permisso de uso de memria
PAGE_READONLY PAGE_READWRITE PAGE_EXECUTE_READ PAGE_EXECUTE_READWRITE

Data Execution Prevention


Windows XP SP2+, Windows Server 2003 SP1+, Windows Vista e Longhorn Server Alguns programas necessitam executar cdigo gravado em memria
15

O comeo da era 64 bits


2 GB de RAM j no so mais suficientes para muitas aplicaes para usurios finais 2 GB de RAM um limite muito baixo para certas aplicaes de misso crtica
Bancos de dados Servidores de dados Processamentos e clculos

16

Windows 64 bits
Windows Server sempre foi preparado para 64 bits, agora o Windows XP tambm Nos prximos anos todos os novos processadores sejam x64, suportando tanto sistemas operacionais 64 bits quanto 32 bits

17

Nmeros
Architectural component Virtual memory Paging file size Hyperspace Paged pool Non-paged pool System cache System PTEs 64-bit Windows 16 terabytes 512 terabytes 8 GB 128 GB 128 GB 1 terabyte 128 GB 32-bit Windows 4 GB 16 terabytes 4 MB 470 MB 256 MB 1 GB 660 MB

http://support.microsoft.com/default.aspx?scid=kb;en-us;294418
18

FileMapping
Mapeando arquivos na memria Uso na carga de executveis e DLLs Page faults Copy on write Prefetch do Windows XP SuperFetch do Windows Vista

19

Game Over! Perguntas?

20

Potrebbero piacerti anche