Gracias Señor Por Un Año Mas by Robinson Pulgarin 1252 views
Sistema operacional by Michael Soto 8427 views
Sistemas operacionais pronatec- p... by Manoel Rufino Neto 15269 views
S.O aula 15, 16.
2. ESCALONAMENTO DE PROCESSOS  O escalonamento de processadores é a forma como os processadores existentes num sistema computacional são utilizados para efetuar o processamento, isto é, como os processos são distribuídos para execução nos Processadores.  Tanenbaum propõe a seguinte definição:  Quando mais de um processo é executável, o sistema operacional deve decidir qual será executado primeiro. A parte do sistema operacional dedicada a esta decisão é chamada escalonador ( scheduler) e o algoritmo utilizado é chamado algoritmo de escalonamento( scheduling algorithm). [TAN92, p. 62]
3.  Por sua vez, Deitel coloca que:  A designação de processadores físicos para processos permite aos processos a realização de trabalho. Esta designação é uma tarefa complexa realizada pelo sistema operacional. Isto é chamado escalonamento do processador ( processor scheduling). [DEI92, p. 287]  Simplificando, podemos afirmar que num sistema onde só exista um único processador, o escalonamento representa a ordem em que os processos serão executados.
4.  A forma com que se dá o escalonamento é, em grande parte, responsável pela produtividade e eficiência atingidas por um sistema computacional. Mais do que um simples mecanismo, o escalonamento deve representar uma política de tratamento dos processos que permita obter os melhores resultados possíveis num sistema.
5. OBJETIVOS DO ESCALONAMENTO  O projeto de um escalonador adequado deve levar em conta uma série de diferentes necessidades, ou seja, o projeto de uma política de escalonamento deve contemplar os seguintes objetivos:  Ser justo: todos os processos devem ser tratados igualmente, tendo possibilidades idênticas de uso do processador, devendo ser evitado o adiamento indefinido.  Maximizar a produtividade (throughput): procurar maximizar o número de tarefas processadas por unidade de tempo.
6.  Ser previsível: uma tarefa deveria ser sempre executada com aproximadamente o mesmo tempo e custo computacional.  Minimizar o tempo de resposta para usuários interativos.  Maximizar o número possível de usuários interativos.  Minimizar a sobrecarga (overhead): recursos não devem ser desperdiçados embora algum investimento em termos de recursos para o sistema pode permitir maior eficiência.  Favorecer processos bem comportados: processos que tenham comportamento adequado poderiam receber um serviço melhor.
7.  Balancear o uso de recursos: o escalonador deve manter todos os recursos ocupados, ou seja, processos que usam recursos sub-utilizados deveriam ser favorecidos.  Exibir degradação previsível e progressiva em situações de intensa carga de trabalho.  Como pode ser visto facilmente, alguns destes objetivos são contraditórios, pois dado que a quantidade de tempo disponível de processamento (tempo do processador) é finita, assim como os demais recursos computacionais, para que um processo seja favorecido outro deve ser prejudicado.
8.  O maior problema existente no projeto de algoritmos de escalonamento está associado a natureza imprevisível dos processos, pois não é possível prevermos se um dado processo utilizará intensamente o processador, ou se precisará grandes quantidades de memória ou se necessitará numerosos acessos aos dispositivos de E/S.
9. NÍVEIS DE ESCALONAMENTO  Existem três níveis distintos de escalonamento em um sistema computacional quando se considera a frequência e complexidade das operações envolvidas.  Escalonamento de alto nível  Chamado também de escalonamento de tarefas, corresponde a admissão de processos, isto é, a determinação de quais tarefas passarão a competir pelos recursos do sistema. Uma vez admitidas, as tarefas transformam-se em processos. Correspondem a rotinas de alto nível oferecidas pelas APIs do sistema operacional.
10.  Escalonamento de nível intermediário  Corresponde a determinação de quais processos existentes competirão pelo uso do processador (processos ativos). Este nível de escalonamento é responsável por administrar a carga do sistema, utilizando-se de primitivas de suspensão (suspend) e ativação (resume ou activate). Correspondem a rotinas internas do sistema operacional.  Escalonamento de baixo nível  Rotinas que determinam qual processos, dentre os processos ativos, será o próximo processo que efetivamente utilizará o processador. Estas tarefa são executadas pelo dispatcher, usualmente uma rotina escrita diretamente em linguagem de máquina que se encontra permanentemente na memória principal.
11.  Os níveis de escalonamento alto, intermediário e baixo também são conhecidos respectivamente como escalonamento de longo prazo, médio prazo e curto prazo.  O escalonamento de alto nível ou de longo prazo ocorre menos frequentemente num sistema enquanto o escalonamento de baixo nível ou de curto prazo ocorre constantemente, dado que representa a troca de contexto e o chaveamento do processador entre os processos ativos.  Considerando assim os níveis de escalonamento e as operações de suspensão (suspend ou sleep) e ativação (resume, wakeup ou activate), o mapa de estados dos processos pode ser representado de maneira mais completa como ilustrado na Figura 3.2
12. ESCALONAMENTO PREEMPTIVO E NÃO PREEMPTIVO  Um algoritmo de escalonamento é dito não preemptivo quando temos que o processador designado para um certo processo não pode ser retirado deste até que o processo seja finalizado (completion). Analogamente, um algoritmo de escalonamento é considerado preemptivo quando o processador designado para um processo pode ser retirado deste em favor de um outro processo. PREEMPTIVO: esquema de processamento computacional onde o kernel tem o controle do tempo que será usado por cada processo, e tem o poder de tomar de volta este tempo e dá-lo para outro processo segundo seu esquema de prioridades
13. Figura 3.1: Níveis de escalonamento
14.  Algoritmos preemptivos são mais adequados para sistemas em que múltiplos processos requerem atenção do sistema, ou seja, no caso de sistemas multiusuário interativos (sistemas em tempo repartido) ou em sistema de tempo real.  Nestes casos, a preemptividade representa a troca do processo em execução, assim sendo, para que o processador seja retirado de um processo, interrompendo seu trabalho, e designado a outro processo, anteriormente interrompido, é fundamental que ocorra a troca de contexto dos processos.  Tal troca exige que todo o estado de execução de um processo seja adequadamente armazenado para sua posterior recuperação, representando uma sobrecarga computacional para realização desta troca e armazenagem de tais dados.  Usualmente os algoritmos preemptivos são mais complexos dada a natureza imprevisível dos processos.
15.  Por sua vez, os algoritmos não preemptivos são mais simples e adequados para o processamento não interativo, semelhante aos esquemas de processamento em lote dos sistemas batch. Embora não proporcionando interatividade, são geralmente mais eficientes e previsíveis quanto ao tempo de entrega de suas tarefas. Figura 3.2: Mapa de estados dos processos
16.  Existem também algoritmos de escalonamento cooperativo, onde os processos não são interrompidos, mas a preempção ocorre em duas situações bem definidas: quando o processo efetua uma operação de I/O e quando o processo é finalizado [SGG01, p. 97].  Também é possível que um processo ceda o processador, voluntariamente, em favor de outros processos. Neste caso, o processo educado poderia executar uma chamada a uma função yeld (dar preferência), como no caso do MS-Windows 3.1.  Apreempção voluntária pode auxiliar numa distribuição mais equitativa da capacidade de processamento do sistema, mas conta com a generosidade do programador, nem sempre disponível.
17.  A preemptividade de certos algoritmos se baseia no fato de que o processador é, naturalmente, um recurso preemptivo, ou seja, um recurso que pode ser retirado de um processo e posteriormente devolvido sem prejuízo.  O mesmo acontece com a memória. Por outro lado, outros tipos de recursos não podem sofrer preempção, tais como impressoras e até mesmo arquivos, dado que muitas vezes não podem ser retirados de um processo sem que ocorra prejuízo para este.
18. QUALIDADE DO ESCALONAMENTO  Existem várias critérios que permitem a avaliação da qualidade do serviço oferecido por um algoritmo de escalonamento [SGG01, p. 98]: uso do processador, throughput, tempo de resposta e tempo de permanência. O tempo de permanência, tempo de retorno ou turnaround time, é um critério simples dado pela soma do tempo de espera com o tempo de serviço ou tempo de execução:  tp = tpermanencia = tespera + tservico (3.1)  Em geral deseja-se que o tempo de permanência seja o menor possível. Na Figura 3.3 temos uma representação gráfica do tempo de permanência.
19. Figura 3.3: Representação gráfica do tempo de permanência
20.  Uma outra forma de avaliar-se o escalonamento é utilizando-se o tempo de permanência normalizado (tpn), ou seja, a razão entre o tempo de permanência (tp) e o tempo de serviço (ts):  tpn = tpermanencia = tespera + tservico tservico tservico (3.2)  Se a espera for zero, o que constitui o melhor caso possível, teremos que o tempo de permanência normalizado de um processo será 1 (um). Assim sendo, valores maiores do que este indicam um pior serviço oferecido pelo algoritmo de escalonamento.
21. EXERCÍCIO  1) O que é escalonamento de processadores ?  2) O projeto de uma política de escalonamento deve contemplar alguns objetivos, cite 3 deles.  3) Existem três níveis distintos de escalonamento em um sistema computacional, fale sobre eles.  4) O que é o PREEMPTIVO