Interrupções, Exceções e Chamadas ao SO

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

Sistemas Operacionais Processos. Carlos Ferraz Jorge Cavalcanti Fonsêca

Processo. Gerência de Processos. Um programa em execução. Centro de Informática/UFPE :: Infraestrutura de Software

Processo. Gerência de Processos. Um programa em execução. Centro de Informática/UFPE :: Infraestrutura de Software

Entrada/Saída. Capítulo 5. Sistemas Operacionais João Bosco Junior -

Aula 05. Figuras Interrupção

Introdução aos Sistemas Operacionais

Arquitetura de Sistemas Operacionais Francis Berenger Machado / Luiz Paulo Maia (Material Adaptado)

Sistemas Operacionais. Interrupção e Exceção

Sistemas de Entrada e Saída

Sistemas Operacionais

PCS-2529 Introdução aos Processadores. Prof. Dr. Paulo Sérgio Cugnasca

Introdução ao Assembly

Universidade Federal de Campina Grande Unidade Acadêmica de Sistemas e Computação Curso de Bacharelado em Ciência da Computação.

SO: Introdução e Estrutura. Sistemas Operacionais Flavio Figueiredo (

Sistemas Operacionais. Concorrência

UFRJ IM - DCC. Sistemas Operacionais I. Unidade IV Gerência de Recursos Entrada e Saída. 02/12/2014 Prof. Valeria M. Bastos

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I

Barramento. Prof. Leonardo Barreto Campos 1

Sistemas de Entrada e Saída

Nível do Conjunto de Instruções Prof. Edson Pedro Ferlin

Função Fundamental do SO

Capítulo 13: Sistemas de E/S. Operating System Concepts with Java 7th Edition, Nov 15, 2006

1 System Calls no Linux

Comunicação entre Processos

William Stallings Arquitetura e Organização de Computadores 8 a Edição. Capítulo 12 Estrutura e função do processador

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA

Organização de Computadores Aula 05

Sistemas Operacionais. Sistema de entrada e Saída

AULA 05: LINGUAGEM DE MONTAGEM: SUPORTE A PROCEDIMENTOS

SSC510 Arquitetura de Computadores 1ª AULA

Gerência de Entrada e Saída

SSC0611 Arquitetura de Computadores

Unix: Processos e o Kernel. Sistemas Operacionais

Arquitetura de Computadores. Revisão Volnys Bernal. Agenda. Revisão: Arquitetura de Computadores. Sobre esta apresentação

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES A UNIDADE LÓGICA ARITMÉTICA E AS INSTRUÇÕES EM LINGUAGEM DE MÁQUINA

Introdução. Pedro Cruz. EEL770 Sistemas Operacionais

Sistemas de Entrada e Saída

Segmentação de Memória

Aula 03 - Concorrência. por Sediane Carmem Lunardi Hernandes

Arquitetura e Organização de Computadores

Interrupções e DMA. Mecanismos de I/O

William Stallings Computer Organization and Architecture

Estrutura de Sistemas Operacionais. Capítulo 1: Introdução

Sistema de entrada e saída (E/S)- Módulos de E/S; tipos de operações de E/S

Dispositivos de Entrada e Saída

Microprocessadores I ELE Aula 7 Conjunto de Instruções do Microprocessador 8085 Desvios

Processos O conceito de processos é fundamental para a implementação de um sistema multiprogramável. De uma maneira geral, um processo pode ser entend

Parte I Multiprocessamento

Sistemas Operacionais. Entrada/Saída

DEPARTAMENTO DE CIÊNCIA DA COMPUTAÇÃO BACHARELADO EM INFORMÁTICA SISTEMAS OPERACIONAIS I 1 0 SEM/05 Teste 1 Unidade I DURAÇÃO: 50 MINUTOS

Dispositivos de Entrada e Saída

Sistemas Operacionais. Rodrigo Rubira Branco

Sumário. Sistemas Operativos 1

Entrada e Saída e Dispositivos

Sistemas Operacionais

Sistemas Operacionais

Periféricos possuem características diferentes. Periféricos são mais lentos que UCP e Memória Necessita-se de módulos de Entrada/Saída

Chamadas de Sistema (SYSCALL)

Processos. Processo (1) Processo (2) Processo (3) Conceitos Básicos

Processos. Conceitos Básicos

Infraestrutura de Hardware. Implementação Multiciclo de um Processador Simples

Capítulo 9: Memória Virtual. Operating System Concepts 8 th Edition

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

Disciplina: Arquitetura de Computadores

Unix: Processos e o Kernel. Sistemas Operacionais

Sistemas Operacionais. Conceito de Processos

Introdução aos Sistemas Operacionais. Subsistema de Entrada e Saída

Dispositivos de Entrada e Saída

Arquitetura e Organização de Computadores

Prof. Gustavo Oliveira Cavalcanti

Transcrição:

Interrupções, Exceções e Chamadas ao SO Noemi Rodriguez Ana Lúcia de Moura http://www.inf.puc-rio.br/~inf1018

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

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 Dois mecanismos alteram o fluxo sequencial desvios (jumps) e procedimentos (chamada e retorno)

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 Dois mecanismos alteram o fluxo sequencial desvios (jumps) e procedimentos (chamada e retorno) Outro mecanismo: exceções/interrupções a CPU interrompe o programa em execução e desvia o controle para um tratador (procedimento do SO)

Interrupções e Exceções Eventos que indicam a existência de uma condição que requer a atenção imediata do processador resultam em uma transferência de controle forçada para um tratador

Interrupções e Exceções Eventos que indicam a existência de uma condição que requer a atenção imediata do processador resultam em uma transferência de controle forçada para um tratador Eventos assíncronos independem da instrução corrente interrupções geradas por dispositivos de E/S: teclado, controlador de disco, interface de rede,

Interrupções e Exceções Eventos que indicam a existência de uma condição que requer a atenção imediata do processador resultam em uma transferência de controle forçada para um tratador Eventos assíncronos independem da instrução corrente interrupções geradas por dispositivos de E/S: teclado, controlador de disco, interface de rede, Eventos síncronos resultam da instrução executada geradas pelo programa (traps), geradas pelo hardware (faults e aborts)

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 o tratador executa em modo privilegiado Cada tipo de interrupção é associado a um identificador

Tabela de Descritores de Interrupção Identificador da Interrupção 0 1 2 n-1 IDT 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 22 Tratador Tratador interrupção interrupção n-1 n-1 Durante sua inicialização, o SO preenche a IDT com as informações dos tratadores e coloca o endereço da tabela em um registrador especial Durante a execução, a CPU consulta a tabela para realizar o desvio para o tratador de uma interrupção Alguns identificadores de interrupção são específicos da plataforma page fault, div. zero, gpf, opcode inválido,...

Salvamento de Contexto Para que o programa interrompido possa prosseguir após o tratamento da interrupção é necessário guardar seu contexto de execução a CPU salva na pilha do tratador o %rsp, o %rip e o %rflags do programa interrompido

Salvamento de Contexto Para que o programa interrompido possa prosseguir após o tratamento da interrupção é necessário guardar seu contexto de execução a CPU salva na pilha do tratador o %rsp, o %rip e o %rflags do programa interrompido Ao terminar sua execução, o tratador restaura o contexto através de uma instrução (privilegiada) especial a CPU recupera os registradores salvos, e restaura a pilha do programa interrompido

Interrupções Assíncronas 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) A execução do tratador da interrupção é transparente para o programa interrompido 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!

Exceções: falhas e erros fatais programa em execução tratador (S.O.) instrução corrente causa a exceção corrente desvio para tratador tratador pode retornar controle ou abortar o programa tratamento da exceção abort Se uma falha não pode ser corrigida, o SO aborta o programa divisão por zero, acesso inválido à memória (GPF), instrução inválida Se o tratador corrigiu a falha, o controle retorna para a instrução corrente (que é re-executada!) page fault: a instrução referencia um endereço virtual cuja página correspondente não está na memória principal

Chamadas ao Sistema Operacional Uma chamada ao SO (syscall) corresponde a um serviço executado por um procedimento do Sistema Operacional (read, write, exit, ) uma syscall não pode ser invocada com o mecanismo de chamada convencional de funções (call) SO deve executar em modo privilegiado!

Chamadas ao Sistema Operacional Uma chamada ao SO (syscall) corresponde a um serviço executado por um procedimento do Sistema Operacional (read, write, exit, ) uma syscall não pode ser invocada com o mecanismo de chamada convencional de funções (call) SO deve executar em modo privilegiado! A arquitetura x86-64 provê uma instrução para um programa de usuário invocar um procedimento do SO (syscall) um registrador especial armazena o endereço do tratador de chamadas ao Sistema Operacional o tratador termina sua execução usando uma instrução privilegiada (sysret)

Linux x86-64: interface com syscall Cada chamada é associada a um identificador esse identificador é passado no %rax

Linux x86-64: interface com syscall Cada chamada é associada a um identificador esse identificador é passado no %rax Parâmetros e retorno em registradores parâmetros em %rdi, %rsi, %rdx, %r10, %r8, %r9 valor de retorno no %rax

Linux x86-64: interface com syscall Cada chamada é associada a um identificador esse identificador é passado no %rax Parâmetros e retorno em registradores parâmetros em %rdi, %rsi, %rdx, %r10, %r8, %r9 valor de retorno no %rax Antes de desviar o controle para o tratador, a CPU guarda o contexto do programa de usuário %rip em %rcx e %rflags em %r11

Tratamento de syscall programa em execução tratador (S.O.) syscall próxima desvio para tratador retorno da syscall obtém identificador em %rax syscall (S.O.) tratamento da syscall n sysret O programa envia o código da syscall (n) em %rax e os argumentos nos outros registradores Quando o controle é transferido de volta ao programa ( próxima instrução ) o resultado da chamada está em %rax

Algumas syscalls %rax nome %rdi %rsi %rdx retorno (%rax) 60 sys_exit int status - - - 0 sys_read int fd void *buf size_t count ssize_t ou -1 1 sys_write int fd void *buf size_t nbyte ssize_t ou -1 2 sys_open char *path int flags (opcional) int (fd) ou -1 3 sys_close int fd int (0 ou -1) 8 sys_lseek int fd off_t offset int whence off_t ou -1

Exemplo de syscall int f (...) {... if (...) exit (2);... } f: pushq %rbp movq %rsp, %rbp... movq $60,%rax /* sys_exit */ movl $2,%edi syscall...

Funções wrapper A biblioteca padrão de C provê funções wrapper para a maioria das chamadas ao sistema preparação dos argumentos (se necessário) e acionamento da syscall protótipos e definições em unistd.h