Exceções no Fluxo de Execução: Interrupções e Traps

Documentos relacionados
Sistemas Operacionais. Rodrigo Rubira Branco

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

3 Introdução às chamadas ao sistema

Sistemas Operacionais. Rodrigo Rubira Branco

Sistemas Operacionais II

MODELO DE S.O. DEFINIÇÕES

Sistemas Operativos: Introdução. March 14, 2011

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

Nível da Arquitetura do Conjunto das Instruções

Hardware: Componentes Básicos. Sistema de Computador Pessoal. Anatomia de um Teclado. Estrutura do Computador. Arquitetura e Organização

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

Organização de Computadores 1

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

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

Sistemas Operacionais

Mecanismo de Interrupção

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

Assembly na arquitetura IA-32 com NASM no Linux

Microprocessadores. Memórias

Estruturas do Sistema de Computação

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

Antes de deixarmos o hardware (1) Nível da Arquitetura do Conjunto das Instruções

Sistemas Operacionais

ENTRADA E SAÍDA DE DADOS

Sistemas Operacionais

Sistema Operacional Ex: Complexo Computador multiusuário com vários terminais Tem que administrar todos os pedidos de usuários e assegurar que eles

Conceitos básicos sobre computadores

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

Introdução à Informática

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

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

Sistemas Distribuídos Capítulo 4 - Aula 5

Sistemas Operacionais - Prof. Fabricio Alessi Steinmacher - fsteinmacher@gmail.com OBJETIVOS OPERACIONAIS. fsteinmacher@gmail.

Lista de Exercícios 1

William Stallings Arquitetura e Organização de Computadores 8 a Edição

Introdução. Modelo de um Sistema de Comunicação

Visão Geral de Sistemas Operacionais

UNIVERSIDADE DO VALE DO RIO DOS SINOS - UNISINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS - CENTRO 06. Funções, variáveis, parâmetros formais

Infraestrutura de Hardware. Memória Virtual

MC404: Organização de Computadores e Linguagem de Montagem Lista de Exercícios

Sistemas Operacionais

Sistemas Operacionais

BIOS - Códigos de erro

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

Evolução dos Processadores

Programação 2009/2010 MEEC - MEAer Laboratório 5 Semana de 26 de outubro de 2009

Arquitetura de um Computador

Aula 3. Sistemas Operacionais. Prof: Carlos Eduardo de Carvalho Dantas

Sistemas Operacionais. Prof. André Y. Kusumoto

Gestor de Processos Núcleo do Sistema Operativo

Dispositivos de Entrada e Saída

Notas de Aula Guilherme Sipahi Arquitetura de Computadores. Arquitetura de von Neumann

Gestor de Processos. Gestor de Processos

Arquitetura de Von Neumann. Computador ISA

Arquitectura de um Computador

T1: T2: T3: T4: T5: T6: T7: T: P: TEÓRICA

Sistemas Operacionais. Estruturas de SO. Edeyson Andrade Gomes.

Comunicação entre pai e filho

1.6. Tratamento de Exceções

E/S PROGRAMADA E/S PROGRAMADA E/S USANDO INTERRUPÇÃO

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 04 - Concorrência. Cursos de Computação

Manual de Programação TED1000 versão TC100 Ethernet

SISTEMAS OPERACIONAIS. 3ª. Lista de Exercícios

Controlador de DMA. Gustavo G. Parma

Manual Mobuss Construção - Móvel

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

Ciclo de Vida de um Processo

Aula 03. Processadores. Prof. Ricardo Palma

Barramento USB. Trabalhos Práticos AM 2007/2008. Barramento USB. Objectivos

Conteúdo programático

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

UNIVERSIDADE DO TOCANTINS TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS PRÁTICA EM PROGRAMAÇÃO DE SISTEMAS

Sistemas Operacionais 2014 Introdução. Alexandre Augusto Giron

Professor Léo Matos TI para Concursos

How to write Shellcodes por Luiz Fernando Camargo

Programação Concorrente Processos e Threads

O Sistema de Computação

Tópicos Avançados em Banco de Dados Dependências sobre regime e controle de objetos em Banco de Dados. Prof. Hugo Souza

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar

Oganização e Arquitetura de Computadores

Sistemas Operacionais

ENTRADA E SAÍDA (I/O)

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

ARQUITETURA DE COMPUTADORES

Sistemas de Arquivos. Arquivos Diretórios Implementação do sistema de arquivos Gerenciamento de espaço em disco

Sistemas Processadores e Periféricos Aula 9 - Revisão

Java RMI. RMI Remote Method Invocation. Chamadas Remotas de Procedimentos (RPC) RPC - Implementação

Sistemas Operacionais. Alexandre Meslin

Nivel de Linguagem de Montagem (Assembly)

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

Transcrição:

Exceções no Fluxo de Execução: Interrupções e Traps 1

Fluxo de Controle Fluxo de controle de um programa: a 0 a 1 a 2 a n sequência de endereços I 0 I 1 I 2 I n sequência de instruções O fluxo mais simples é a execução sequencial Dois mecanismos alteram esse fluxo de controle: desvios (jumps) e procedimentos (chamada e retorno) Um outro mecanismo que altera o fluxo de controle são exceções (ou interrupções) quando ocorre uma interrupção a CPU interrompe o programa em execução e desvia o controle para um tratador (parte do SO) 2

Tipos de Interrupções O mecanismo de interrupções permite que o hardware chame a atenção da CPU para um evento esse evento precisa ser tratado rapidamente! Interrupções geradas por dispositivos externos são ditas assíncronas porque independem da instrução que a CPU está executando no momento da interrupção teclado, controlador de disco, interface de rede, timer Interrupções síncronas (ou traps) ocorrem em consequência da instrução sendo executada geradas explicitamente pelo programa: chamadas ao SO geradas pelo hardware: falhas (faults) 3

Alteração no fluxo de controle Interrupção de HW/SW programa em execução corrente próxima desvio excepcional retorno da interrupção (nem sempre) tratador (S.O.) Tratamento da interrupção A CPU interrompe o programa em execução e desvia o controle para um tratador (parte do SO) esse tratador executa em modo kernel (privilegiado) Cada tipo de interrupção é associado a um identificador (número) Uma tabela (vetor de interrupções) contém descritores dos tratadores de interrupções (incluem o endereço do tratador) o número da interrupção é usado como índice nessa tabela` 4

Vetor de Interrupções 0 1 2 n-1 Número da Interrupção interrupt vector... Registrador especial aponta a tabela Tratador Tratador interrupção interrupção 0 Tratador Tratador interrupção interrupção 1 Tratador Tratador interrupção interrupção 2... Tratador Tratador interrupção interrupção n-1 n-1 Durante a inicialização do sistema o SO preenche a tabela com os descritores dos tratadores e inicializa um registrador que aponta essa tabela Em tempo de execução, o hw consulta a tabela para realizar o desvio para o tratador de uma interrupção Alguns dos números de interrupção são específicos da plataforma/processador page fault, div. zero, break point 5

Salvamento de Contexto Para que a execução do programa interrompido possa ser retomada é necessário salvar o seu contexto de execução o hw salva o program counter e outros registradores de estado (por ex. EFLAGS) antes de transferir o controle ao tratador registradores de dados, se forem usados pelo tratador da interrupção, devem ser salvos e restaurados ao final do tratamento Ao terminar sua execução, o tratador restaura o contexto de execução do programa interrompido através de uma instrução (privilegiada) especial restaura os registradores de estado e o program counter e transfere o controle de volta ao programa se um código em user mode foi interrompido, esse modo de execução é restaurado 6

Interrupções Assíncronas São geradas por algum dispositivo externo à CPU ocorrem independentemente da instrução sendo executada o controlador do dispositivo sinaliza a CPU e envia através do barramento o número da interrupção correspondente O tratador de interrupção é similar a um procedimento mas sua execução é totalmente transparente para o programa interrompido Exemplos: Interrupção de relógio (timer) Interrupção de I/O: fim de leitura no disco, acionamento do teclado, recepção de um pacote pela interface de rede 7

Tratamento de interrupção Interrupção de HW programa em execução tratador (S.O.) desvio após o fim da instrução corrente corrente próxima Tratamento da interrupção retorno da interrupção (para próxima instrução) Após o tratamento da interrupção o programa continua sua execução como se a interrupção não houvesse ocorrido a menos de situações especiais, como o acionamento de ctrl-c! 8

Interrupções Síncronas (traps) Consequência da instrução sendo executada. Geradas pelo hardware (falhas) Erros causados pela execução da instrução o programa não pode prosseguir: SO termina sua execução divisão por zero, acesso não permitido à memória (GPF) Page fault (memória virtual) página acessada (endereço virtual) não está na memória principal o tratador traz a página do disco e retorna o controle à instrução que causou a falha (re-executa a instrução!) Geradas explicitamente por instruções do programa A instrução int n gera um trap (interrupção n ) Breakpoints: instruções especiais usadas por debuggers Chamadas ao Sistema Operacional (int $0x80) 9

Tratamento de falhas instrução corrente causa falha programa em execução corrente desvio para tratador tratador (S.O.) tratamento da falha tratador pode retornar controle para corrente ou abortar o programa abort Se o tratador pode corrigir a falha (ex. page fault) o controle retorna para a instrução corrente (re-execução) Se a falha não pode ser corrigida, o tratador transfere o controle para o SO (abort), que termina o programa (ex. seg fault) 10

Chamadas ao Sistema Operacional Permitem que um programa acione o SO para requisitar um serviço (por exemplo, E/S) programa não pode chamar uma função do SO porque o SO executa em seu próprio espaço de endereçamento e em modo privilegiado Através de uma interrupção de sw o programa ativa um tratador (da int $0x80)que encaminha a chamada (syscall) ao SO cada chamada ao sistema (serviço do SO) possui um identificador numérico e pode receber parâmetros e retornar um valor a biblioteca padrão de C provê funções wrapper para a maioria das system calls 11

Interface com syscalls O código (número) da chamada deve ser colocado no registrador %eax O arquivo <sys/syscall.h> tem os códigos das chamadas ao sistema Os valores dos argumentos devem ser colocados nos registradores %ebx, %ecx, %edx, %esi, %edi não se usa a pilha para passagem de parâmetros! O valor de retorno da chamada vem em %eax geralmente indica se operação foi bem sucedida (0) O controle retorna à instrução seguinte a int 12

Tratamento de syscall programa em execução tratador (S.O.) syscall (int 0x80) próxima desvio para tratador tratamento da interrupção syscall (S.O.) retorno da interrupção (para próxima) fim do tratamento da interrupção tratamento da syscall Programa envia código da syscall em %eax e parâmetros nos outros registradores O controle é transferido de volta ao programa ( próxima instrução ) com o resultado da chamada em %eax 13

Exemplos de syscalls %eax nome %ebx %ecx %edx retorno (%eax) 1 sys_exit int status - - - 3 sys_read int fildes void *buf size_t nbyte ssize_t ou -1 4 sys_write int fildes void *buf size_t nbyte ssize_t ou -1 5 sys_open char *path int oflag mode_t mode int (fildes) ou -1 6 sys_close int fildes int (0 ou -1) 19 sys_lseek int fildes off_t offset int whence off_t ou -1 14

Exemplo de chamada int f (...) {... f: pushl %ebp movl %esp, %ebp pushl %ebx } if (...) exit (2);... movl $1,%eax /* sys_exit */ movl $2,%ebx int $0x80... 15