A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Interrupções Interrupção por hardware ou interrupção assíncrona

Apresentações semelhantes


Apresentação em tema: "Interrupções Interrupção por hardware ou interrupção assíncrona"— Transcrição da apresentação:

1 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

2 Interrupção por software
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.

3 Exceção Exemplos em python: try-catch.py a try-catchv4.py

4 Exercícios Capítulo 1 8,10,22,24,25,26,27 Capítulo 2 1,7,9,13,18,21,23

5 Capítulo 3: Processos

6 Capítulo 3: Processos Conceito de processos Escalonamento de processos
Comunicação interprocessos Exemplos de sistemas IPC Comunicação em sistemas cliente-servidor

7 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

8 Conceito de processo Alguém saberia definir o que é um processo?

9 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

10 Código, também chamado de seção de texto
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

11 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

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

13 Processo que está sendo criado
Estado do processo Um processo tem estado Modificado enquanto o processo executa Processo que está sendo criado Novo Alocação de recursos

14 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

15 Instruções do processo sendo executadas na CPU
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 Pronto Em execução Escalonador do sistema operacional define que o processo pode utilizar a CPU

16 Processo espera por um evento e libera a CPU
Estado do processo Um processo tem estado Modificado enquanto o processo executa Novo Pronto Em execução 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)

17 Estado do processo Um processo tem estado
Modificado enquanto o processo executa Processo que terminou a sua execução Novo Encerrado Processo é finalizado e sai da memória Liberação de recursos Pronto Em execução Em espera

18 Recursos do processo Quais recursos? ???
Estado novo Alocação de recursos Quais recursos? memória + bloco de controle de processo ???

19 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

20 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

21 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

22 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

23 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

24 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

25 Process Control Block (PCB)

26 Troca de contexto Processo P0 Sistema Operacional Processo P1
Em execução Interrupção ou chamada de sistema Em espera Salva estado em PCB0 Recarrega estado de PCB1 ... Em espera Em execução Interrupção ou chamada de sistema Salva estado em PCB1 Em espera Recarrega estado de PCB0 ... Em execução

27 Escalonamento de processos
Objetivos Maximar o uso de CPU Trocar rapidamente os processos na CPU para fazer compartilhamento de tempo

28 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

29 Fila de prontos e filas de dispositivos

30 Representação do escalonamento de processos
CPU Fila de prontos I/O Fila de I/O Pedido de I/O Fim da fatia de tempo Filho executa Cria processo filho Interrupção ocorre Espera por interrupção

31 Define o grau de multiprogramação
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

32 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

33 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

34 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

35 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 Pai e filhos executam concorrentemente Pai espera até o fim da execução dos filhos

36 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

37 Criação de processos

38 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 another process */ pid = fork(); if (pid < 0) { /* error occurred */ fprintf(stderr, "Fork Failed"); return 1; } else if (pid == 0) { /* child process */ execlp("/bin/ls", "ls", NULL); else { /* parent process */ /* parent will wait for the child */ wait (NULL); printf ("Child Complete"); return 0;

39 Árvore de processos no Solaris

40 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

41 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

42 Comunicação interprocessos
Cooperação entre processos depende da interprocess communication (IPC) Dois modelos de IPC Memória compartilhada Troca de mensagens

43 Modelos de comunicação
Envio de mensagens Memória compartilhada

44 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

45 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

46 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; }

47 Consumidor com buffer limitado
while (true) { while (in == out) ; // do nothing -- nothing to consume // remove an item from the buffer item = buffer[out]; out = (out + 1) % BUFFER SIZE; return item; }

48 Entendendo o problema e a solução
Quadro!

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

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

51 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

52 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

53 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

54 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

55 Examples of IPC Systems - POSIX
POSIX Shared Memory Process first creates shared memory segment segment id = shmget(IPC PRIVATE, size, S IRUSR | S IWUSR); Process wanting access to that shared memory must attach to it shared memory = (char *) shmat(id, NULL, 0); Now the process could write to the shared memory sprintf(shared memory, "Writing to shared memory"); When done a process can detach the shared memory from its address space shmdt(shared memory);

56 Examples of IPC Systems - Mach
Mach communication is message based Even system calls are messages Each task gets two mailboxes at creation- Kernel and Notify Only three system calls needed for message transfer msg_send(), msg_receive(), msg_rpc() Mailboxes needed for communication, created via port_allocate()

57 Examples of IPC Systems – Windows XP
Message-passing centric via local procedure call (LPC) facility Only works between processes on the same system Uses ports (like mailboxes) to establish and maintain communication channels Communication works as follows: The client opens a handle to the subsystem’s connection port object. The client sends a connection request. The server creates two private communication ports and returns the handle to one of them to the client. The client and server use the corresponding port handle to send messages or callbacks and to listen for replies.

58 Local Procedure Calls in Windows XP

59 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() shared_memv4.py

60 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

61 Comunicação em sistemas cliente-servidor
Sockets Remote Procedure Calls Pipes

62 Sockets Um socket é definido como um ponto de extremidade para a comunicação Concatenação de IP e porta Exemplo: O socket :1625 se refere a porta 1625 no host A comunicação consiste de um par de sockets

63 Comunicação por socket

64 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

65 Execução do RPC

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

67 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

68 Ordinary Pipes

69 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

70 Exemplos em Python Pipe Ex-pipe.py Socket
Socket-client.py e socket-server.py

71 Exercícios Livro: Capítulo 3 6,7,9,10,11,12,13

72 Fim do capítulo 3


Carregar ppt "Interrupções Interrupção por hardware ou interrupção assíncrona"

Apresentações semelhantes


Anúncios Google