Segmentação e Protecção em processadores Intel

49
Programação de Sistemas Segmentação e Protecção de memória nos μP Intel Programação de Sistemas Segmentação e Protecção : 1/49

Transcript of Segmentação e Protecção em processadores Intel

Page 1: Segmentação e Protecção em processadores Intel

Programação de Sistemas

Segmentação e Protecção de memória nos µP Intel

Programação de Sistemas Segmentação e Protecção : 1/49

Page 2: Segmentação e Protecção em processadores Intel

Introdução (1)

Lista dos processadores de uso geral da Intel

• 4004: Nov 1971, 4 bits, primeiro µP– Desenvolvido para linha de calculadoras da

Busicom (Japão)– Relógio a ... 740KHz, executa 92K instruções/seg– Relógio a ... 740KHz, executa 92K instruções/seg

• 8080: Abr 1974, 8 bits• Relógio 2 MHz, executa 500K instruções/seg• 8085, compatível, exigia menos HW• Z80, da Zilog, adoptado por fabricantes de microcomputadores por ser

binariamente compatível e poder ser fabricado sem pagamento de direitos.

Programação de Sistemas Segmentação e Protecção : 2/49

Page 3: Segmentação e Protecção em processadores Intel

Introdução (2)

• Arquitectura IA-161978: 8086-29K transistores, 0.33 MIPS endereça 1MB1982: 80286-134K transistores (MMU incorporado), 0.9 MIPS endereça

16MB de memória

• Arquitectura IA-321985: 80386-275K transistores,5 MIPS endereça 4GB de memória

1989: 80486-1.2M transistores (FPU incorporado), 50 MIPS

Programação de Sistemas Segmentação e Protecção : 3/49

Page 4: Segmentação e Protecção em processadores Intel

Introdução (3)

1993: Pentium-3.1M transistores, 60 MIPS [introduz SIMD instruções em registos de 64 bits]

1997: Pentium II- 9.5M transistores, 300 MIPS1999: Pentium III-9.5M transistores, 500 MIPS [introduz Streaming SIMD

instruções em registos de 128 bits]2000: Pentium 4-42M transistores, 1500 MIPS endereça 64GB de memória

• Arquitectura IA-642006: Core 2-151M transistores,

20_000 MIPS

Programação de Sistemas Segmentação e Protecção : 4/49

Dissipador de calor

Page 5: Segmentação e Protecção em processadores Intel

Introdução (4)

• Fabricantes seguiram abordagens distintas na passagem de 32 bits para 64 bits:– Intel associou-se à HP para desenvolver processador Itanium

dedicado a servidores e a estações de trabalho de elevado desempenho. O processador emulava o IA-32, mas com significativa degradação no desempenho.significativa degradação no desempenho.

– Advanced Micro Devices desenvolveu AMD64, estendendo oIA-32 para16 registos de uso geral de 64 bits.

• Vendas do AMD64 muito superiores levaram a Intel a adoptar a arquitectura AMD64, sob a designação EM64T.

Informação complementar do IA32 e IA64 disponível em http://developer.intel.com/products/processor/manuals

Programação de Sistemas Segmentação e Protecção : 5/49

Page 6: Segmentação e Protecção em processadores Intel

Introdução (5)

• Um µP da Intel pode correr em 5 modos de operação:– Modo Real : único existente no 8086.

– Modo Protegido : actualmente o mais usado.

– Modo Virtual 8086 : executa programas compatíveis com 8086, concorrencialmente com programas em modo protegido.

– Modo Memória extendida para 64 bits:• Modo compatível – executa código 32 bits na máquina de 64-bits

sem recompilação (não acede ao espaço de 64 bits).

• Modo 64 bits – acesso a registos de 64 bits e espaço de endereçamento de 64 bits.

– Modo Gestão de sistema.

Programação de Sistemas Segmentação e Protecção : 6/49

Page 7: Segmentação e Protecção em processadores Intel

Registos IA-32 (1)

• Pentium possui elevado número de registos.

Programação de Sistemas Segmentação e Protecção : 7/49

Para multimedia

Page 8: Segmentação e Protecção em processadores Intel

Registos IA-32 (2)

A. Uso geral – 32 bits

Programação de Sistemas Segmentação e Protecção : 8/49

Page 9: Segmentação e Protecção em processadores Intel

Registos IA-32 (3)

B. Bandeiras (“flags”) – 32 bits

Programação de Sistemas Segmentação e Protecção : 9/49

Figura 2-3, Intel Architecture Software Developer’s Manual Vol 3

Page 10: Segmentação e Protecção em processadores Intel

Registos IA-32 (4)

C. Tabelas descritores(para modo protegido)

Programação de Sistemas Segmentação e Protecção : 10/49

Page 11: Segmentação e Protecção em processadores Intel

Registos IA-64 (1)

• Os registos de uso geral dependem do modo de operação– Compatível IA-32

• 8 registos iguais aos IA-32: EAX-EDX, EDI, ESI, EBP, ESP

• 8 registos extra: R8D-R15D

– 64 bits• 8 registos iguais aos IA-32, mas com prefixo R: RAX-RDX,

RDI,RSI, RBP, RSP

• 8 registos extra: R8-R15

• Todos os registos podem ser acedidos a nível de– Byte

– Word

– Double

– Quad (só em modo compatível 64-bit)Programação de Sistemas Segmentação e Protecção : 11/49

Page 12: Segmentação e Protecção em processadores Intel

Registos IA-64 (2)

Tipo registo Modo compatível IA-32 Modo 64-bit

Byte AL,BL,CL,DL,

AH, BH, CH, DH

AL,BL,CL,DL,

DIL,SIL,

BPL,SPL,

R8L-R15L

Word AX, BX, CX, DX,

DI, SI,

AX, BX, CX, DX,

DI, SI,

Programação de Sistemas Segmentação e Protecção : 12/49

WordDI, SI,

BP, SP

DI, SI,

BP, SP,

R8W-R15W

Double EAX, EBX, ECX, EDX,

EDI, ESI,

EBP, SP

EAX, EBX, ECX, EDX,

EDI, ESI,

EBP, ESP,

R8D-R15D

Quad -- RAX, RBX ,RCX, RDX,

RDI, RSI,

RBP, RSP,

R8-R15

Page 13: Segmentação e Protecção em processadores Intel

Segmentação (1)

• A segmentação tem em vista a resolução de problemas– incremento do espaço de endereçamento, e

– protecção de memória.

A. Espaço de endereçamentoA. Espaço de endereçamento– A Intel foi a primeira a disponibilizar um µP de 16 bits, o 8086.

Apesar de tecnologicamente inferior ao Motorola 68000, a entrada inicial permitiu assegurar maior quota de mercado.

– 16 bits endereçam 64KB, demasiadamente pequeno paraprogramas de grande dimensão. A segmentação permitiu alargarendereçamento para 1MB.

Programação de Sistemas Segmentação e Protecção : 13/49

Page 14: Segmentação e Protecção em processadores Intel

Segmentação (2)

B. Protecção de memória– A memória virtual pagimentada tem apenas 1 dimensão (entre 0 e

limite máximo).

– Existem aplicações que trabalham em várias dimensões.Ex: um compilador existem diversões partes lógicas, que nãopodem ser sobrepostas.podem ser sobrepostas.• Árvore de derivação (“parsing”)

• Tabela de símbolos

• Código

• Pilha de execução

Programação de Sistemas Segmentação e Protecção : 14/49

Page 15: Segmentação e Protecção em processadores Intel

Segmentação (3)

Comparação entre paginação e segmentação

Programação de Sistemas Segmentação e Protecção : 15/49Figura 4-37, Modern Operating Systems

Page 16: Segmentação e Protecção em processadores Intel

Gestão memória IA-16 (1)

• O 8086/8 foi o primeiro processador da Intel a 16 bits (diferença reside na dimensão do bus: 16 bits no 8086 e 8 bits no 8088)

• O 8086/8 possui 4 registos de segmento, cada um base de uma zona de 64KB.uma zona de 64KB.– CS (“Code Segment”), para endereçar código

– DS (“Data Segment”), para endereçar variáveis globais

– SS (“Stack Segment”), para endereçar piha, incluindo variáveis locais àsrotinas

– ES (“Extra Segment”)

• Segmentos podem ser torneadosindicando explicitamente o segmento(ex: MOV AX,ES:var)

Programação de Sistemas Segmentação e Protecção : 16/49

64KB

CS

Page 17: Segmentação e Protecção em processadores Intel

Gestão memória IA-16 (2)

• Espaço físico é de 1MB.• Como 16 bits apenas endereçam 64KB, como fazer?

Resposta: o endereço físico é calculado por1. Deslocar segmento 4bits para a esquerda2. Somar endereçoNota: paginação substitui bits do prefixo, segmentação soma bits do Nota: paginação substitui bits do prefixo, segmentação soma bits do

prefixoEx1: para DS=0x0365, o endereço linear 0x42f corresponde ao endereço

físico 0x03650+0x42f=0x03a7f

Programação de Sistemas Segmentação e Protecção : 17/49

Ex2: a instrução a executar encontra-se no endereço CS:IP, o push enviadado para o endereço SS:SP

0 3 6 5DS 0

0 4 2 f

0 3 a 7 f

endereço linear

endereço físico

Page 18: Segmentação e Protecção em processadores Intel

Gestão memória IA-16 (3)

• O valor dos segmentos CS,DS e SS determinam o modelo do programa.– Largo (“large”):

CS, DS e SS distintos

Codesegment

Stacksegment

0xfffff

Programação de Sistemas Segmentação e Protecção : 18/49

CS, DS e SS distintos

– Médio (“medium”):DS=SS, CS distinto

– Pequeno (“small”): CS=DS=SSExtrasegment

Datasegment

0x00000

Nota: o endereçamento puramente segmentado disponibilizado peloPentium e Core 2 em modo real.

Page 19: Segmentação e Protecção em processadores Intel

Gestão memória IA-16 (4)

• Multiprocessamento implementado por segmentos com valores distintos em cada processo.

Processo 1

0xfffff

Codesegment

Codesegment

Programação de Sistemas Segmentação e Protecção : 19/49

cada processo.

Processo 20x00000

• No IA-16, espera-se que o programa não aceda a endereçosinexistentes. Se o fizer, lê dado erróneo ou “crasha”.

• Aumento de segurança exige mais dados que o endereço base dos segmentos. Sendo os registos escassos, torna-se necessário instalarinformação na memória central: o IA-32 usa tabela de descritores.

Page 20: Segmentação e Protecção em processadores Intel

Gestão memória IA-32 (1)

A gestão de memória do IA-32 é distinta do IA-16, maispoderosa e complexa.

A. Selectores

• Os registos CS,… (mais FS e GS) passaram a designar-se por selectores (da tabela de descritores).

Programação de SistemasFigura 4-43, Modern Operating Systems

por selectores (da tabela de descritores).

• Os 16 bits dos selectores são divididos em 3 campos:– RPL (2 bits): indica o nível de privilégio (CPL).

– TI (1 bit): indica tabela de descritores , local-LDT ou global-GDT.

– Index (13 bits): indexa o descritor na tabela determinada pelo campo TI.

Nota: Em todos os processo, CS, DSe SS têem de estar carregadoscom selectores válidos.

Segmentação e Protecção : 20/49

Page 21: Segmentação e Protecção em processadores Intel

Gestão memória IA-32 (2)

B. Tabela de descritores

• 80386+ possuem três tipos de tabelas de descritores, residentes em memória.Cada tabela contém até 8K descritores, cada um designadopor descritor de segmento.por descritor de segmento.– GDT (“Global Descriptor Table”), obrigatório e partilhado por

todos os programas.

– LDT (“Local Descriptor Table”), opcional e descreve ossegmentos locais a cada programa (código, dados, pilha).

– IDT (“Interrupt Descriptor Table”), para serviços de sistemaacedidos pela instrução INT.

Nota: Linux apenas usa o GDT. Os LDTs são alocados para emulação do Windows.

Programação de Sistemas Segmentação e Protecção : 21/49

Page 22: Segmentação e Protecção em processadores Intel

Gestão memória IA-32 (3)

C. Registos base

• As tabelas GDT, LDT e IDT são referenciadas pelosregistos GDTR, LDTR e IDTR.– GDTR e IDTR - 48 bits:

• 16 bits menos significativos determinam a dimensão da tabela.• 16 bits menos significativos determinam a dimensão da tabela.

• 32 bits mais significativos determinam o endereço base da tabela.

– LDTR: selector de 16 bits, indexa na tabela do GDT o LDT corrente.

Programação de Sistemas Segmentação e Protecção : 22/49

Page 23: Segmentação e Protecção em processadores Intel

Descritores de segmentos IA-32 (1)

• A tabela GDT possuem dois tipos de descritores desegmentos.– Code Segment Descriptor ou Data Segment Descriptor.

Nota: a pilha é implementada por um Data Segment Descriptor.

– System Descriptor, subdividido em dois subtipos:– System Descriptor, subdividido em dois subtipos:• System Segment Descriptor: referenciam segmentos do sistema

(LDT e TSS)

• Gate Descriptor : referenciam pontos de entrada em rotinas.

• Por compatibilidade entre SOs, o primeiro descritor doGDT não é usado.

Programação de Sistemas Segmentação e Protecção : 23/49

Page 24: Segmentação e Protecção em processadores Intel

Descritores de segmentos IA-32 (2)

• Cada descritor ocupa 8B, com o seguinte formato

Programação de Sistemas Segmentação e Protecção : 24/49

Figura 4-44, Modern Operating Systems

Page 25: Segmentação e Protecção em processadores Intel

Descritores de segmentos IA-32 (3)

• Tipo de descritores descriminado pelo bit S– S=1 para aplicação (código e dados/pilha)

• Type: Executable (0-data,1-code), Expansion (0-up,1-down), Access (0-read only, 1-read/write)

– S=0 para sistema• 0010 - LDT• 0010 - LDT

• 1001 – porta de processo (“task”)

• 1011 – porta de processo

• 1100 – porta de entrada de rotina

• 1110 – porta de interrupção

Nota: 1011 evita processo entrar nele próprio

Programação de Sistemas Segmentação e Protecção : 25/49

Page 26: Segmentação e Protecção em processadores Intel

Descritores de segmentos IA-32 (4)

Programação de Sistemas Segmentação e Protecção : 26/49

Figura 3-10, Intel Architecture Software Developer’s Manual Vol 3

Page 27: Segmentação e Protecção em processadores Intel

Descritores de segmentos IA-32 (5)

1. Code Segment Descritor/Data Segment Descriptor.– Endereço base do segmento de 32B (virtual, ou físico,

dependendo do valor do bit PG do registo de controlo cr0).O endereço linear é calculado somando o endereço base, indicadopelo descritor (32B), com o deslocamento (32B).Nota: para apressar os cálculos, o CPU contém uma TLB com osNota: para apressar os cálculos, o CPU contém uma TLB com osdescritos usados mais recentemente.

Programação de SistemasFigura 4-45, Modern Operating Systems

Segmentação e Protecção : 27/49

Page 28: Segmentação e Protecção em processadores Intel

Descritores de segmentos IA-32 (6)

• Se soma ultrapassaro limite indicadono descritor égerada umainterrupção. Assimsão garantidas duas

Programação de Sistemas Segmentação e Protecção : 28/49

são garantidas duasprotecções:

– Intraprocesso (códigonão executa dados oupilha)

– Interprocesso (processonão executa código de outro processo)

Figura 3-1, Intel Architecture Software Developer’s Manual Vol 3

Page 29: Segmentação e Protecção em processadores Intel

Descritores de segmentos IA-32 (7)

2. Task State Segment Descriptor.• O índice da tabela de descritores, onde se encontra armazenado o

TSS-Task State Segment Descriptor, é armazendo no registoTR-Task Segment Register – 16 bits.

TSS = End. base tabela

Programação de Sistemas Segmentação e Protecção : 29/49

TSS = End. base tabela+ TR*8

Page 30: Segmentação e Protecção em processadores Intel

Descritores de segmentos IA-32 (8)

• O TSS é acedido a partir do descritor do TSS.

Programação de Sistemas Segmentação e Protecção : 30/49

Page 31: Segmentação e Protecção em processadores Intel

Descritores de segmentos IA-32 (9)

• O TSS, na realidade o PCB-Process Control Block, ocupa 26 quadwords com os seguintes campos:– Conteúdo dos selectores (CS,DS,SS,ES,FS e GS)

– Conteúdo dos registos de uso geral (EAX,EBX,ECX,EDX, ESP,EBP, ESI,EDI)

– Conteúdo do registo de bandeiras EIFLAGS– Conteúdo do registo de bandeiras EIFLAGS

– Conteúdo do EIP

– Conteúdo do LDTR (ponteiro para tabelas LDT)

– Conteúdo do IDTR (ponteiro para tabela de interrupções)

– Ponteiro para o descritor Call Gate

– Ponteiro para processo previamente executado

– …

Programação de Sistemas Segmentação e Protecção : 31/49

Page 32: Segmentação e Protecção em processadores Intel

Descritores de segmentos IA-32 (10)

link

esp0ss0

esp1ss1

esp2ss2

PTDBEIP

ss0 ss0ss0 ss0

EFLAGSEAX

0

4

8

12

16

20

24

28

32

36

4026 longwords

32-bits

Programação de Sistemas

ss0 ss0ss0 ss0ss0 ss0ss0 ss0ss0 ss0ss0 ss0ss0 ss0ss0 ss0

ESCSSSDSFSGS

LDTRIOMAP TRAP

EAXECXEDXEBXESPEBPESIEDI

I/O permission bitmap

= campo ‘estático’

= campo ‘volátil’

= campo ‘reservado’

40

44

48

52

56

60

64

68

72

76

80

84

88

92

96

100

26 longwords

Segmentação e Protecção : 32/49

Page 33: Segmentação e Protecção em processadores Intel

Descritores de segmentos IA-32 (11)

• Os segmentos definidos no TSS cobrem todo o espaço necessário à execução do mesmo.– Selectores de segmentos (CS,DS,SS e restantes).

– Ponteiros para pilhas de nível 0,1 e 2.

Programação de Sistemas Segmentação e Protecção : 33/49

Page 34: Segmentação e Protecção em processadores Intel

GDT do Linux (1)

• No Linux, cada processador mantém uma GDT com– 18 descritores de segmentos

• 4 Descritores de código e de dados para código de utilizador e núcleo

• 1 Descritor TSS

• 1 Descritor TSS especial “double fault”

• 1 Descritor Local, usado por todos os processos

• 3 TLS - Thread Local Storage (para dados locais a cada thread, emaplicações multithreaded)

• 3 APM - Advanced Power Management

• 5 PnP - Plug and Play

– 14 entradas nulas, ou reservadas.

Programação de Sistemas Segmentação e Protecção : 34/49

Page 35: Segmentação e Protecção em processadores Intel

GDT do Linux (2)

Programação de Sistemas Segmentação e Protecção : 35/49

Page 36: Segmentação e Protecção em processadores Intel

Registos de controlo IA-32 (1)

• Registos de controlo do modo no IA-32 (32 bits)– cr0 (controlo das operações básicas)

– cr1 (reservado)

– cr2 (endereço linear da última página em falta)

– cr3 (endereço base do directório)

– cr4 (activar mecanismos avançados)– cr4 (activar mecanismos avançados)

• Flags do cr0• PG (bit 31) paginação:

Nota 1: Se PG=1, o endereço é virtual e o segmento é dividido em páginas. : Se PG=0, o endereço é físico.Nota 2: cr2 e cr3 válidos apenas se PG=1

• CD (bit 30) cache inibida.

• WP (bit 16) escrita protegida.• EM (bit 2) unidade processamento vírgula flutuante (FPU) ausente.

• PE (bit 0) modo protegido.

Programação de Sistemas Segmentação e Protecção : 36/49

Page 37: Segmentação e Protecção em processadores Intel

Segmentação

Registos de controlo IA-32 (2)

• Enquanto a paginação pode ser suspensa, a segmentaçãonão pode (devido à necessidade de garantia de protecção).

Endereço Lógico

Endereço Linear

Programação de Sistemas

Page-directory base-address

1231

0

34PCD

PWT 0

PCD=Page Cache-Disable PWT=Page Write ThroughSegmentação e Protecção : 37/49

• cr3 contém o endereço base do directório (PDBR): 20 bits

Endereço Linear

Endereço Físico

Paginação

Page 38: Segmentação e Protecção em processadores Intel

Protecção (1)

• O 80386+ suporta 4 níveis de protecção, entre 0 (maior privilégio) e 3 (menor privilégio).

• O Linux usa apenas os• O Linux usa apenas osníveis– 0 para o núcleo, e

– 3 para utilizador

Programação de Sistemas

Figura 4-47, Modern Operating Systems

Segmentação e Protecção : 38/49

Page 39: Segmentação e Protecção em processadores Intel

Protecção (2)

• O nível de protecção é indicado no campo RPL do selector.– Cada processo pode aceder a dados ou chamar rotinas de níveis

superiores (menos privilegiados).– Tentativas de acessos ilegais a níveis mais privilegiados geram

TRAP.TRAP.

• Algumas instruções (ex: carregamento do registo cr3) apenas pode ser executadas no nível 0.

Programação de Sistemas Segmentação e Protecção : 39/49

Page 40: Segmentação e Protecção em processadores Intel

Protecção (3)

Espaço núcleo (anel 0)TSS

GDT

GDTR

TR

Programação de Sistemas

Espaço núcleo (anel 0)

TEXT

DATA

BSS

heap

STACKshared runtime library

ProcessoCS

DS

SSSP

IPCriado na compilação

Instruções (espaço persistente)

Dados inicializados (espaço persistente)

Dados não inicializados (espaço persistente)

Criado durante execução

Espaço utilizador (anel 3)

Dados locais (espaço transitório)

Segmentação e Protecção : 40/49

Page 41: Segmentação e Protecção em processadores Intel

Protecção (4)

[Problema] Como o processo de utilizador pode chamar umarotina de nível mais privilegiado?

• Para chamar rotina de nível mais privilegiado, o CALL indica um descritor específico, designado por call gate,que recolhe o endereço de outro descritor de código.indica um descritor específico, designado por call gate,que recolhe o endereço de outro descritor de código.Vantagens:– O utilizador não pode entrar no meio de uma chamada de sistema.– Garante que as verificações de segurança, executadas no início da

rotina, não sejam torneadas por a rotina chamadora entrar mais à frente na rotina chamada.

Programação de Sistemas Segmentação e Protecção : 41/49

Page 42: Segmentação e Protecção em processadores Intel

Protecção (5)

• O descritor do call gate contém 6 elementos:– descritor de código da rotina alvo,– ponto de entrada da rotina alvo,– nível de privilégio que a rotina chamadora necessita de ter para poder entrar,– se a rotina alvo exigir substituição de pilha, indica o número de parâmetros a

copiar da rotina chamadora para a rotina chamada,– dimensão dos parâmetros a carregar na pilha da rotina chamada (16-bit ou 32-bit),– dimensão dos parâmetros a carregar na pilha da rotina chamada (16-bit ou 32-bit),– validade do descritor call-gate.

Programação de Sistemas Segmentação e Protecção : 42/49

Figura 4-7, Intel Architecture Software Developer’s Manual Vol 3

Page 43: Segmentação e Protecção em processadores Intel

Protecção (6)

• O endereço do ponto de entrada da rotina chamada não é acedido directamente pela rotina chamadora!O endereço do ponto de entrada é igual ao deslocamentoindicado no descritor call-gate mais o endereço base indicado pelo selector do segmento.

Programação de Sistemas Segmentação e Protecção : 43/49Figura 4-8, Intel Architecture Software Developer’s Manual Vol 3

Page 44: Segmentação e Protecção em processadores Intel

• Descritores envolvidos numa chamada a uma rotina de nível mais privilegiado

Protecção (7)

TASK

STATE

SEGMENT

Stack pointerparams

call-instructionCS:IP

code-segment

code-segment

called procedure

Programação de Sistemas

STACK

SEGMENT

Stack pointer

STACK

SEGMENT

params

params

Global Descriptor Table

gate-descriptor

TSS-descriptor TR

GDTR

Segmentação e Protecção : 44/49

Rotina chamadora

Rotina chamada

Page 45: Segmentação e Protecção em processadores Intel

Protecção (8)

• Existem 4 instruções que provocam a mudança de tarefa:– Salto longo, sem retorno para um descritor TSS instalado no GDTljmp $task_selector, 0

– Chamada longa , para mais tarde retornar, para um descritor TSS instalado no GDT lcall $task_selector, 0lcall $task_selector, 0

– TRAP (por task-gate)int 0x80

Nota: código da função de sistema indicada no registo EAX

– A tarefa corrente retorna de interrupção (bit NT de EPLAGS a 1)iret

Programação de Sistemas Segmentação e Protecção : 45/49

Page 46: Segmentação e Protecção em processadores Intel

Interrupções (1)

• A tabela IDT-”Interrupt Descriptor Table”, residente num segmento de memória dedicado, contém ponteiros para tratamento de interrupções.interrupções.

• O endereço base da IDT é identificado pelo registo IDTR, de 48 bits.

Programação de Sistemas

NOTA: Instruções de escrita e leitura do IDTR (sidt, lidt) e do GDTR (sgdt, lgdt) apenas podem ser executadas no anel de nível 0.

Segmentação e Protecção : 46/49

Figura 5-1, Intel Architecture Software Developer’s Manual Vol 3

Page 47: Segmentação e Protecção em processadores Intel

Interrupções (2)

• Tal como no GDT, existem vários tipos descritores de interrupções designados por portas (gates):– Task gate (ISR tratada como comutação de processo – necessário

em caso de falha de pilha quando CPL=0, ou “double fault”).– Interrupt gate (ISR tratada como chamada normal a rotina e utiliza

a pilha do processo interrompido para EIP e CS)a pilha do processo interrompido para EIP e CS)– Trap gate.

• A única diferença entre o Trap gate e o Interrupt gate é o CPU limpar, ou não limpar, o bit IF do registo EFLAGS.A diferença é necessária quando a rotina de serviço dainterrupção (ISR) é executado fora do nível de protecção0-não podendo executar as instruções cli ou sti.

Programação de Sistemas Segmentação e Protecção : 47/49

Page 48: Segmentação e Protecção em processadores Intel

Interrupções (3)

• O interrupt-gate é muito semelhante ao call-gate.

• O endereço ISR é igual ao deslocamento indicado no descritor interrupt-gate mais o endereço base indicadopelo selector de segmento.

Programação de Sistemas Segmentação e Protecção : 48/49

Figura 5-2, Intel Architecture Software Developer’s Manual Vol 3

Page 49: Segmentação e Protecção em processadores Intel

Interrupções (4)

Interrupt-gate

Interrupt DescriptorTable (256 entradas) ISR

code-segment

Programação de Sistemas

GDTR

IDTR

code-descriptor

Global Descriptor Table

INT ID

Segmentação e Protecção : 49/49