• Nenhum resultado encontrado

Sistemas Operativos. Gestão de memória no Windows NT

N/A
N/A
Protected

Academic year: 2021

Share "Sistemas Operativos. Gestão de memória no Windows NT"

Copied!
30
0
0

Texto

(1)

Sistemas Operativos

Gestão de memória no Windows NT

João Pedro Patriarca (jpatri@cc.isel. ipl.pt)

Centro de Cálculo

Instituto Superior de Engenharia de Lisboa

“Windows Internals”, Russinovich, cap. 9, Memory Management “Windows Via C/C++”, Richter, cap. 13, cap. 14.

MSDN, http://msdn.microsoft.com/en-us/library/aa366779(v=vs.85).aspx http://msdn.microsoft.com/en-us/library/ms684884(v=vs.85).aspx

(2)

CCISEL Sistemas Operativos: Gestão de Memória no Windows NT

Layout da área de sistema

NTLDR loads the kernel, HAL, and boot drivers here. The kernel then relocates the drivers to the

system PTE area.

Additional system PTEs, system cache, or special pool System mapped views

Session space Page tables

Hyperspace and process working set lists System cache structures

System cache

Start of paged system area System PTE area Nonpaged system area Crash dump driver area Reserved for HAL usage 0x80000000

0xFFFFFFFF

(3)

Lista de frames na base de dados PFN (Page Frame Number)

• PFN – array de estruturas que

representam as frames da

memória principal

• Estados das frames

– Active (valid)

– Standby

– Modified

– Free

– Zeroed

– Bad

– ...

• As frames Bad e Active não estão

em nenhuma lista

Active

Active

Active

.

:

PFN Database

Zeroed

Free

Standby

Bad

Modified

bib: Windows Internals, fig. 9-38, Russinovich (simplificado)

(4)

CCISEL Sistemas Operativos: Gestão de Memória no Windows NT

Diagrama de estados das Page Frames

Proccess

working

sets

Standby

page list

Modified

page

writer

Modified

page list

Free

page

list

Zero

page

thread

Zero

page

list

Working set replacement

Page read from disk or kernel allocations Demand-zero page faults “Soft” page faults

(5)

Relação entre Page Tables e Page Frame Number

Database

In use Standby list In use In use Modified list . : PFN Database Valid Invalid: disk address Invalid: transition . : Process 1 Page Table Valid Invalid: disk address Valid . : Process 2 Page Table Invalid Invalid: transition Invalid: disk address . : Process 3 Page Table Prototype PTE

(6)

CCISEL Sistemas Operativos: Gestão de Memória no Windows NT

Copy-on-write

• Otimização com o intuito de preservar a memória física

• A secção

de uma

pode ser marcada como

– Na primeira escrita é criada uma nova página privada marcada como

Read/Write para o processo que promoveu a escrita

• Passos:

– A exceção gerada é apanhada e o gestor de memória verifica se se trata

de uma página marcada como

– Em vez de reportar a exceção como um acesso de violação

• aloca uma página Read/Write na memória principal

• copia a página original para a nova página

• atualiza a informação de mapeamento da página

• executa novamente a instrução que provocou a excepção

• a nova execução e respectiva escrita já terá sucesso

– Cada processo que promova uma escrita na página obterá a sua própria

cópia privada

(7)

Working set

Carregamento

com clustering (pre-paging). São carregadas em antecipação

entre 1 a 8 páginas na vizinhança da página em falta

Substituição

– As políticas do Windows NT tem como objetivo manter (em situações de

escassez de memória) o conjunto de páginas físicas de cada processo

(resident set) o mais possível próximo do seu working set. Baseiam-se na

existência de limites (dinâmicos) que especificam o mínimo e máximo working

set do processo.

– Uma thread a executar em modo kernel, denominada de Balance Set Manager,

percorre periodicamente (em cada segundo) os espaços de endereçamento de

cada processo (começando dos antigos e grandes até aos novos e pequenos)

Primeiro, os limites mínimo e máximo dos working sets de cada processo são

ajustados de acordo com o número de page faults que ocorreram no processo

Depois disso são percorridas as tabelas que mapeiam o espaço de endereçamento

do processo. Para cada página, se esta não tiver marcada como acedida, é

incrementando um contador, associado à página. Caso contrário é feito reset ao

respetivo bit, e o contador é colocado a zero

Em caso de necessidade (se houver poucas page frames livres) são libertadas

páginas do processo que não tenham sido acedidas há mais tempo (aquelas cujo

contador está acima de determinado threshold) - variante local do algoritmo Clock

(8)

CCISEL Sistemas Operativos: Gestão de Memória no Windows NT

Informação sobre memória no Task manager

Total de

memória

committed (incluindo

Paging files)

Memória RAM

disponível para OS

e aplicações

Somatório das listas

standby e modified

Memória utilizável de

imediato: somatório

das listas standby, free

e zeroed

Máximo de memória

committable

(incluindo

(9)

Subsistema Windows – Windows API

Kernel32.dll, Windows.h

(10)

CCISEL Sistemas Operativos: Gestão de Memória no Windows NT

Subsistema Windows – Windows API

(11)

Subsistema Windows – Windows API

(12)

CCISEL Sistemas Operativos: Gestão de Memória no Windows NT

Subsistema Windows – Windows API

Deve ter direitos de acesso

e

(13)

GetSystemInfo

GlobalMemoryStatusEx

GetPerformanceInfo

GetProcessMemoryInfo

•Apresenta informação global do sistema (3 primeiras funções)

•De 1 em 1 segundo apresenta ProcessMemoryInfo

(14)

CCISEL Sistemas Operativos: Gestão de Memória no Windows NT

Alocação de memória / Espaços de endereçamento virtual

– Aloca região com dimensão quase sempre múltipla de 64 KB

• Campo

da estrutura

– Endereço base da região alocada alinhado com a dimensão de uma página

– Em termos de modelo de dados interfere nas VADs apenas (não são criadas

PTEs)

– Qualquer acesso gera violação de acesso

• Usado na gestão do espaço que um stack ocupa em memória

– Aloca região com granularidade igual à dimensão da página

– Pode alocar sobre uma região reservada

– Em termos de modelo de dados interfere nas PTEs e no Page File

– Garante existência de espaço no Page File para guardar região committed

– A página é alocada na memória principal apenas no primeiro acesso

(15)

Virtual Address Descriptors (VADs)

Range: 20000000 through 2000FFFF Protection: Read/Write Inheritance: Yes Range: 00002000 through 0000FFFF Protection: Read-only Inheritance: No

Range: 4E000000 through 4F000000 Protection: Copy-on-write

Inheritance: Yes

Range: 32000000 through 3300FFFF Protection: Read-only

Inheritance: No

Range: 7AAA0000 through 7AAA00FF Protection: Read/Write

Inheritance: No

(16)

CCISEL Sistemas Operativos: Gestão de Memória no Windows NT

Page Faults

Razões para Page Faults Consequências do Page Fault

Acesso a página que não está residente em memória principal mas presente em disco

Aloca uma frame e lê a página do disco (“hard”

page fault)

Acesso a página presente nas listas standby ou modified

Coloca a página como válida actualizando a PTE do processo (“soft” page fault)

Acesso a página não presente na PT Violação de acesso

Acesso a página kernel a partir de user Violação de acesso

Escrita numa página read-only Violação de acesso

Acesso a uma demand-zero page Adiciona uma página com zeros ao working set

Escrita numa página guard page Violação guard page (se acesso ao user stack

expande-o)

Escrita numa página copy-on-write Copia a página para uma página privada ao

processo Escrita numa página válida mas que ainda não foi

escrita para o seu backing store

Coloca a 1 o bit dirty da PTE Executa código numa página marcada como não

executável

Violação de acesso (apenas presente em

(17)

Termos relevantes (glossário)

• Page: página no âmbito do espaço de endereçamento do processo

• Page Frame: página no âmbito da memória principal

• Page File: ficheiro na memória secundária (disco) que guarda

Frames da memória principal

• Resident set: quantidade de páginas presentes na memória principal

• Working set: conjunto de páginas que um processo deverá ter em

(18)

CCISEL Sistemas Operativos: Gestão de Memória no Windows NT

Subsistema Windows – Windows API

– alocação de memória virtual

endereço virtual base onde se pretende alocar a região

• A função retorna 0 caso não exista espaço livre para a região especificada

NULL caso não seja relevante a localização da região

:

| [

]

Usadas em OR para reservar e commit na mesma chamada

A função

retorna

em caso de insucesso

:

:

igual ao endereço retornado pelo igual a 0

Kernel32.dll, Windows.h

(19)

Atributos de proteção de uma Page

Atributos de protecção

Descripção (violação nos acessos)

Leitura, escrita e execução

Escrita e execução

Execução

Leitura e escrita

Escrita

Nenhuma violação

Violação na execução;

Na escrita, o sistema cria cópia privada com

atributos read/write para o processo

Nenhuma violação;

Na escrita, o mesmo de cima

Podem ser combinados (OR bit a bit) com os

anteriores excepto

(20)

VirtualAlloc

•Observar com o VMMap o estado das páginas nas diferentes

fases do programa:

– Após reserva de um bloco

– Após commited de uma página

– Após acesso de escrita

(21)

Subsistema Windows – Windows API

– estado de uma região de páginas

(22)

VirtualQuery

•Aplicação consola equivalente à ferramenta VMMap baseado

(23)

Subsistema Windows – Windows API

– estado da(s) página(s) de um processo

(24)

QueryWorkingSet

•Determinar o número de páginas do espaço de

endereçamento do utilizador de um processo que não são

partilháveis

(25)

Subsistema Windows – Windows API (passo 1)

Mapeamento de dispositivos ficheiro –

Kernel32.dll, Windows.h

Retorna (-1)

(26)

CCISEL Sistemas Operativos: Gestão de Memória no Windows NT

Subsistema Windows – Windows API (passo 2)

Memory Mapped Files

• Forma para associar ficheiros presentes em disco no espaço de

endereçamento de um processo

– Mapear um ficheiro em disco no espaço de endereçamento local

– Carregar em memória ficheiros EXE e DLLs

– Partilha de memória entre vários processos (na ausência de ficheiro)

• As páginas removidas da memória principal são mantidas no ficheiro

em disco

(27)

Subsistema Windows – Windows API (passo 3)

Mapeamento de uma vista do ficheiro –

• Realiza a reserva e commit no espaço de endereçamento do

processo para uma vista do ficheiro

(28)

CCISEL Sistemas Operativos: Gestão de Memória no Windows NT

Subsistema Windows – Windows API (passos 4, 5 e 6)

Libertação de memória e dos objetos criados

Especiais cuidados se a vista foi mapeada com o atributo

Forçar a escrita em disco

Usado para fechar um objecto kernel (objectos obtidos por

e

)

A ordem de chamada é indiferente e pode acontecer antes da chamada de

(29)

CreateFile

CreateFileMapping

MapViewOfFile

•Demo com o atributo de acesso FILE_MAP_COPY

•Exemplo de utilização: leitura das últimas mensagens

(30)

CCISEL Sistemas Operativos: Gestão de Memória no Windows NT

Bibliografia

• “Windows Via C/C++”, Richter, cap. 13, cap. 14.

• MSDN,

Referências

Documentos relacionados

Para definir as características de resistência dos componentes, foi calculado o momento de força para cada conjunto implante-pilar, multiplicando a altura do conjunto em relação

144 ambiência situação SEDE SEDE CURRAL CURRAL AÇUDE AÇUDE FAZENDA RANCHARIA DO NORTE FAZENDA RANCHARIA DO NORTE RJ 116 RJ 116 BOM JARDIM BOM JARDIM CORDEIRO CORDEIRO DUAS

As empresas integrantes da categoria econômica representada pelo SEGUNDO CONVENENTE descontarão, nos meses de Junho e de novembro de 2.014, de todos os seus empregados

Desta forma os dados obtidos no presente estudo ampliam o conhecimento sobre a distribuição geográfica das espécies de triatomíneos encontrados nesta área do

No contexto em que a Arte é trabalhada como recurso didático-pedagógico na Educação Matemática (ZALESKI FILHO, 2013), pode-se conceber Performance matemática (PM) como

Visando garantir a idoneidade da promoção, no caso de apresentação de mais de (i) 02 (duas) notas/cupons fiscais e/ou comprovantes de compras emitidos para a mesma pessoa, pela

Ainda, neste trabalho, houve alguns aspectos em que significantemente não ocorreram alterações, como a presença de sub-harmônicos em M1XM2XM3, a presença de

Com a experiência de ter criado o instru- mento de coleta de dados sobre o stress es- pecífico para a atuação do enfermeiro de centro cirúrgico, foi então formulada a Es- cala