Como o sistema operacional gerencia programas em execução

2

como o Windows é um sistema operacional multitarefa, é necessário alternar entre processos. Mas como isso é feito? As janelas incluem algum tipo de ponto de interrupção em programas em execução, o que deve mudar para outro processo? Quando o programa é executado, ele assume o controle da CPU. Então, para habilitar o multitarefa, o sistema operacional deve incluir algumas instruções de interrupção no programa. Estou certo?

    
por fixer1234 21.02.2010 / 13:40

3 respostas

3

Não, o programa não tem controle total sobre a CPU. Se fosse, então há outras coisas que parariam de funcionar, como o teclado, mouse, discos rígidos, et.c ..

Existem linhas de interrupção conectadas à CPU, que informam quando há informações vindas de um dispositivo. Um pressionamento de tecla, por exemplo, causa um sinal de interrupção, que interromperá a execução atual e iniciará um manipulador de interrupções.

Existe também um timer interno que é conectado como um dispositivo, para que o sistema operacional possa configurar o timer para produzir sinais de interrupção a uma taxa específica. Assim, o sistema operacional sempre pode recuperar o controle do processo em execução em intervalos específicos.

O processo usual ao manipular uma interrupção é que o controle retorna ao programa em execução depois que o manipulador de interrupção é concluído, mas o agendador do processo pode salvar o estado de um processo, restaurar um processo diferente e deixar o manipulador de interrupção retornar àquele processo em vez disso.

O agendador também tem outras chances de alternar entre processos. Por exemplo, quando o programa faz uma chamada de sistema para fazer E / S de disco, o agendador permite que a solicitação de E / S passe para o hardware e salva o processo em um estado de espera. Quando o disco está pronto para retornar dados, ele envia uma interrupção, para que o agendador possa voltar ao processo que está aguardando os dados.

(Uma vez eu escrevi um programa que realmente tomava controle total sobre o computador e desabilitava todas as interrupções. Eu tinha que escrever meus próprios manipuladores para entrada de teclado e mouse, e E / S de disco não funcionava naquele estado. )

    
por 21.02.2010 / 14:16
1

Não. Sistemas Operacionais (e encadeamento em geral) são governados por um programador que aloca tempo de CPU a vários encadeamentos (e processos) como necessário; o agendador pode tirar o processador de um processo onde ele achar melhor.

    
por 21.02.2010 / 13:44
1

Não, é feito pelo uso de recursos de hardware para obter o controle de volta ao kernel em um temporizador ou algum outro evento.

Você está descrevendo 'multitarefa cooperativa', em que os aplicativos são gravados para dar o controle de volta ao sistema operacional em intervalos regulares. Embora exista um elemento disso quando os aplicativos estão aguardando a entrada do usuário, a rede ou as operações de disco para serem concluídas, um sistema operacional como o Windows também pode executar dois aplicativos que não aguardam nada ao mesmo tempo.

O hardware tem interrupções, que dão controle a um bit específico de código no kernel que foi configurado durante a inicialização. O kernel decide então para o que dar o próximo controle; este é o trabalho do agendador.

    
por 21.02.2010 / 13:46