Sou completamente ignorante sobre o funcionamento interno de um sistema operacional, mas posso mais ou menos adivinhar o comportamento aproximado de muitas funções. Uma coisa que não consigo descobrir é a multitarefa.
Em teoria, o sistema operacional gerencia o tempo, de acordo com a CPU por pequenos intervalos, de acordo com os vários programas em execução. Mas não está claro como isso realmente funciona.
Digamos que o sistema operacional queira iniciar meu programa. O código da máquina é carregado em algum lugar da RAM, iniciando em um determinado endereço. Acho que um salto deve ser realizado nesse endereço, permitindo que meu código seja executado. Mas dessa maneira, o sistema operacional não pode recuperar o controle até eu voltar.
Basicamente, posso imaginar apenas duas maneiras de fazer isso funcionar, mas nenhuma delas parece realmente adequada:
O sistema operacional pode ler as instruções da máquina que eu quero executar e emulá-las, em vez de executá-las diretamente. Sou intencionalmente vago, pois não sei como isso funcionaria, mas parece que isso atrasaria consideravelmente o programa.
Como alternativa, o sistema operacional pode esperar até eu fazer uma chamada do sistema. Nesse momento, ele recupera o controle e pode verificar há quanto tempo estou correndo e fazer suas coisas de compartilhamento de tempo. Isso pode funcionar, mas parece não confiável, pois eu poderia fazer um cálculo longo que não envolve chamadas do sistema e travar tudo por um tempo.
Portanto, parece que nenhum dos mecanismos funcionaria muito bem. Como a multitarefa é realmente executada?
interrupt
INT
instrução. Algo ainda é um mistério para mim