Por dentro do Windows: Gerenciamento de Memória
-
Upload
regan-conway -
Category
Documents
-
view
26 -
download
2
description
Transcript of Por dentro do Windows: Gerenciamento de Memória
1
Por dentro do Windows:Por dentro do Windows:Gerenciamento de MemóriaGerenciamento de Memória
Rodrigo StraussRodrigo Strausshttp://www.1bit.com.brhttp://www.1bit.com.br
2
Definindo WindowsDefinindo Windows
Falaremos somente sobre Windows Falaremos somente sobre Windows NTNT
NT 3.51NT 3.51
NT 4NT 4
Windows 2000 (NT5)Windows 2000 (NT5)
Windows XP (NT 5.1)Windows XP (NT 5.1)
Windows 2003 Server (NT 5.2)Windows 2003 Server (NT 5.2)
Windows Vista e Longhorn Server (NT 6)Windows Vista e Longhorn Server (NT 6)
(Quase) nada disso se aplica a (Quase) nada disso se aplica a Windows 9x!Windows 9x!
3
Visão Geral do WindowsVisão Geral do Windows
Memory ManagerMemory ManagerI/O ManagerI/O Manager
SecuritySecurity
SchedulerScheduler
Object ManagerObject Manager
Inter-process Inter-process CommunicationCommunication
Hardware Abstraction LayerHardware Abstraction Layer
User ModeUser Mode
Kernel ModeKernel Mode
NTDLLNTDLL
advapi32advapi32kernel32kernel32
RegistryRegistry
Power Power ManagementManagement
Plug and PlayPlug and Play
. . .. . .
4
O Memory ManagerO Memory Manager
Peça chave do WindowsPeça chave do Windows
Baixo nível, abaixo da implementação Baixo nível, abaixo da implementação de gerenciamento de memória das de gerenciamento de memória das linguagens ou frameworkslinguagens ou frameworks
Nesse ponto do Windows, não importa se Nesse ponto do Windows, não importa se existe um Garbage Collector ou nãoexiste um Garbage Collector ou não
Isso faz parte do básico do sistema Isso faz parte do básico do sistema operacionaloperacional
Funcionamento parecido entre os Funcionamento parecido entre os sistemas operacionais de 32/64 bits, como sistemas operacionais de 32/64 bits, como UNIX, Linux, MacOS, OS/2, etcUNIX, Linux, MacOS, OS/2, etc
Conhecimento útil para programadores, Conhecimento útil para programadores, técnicos, engenheiros, etctécnicos, engenheiros, etc
5
FuncionalidadesFuncionalidades
Espaço de memória linear para Espaço de memória linear para todos os processostodos os processos
Gerencia espaço de Gerencia espaço de endereçamento dos processos e endereçamento dos processos e seus Working Setsseus Working Sets
Memória Virtual e memória físicaMemória Virtual e memória física
File Mapping (arquivos File Mapping (arquivos mapeados)mapeados)
Memória compartilhada e copy-Memória compartilhada e copy-on-writeon-write
Trabalha em conjunto com o Trabalha em conjunto com o Cache Manager e o I/O ManagerCache Manager e o I/O Manager
6
Processo?Processo?
É basicamente uma instância de um É basicamente uma instância de um executávelexecutável
É um container para um address É um container para um address space e suas threadsspace e suas threads
Conceito de segurança (tokens), cota, Conceito de segurança (tokens), cota, tabela de handles.tabela de handles.
ArquivosArquivos
Chaves de registrosChaves de registros
Primitivas de sincronização, etcPrimitivas de sincronização, etc
Tudo isso acaba quando o processo Tudo isso acaba quando o processo acabaacaba
7
Memória VirtualMemória Virtual
Os programas não acessam a Os programas não acessam a memória física diretamentememória física diretamente
Provê acesso linear à memóriaProvê acesso linear à memória
Permite usar mais memória do que a Permite usar mais memória do que a quantidade instalada na máquinaquantidade instalada na máquina
Memória não volátil como retaguarda Memória não volátil como retaguarda para excesso de uso: arquivo de para excesso de uso: arquivo de paginaçãopaginação
Permite realocar a memória física Permite realocar a memória física usada por um programa para outrousada por um programa para outro
8
Layout de memória x86Layout de memória x86
Aplicação
(User Process Space)
System
(Kernel, Executive, HAL)
0
2Gb
4Gb
Memória de Sistema
(kernel mode)
Memória do Processo
(user mode)
9
Memória VirtualMemória Virtual
Como a memória virtual é mapeada Como a memória virtual é mapeada para a memória físicapara a memória física
0000 0000 0000 0000 0000 0000 0000 0000
CR3
PD PT page dadosdados
1024 PDEs
1024 PTEs
4096 bytes
10
Páginas de memóriaPáginas de memória
Alocação por página de memória Alocação por página de memória (4kb ou 4MB)(4kb ou 4MB)
Limite abstraído pelo Heap Manager Limite abstraído pelo Heap Manager do Windows ou da linguagem ou do Windows ou da linguagem ou framework usadoframework usado
Determinado pelo hardwareDeterminado pelo hardware
11
Acabou a memória, e Acabou a memória, e agora?agora?
Similaridades com o cache do Similaridades com o cache do processadorprocessador
Liberando memória físicaLiberando memória físicaTirar memória de quem?Tirar memória de quem?
Gravando (ou não) no arquivo de Gravando (ou não) no arquivo de paginaçãopaginação
Marcando as páginas de memória como Marcando as páginas de memória como inválidasinválidas
Usando a memória física “liberada” na Usando a memória física “liberada” na nova alocaçãonova alocação
12
Ainda existe memória Ainda existe memória disponível...disponível...
O Windows pode rearranjar o uso da O Windows pode rearranjar o uso da memória física por diversos motivosmemória física por diversos motivos
Cache para arquivosCache para arquivos
Programas inativosProgramas inativos
Responsividade para novos programasResponsividade para novos programas
A memória solitada pelos programas A memória solitada pelos programas é fornecida sob demandaé fornecida sob demanda
13
Page FaultsPage Faults
O que acontece quando o programa O que acontece quando o programa acessa um dado que não está mais acessa um dado que não está mais na memória?na memória?
Exceção/interrupção de hardware Exceção/interrupção de hardware tratada pelo Memory Managertratada pelo Memory Manager
Restauração da memóriaRestauração da memória
O que acontece se não existe memória O que acontece se não existe memória física disponívelfísica disponível
Colaboração entre I/O Manager, File Colaboração entre I/O Manager, File System e Cache ManagerSystem e Cache Manager
14
Indicadores de memóriaIndicadores de memória
Virtual MemoryVirtual Memory
Working SetWorking Set
Private BytesPrivate Bytes
15
Mais funcionalidadesMais funcionalidades
Flags de permissão de uso de Flags de permissão de uso de memóriamemória
PAGE_READONLYPAGE_READONLY
PAGE_READWRITEPAGE_READWRITE
PAGE_EXECUTE_READPAGE_EXECUTE_READ
PAGE_EXECUTE_READWRITEPAGE_EXECUTE_READWRITE
Data Execution PreventionData Execution PreventionWindows XP SP2+, Windows Server 2003 Windows XP SP2+, Windows Server 2003 SP1+, Windows Vista e Longhorn ServerSP1+, Windows Vista e Longhorn Server
Alguns programas necessitam executar Alguns programas necessitam executar código gravado em memóriacódigo gravado em memória
16
O começo da era 64 bitsO começo da era 64 bits
2 GB de RAM já não são mais 2 GB de RAM já não são mais suficientes para muitas aplicações suficientes para muitas aplicações para usuários finaispara usuários finais
2 GB de RAM é um limite muito baixo 2 GB de RAM é um limite muito baixo para certas aplicações de missão para certas aplicações de missão críticacrítica
Bancos de dadosBancos de dados
Servidores de dadosServidores de dados
Processamentos e cálculosProcessamentos e cálculos
17
Windows 64 bitsWindows 64 bits
Windows Server sempre foi Windows Server sempre foi preparado para 64 bits, agora o preparado para 64 bits, agora o Windows XP também éWindows XP também é
Nos próximos anos Nos próximos anos todostodos os novos os novos processadores sejam x64, processadores sejam x64, suportando tanto sistemas suportando tanto sistemas operacionais 64 bits quanto 32 bitsoperacionais 64 bits quanto 32 bits
18
NúmerosNúmeros
Architectural component 64-bit Windows 32-bit Windows
Virtual memory 16 terabytes 4 GB
Paging file size 512 terabytes 16 terabytes
Hyperspace 8 GB 4 MB
Paged pool 128 GB 470 MB
Non-paged pool 128 GB 256 MB
System cache 1 terabyte 1 GB
System PTEs 128 GB 660 MB
http://support.microsoft.com/default.aspx?scid=kb;en-us;294418
19
FileMappingFileMapping
Mapeando arquivos na memóriaMapeando arquivos na memória
Uso na carga de executáveis e DLLsUso na carga de executáveis e DLLs
Page faultsPage faults
Copy on writeCopy on write
Prefetch do Windows XPPrefetch do Windows XP
SuperFetch do Windows VistaSuperFetch do Windows Vista