Uma interrupção é um evento "incomum" que ocorre e precisa ser processado imediatamente , independentemente do que estiver acontecendo. Digo "incomum" entre aspas, porque não é necessariamente inesperado ou ruim, mas "incomum" do ponto de vista da CPU porque "apenas acontece" enquanto está ocupado executando código que pode não estar relacionado.
A CPU possui algum mecanismo para ouvir interrupções e alguma maneira de configurar "o que fazer" quando ocorrem interrupções de vários tipos. Isso permite que o sistema operacional organize que será notificado quando os dispositivos de hardware fizerem alguma coisa (incluindo o relógio de hardware mais importante, que simplesmente gera interrupções em intervalos regulares). Através da configuração de manipulação de interrupção da CPU, o código designado no sistema operacional ganhará controle sempre que ocorrerem interrupções.
O computador está em um estado muito desagradável (para um programador de aplicativos) quando um manipulador de interrupção começa a ser executado; a máquina estava ocupada fazendo outra coisa (que poderia ser qualquer coisa ) e agora o sistema operacional foi notificado de que "algo aconteceu". Ele precisa coletar qualquer outra informação necessária para lidar com a interrupção de qualquer lugar da máquina em que ela esteja e executar o processamento necessário, sem perturbar o fato de que "poderia ser qualquer coisa" que estivesse sendo executada na CPU. Se o sistema operacional quiser alternar qual processo de aplicativo está em execução no momento, ele terá que economizar o suficiente do contexto para poder restaurá-lo mais tarde (novamente, sem perturbar esse contexto), carregue outro contexto e deixe a CPU continuar normal execução nesse contexto.
Como mencionado, as interrupções são usadas para obter notificações de dispositivos de hardware (a única alternativa seria verificá-las periodicamente), mantendo o controle do tempo e obtendo a oportunidade garantida de recuperar o controle de um processo de aplicativo (para alternar qual aplicativo está sendo executado) , se recuperando de processos de aplicativos executando instruções inválidas e também para permitir que aplicativos façam solicitações do sistema operacional. Estes últimos são conhecidos como chamadas do sistema. Para impedir que os aplicativos atrapalhem a máquina e os outros, eles normalmente são executados com a máquina no "modo de usuário", o que impede que o aplicativo faça basicamente algo além de ler e gravar na memória (virtual) já alocada a ela. Isso significa que, para fazer qualquer coisacaso contrário (lendo / gravando arquivos, solicitando mais memória, acessando dispositivos etc.), o aplicativo precisa fazer uma chamada de sistema; basicamente, deixando algumas informações sobre o que quer fazer em algum lugar que saiba que o SO procurará e, em seguida, executando uma instrução de CPU que causa uma interrupção do tipo certo. O sistema operacional pode ver o que o aplicativo estava tentando fazer e determinar se deve executar essa solicitação. Essa garantia de que o sistema operacional estará envolvido na tentativa de qualquer processo de fazer algo que afete algo fora do processo é a única maneira de aplicar políticas de acesso.
Então, basicamente, sim, o sistema operacional é acionado por interrupções. Um sistema operacional "abstrato" inicializa a máquina em um estado de "operação normal" e, em algum momento, passa o controle para um processo "normal". Em circunstâncias normais, o sistema operacional recuperará o controle apenas manipulando interrupções; mas como praticamente nada de interessante acontece sem interrupção, o sistema operacional basicamente controla tudo o tempo todo.