logo

Diferença entre ISR e chamada de função

Neste artigo você aprenderá sobre a diferença entre o ISR e chamada de função , mas antes de discutir as diferenças, você precisa conhecer brevemente o ISR e a chamada de função.

baixar autocad 2019 inglês mediafire

O que é ISR?

Uma rotina de serviço de interrupção (ISR) é uma rotina de software que o hardware invoca em resposta a uma interrupção. O ISR examina uma interrupção, determina como tratá-la, executa-a e retorna um valor lógico de interrupção. Se nenhum tratamento adicional for necessário, o ISR notifica o kernel com um valor de retorno. Um ISR deve funcionar muito rapidamente para evitar lentidão na operação do dispositivo e na operação de todos os ISRs de prioridade mais baixa.

Embora um ISR possa mover dados de um registro de CPU ou de uma porta de hardware para um buffer de memória, geralmente ele depende de um thread de interrupção (ou tarefa) dedicado, chamado thread de serviço de interrupção (IST), para fazer a maior parte do processamento necessário. Se for necessário processamento adicional, o ISR retorna um valor de interrupção lógica ao kernel. Em seguida, ele mapeia um número de interrupção física para um valor de interrupção lógica.

Mecanismo de tratamento de interrupções

Abaixo está o mecanismo de tratamento de interrupções nas seguintes etapas, como:

  • Uma interrupção é uma condição que faz a CPU suspender o programa atual e executar um ISR. Um ISR é um programa especialmente escrito para atender à condição que causou a interrupção.
  • Após o atendimento de uma interrupção, a CPU retorna ao programa principal, exatamente na próxima instrução de onde havia parado.
  • Na transferência de dados orientada por interrupção, sempre que o dispositivo de E/S estiver pronto para a transferência de dados, ele interromperá a CPU. No ISR, a CPU realizará a transferência de dados.
  • Este método é melhor que o polling porque a CPU não precisa perder tempo verificando o status do dispositivo de E/S. Um teclado é um bom exemplo de acesso de E/S orientado por interrupção.
  • Em vez de verificar a CPU, o teclado deve interromper a CPU quando uma tecla é pressionada. Assim, não será desperdiçado tempo verificando repetidamente o teclado quando o usuário não estiver digitando.
  • O dispositivo de E/S solicita uma interrupção enviando o $overline{INTR}$ sinal para a CPU.
  • Sempre que a CPU recebe $overline{INTR}$ sinal, ele completa a execução da instrução atual e então executa o ISR. Quando a CPU estiver pronta, ela enviará um sinal de reconhecimento através do ENQUANTO linha.
  • O ISR é executado e a CPU retorna ao programa principal.
  • Dispositivos de E/S desligam o $overline{INTR}$ sinal após a execução.
Diferença entre ISR e chamada de função

Por exemplo: No exemplo abaixo, transferência de E/S por E/S acionada por interrupção.

  • Se um dispositivo de E/S que deseja realizar uma transferência de dados com o processador deve interromper o processador.
  • Uma interrupção é uma condição que faz com que o processador execute uma rotina de serviço de interrupção.
  • No ISR, o processador realizará a transferência de dados com o dispositivo de E/S.

Neste exemplo, interrompa a solicitação pressionando a tecla do teclado,

  • Em vez de o processador verificar se uma tecla foi pressionada, o teclado interrompe o processador ao pressionar uma tecla.
  • No ISR do teclado, que faz parte do software do driver do teclado, o processador lerá os dados do teclado.
Diferença entre ISR e chamada de função

Vantagens do ISR

Abaixo estão as seguintes vantagens do ISR, como:

  • Eventos assíncronos ISR podem ocorrer a qualquer momento durante a execução do programa.
  • O ISR salva o PC, os sinalizadores e os registros na pilha, desativa todas as interrupções e carrega o endereço do ISR.
  • O ISR não pode ter argumentos que possam ser passados ​​para ele.
  • O ISR não pode retornar valores.
  • ISR habilita as interrupções.
  • Geralmente, o ISR é pequeno, pois leva o tempo de algum outro processo.
  • Alguns ISR têm sua própria pilha.

O que é chamada de função?

Uma chamada de função também é chamada de chamada de sub-rotina. Uma sub-rotina é um conjunto de instruções necessárias repetidamente pelo programa. Faz parte de um programa maior responsável por realizar uma tarefa específica. O programa maior pode executar uma carga de trabalho pesada e a sub-rotina pode executar apenas uma tarefa simples, que também é independente da codificação restante do programa.

mvcjava

Uma função é codificada de tal forma que pode ser chamada várias vezes e de diferentes locais (até mesmo dentro de outras funções). Quando uma função é chamada, o processador pode ir até onde reside o código da função e executar as instruções da função uma por uma. Após completar as funções, o processador retornará exatamente de onde parou e continuará a execução a partir da próxima instrução.

As funções são uma ótima ferramenta para reutilização de código. Muitas linguagens de programação modernas suportam funções. Uma coleção de funções é chamada de biblioteca . As bibliotecas são frequentemente usadas como meio de compartilhamento e comercialização de software. Em alguns casos, todo o programa pode ser uma sequência de sub-rotinas.

No caso de um processador 8086, uma sub-rotina é invocada por um CHAMAR instrução e controle retorna por um CERTO instrução. Reduz o tamanho do programa.

Diferença entre ISR e chamada de função

Uma função deve ser chamada explicitamente e faz parte do mesmo contexto e thread de execução que seu chamador. Um ISR de hardware não é explicitamente chamado, mas sim invocado por algum evento externo. O contexto do thread atual é preservado automaticamente quando uma interrupção é chamada antes de mudar o contexto para o ISR.

Em troca, ocorre a troca reversa de contexto, restaurando o estado do processador antes da interrupção para que a execução continue a partir do ponto de interrupção. Abaixo estão mais algumas diferenças entre ISR e chamada de função.

ISR Chamada de função
A interrupção geralmente é iniciada por um microprocessador de sinal interno ou externo, em vez da execução de instruções. O ISR é executado após armazenar o status atual do programa na pilha.
O ISR executa diferentes tarefas dependendo do dispositivo interrompido ou das instruções escritas por um programador.
A chamada de função é invocada pela execução de instruções, que executam tarefas específicas e reduzem o tamanho do programa.
O hardware determina o endereço do ISR.
O endereço ISR é escrito dentro da tabela de vetores de interrupção e o endereço ISR para cada interrupção é fixo.
O endereço da sub-rotina está escrito dentro da instrução, que está escrita dentro do código do programa principal.
O ISR é usado para todas as tarefas de uso geral. As chamadas de função são feitas para tarefas específicas do programa.
Quando ocorre uma interrupção durante a execução de um programa atual, portanto, após a execução da instrução atual, o processador executa ISR. Após a execução do ISR, o processador deve retomar o programa exatamente como antes de ocorrer a interrupção.
Para isso, são armazenados o conteúdo do PC, os registros µP e algumas condições de status. A coleção de todas as condições de bits de status em um microprocessador é chamada PSW (palavra de status do programa).
  • Durante o ciclo de interrupção, o conteúdo do PC e do PSW é colocado na pilha. O endereço da ramificação para a interrupção específica é então passado para o PC e um novo PSW é carregado no registrador de status.
  • A última instrução no ISR é o retorno da instrução interrompida. Quando esta instrução é executada, o PSW antigo e o endereço de retorno são retirados da pilha.
Aqui, apenas um PC é armazenado na pilha para obter o endereço da próxima instrução no programa principal.
A sub-rotina deve ter acesso aos dados da sub-rotina chamadora e retornar resultados para essa sub-rotina. Portanto, os parâmetros de sub-rotina e a ligação de dados são feitos.
Isto pode ser feito através
  • O registro AC pode ser usado para um único parâmetro de entrada e um único parâmetro de saída. Em computadores com múltiplos registradores de processador, mais parâmetros podem ser passados ​​desta forma.
  • Outra forma de passar dados para uma sub-rotina é através da memória.