Programação de Sistemas



Documentos relacionados
MODELO DE S.O. DEFINIÇÕES

28/3/2011. Família Intel 80x86. Arquitetura dos Processadores Intel 80x86

Memória. Espaço de endereçamento de um programa Endereços reais e virtuais Recolocação dinâmica Segmentação

Introdução à Arquitetura e Linguagem Assembly de Processadores IA-32

Programação de Sistemas

Evolução dos Processadores

Arquitetura de Computadores. Prof. João Bosco Jr.

Universidade Federal da Bahia Instituto de Matemática Departamento de Ciência da Computação MATA49 Programação de software básico Arquitetura Intel

Linguagem de Montagem

O Nível ISA. Modelo de programação Arquitecturas CISC e RISC Introdução ao IA-32 da Intel

2 - Processadores. CEFET-RS Curso de Eletrônica. Organização de Computadores. Profs. Roberta Nobre & Sandro Silva

CPU. CPU Unidade Central de Processamento. Função: leitura, escrita e processamento de dados

Organização de Computadores 2005/2006 Processadores Intel

Gestor de Processos Núcleo do Sistema Operativo. Sistemas Operativos 2011 / Gestor de Processos

Sumário. Sistemas Operativos 1

Arquitectura de Computadores II. Medição de desempenho

Interrupções. As interrupções são casos especiais de chamadas de procedimentos.

Gestor de Processos. Gestor de Processos

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

MEMÓRIA. 0 e 1 únicos elementos do sistema de numeração de base 2

Máquinas virtuais. Máquina virtual de um processo. Máquinas virtuais (3) Máquina virtual de sistema. Máquinas virtuais (1) VMware para Windows e Linux

LABORATÓRIO DE LINGUAGEM DE MONTAGEM INTERRUPÇÕES DO DOS E DA BIOS

ARQUITETURA DE COMPUTADORES

Sistemas Operacionais

Entradas/Saídas. Programação por interrupções Conceitos gerais Programação da porta série Transmissão

Introdução aos Computadores

Capítulo 4. MARIE (Machine Architecture Really Intuitive and Easy)

Organização de Computadores 2005/2006 Processadores Intel

Sistemas Operativos. Sumário. Estruturas de sistemas de computação. ! Operação de um sistema de computação. ! Estruturas de E/S

X86 - Modo Protegido (32bits) Introdução (parte 1)

Sistemas Operacionais

Sistemas Operativos I

Introdução aos Sistemas Operativos

Infraestrutura de Hardware. Memória Virtual

Entradas/Saídas. Programação por espera activa Programação por interrupções

Arquitetura de um Computador

OFICINA DA PESQUISA PROGRAMAÇÃO APLICADA À CIÊNCIA DA COMPUTAÇÃO

Arquitetura de Computadores. Tipos de Instruções

Visão Geral de Sistemas Operacionais

1.3. Componentes dum sistema informático HARDWARE SOFTWARE

Microprocessadores II - ELE 1084

Análises Geração RI (representação intermediária) Código Intermediário

Sistemas Operacionais

Programação de Sistemas

Sistemas de Computação

2 A unidade central de processamento

Sistemas Operativos I

Linguagem de Montagem

Gestor de Processos Núcleo do Sistema Operativo. Sistemas Operativos 2012 / Gestor de Processos

x86 Assembly Mini-Course

Sistema Operacional Correção - Exercício de Revisão

Sistemas de Computação para Controle e Automação CIC132. Assembly. Assembly. Notas. Décima quarta aula: Introdução a programação Assembly

CPU Unidade Central de Processamento. História e progresso

Nível da Arquitetura do Conjunto de Instruções. Ronaldo de Freitas Zampolo

Processador ( CPU ) E/S. Memória. Sistema composto por Processador, Memória e dispositivos de E/S, interligados por um barramento

SO - Conceitos Básicos. Introdução ao Computador 2010/01 Renan Manola

Introdução. ULA: Faz os Cálculos UC: Como isso tudo ocorre?

Memória. Função: armazenamento de dados e instruções h FFFF FFFE h FFFF FFFF h byte.

CAPÍTULO 3 NÍVEL ISA. 3.1 Introdução ao Nível de Arquitetura do Conjunto de Instruções

ENTRADA E SAÍDA DE DADOS

Entrada e Saída. Interface entre periféricos, processador e memória. Fonte: Minho - Portugal 1

Curso EFA Técnico/a de Informática - Sistemas. Óbidos

Estruturas do Sistema de Computação

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Componentes básicos de um sistema computacional. Cap. 1 (Stallings)

Primeiro nível desenvolvido, historicamente Atualmente existente entre o nível da microarquitetura e do sistema operacional

Conjunto de Instruções e Arquitectura p.1

periféricos: interfaces humano-computador (HCI) arquivo de informação comunicações

Conjunto de instruções do CPU. Arquitectura de um computador. Definição das instruções (1) Definição das instruções (2)

Arquitetura de Computadores

Dispositivos de Entrada e Saída

ARQUITETURA DE COMPUTADORES

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar


1. SINTAXE DA LINGUAGEM ASSEMBLY

Máquina de estados UNIX O

Máquina de estados UNIX O. Sistemas Operacionais 2008/1Profa. Patricia S.O. computação: recursos D. S.O S.O. controla eventos no sistema de

Capacidade = 512 x 300 x x 2 x 5 = ,72 GB

Exercícios de revisão V2. FAT: 300 GB / 2KB = 150MB X 8 bytes (64 bits / 8) = 1.2GB

Sistemas Operacionais

3/9/2010. Ligação da UCP com o barramento do. sistema. As funções básicas dos registradores nos permitem classificá-los em duas categorias:

O processador é composto por: Unidade de controlo - Interpreta as instruções armazenadas; - Dá comandos a todos os elementos do sistema.

Capítulo 1 Introdução

Técnicas de Manutenção de Computadores

ANHANGUERA EDUCACIONAL. Capítulo 2. Conceitos de Hardware e Software

Programação de Sistemas

Programação de Sistemas

Sistemas Operacionais. Prof. André Y. Kusumoto

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

Figura 1 - O computador

Bits internos e bits externos. Barramentos. Processadores Atuais. Conceitos Básicos Microprocessadores. Sumário. Introdução.

Funções de um SO. Gerência de processos Gerência de memória Gerência de Arquivos Gerência de I/O Sistema de Proteção


Transcrição:

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

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 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

Introdução (2) Arquitectura IA-16 1978: 8086-29K transistores, 0.33 MIPS endereça 1MB 1982: 80286-134K transistores (MMU incorporado), 0.9 MIPS endereça 16MB de memória Arquitectura IA-32 1985: 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

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 MIPS 1999: 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 Dissipador de calor Arquitectura IA-64 2006: Core 2-151M transistores, 20_000 MIPS Programação de Sistemas Segmentação e Protecção : 4/49

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. Advanced Micro Devices desenvolveu AMD64, estendendo o IA-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

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

Registos IA-32 (1) Pentium possui elevado número de registos. Para multimedia Programação de Sistemas Segmentação e Protecção : 7/49

Registos IA-32 (2) A. Uso geral 32 bits Programação de Sistemas Segmentação e Protecção : 8/49

Registos IA-32 (3) B. Bandeiras ( flags ) 32 bits Figura 2-3, Intel Architecture Software Developer s Manual Vol 3 Programação de Sistemas Segmentação e Protecção : 9/49

Registos IA-32 (4) C. Tabelas descritores (para modo protegido) Programação de Sistemas Segmentação e Protecção : 10/49

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

Registos IA-64 (2) Tipo registo Modo compatível IA-32 Modo 64-bit Byte Word Double Quad AL,BL,CL,DL, AL,BL,CL,DL, AH, BH, CH, DH DIL,SIL, BPL,SPL, R8L-R15L AX, BX, CX, DX, AX, BX, CX, DX, DI, SI, DI, SI, BP, SP BP, SP, R8W-R15W EAX, EBX, ECX, EDX, EAX, EBX, ECX, EDX, EDI, ESI, EDI, ESI, EBP, SP EBP, ESP, R8D-R15D -- RAX, RBX,RCX, RDX, RDI, RSI, RBP, RSP, R8-R15 Programação de Sistemas Segmentação e Protecção : 12/49

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ç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 para programas de grande dimensão. A segmentação permitiu alargar endereçamento para 1MB. Programação de Sistemas Segmentação e Protecção : 13/49

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ão 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

Segmentação (3) Comparação entre paginação e segmentação Figura 4-37, Modern Operating Systems Programação de Sistemas Segmentação e Protecção : 15/49

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. 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 às rotinas ES ( Extra Segment ) Segmentos podem ser torneados indicando explicitamente o segmento (ex: MOV AX,ES:var) CS 64KB Programação de Sistemas Segmentação e Protecção : 16/49

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 por 1. Deslocar segmento 4bits para a esquerda 2. Somar endereço Nota: paginação substitui bits do prefixo, segmentação soma bits do prefixo Ex1: para DS=0x0365, o endereço linear 0x42f corresponde ao endereço físico 0x03650+0x42f=0x03a7f DS 0 3 6 5 0 0 4 2 f endereço linear 0 3 a 7 f Ex2: a instrução a executar encontra-se no endereço CS:IP, o push envia dado para o endereço SS:SP endereço físico Programação de Sistemas Segmentação e Protecção : 17/49

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 Médio ( medium ): DS=SS, CS distinto Pequeno ( small ): CS=DS=SS 0xfffff 0x00000 Code segment Stack segment Data segment Extra segment Nota: o endereçamento puramente segmentado disponibilizado pelo Pentium e Core 2 em modo real. Programação de Sistemas Segmentação e Protecção : 18/49

Gestão memória IA-16 (4) Multiprocessamento implementado por segmentos com valores distintos em cada processo. Processo 1 0xfffff Code segment Code segment Processo 2 0x00000 No IA-16, espera-se que o programa não aceda a endereços inexistentes. 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 instalar informação na memória central: o IA-32 usa tabela de descritores. Programação de Sistemas Segmentação e Protecção : 19/49

Gestão memória IA-32 (1) A gestão de memória do IA-32 é distinta do IA-16, mais poderosa e complexa. A. Selectores Os registos CS, (mais FS e GS) passaram a designar-se 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, DS e SS têem de estar carregados com selectores válidos. Programação de Sistemas Figura 4-43, Modern Operating Systems Segmentação e Protecção : 20/49

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 designado por descritor de segmento. GDT ( Global Descriptor Table ), obrigatório e partilhado por todos os programas. LDT ( Local Descriptor Table ), opcional e descreve os segmentos locais a cada programa (código, dados, pilha). IDT ( Interrupt Descriptor Table ), para serviços de sistema acedidos 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

Gestão memória IA-32 (3) C. Registos base As tabelas GDT, LDT e IDT são referenciadas pelos registos GDTR, LDTR e IDTR. GDTR e IDTR - 48 bits: 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

Descritores de segmentos IA-32 (1) A tabela GDT possuem dois tipos de descritores de segmentos. Code Segment Descriptor ou Data Segment Descriptor. Nota: a pilha é implementada por um Data Segment Descriptor. 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 do GDT não é usado. Programação de Sistemas Segmentação e Protecção : 23/49

Descritores de segmentos IA-32 (2) Cada descritor ocupa 8B, com o seguinte formato Figura 4-44, Modern Operating Systems Programação de Sistemas Segmentação e Protecção : 24/49

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 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

Descritores de segmentos IA-32 (4) Figura 3-10, Intel Architecture Software Developer s Manual Vol 3 Programação de Sistemas Segmentação e Protecção : 26/49

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, indicado pelo descritor (32B), com o deslocamento (32B). Nota: para apressar os cálculos, o CPU contém uma TLB com os descritos usados mais recentemente. Figura 4-45, Modern Operating Systems Programação de Sistemas Segmentação e Protecção : 27/49

Descritores de segmentos IA-32 (6) Se soma ultrapassar o limite indicado no descritor é gerada uma interrupção. Assim são garantidas duas protecções: Intraprocesso (código não executa dados ou pilha) Interprocesso (processo não executa código de outro processo) Figura 3-1, Intel Architecture Software Developer s Manual Vol 3 Programação de Sistemas Segmentação e Protecção : 28/49

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 registo TR-Task Segment Register 16 bits. TSS = End. base tabela + TR*8 Programação de Sistemas Segmentação e Protecção : 29/49

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

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 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

Descritores de segmentos IA-32 (10) 26 longwords = campo estático = campo volátil = campo reservado Programação de Sistemas ss0 ss0 ss0 ss0 ss0 ss0 ss0 ss0 ss0 IOMAP 32-bits esp0 esp1 esp2 PTDB EIP EFLAGS EAX ECX EDX EBX ESP EBP ESI EDI link ss0 ss1 ss2 ss0 ss0 ss0 ss0 ss0 ss0 ss0 ss0 ss0 ES CS SS DS FS GS LDTR TRAP I/O permission bitmap 0 4 8 12 16 20 24 28 32 36 40 44 48 52 56 60 64 68 72 76 80 84 88 92 96 100 Segmentação e Protecção : 32/49

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

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, em aplicaçõ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

GDT do Linux (2) Programação de Sistemas Segmentação e Protecção : 35/49

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) 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

Registos de controlo IA-32 (2) Enquanto a paginação pode ser suspensa, a segmentação não pode (devido à necessidade de garantia de protecção). 31 Endereço Lógico Segmentação Endereço Linear Endereço Físico 12 Page-directory base-address Paginação cr3 contém o endereço base do directório (PDBR): 20 bits 0 4 P C D 3 P W T 0 PCD=Page Cache-Disable Programação de Sistemas PWT=Page Write Through Segmentação e Protecção : 37/49

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 níveis 0 para o núcleo, e 3 para utilizador Figura 4-47, Modern Operating Systems Programação de Sistemas Segmentação e Protecção : 38/49

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. Algumas instruções (ex: carregamento do registocr3) apenas pode ser executadas no nível 0. Programação de Sistemas Segmentação e Protecção : 39/49

Protecção (3) GDT shared runtime library Dados locais (espaço transitório) Dados não inicializados (espaço persistente) Dados inicializados (espaço persistente) Instruções (espaço persistente) Programação de Sistemas TSS STACK heap BSS DATA TEXT Processo TR GDTR Espaço núcleo (anel 0) Espaço utilizador (anel 3) SP SS IP DS CS Criado durante execução Criado na compilação Segmentação e Protecção : 40/49

Protecção (4) [Problema] Como o processo de utilizador pode chamar uma rotina 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. 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

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), validade do descritor call-gate. Figura 4-7, Intel Architecture Software Developer s Manual Vol 3 Programação de Sistemas Segmentação e Protecção : 42/49

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 deslocamento indicado no descritor call-gate mais o endereço base indicado pelo selector do segmento. Figura 4-8, Intel Architecture Software Developer s Manual Vol 3 Programação de Sistemas Segmentação e Protecção : 43/49

Protecção (7) CS:IP Descritores envolvidos numa chamada a uma rotina de nível mais privilegiado code-segment call-instruction params TASK STATE SEGMENT Stack pointer code-segment called procedure params STACK SEGMENT STACK SEGMENT Rotina chamadora gate-descriptor TSS-descriptor GDTR Global Descriptor Table Programação de Sistemas Segmentação e Protecção : 44/49 TR Rotina chamada

Protecção (8) Existem 4 instruções que provocam a mudança de tarefa: Salto longo, sem retorno para um descritor TSS instalado no GDT ljmp $task_selector, 0 Chamada longa, para mais tarde retornar, para um descritor TSS instalado no GDT lcall $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

Interrupções (1) A tabela IDT- Interrupt Descriptor Table, residente num segmento de memória dedicado, contém ponteiros para tratamento de interrupções. O endereço base da IDT é identificado pelo registo IDTR, de 48 bits. Figura 5-1, Intel Architecture Software Developer s Manual Vol 3 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. Programação de Sistemas Segmentação e Protecção : 46/49

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) 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 da interrupção (ISR) é executado fora do nível de protecção 0-não podendo executar as instruçõescli ousti. Programação de Sistemas Segmentação e Protecção : 47/49

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 indicado pelo selector de segmento. Figura 5-2, Intel Architecture Software Developer s Manual Vol 3 Programação de Sistemas Segmentação e Protecção : 48/49

Interrupções (4) Interrupt Descriptor Table (256 entradas) code-segment ISR Interrupt-gate code-descriptor INT ID Global Descriptor Table GDTR Programação de Sistemas IDTR Segmentação e Protecção : 49/49