Anda di halaman 1dari 20

Escalonamento no Linux e no Windows NT/2000/XP

Escalonamento no Linux
Os requisitos do escalonador do Linux eram:
Apresentar boa performance em programas interativos, mesmo com carga elevada; Distribuir de maneira justa o tempo da CPU; Ser eficiente em mquinas SMP (Symmetric Multi Processor); Possuir suporte para tempo real.

Escalonamento no Linux
Cada processo possui uma prioridade, que recalculada dinamicamente. O escalonador entrega a CPU para o processo que possui a maior prioridade. O escalonador preemptivo.

Escalonamento no Linux
O Linux considera dois tipos de processos:
processos interativos (time-sharing) processos tempo real

Para processos interativos (dentro da mesma prioridade) o algoritmo Round Robin. Para processos de tempo real (dentro da mesma prioridade) o algoritmo pode ser:
FCFS (o processo executa at terminar ou se bloquear) ou Round Robin

Processos de tempo real possuem prioridade sobre os demais processos.

Escalonamento no Linux
Nas verses que antecederam a 2.6, o escalonador apresentava 2 problemas:
1) o tempo de execuo do escalonador aumentava com o aumento do nmero de processos no sistema; 2) O escalonador usava uma ready list global em mquinas SMP

Escalonamento no Linux
Primeiro problema (overhead):
Cada processo possui uma prioridade, baseada em uma prioridade bsica (Nice) e em seu comportamento em tempo de execuo. Uma vez selecionado, o processo ganha a CPU por uma fatia de tempo. Quando o time-slice esgota, o processo marcado como expirado. O escalonador seleciona o processo no expirado com a maior prioridade. Quando todos os processos esto expirados, o escalonador recalcula a prioridade de todos e ento seleciona o prximo a rodar. O problema era este reclculo de prioridades: aumentando o nmero de processos no sistema, aumenta o tempo necessrio para o escalonador recalcular as prioridades. (Para aplicaes com um nmero muito grande de processos, este tempo penalizava enormemente o desempenho do sistema)

Escalonamento no Linux
Segundo problema (uma nica ready list global nas mquinas SMP).
Neste caso, os problemas so de duas naturezas:
1) a necessidade de acesso mutuamente exclusivo ready list por parte dos processadores. Se um processador est acessando a ready list, os demais necessitam esperar at que a mesma seja liberada. Para um nmero elevado de processadores este bloqueio dos processadores pode ocasionar uma queda considervel no desempenho do sistema. 2) considere um processo bloqueado esperando uma operao de E/S; quando termina a E/S, o processo recolocado na ready list global e pode ser executado por um processador diferente daquele no qual estava rodando previamente. Isto acontecendo, dados do processo porventura existentes em caches no podero mais ser usados, influenciando negativamente na performance.

Escalonamento no Kernel 2.6


As principais caractersticas do escalonador 2.6 so:
Tempo constante de execuo para selecionar um processo para rodar, independentemente do nmero de processos; Boa performance com programas interativos mesmo com o sistema sobrecarregado; Eficiente em mquinas SMP; Afinidade de processador, com uma fila de aptos para cada processador; Suporte a tempo real.

Escalonamento no Kernel 2.6


(Em mquinas SMP, existe uma fila de aptos para cada CPU)
Fila de Aptos Ativos
Prioridade 1 ....... Prioridade 140 P6 P2 ....... Pk P2 P5 ....... Pn

Expirados
Prioridade 1 P2

Thread de migrao

Quando o array Ativos se torna vazio, o array Expirados passa a ser o ativo, com uma simples troca de apontadores.

Escalonamento no Kernel 2.6


O escalonador possui 140 nveis de prioridade (quanto menor o nmero, maior a prioridade). Prioridades de 1 a 100 so para processos de tempo real; de 101 a 140 para os demais processos de usurio (interativos ou no interativos). Nos nveis de prioridade 101 a 140, os processos recebem fatias de tempo de 20 ms. Os processos de tempo real podem ser FIFO ou Round Robin, e possuem uma prioridade esttica.
Processos FIFO executam at voluntariamente liberarem a CPU (o nvel de prioridade mantido e no so preemptados). Processos Round Robin recebem fatias de tempo. Quando todos terminam suas fatias, dada outra fatia e eles continuam rodando no mesmo nvel de prioridade.

A prioridade dos processos de usurio a soma de sua prioridade bsica (valor de seu nice) e seu bonus dinmico, que varia de +5 a 5.

10

Clculo da prioridade dos processos de usurio


O escalonador classifica os processos em interativos e no interativos, pela observao de seu comportamento. Interativos so aqueles que ficam bloqueados por longos perodos, esperando por I/O, executam rapidamente e ficam novamente esperando por I/O. O escalonador calcula a mdia de tempo bloqueado de um processo e a utiliza para calcular o bnus do processo. A idia aumentar a prioridade de processos interativos (I/O bound) e diminuir a prioridade de processos no interativos (CPU bound).

11

Thread de migrao
Em cada processador roda uma thread de migrao, cuja funo movimentar processos de um processador para outro. Como existe uma ready list por processador, a idia evitar que processadores fiquem ociosos enquanto outros esto sobrecarregados. A thread de migrao chamada periodicamente, a cada tick do relgio, e tambm explicitamente quando o sistema fica desbalanceado.

12

Escalonamento de E/S no Linux


No Linux, as operaes READ so sncronas e bloqueantes (pois existe a suposio de que o processo que executou a operao necessita dos dados para continuar), enquanto as operaes WRITE so assncronas e nobloqueantes. Por este motivo, as operaes de leitura possuem prioridade em relao s operaes de escrita. As requisies de E/S so ordenadas, de acordo com o cilindro a ser acessado, de forma a minimizar o deslocamento do brao do disco. Para evitar postergao indefinida, para cada requisio atribudo um deadline de atendimento. O escalonador 2.6 implementa duas polticas: poltica de deadlines e

poltica antecipatria.

13

Poltica de deadlines
O escalonador implementa duas filas: fila READ com deadline de 500 ms e fila WRITE com deadline de 5 seg (portanto, o tempo limite de atendimento de um processo depende da fila em que ele se encontra) As requisies so inseridas nas filas apropriadas (READ ou WRITE), na posio correspondente a sua requisio (cilindro a ser acessado). O escalonador atende as requisies, seguindo a ordem das filas. Se um deadline expira, o escalonador dispara a requisio seguindo a ordem da fila, garantindo a execuo das requisies cujo deadline expirou. Esta poltica assegura que as operaes de posicionamento dos cabeotes (seek) so minimizadas (pela classificao das requisies) e o deadline garante que no haver postergao indefinida de requisies. Outro aspecto importante o aumento da interatividade, que resulta da atribuio de deadline menor e da priorizao das operaes READ.

14

Poltica antecipatria
O escalonamento antecipatrio tenta antecipar futuras operaes de leitura. Para isso, mantm algumas estatsticas sobre os processos. Quando um READ se completa, o escalonador no executa a prxima requisio da fila, mas espera 6 ms por uma nova requisio do mesmo processo. Se ocorrer, a mesma ser atendida. Para muitas aplicaes, esta espera (6 ms) evita inmeras operaes de posicionamento dos cabeotes (seek). Se o processo no executa outra operao READ, este tempo perdido.

15

Escalonamento no sistema operacional Windows NT/2000/XP


Um processo pode ser formado por um conjunto de threads. A thread a unidade de execuo para o sistema operacional. Cada processo possui pelo menos uma thread, a thread primria, a qual criada quando o processo carregado para execuo. Alguns processos criam outras threads, de maneira a explorar o paralelismo da execuo. Cada thread possui sua prpria pilha de execuo, seu contexto de execuo (representado pelos registradores da CPU) e sua prioridade. A memria alocada para um processo proporcional ao nmero de threads que o processo possui.

16

Escalonamento de threads
No Windows 2000/XP o escalonador utiliza mltiplas filas e os processos interativos (I/O bound) possuem prioridade sobre os CPU bound. O escalonamento baseado em prioridades. Cada thread possui uma prioridade, que varia de 0 a 31 (0 a menor e 31 a maior). A prioridade 0 atribuda a uma thread especial, chamada zero thread, que responsvel por zerar as pginas livres no sistema. Somente esta thread pode receber a prioridade 0. As prioridades definem duas classes de threads:
Real time: prioridades de 16 a 31; Normal: prioridades de 0 a 15.

Existe ainda uma classe especial chamada idle, a de mais baixa prioridade. Threads nesta classe somente executam quando no existem outras threads aptas (portanto, threads dessa classe no interferem na performance no causam overhead).

17

Fila de aptos no Windows 2000/XP


sedadiroirP
Tempo Real Normal

eldi

41

51

61

03 92

13
T4 T7 T3 T9 T5 T1

18

Escalonamento de threads
O escalonador escolhe sempre a thread de maior prioridade. As threads da classe real time executam at terminar ou se bloquear. As threads com prioridade normal (0 a 15) recebem fatias de tempo.
no sistema Windows 2000 professional, a fatia de tempo de 20 ms (para favorecer a interatividade). no Windows 2000 Server, a fatia de 120 ms (para gerar menos trocas de contexto).

Cada thread recebe uma prioridade base ao ser criada. Para os processos de tempo real (prioridade entre 16 e 31) esta prioridade no se altera. Processos com prioridade entre 0 e 15 tm a prioridade ajustada em tempo de execuo:
Processos que retornam de operaes de I/0 recebem um bnus de aumento, que depende do perifrico (ex. 1 para disco e 6 para teclado). Aps operaes de sincronizao, os processos tambm recebem um aumento de prioridade, dependendo da natureza do processo.

19

Escalonamento em mquinas SMP


Durante a instalao do kernel, se detectada a presena de mais de um processador, carregado o suporte ao multiprocessamento. Independentemente de haver um nico processador ou vrios, vai existir somente uma fila de processos aptos (e a estrutura aquela j vista). Porm, a existncia de mltiplos processadores vai permitir o paralelismo fsico na execuo das threads. Se existem N processadores, o escalonador garante que as N threads de mais alta prioridade estejam em execuo nesses processadores. O Windows 2000 implementa o conceito de afinidade, que define o processador onde a thread deve executar. A afinidade pode ser:
Hard indica a existncia de uma dependncia que obriga a thread a rodar sempre no processador especficado Soft o sistema tenta executar a thread no processador que ela havia ocupado previamente, para aproveitamento de dados da execuo anterior que podem se encontrar em cache (o que implica em ganho de performance).

20

Anda mungkin juga menyukai