1 / 67

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

lynley
Download Presentation

Interrupções

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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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çõ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. 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. 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. 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

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

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

  18. Recursos do processo • 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 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

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

  31. 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 • Possibilidades • 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 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; }

  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 Memória compartilhada Envio de mensagens

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

More Related