Chamada do sistema vs interrupção
Um processador típico executa as instruções uma por uma. Mas pode haver ocasiões em que o processador tenha que parar temporariamente e manter a instrução atual e executar algum outro programa ou segmento de código (residindo em algum outro lugar). Depois de fazer isso, o processador retorna à execução normal e continua de onde parou. Uma chamada de sistema e uma interrupção são essas ocasiões. Uma chamada de sistema é uma chamada para uma sub-rotina integrada no sistema. Uma interrupção é uma interrupção de controle de programa causada por eventos de hardware externos.
O que é uma chamada de sistema?
As chamadas do sistema fornecem aos programas em execução no computador uma interface para falar com o sistema operacional. Quando um programa precisa solicitar um serviço (para o qual ele não tem permissão) do kernel do sistema operacional, ele usa uma chamada de sistema. Os processos de nível de usuário não têm as mesmas permissões que os processos que interagem diretamente com o sistema operacional. Por exemplo, para se comunicar com um dispositivo de E / S externo ou para interagir com quaisquer outros processos, um programa deve usar chamadas de sistema.
O que é uma interrupção?
Durante a execução normal de um programa de computador, pode haver eventos que podem fazer com que a CPU pare temporariamente. Eventos como esse são chamados de interrupções. As interrupções podem ser causadas por falhas de software ou hardware. As interrupções de hardware são chamadas (simplesmente) de interrupções, enquanto as interrupções de software são chamadas de exceções ou armadilhas. Uma vez que uma interrupção (software ou hardware) é levantada, o controle é transferido para uma sub-rotina especial chamada ISR (Interrupt Service Routine) que pode lidar com as condições que são levantadas pela interrupção.
Conforme mencionado acima, o termo interrupção geralmente é reservado para interrupções de hardware. Eles são interrupções de controle de programa causadas por eventos de hardware externos. Aqui, externo significa externo à CPU. As interrupções de hardware geralmente vêm de muitas fontes diferentes, como chip de temporizador, dispositivos periféricos (teclados, mouse, etc.), portas de E / S (serial, paralela, etc.), drives de disco, relógio CMOS, placas de expansão (placa de som, vídeo cartão, etc). Isso significa que as interrupções de hardware quase nunca ocorrem devido a algum evento relacionado ao programa em execução. Por exemplo, um evento como o pressionamento de uma tecla no teclado pelo usuário ou um temporizador de hardware interno pode gerar esse tipo de interrupção e informar à CPU que um determinado dispositivo precisa de alguma atenção. Em uma situação como essa, a CPU irá parar tudo o que estava fazendo (ou seja, pausa o programa atual),fornece o serviço exigido pelo dispositivo e retornará ao programa normal.
Qual é a diferença entre chamada de sistema e interrupção?
A chamada do sistema é uma chamada para uma sub-rotina incorporada ao sistema, enquanto a interrupção é um evento que faz com que o processador retenha temporariamente a execução atual. No entanto, uma grande diferença é que as chamadas do sistema são síncronas, enquanto as interrupções não. Isso significa que as chamadas do sistema ocorrem em um horário fixo (geralmente determinado pelo programador), mas as interrupções podem ocorrer a qualquer momento devido a um evento inesperado, como um toque de tecla no teclado pelo usuário. Portanto, sempre que ocorre uma chamada de sistema, o processador só precisa se lembrar para onde retornar, mas no caso de uma interrupção, o processador precisa lembrar o lugar para o qual retornar e o estado do sistema. Ao contrário de uma chamada de sistema, uma interrupção geralmente não tem nada a ver com o programa atual.