Olá, hoje vou falar sobre a gerência do processador. O material aqui apresentado, são anotações de aulas e frutos da leitura do livro Arquitetura de sistemas operacionais - 4° Edição, de Francis Machado e Paulo Maia .
Com o advento dos sistemas multiprogramados, que permitiam a execução de múltiplos processos "simultaneamente", se tornou necessário algorítimos para tratar e escolher quais seriam os processos executados pelo processador, e com esta necessidade surgiram critérios para fazer a gerência dos processos e sua execução, uma vez sendo executado. Estes critérios foram chamados de políticas de escalonamento.
Funções básicas
De acordo com o livro de Maia e Machado, estes critérios de escalonamento apresentam algumas funções básicas, e são elas:
- Manter o processador ocupado a maior quantidade de tempo possível, isto é, trabalhando o maior número de tempo possível;
- Balancear o uso da CPU entre processos;
- Privilegiar a execução de aplicações criticas.
É interessante notar que, cada sistema operacional apresenta uma forma de fazer o escalonamento, e é importante que isto fique entendido, antes de entrarmos nas soluções de escalonamento.
Vale citar também que há uma rotina dentro do sistema operacional, responsável por realizar o escalonamento, esta conhecida como scheduler (escalonador), em sistemas multiprogramados, faz toda a gerência do compartilhamento do processador.
Outra rotina interessante é o dispatcher, que é o responsável em fazer a troca de contexto, após o schudler decidir quem será o processo executado.
Starvation e o Deadlock
Antes de entrarmos nos critérios de escalonamento e suas características, vou citar alguns conceitos fundamentais para o entendimento dos demais assuntos, Starvazion e Deadlock.
- Starvazion: Este é um problema ocorre quando um processo nunca é executado, podendo ocorrer por terem processos entrando na fila, e esses sempre com mais prioridade do que o processo que está sofrendo com este problema;
- Deadlock: O Deadlock é um problema que ocorre, quando dois ou mais processos não são executados por estarem esperando recursos uns dos outros, assim nenhum deles é executado, para melhor visualização deste problema, veja a imagem abaixo:
Com estes conceitos bem definidos, vamos agora, visualizar os critérios de escalonamento.
Critérios de escalonamento
As politicas de escalonamento, como citado anteriormente, variam de acordo com o sistema operacional, veja que um sistema de tempo real, sempre irá priorizar os processos mais críticos, e já os de tempo compartilhado, quer que os processos seja tratados iguais, para que todos tenham o mesmo privilégio para ser executado, veja abaixo alguns critérios utilizados pelas políticas para implementar o escalonamento:
- Utilização do processador: Indica a quantidade de processos que o processador está processando de uma única vez;
- Tempo Turnaround: Este caracteriza a quantidade de tempo total, este que vai desde a entrada da fila de espera, a alocação de memória, a espera na fila de pronto e nas operações de E/S que um processo realiza. Os sistemas de escalonamento querem evitar que este seja um período muito grande;
- Tempo de espera: Este representa o tempo que o processo necessitou ficar na fila de pronto antes de ser executado;
- Throuput: O throuput representa a quantidade de processos que são executados dentro de um intervalo X de tempo.
De maneira geral as politicas de escalonamento buscam executar a maior quantidade de processos possíveis, sem sobrecarregar o processador e com o menor tempo de espera, turnaround e throuput.
Esses são alguns dos vários critérios utilizados para a realização de escalonamento em alguns tipos de sistemas operacionais.
Tipos de escalonamento
Os escalonamentos de acordo com o sistema operacional, onde, sistemas operacionais que permitem a pausa de um processo que está em execução, são conhecidos como preemptivos. Essa forma de trabalho do sistema operacional, é bastante interessante é traz muitos benefícios, como a melhoria no balanceamento do processador, durante a execução dos processos, é possível priorizar certos tipos de processos, como os críticos. Pode deixar o sistema um mais complexo que o normal, porém, permite a adição de várias políticas de escalonamento.
Ainda neste tema, existe os sistemas não-preemptivos, que basicamente são sistemas que não permitem os processos de serem parados por outros, no meio de sua execução. Um exemplo prático deste tipo de escalonamento são podem ser encontrados em sistemas batch, onde durante a execução de certo processo nada pode interromper até o final do processo.
Escalonamento First-In-First-Out (FIFO)
Esta é uma forma de escalonamento bastante simples, nela basicamente o primeiro processo que chega a fila, será o primeiro a ser executado. Sua implementação é bastante simples, pois necessita apenas de uma fila esta que irá alocar os processos. Perceba que após a execução do processo ou ele finaliza a execução ou vai para a fila de espera, quando sai para a fila de espera, vai para a fila de pronto, onde espera sua vez para executar.
Escalonamento Shortest-Job-First (SJF)
Quando falávamos sobre o escalonamento FIFO, foi possível perceber que neçe há um problema, o processo que chega primeiro executa, mas e se o processo que chegar for mais difícil de processar que os outros três processos, que estão atrás deste na fila. Para resolver este problema foi criado o SJF, que ao receber os processos faz uma estimativa de quanto tempo o processo vai demorar, e começa a escalar os processos de acordo com essa estimativa, assim caso o processo seja muito demorado, ele irá para o final da fila, diferente de processos menores, que tem a execução rápida.
Por hoje, isso é tudo. Espero ajudar, e nos próximos posts vou explicar sobre as políticas de escalonamento. =D
Livro que citei aqui
Comentários
Postar um comentário