Como funciona o dispatcher?

0

Esta é uma questão geral da teoria dos Sistemas Operacionais, mas como estou aprendendo a teoria do sistema operacional através de sistemas semelhantes ao UNIX, eu gostaria de perguntar aqui.

Hoje, depois da minha palestra no SO, pedi ao nosso instrutor que: 'Dispatcher é um thread, que está dentro do processo do Gerenciador de processos. Como o PM também é um processo, enquanto um processo chamado A está em estado de execução, como o PM assume o processador dele? O despachante deve tirar o processador dos processos e alocá-lo em outro processo. Mas enquanto o Gerenciador de processos não está rodando, como isso deve acontecer? '

Ele disse: 'O Process Manager está "sempre" no estado de execução na CPU0'. Eu disse: 'Se houver apenas uma CPU com um núcleo, como o PM está sempre em execução?' Ele disse que é.

Qualquer um pode me iluminar desse dilema?

    
por Mert Çelikok 15.11.2013 / 22:38

1 resposta

1

Um sistema operacional geralmente "retira um processador" de um encadeamento de controle sempre que o encadeamento em execução faz uma chamada ao sistema, ou quando há uma interrupção no relógio ou alguma outra interrupção.

Ou seja, o encadeamento em execução invoca o kernel por meio de uma chamada de sistema read() ou write() ou gettimeofday() . O manipulador de chamadas do sistema não apenas realiza o trabalho de leitura ou gravação ou o que quer que seja, ele também acaba descobrindo se deve retornar ao encadeamento que o invocou, ou se algo mais deve ser executado. Esse "descobrir" é o Gerenciador de processos.

Um programa que está ligado à CPU (não faz chamadas de sistema de leitura / gravação / abertura / fechamento) ainda terá a CPU sendo tirada dele de tempos em tempos pela interrupção do temporizador. Um relógio especial interrompe a CPU 10 ou 60 ou 1000 vezes por segundo. O manipulador de interrupção, entre outras coisas, decide qual encadeamento fornecerá à CPU para o próximo intervalo de tempo.

Outras interrupções podem acontecer também no mouse, no teclado, na placa de rede ou na unidade de disco.

Você pode dizer que o "Process Manager" é sempre executável porque o código em manipuladores de interrupção e manipuladores de chamada do sistema sempre o chama.

    
por 16.11.2013 / 00:48

Tags