O que se entende por interrupções no contexto de sistemas operacionais?

9

Decidi ler conceitos de sistemas operacionais de Silberschatz, Galvin Gagne (8ª edição) durante o verão. Eu cheguei a um tópico que está me confundindo - interrompe e seu papel no que se refere aos sistemas operacionais.

O texto diz que um sistema operacional iniciará um primeiro processo como "init" e aguardará a ocorrência de um "evento" e esse evento geralmente é sinalizado por uma interrupção. O texto também diz que a interrupção pode vir do hardware ou do software. Como isso funciona, um pouco mais detalhadamente? O sistema operacional é acionado por interrupções?

Estou apenas procurando um entendimento geral.

Ockham
fonte

Respostas:

8

Quando o sistema operacional executa um processo como "init", ele envia sinais para outros subsistemas / gerenciadores de dispositivos etc., como memória, dispositivos de E / S, etc. A interrupção é apenas uma maneira de informar ao processador ou ao SO pronto, ou com novas entradas, etc. Então, durante o init, o SO aguarda que os subsistemas estejam prontos, e uma interrupção desses subsistemas indica exatamente isso. Então é a isso que o "evento" se refere.

Em relação às interrupções de hardware ou software, interrupções de hardware são aquelas que vêm do hardware. Por exemplo. Dispositivos de E / S, como teclado etc. Uma interrupção de hardware faz com que o processador salve seu estado e inicie a execução do manipulador de interrupções. Por outro lado, interrupções de software são instruções no conjunto de instruções, o que faz com que o processador altere seu nível de privilégio de supervisor de usuário, também conhecido como comutador de contexto. Esses detalhes serão abordados mais adiante no livro-texto.

Caos
fonte
4

As interrupções permitem que o sistema operacional observe um evento externo, como um clique do mouse. As interrupções de software, mais conhecidas como exceções, permitem que o sistema operacional lide com eventos incomuns, como erros de divisão por zero provenientes da execução do código.

A sequência de eventos geralmente é assim:

  1. O hardware sinaliza uma interrupção para o processador
  2. O processador percebe a interrupção e suspende o software atualmente em execução
  3. O processador salta para a função de manipulador de interrupção correspondente no sistema operacional
  4. O manipulador de interrupção segue seu curso e retorna da interrupção
  5. O processador continua de onde parou no software em execução anterior

A interrupção mais importante para o sistema operacional é a interrupção do tique do timer. A interrupção de tique do timer permite que o sistema operacional recupere periodicamente o controle do processo do usuário em execução no momento. O sistema operacional pode então decidir agendar outro processo, retornar ao mesmo processo, realizar tarefas domésticas etc. A interrupção do tiquetaque do timer fornece a base para o conceito de multitarefa preventiva.


fonte
4

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.

Ben
fonte
3

O sistema operacional é acionado por interrupções. Isso significa que:

Se não houver processos a serem executados, dispositivos de E / S para serviço e usuários a quem responder, um sistema operacional ficará quieto, esperando que algo aconteça. Os eventos quase sempre são sinalizados pela ocorrência de uma interrupção ou interceptação, uma interceptação é uma interrupção de hardware gerada quando uma instrução inválida é fornecida e, em seguida, retorna o controle ao sistema operacional.

Um exemplo de instrução inválida é quando um programa está tentando acessar o espaço de memória de outro programa sem ter permissão.

Peter Mortensen
fonte
interrupções nem sempre tem que ser algo ruim ou inválido como você descreveu
Eu estava descrevendo a interrupção da armadilha, tanto quanto sei que é gerada devido a algum erro ou instruções inválidas. obrigado por me notificar