interrup es n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Interrupções PowerPoint Presentation
Download Presentation
Interrupções

Loading in 2 Seconds...

play fullscreen
1 / 67

Interrupções - PowerPoint PPT Presentation


  • 76 Views
  • Uploaded on

Interrupções. Interrupção por hardware ou interrupção assíncrona Ocorrência de evento externo Não existe troca de parâmetros ou retorno com programa interrompido Ex.: interrupção de relógio, término de E/S Interrupções síncronas ou traps Interrupção por software

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Interrupções' - lynley


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
interrup es
Interrupções
  • Interrupção por hardware ou interrupção assíncrona
    • Ocorrência de evento externo
    • Não existe troca de parâmetros ou retorno com programa interrompido
    • Ex.: interrupção de relógio, término de E/S
  • Interrupções síncronas ou traps
    • Interrupção por software
      • Execução de instrução específica
        • Chamada de sistema
  • Interrupção por exceção (hardware ou software)
    • Síncrona
    • Erros de execução
      • Proteção, underflow, overflow (hardware)
      • Indicados pelo software

Quando se fala em interrupção, em geral, se refere apenas à interrupção assíncrona

Alguns autores não citam o termo interrupção

A maioria dos autores não classifica como interrupção

interrup es1
Interrupções
  • Chaveamento de modos:
    • Interrupção por software
      • modo usuário →modo protegido
    • Instrução de retorno
      • modo protegido →modo usuário

Processo do usuário

Modo usuário

Instrução de retorno

Interrupção por software

(Trap)

Sistema operacional

Modo protegido

ou

modo kernel

OBS: O trap é uma instrução.

exce o
Exceção
  • Exemplos em python:
    • try-catch.py a try-catchv4.py
exerc cios
Exercícios
  • Capítulo 1
    • 8,10,22,24,25,26,27
  • Capítulo 2
    • 1,7,9,13,18,21,23
cap tulo 3 processos1
Capítulo 3: Processos
  • Conceito de processos
  • Escalonamento de processos
  • Comunicação interprocessos
  • Exemplos de sistemas IPC
  • Comunicação em sistemas cliente-servidor
objetivos
Objetivos
  • Introduzir a noção de processo
  • Descrever as várias características de um processo, incluindo escalonamento, criação, término e comunicação
  • Descrever a comunicação em sistemas cliente-servidor
conceito de processo
Conceito de processo
  • Alguém saberia definir o que é um processo?
conceito de processo1
Conceito de processo
  • Um sistema operacional executa uma variedade de programas:
    • Sistemas em lote
      • Jobs
    • Sistemas de tempo compartilhado
      • Tarefas ou programas de usuário
  • Processo
    • Programa em execução
      • Execução sequencial
    • Inclui:
      • Contador de programa
      • Pilha
      • Seção de dados

job ~ processo

o processo
O processo
  • Atividade atual, incluindo o contador de programa e os registradores de processo
  • Contém múltiplas partes
  • Pilha com dados temporários
    • Parâmetros de funções, endereço de retorno, variáveis locais

?

  • Heap
    • Memória alocada dinamicamente
  • Memória
  • Seção de dados
    • Contém variáveis globais
  • Código, também chamado de seção de texto
o processo1
O processo
  • Programa x processo
    • Programa é passivo
    • Processo é ativo
      • O programa se torna um processo quando é carregado na memória

Usuário

Execute A

Sistema Operacional

Busca programa no disco

Processo é criado!

Disco

A

A

Carrega programa na memória

Memória

o processo2
O processo
  • Execução de um programa
    • Iniciada por clicks de mouse na interface gráfica (GUI), pela linha de comando etc.
  • Um programa pode ser vários processos
    • Exemplo: Múltiplos usuários executando o mesmo programa.
estado do processo
Estado do processo
  • Um processo tem estado
    • Modificado enquanto o processo executa

Processo que está sendo criado

Novo

  • Alocação de recursos
estado do processo1
Estado do processo
  • Um processo tem estado
    • Modificado enquanto o processo executa

Sistema operacional admite um novo processo

Novo

Processo que está esperando para ser atribuído ao processador

Pronto

  • Fila de processos que querem usar a CPU
  • Apenas um processo por vez na CPU
estado do processo2
Estado do processo
  • Um processo tem estado
    • Modificado enquanto o processo executa

Interrupção de clock definindo o fim do período de uso de CPU do processo

Novo

Instruções do processo sendo executadas na CPU

Em

execução

Pronto

Escalonador do sistema operacional define que o processo pode utilizar a CPU

estado do processo3
Estado do processo
  • Um processo tem estado
    • Modificado enquanto o processo executa

Novo

Em

execução

Pronto

Processo espera por um evento e libera a CPU

Conclusão de evento

Em

espera

Processo esperando a ocorrência de algum evento (fim de operação de I/O ou recebimento de sinal)

estado do processo4
Estado do processo
  • Um processo tem estado
    • Modificado enquanto o processo executa

Processo que terminou a sua execução

Encerrado

Novo

Processo é finalizado e sai da memória

  • Liberação de recursos

Em

execução

Pronto

Em

espera

recursos do processo
Recursos do processo
  • Estado novo
    • Alocação de recursos

Quais recursos?

memória + bloco de controle de processo

???

bloco de controle de processo process control block pcb
Bloco de controle de processo (Process Control Block - PCB)
  • Informação associada a cada processo
    • Estado do processo

Novo, pronto, em execução, em espera ou terminado

bloco de controle de processo process control block pcb1
Bloco de controle de processo (Process Control Block - PCB)
  • Informação associada a cada processo
    • Estado do processo
    • Contador de programa

Número que indica a próxima instrução a ser executada

bloco de controle de processo process control block pcb2
Bloco de controle de processo (Process Control Block - PCB)
  • Informação associada a cada processo
    • Estado do processo
    • Contador de programa
    • Registradores de CPU

Informações usadas durante a execução do processo

bloco de controle de processo process control block pcb3
Bloco de controle de processo (Process Control Block - PCB)
  • Informação associada a cada processo
    • Estado do processo
    • Contador de programa
    • Registradores de CPU
    • Informação de escalonamento de CPU

Dados para escolher o próximo processo a ser executado

bloco de controle de processo process control block pcb4
Bloco de controle de processo (Process Control Block - PCB)
  • Informação associada a cada processo
    • Estado do processo
    • Contador de programa
    • Registradores de CPU
    • Informação de escalonamento de CPU
    • Informação de gerenciamento de memória

Controle da memória alocada ao processo

bloco de controle de processo process control block pcb5
Bloco de controle de processo (Process Control Block - PCB)
  • Informação associada a cada processo
    • Estado do processo
    • Contador de programa
    • Registradores de CPU
    • Informação de escalonamento de CPU
    • Informação de gerenciamento de memória
    • Informação de uso (contabilização)
    • Informação de estado de I/O
troca de contexto
Troca de contexto

Processo P0 Sistema Operacional Processo P1

Interrupção ou chamada de sistema

Em execução

Em espera

Salva estado em PCB0

Recarrega estado de PCB1

...

Em execução

Em espera

Interrupção ou chamada de sistema

Salva estado em PCB1

Em espera

Recarrega estado de PCB0

...

Em execução

escalonamento de processos
Escalonamento de processos
  • Objetivos
    • Maximar o uso de CPU
    • Trocar rapidamente os processos na CPU para fazer compartilhamento de tempo
escalonamento de processos1
Escalonamento de processos
  • Escalonador de processos
    • Escolher entre os processos qual será o próximo a ser executado pela CPU
      • Manutenção de filas de escalonamento
        • Fila de jobs – conjunto de todos os processos no sistema
        • Fila de prontos – conjunto de todos os processos que estão prontos para serem executados e esperando o acesso à CPU
        • Filas de dispositivos – conjunto de processos esperando pelo dispositivo de I/O
      • Processos são movidos entre as diversas filas
representa o do escalonamento de processos
Representação do escalonamento de processos

CPU

Fila de prontos

I/O

Pedido de I/O

Fila de I/O

Fim da fatia de tempo

Cria processo filho

Filho executa

Espera por interrupção

Interrupção ocorre

escalonadores
Escalonadores
  • Escalonador de longo prazo(ou escalonador de jobs)
    • Seleciona quais processos devem ser trazidos a fila de prontos
    • Não é chamado com grande frequência
      • Pode ser lento
  • Escalonador de curto prazo(ou escalonador de CPU)
    • Seleciona qual o próximo processo a ser executado e aloca a CPU
    • Muitas vezes, é o único escalonador no sistema
    • Chamado com alta frequência (ms)
      • Precisa ser rápido

Define o grau de multiprogramação

escalonadores1
Escalonadores
  • Processos podem ser descritos como:
    • Processos limitados por I/O
      • Gastam mais tempo com I/O do que com uso de CPU
      • Diversas rajadas de uso de CPU curtas
    • Processos limitados por CPU
      • Gastam mais tempo com uso de CPU
      • Poucas rajadas longas de uso de CPU
troca de contexto1
Troca de Contexto
  • Processo de troca de processos na CPU
    • Salva o estado atual do processo em execução
    • Carrega estado de novo processo
  • O contexto de um processo é representado pelo seu PCB
troca de contexto2
Troca de Contexto
  • Tempo de troca de contexto é sobrecarga
    • Tempo de troca de processos não é considerado tempo útil do sistema
    • Quanto mais complexo o sistema operacional e o PCB, maior o tempo de troca
    • Tempo de troca depende de suporte de hardware
      • Alguns hardwares provêem múltiplos conjuntos de registradores por CPU
        • Possibilidade de fazer várias carregamentos de contexto simultaneamente
cria o de processos
Criação de processos
  • Processo pai cria processos filhos, os quais, por sua vez, podem criar outros processos, criando uma árvore de processos
    • Cada processo é identificado por um identificador de processo (pid)
  • Compartilhamento de recursos
    • Possibilidades
      • Pai e filhos compartilham todos os recursos
      • Filhos compartilham parte dos recursos do pai
      • Pai e filhos não compartilham recursos
  • Execução
    • Possibilidades
      • Pai e filhos executam concorrentemente
      • Pai espera até o fim da execução dos filhos
cria o de processos1
Criação de processos
  • Espaço de endereçamento
    • Possibilidades
      • Filhos são cópias do pai
      • Filhos tem um programa diferente carregado na sua área de código
  • Exemplos no UNIX
    • Chamada de sistema fork cria novos processos
    • A chamada de sistema exec é chamada após o fork para sobrescrever o espaço de memória com um novo programa
criando processos com o fork
Criando processos com o fork

Exemplos em Python:

teste_fork3.py até teste_fork7.py

Atenção!!!!!

O fork só funciona em Linux para Python

#include <sys/types.h>

#include <studio.h>

#include <unistd.h>

int main()

{

pid_t pid;

/* fork anotherprocess */

pid = fork();

if (pid < 0) { /* erroroccurred */

fprintf(stderr, "Fork Failed");

return 1;

}

elseif (pid == 0) { /* childprocess */

execlp("/bin/ls", "ls", NULL);

}

else { /* parentprocess */

/* parentwillwait for thechild */

wait (NULL);

printf ("Child Complete");

}

return 0;

}

finaliza o de processos
Finalização de processos
  • Processo executa a sua última linha e pede ao sistema operacional para deletá-lo (exit)
    • Recursos do processos são desalocados pelo sistema operacional
  • Processo pai pode terminar a execução de um processo filho (abort)
    • Exemplos de motivação
      • Processo filho excedeu os recursos alocados
      • Tarefa passada ao filho não é mais necessária
      • Processo pai está sendo finalizado, e alguns sistemas operacionais não permitem que o filho continue executando após o pai ter sido finalizado
        • Finalização em cascata
comunica o interprocessos
Comunicação interprocessos
  • Processos em um sistema podem ser independentes ou cooperativos
    • Processos cooperativos podem afetar ou serem afetados por outros processos
    • Processos independentes não podem afetar ou serem afetados pela execução de outro processo
  • Razões para cooperação interprocessos
    • Compartilhamento de dados
    • Aumento da velocidade de computação
    • Modularidade
    • Conveniência
comunica o interprocessos1
Comunicação interprocessos
  • Cooperação entre processos depende da interprocess communication(IPC)
  • Dois modelos de IPC
    • Memória compartilhada
    • Troca de mensagens
modelos de comunica o
Modelos de comunicação

Memória compartilhada

Envio de mensagens

problema do produtor consumidor
Problema do produtor-consumidor
  • Paradigma para processos cooperativos
    • O processo produtor produz informação que é consumida pelo processo consumidor
  • Variações
    • Buffer não limitado
    • Buffer limitado
solu o com buffer limitado e mem ria compartilhada
Solução com buffer limitado e memória compartilhada
  • Dados compartilhados

#define BUFFER_SIZE 10

typedef struct {

. . .

} item;

item buffer[BUFFER_SIZE];

int in = 0;

int out = 0;

  • Solução a seguir é correta, mas permite apenas que se use BUFFER_SIZE-1 elementos

Solução em C

produtor com buffer limitado
Produtor com buffer limitado

while (true) { /* Produce an item */

while (((in = (in + 1) % BUFFER SIZE count) == out)

; /* do nothing -- no free buffers */

buffer[in] = item;

in = (in + 1) % BUFFER SIZE;

}

consumidor com buffer limitado
Consumidor com buffer limitado

while (true) {

while (in == out)

; // do nothing -- nothing to consume

// remove an item fromthe buffer

item = buffer[out];

out = (out + 1) % BUFFER SIZE;

return item;

}

comunica o interprocessos troca de mensagens
Comunicação interprocessos – troca de mensagens
  • Mecanismo para processos se comunicarem e sincronizarem suas ações
    • Não usa memória compartilhada
  • Operações básicas:
    • send(mensagem)
    • receive(mensagem)
  • Se P e Q desejam se comunicar, eles precisam:
    • Estabelecer um enlace de comunicação entre eles
    • Trocar mensagens via send e receive
  • Implementação do enlace de comunicação
    • físico (ex., memória compartilhada, barramento de hardware)
    • lógico (ex., propriedades lógicas)
quest es de implementa o
Questões de implementação
  • Como os enlaces são estabelecidos?
  • Um mesmo enlace pode ser associado com mais de 2 processos?
  • Quantos enlaces podem existir entre cada par de processos comunicantes?
  • Qual a capacidade de um enlace?
  • O tamanho da mensagem deve ser fixo ou variável?
  • O enlace deve ser uni ou bidirecional?
comunica o direta
Comunicação direta
  • Processos precisam nomear uns aos outros explicitamente:
    • send (P, mensagem) – enviar a mensagem para o processo P
    • receive(Q, mensagem) – receber a mensagem do processo Q
  • Propriedades do enlace de comunicação
    • Enlaces são estabelecidos automaticamente
    • Um enlace é associado com exatamente um par de processos comunicantes
    • Entre cada par existe exatamente um enlace
    • O enlace pode ser unidirecional, mas usualmente é bidirecional
comunica o indireta
Comunicação indireta
  • Mensagens são direcionadas e recebidas por meio de mailboxes (mais comumente chamadas de portas)
    • Cada porta tem um identificador único
    • Processos podem se comunicar apenas se eles compartilham uma mailbox
  • Propriedades de um enlace de comunicação
    • Enlace estabelecido apenas se processos compartilham uma mailbox comum
    • Um enlace pode ser associado a diversos processos
    • Cada par de processos pode compartilhar diversos enlaces de comunicação
    • Enlaces podem ser uni ou bidirecionais
sincroniza o
Sincronização
  • Envio de mensagens pode ser tanto blocante quanto não-blocante
  • Operação blocante é considerada síncrona
    • O send blocante bloqueia o emissor até que a mensagem seja recebida
    • O receive blocante bloqueia o receptor até que a mensagem esteja disponível
  • Operação não-blocante é considerada assíncrona
    • O emissor envia a mensagem e continua
    • O receptor recebe uma mensagem válida ou nulo
buffering
Buffering
  • Fila de mensagens associadas a um enlace
    • Implementações

1. Capacidade 0

      • Emissor espera pelo receptor

2. Capacidade limitada

      • Capacidade finita de n mensagens
      • Emissor precisa esperar apenas se o enlace está cheio

3. Capacidade não limitada

      • Enlace com capacidade infinita
        • Emissor nunca espera
exemplos em python
Exemplos em Python
  • Compartilhamento de variáveis
    • shared_mem.py a shared_memv3.py
    • OBS:
      • Lista – Estrutura de dados de python
        • Funciona como um vetor
      • Multiprocessing – API para processos cooperativos
        • Queue() – Cria fila compartilhada
          • put(), get()
        • Process(codigo do novo processo, argumentos)
          • start(), is_alive()
  • Compartilhamento de variáveis
    • shared_memv4.py
exemplos em python1
Exemplos em Python
  • Compartilhamento de variáveis
    • shared_memv4.py
      • Multiprocessing
        • Value(tipo, valor) --- compartilhando um número
        • Array(tipo,lista)
        • Join() – Bloqueia o pai até o filho terminar
          • Shared_memv4b.py
comunica o em sistemas cliente servidor
Comunicação em sistemas cliente-servidor
  • Sockets
  • Remote Procedure Calls
  • Pipes
sockets
Sockets
  • Um socket é definido como um ponto de extremidade para a comunicação
  • Concatenação de IP e porta
    • Exemplo:
      • O socket 161.25.19.8:1625 se refere a porta 1625 no host 161.25.19.8
  • A comunicação consiste de um par de sockets
remote procedure calls
Remote Procedure Calls
  • Remote procedure call (RPC) abstraem chamadas de procedimento entre processos em sistemas em rede
  • Stubs – Proxy no lado do cliente/servidor
    • O stub do lado cliente localiza o servidor e encaminha os parâmetros
    • O stub no lado servidor recebe essa mensagem, desempacota os parâmetros recebidos e desempenha o procedimento no servidor
pipes
Pipes
  • Atua como um condutor permitindo que dois processos se comuniquem
  • Questões
    • A comunicação é uni ou bidirecional?
    • No caso da comunicação bidirecional, ela é half ou full-duplex?
    • É necessário existir uma relação (pai-filho) entre os processos comunicantes?
    • O pipe pode funcionar através da rede?
pipes comuns
Pipes comuns
  • Pipes comuns permitem a comunicação em um estilo produtor-consumidor padrão
  • Funcionamento
    • O produtor escreve em uma ponta do pipe
    • O consumidor lê a saída na outra ponta
      • Portanto, pipes comuns são unidirecionais
    • Requerem relação de pai-filho entre processos comunicantes
pipes nomeados
Pipes nomeados
  • Pipes nomeados são mais potentes que pipes comuns
    • Comunicação bidirecional
    • Não há necessidade de relação pai-filho
    • Pode ser usado por diversos processos
    • Disponível tanto em UNIX quanto em Windows
exemplos em python2
Exemplos em Python
  • Pipe
    • Ex-pipe.py
  • Socket
    • Socket-client.py e socket-server.py
exerc cios1
Exercícios
  • Livro:
    • Capítulo 3
      • 6,7,9,10,11,12,13