Vantagem de utilizar Interrupções:
- Cpu pode desempenhar outras tarefas enquanto a E/S está em andamento
A interrupção é constantemente gerenciada por um Tratador de Instruções.
Análise está instrução de atribuição em C++:
- Cenário: Executando o programa abaixo no terminal.
#include <iostream>
#include <string>
using namespace std;
1. int main()
2. {
3. string nome;
4. cout << "Insira seu nome: ";
5. getline(cin, nome); // Aqui é gerada uma interrupção
6. return 0;
7. }
A instrução da linha 5 requisita uma chamada do sistema para receber dados através do teclado (Módulo de E/S) -> Nesta etapa a E/S é preparada e o Comando de E/S é executado.
Enquanto você insere esses dados que vão para a Memória, a cpu para não ficar ociosa gera uma interrupção e inicia a execução de outra instrução (pode-ser de outro programa). -> Essa interrupção é feita pelo tratador de instrução.
Ao finalizar a entrada de dados (com um Enter no terminal) a cpu retira a interrupção e retorna a execução do programa.
Interrupção a nível de usuário:
- É apenas uma interrupção da sequência de execução normal
- Quando houver E/S, gere uma interrupção, execute outras instruções e ao finalizar a E/S retorne a execução do programa normalmente.
Análise a nível de Desenvolvedor:
- O programa do usuário não precisa saber como acontece a E/S, interrupções, ou como o sistema operacional gerencia isso tudo
- Modularização -> "Dividir para conquistar" -> Delegar tarefas -> Manter as partes independentes
- Isso facilita a gerência, manutenção e a comunicação entre os demais módulos
Execução de Instruções:
- Feito pelo Ciclo de Instruções + Ciclo de Interrupções
Próximo tópico: Interrupções Pendentes e Multiplas Interrupções