interromper o sistema operacional:manuseio interrupções graciosamente
Um sistema operacional de interrupção (também conhecido como sistema operacional orientado a interrupções) é um sistema operacional que depende fortemente de interrupções
para gerenciar e controlar a execução de tarefas. Em vez de pesquisar continuamente os eventos ou confiar em rigorosas no tempo, ele reage a sinais (interrupções) gerados por hardware ou componentes de software , permitindo que ele lide com eficiência várias tarefas e responda a eventos em tempo real.
Pense assim:você é um chef (a CPU) preparando uma refeição (executando um programa). Em vez de verificar constantemente se o forno estiver pronto ou se um cronômetro tiver saído, você confia no sino do forno (uma interrupção) ou um cronômetro (outra interrupção) para notificá -lo quando precisar agir. Isso permite que você se concentre em outras tarefas (preparando vegetais, molho de cozimento) enquanto isso.
Como lida com interrupções: O processo de lidar com uma interrupção normalmente segue estas etapas:
1.
Solicitação de interrupção (IRQ) Geração: Um dispositivo de hardware (por exemplo, teclado, placa de rede, controlador de disco) ou um componente de software (por exemplo, timer, chamada do sistema) gera uma solicitação de interrupção (IRQ). Este sinal diz à CPU que ocorreu um evento que precisa de atenção.
2.
Controlador de interrupção: O IRQ pode ser roteado por meio de um controlador de interrupção (por exemplo, controlador de interrupção programável avançado APIC) que prioriza várias solicitações de interrupção. Este controlador garante que as interrupções mais importantes sejam tratadas primeiro.
3.
A CPU suspende a execução atual: Ao receber uma interrupção, a CPU * temporariamente * suspende a execução do programa ou tarefa atual. Não para apenas para; Ele salva meticulosamente o estado atual. Isso envolve salvar o seguinte:
*
Contador de programas (PC): O endereço da próxima instrução a ser executada.
*
Registros: Os valores de todos os registros da CPU (por exemplo, acumulador, ponteiro da pilha).
*
Palavra de status do processador (PSW): Contém sinalizadores que indicam o estado atual da CPU (por exemplo, interrupção Ativar/desabilitar, transportar sinalizador).
4.
Economia de contexto: O estado salvo do processo interrompido (PC, Registros, PSW) é conhecido como
contexto . O sistema operacional normalmente salva esse contexto em uma pilha (geralmente a pilha do kernel) para que possa ser restaurada mais tarde.
5.
Tabela de vetor de interrupção (IVT): A CPU usa o número de interrupção (fornecido pelo controlador de interrupção) para procurar o manipulador de interrupção correspondente (ou rotina de serviço de interrupção - ISR) na tabela de vetores de interrupção (IVT). O IVT é uma tabela na memória que mapeia números interrompidos nos endereços de seus respectivos ISRs.
6. Execução do manipulador de interrupção (ISR): A CPU salta para o endereço do ISR encontrado no IVT e começa a executá -lo. O ISR é uma rotina específica projetada para lidar com a interrupção específica. Por exemplo:
*
teclado ISR: Lê a tecla pressionada pelo buffer do teclado e a armazena em um buffer.
*
I/O do disco ISR: Sinaliza a conclusão de uma operação de leitura/gravação em disco e copia dados de/da memória.
*
Timer ISR: Atualiza o tempo do sistema e pode acionar outros eventos com base no tempo decorrido.
7.
Manuseio de interrupção: O ISR executa as ações necessárias para abordar a interrupção, como:
* Atendendo o dispositivo que causou a interrupção.
* Atualizando dados do sistema.
* Possivelmente agendar outra tarefa a ser executada.
8.
Reconhecimento de interrupção: O ISR sinaliza para o controlador de interrupção (ou dispositivo) que a interrupção foi tratada. Isso geralmente é feito para limpar a solicitação de interrupção.
9.
Restauração do contexto: Depois que o ISR terminar seu trabalho, ele restaura o contexto salvo anteriormente (PC, Registros, PSW) da pilha. Isso restaura efetivamente a CPU ao estado em que estava em * antes * a interrupção ocorreu.
10.
retornar ao programa interrompido: A CPU retoma a execução do programa interrompido no ponto em que foi interrompido (usando o valor do PC restaurado). O programa continua como se nada tivesse acontecido (exceto por um pequeno atraso).
Vantagens de sistemas operacionais orientados a interrupções: *
Responsabilidade: Permite que o sistema reaja rapidamente a eventos em tempo real (por exemplo, leituras de sensores, entrada do usuário).
*
Eficiência: Evita pesquisas desnecessárias, liberando tempo da CPU para outras tarefas.
*
multitarefa: Permite que o sistema operacional lida com várias tarefas simultaneamente alternando entre elas com base em eventos de interrupção.
*
Suporte em tempo real: Essencial para sistemas em tempo real que requerem respostas previsíveis e oportunas aos eventos.
Desvantagens de sistemas operacionais orientados a interrupções: *
Complexidade: Projetar e depurar manipuladores de interrupção podem ser complexos.
*
Latência de interrupção: O tempo necessário para responder a uma interrupção (latência de interrupção) pode ser crítico em sistemas em tempo real. Alta latência pode levar a prazos perdidos ou instabilidade do sistema.
*
Conflitos de interrupção: O manuseio inadequado de interrupção pode levar a conflitos entre diferentes dispositivos ou componentes de software.
*
Condições de corrida: Recursos compartilhados acessados por manipuladores de interrupção e código regular requerem sincronização cuidadosa para evitar condições de corrida.
Exemplos de sistemas operacionais orientados a interrupções: A maioria dos sistemas operacionais modernos é orientada a interrupções, incluindo:
*
Linux: Depende fortemente de interrupções para E/S do dispositivo, gerenciamento de temporizadores e chamadas do sistema.
*
Windows: Usa interrupções para fins semelhantes aos Linux.
*
macOS: Também um sistema operacional orientado a interrupção.
*
Sistemas operacionais em tempo real (RTOs): Como Freertos, VxWorks, QNX, são projetados especificamente para lidar com interrupções com baixa latência e alta previsibilidade.
Em resumo, um sistema operacional de interrupção é uma maneira poderosa e eficiente de gerenciar os recursos do sistema e lidar com eventos em tempo real. Ao responder às interrupções, o sistema operacional pode alternar perfeitamente entre tarefas e fornecer uma experiência de computação responsiva e eficiente. No entanto, é crucial projetar e implementar cuidadosamente os manipuladores de interrupção para evitar problemas em potencial.