Академический Документы
Профессиональный Документы
Культура Документы
2 Windows
2.1 Um breve histrico
thread est sendo executado (apenas deixa esse estado quando termina, atinge
o quantum ou sofre preempo); terminado, quando for concludo, quando
concludo no necessariamente excludo, j que isso ocorre apenas quando a
contagem de referncia do thread atinge zero; espera, quando espera por
alguma operao externa, como por exemplo a concluso de um I/O, apenas sai
quando essa operao termina ou quando outro thread com permisses
suficientes determina; transio, quando a espera termina mas necessita que
sua pilha do ncleo, foi paginada para fora da memria, volte para a memria,
ele volta para o estado pronto quando sua pilha volta para a memria; e por fim
e estado desconhecido que o SO coloca o thread quando no tem certeza do
seu estado. Na imagem a seguir (figura 2) ser mostrado um diagrama que
mostra os estados e as transies entre eles.
2.2.3 Escalonamento
O algoritmo de escalonamento, que no Windows chamado de
despachador, escalona os threads de acordo com sua prioridades, quando o
thread fica no estado pronto os depachador o coloca na fila que corresponde sua
prioridade. Existem 32 nveis de prioridade, sendo o 31 o mais alto e o 0 o mais
baixo. O thread, que for criado, entra na fila com maior e escalonado. Onde o
algoritmo executa os algoritmos da fila de maior prioridade, at que todos os
seus threads tenham sido executados, assim ele comea a executar os threads
da prxima fila mais baixa em relao a essa, caso algum thread surja numa fila
de prioridade superior, o thread em execuo sofre preempo, quando a
execuo termina o despachador volta a executar o primeiro thread da fila mais
alta que tiver threads.
Os threads so executados por no mximo um quantum. Caso haja
preempo, os threads de tempo real (de processos de tempo real, exemplo,
uma programa que deve ser atualizado ou executar uma ao a cada
determinado perodo de tempo real), o seu quantum reajustado, isso permite
que o Windows favoream esses threads, j que eles precisam altos nveis de
prioridade e resposta.
Dos 32 nveis de prioridade os threads de tempo real ocupam do 16, ao
mais alto 31. Os threads dinmico ocupam do 0 ao 15, sendo que o 0 apenas
so ocupados pelos threads 0 ou threads de pgina zero, que so responsveis
por zerar as pginas de memria livres para que fiquem prontas para serem
usada.
Na determinao da prioridade existem seis classes, as classes de
prioridade bsica, onde os threads podem ser encaixados: ocioso, abaixo do
normal, normal, acima do normal, alto, essas cinco primeira so ocupadas
apenas por threads dinmicos, e a sexta que a de tempo real que ocupada
por threads de tempo real. E dentro de cada uma dessas classes existem os
nveis de prioridade bsica, que so: ocioso, mais baixo, abaixo do normal,
normal, acima do normal, mais alto e tempo crtico. A combinao das classes
de prioridade bsica com os nveis de prioridade bsica vo definir a posio na
qual o thread se encaixar, ou seja, determina a prioridade bsica do thread. Por
exemplo, classe de tempo real com nvel de tempo crtico o thread ocupar a 31
posio, a mais alta. Classe de tempo real e nvel ocioso o thread ocupar a 16
posio. Classe normal e nvel normal, 7 posio. Sendo assim:
classe de prioridade + nvel de prioridade = prioridade bsica
A prioridade do thread aumentada quando ele sai do estado de espera.
E decrementada quando o thread em execuo atinge seu quantum. Porm, a
prioridade do thread dinmico nunca ser decrementada para um nvel menor
que seu prioridade bsica e nunca atingir a faixa de tempo real. Para impedir
que ocorra starvation o algoritmo examina a fila de prontos periodicamente o
intervalo de alguns segundos, elevando a prioridade de threads dinmicos que
no esto sendo executados a algum tempo. O que tambm evita a inverso de
prioridades onde um thread de prioridade alta impedido de ser executado por
um thread de prioridade bsica, como por exemplo, no caso de um thread de
um processo de prioridade alta depender da execuo de um thread de
prioridade baixa, que por sua vez, est sendo impedido de executar por um
thread que esta numa prioridade intermediria.
2.2.4 Escalonamento em multiprocessadores
Os processos e threads podem especificar os processadores que sero
executados por preferncia, para isso eles especificam sua mscara de
afinidade, um conjunto de processadores onde os eles tem permisso de
executar. Um thread tambm pode especificar uma mscara de afinidade dentro
da mscara que j pertence a ele. Essas mscaras so utilizadas para que
processos mais complexos no interfiram com processos mais crticos em
relao ao tempo. Alm dessas mscaras, os threads podem definir o seu
processador ideal e seu ltimo processador. O primeiro ajuda os threads a
executarem em paralelo em processadores diferentes ou no mesmo processador
para que possam compartilhar os recursos do cache. Por padro, o Windows
distribui threads do mesmo processo em processadores ideais diferentes, isso
aumenta as chances dos dados usados por um thread que j esto no cache,
permaneam e sejam usados novamente caso o thread seja executado
novamente.
3. Linux
3.1 Um breve histrico
O Sistema Linux foi criado por Linus Benedict Torvalds, em 1991. Ele era um
estudante com 21 anos da Universidade de Helsinki, desenvolveu o ncleo Linux
partir cdigo fonte do Minix, que foi desenvolvido pelo professor Andrew S.
Tannenbaum, este estava disponvel publicamente para que pudesse ser
demonstrado os conceitos bsicos de implementao de sistemas operacionais.
Serviu para o inicio do Linux. Ele procurou primeiramente quem j estava
familiarizado com o sistema e a partir das deficincias encontradas, ele
consegue projetar o Linux (deriva de Linus e UNIX) como um passatempo,
lanando na sua primeira verso (0.01) em setembro de 1991. Linus deixou
disponvel o cdigo fonte da sua primeira verso com isso foi criada uma
comunidade que at hoje ajuda a desenvolver e suportar o Linux, com o passar
do tempo e com as constantes modificaes em cima dos erros apresentados
pela comunidade, e aplicando o que ele julgava coerente, criando um novo
sistema operacional disponvel e gratuito porem complexo.
gratuito.
Atualmente
ele
possui
um
patrimnio
estimado
em
10
no foi eliminado (no caso de um processo ser terminado, at que todos os seu
threads sejam terminados tambm ele fica no estado zumbi); morto que indica
que o processo pode ser eliminado; e dois estados de escalonamento o ativo e
expirado, eles no so armazenados na varivel state descrita acima. Na
imagem a seguir (figura 4) ser mostrado um diagrama que mostra os estados e
as transies entre eles.
11
assume o processador (com exceo dos processos de tempo real, que sero
explicados mais a frente). Para garantir que o quantum seja muito pequeno ou
excessivamente grande, o algoritmo garante que a faixa de tempo do quantum
seja de 10 a 200 milissegundos. Quando uma tarefa sofre preempo o seu
estado salvo em sua task_struct, se seu quantum for atingido, a prioridade do
processo recalculada e determinada seu prximo quantum e inicia o prximo
processo da fila.
Quando um processo criado ele entra na fila de execuo, junto a todos
os outros processos que esto aguardando a liberao da CPU, nas filas de
execuo sero atribudas a prioridades dos processos. O algoritmo tambm
define a poca que o perodo de tempo onde todos os processos da fila de
execuo devero ser executados ao menos uma vez. Para diferenciar os
processos ainda no executados dos outros existem dois dos estados
mencionados acima o ativo e o expirado, o algoritmo executa apenas os do
estado ativo. A durao dessas pocas definido pelo limite de inanio, um
valor estabelecido a partir de alguns testes, isso faz com que processos com alta
prioridade sejam atendidos rapidamente e ao mesmo tempo no deixa que
processos de baixa prioridades. Por padro o limite inanio de 10n segundos
(n o quantidade de processos na fila de execuo). Quando o tempo da poca
ultrapassa o tempo definido pelo limite de inanio, a CPU executa os processos
no estado ativo, assim que o quantum atingido, os coloca no estado expirado,
quando todos os processos estiverem expirados, temos o incio de uma nova
poca e todos os processos expirados tornam-se ativos novamente.
Quando um processo passa do estado ativo para o espirado, o algoritmo
mantm a prioridade dos processos, para isto existem o arranjo de prioridades,
que para os processos ativos chamado de lista ativa e para os expirados que
chamado de lista expirada.
3.2.4 Prioridade
Com algoritmo de escalonamento do Linux, a prioridade determina o
tamanho do quantum e a ordem de execuo dos processos. Quando so
criados os processos ganham uma prioridade esttica e quando o valor da
prioridade alterado tornasse prioridade efetiva. O valor da prioridade vai de -
12
20, sendo a prioridade mais alta, at 19, sendo a mais baixa. O algoritmo tem a
meta de atingir um alto nvel de interatividade, porque tarefas interativas
normalmente so bloqueadas para esperar um I/O, o algoritmo aumenta a
prioridade, j que processos desse tipo muitas vezes executam pouco tempo de
CPU, e nem chegam a atingir seu quantum j passam para o estado bloqueado.
Sendo assim os processos I/O-bound tem prioridades mais altas que os CPUbound, o que muito eficiente j que os I/O-bound ficam pouco tempo na CPU
e consequentemente ela ficara livre mais rapidamente. Porm, para garantir que
um processo seja executado na prioridade que lhe foi atribuda, ou ao menos
prximo a isso, o algoritmo no deixa que a diferena entre o nvel de prioridade
esttica e o nvel de prioridade efetiva no supere mais que 5 unidades.
3.2.5 Escalonamento em tempo real
O escalonamento em tempo real usado para escalonar processos em
tempo real, por exemplo, uma programa que deve ser atualizado ou executar
uma ao a cada 20 segundos. O algoritmo do Linux suporta esse tipo de
escalonamento. Diferente de um processo normal, o de tempo real no
transferida para a lista expirada, os processos de tempo real tem sempre
prioridades em relao aos normais, um processo de tempo real nunca retirado
da lista de ativos e nunca sofre preempo de um processo normal.
Se uma tarefa especificar escalonamento Round Robin, quando seu
quantum for atingido e recebera uma nova fatia de tempo e voltara para o final
da fila de prontos, ou seja, para o final da fila de seu arranjo de prioridades da
lista ativa. Se especificar o algoritmo FIFO, como no recebe quantum, ser
executado at ser concludo ou ser bloqueado, j que no pode sofre
preempo. Se no forem codificados corretamente, os processos de tempo
real, podero prejudicar a execuo dos outros processos. Por isso os processos
de tempo real so criados apenas pelos usurios root.
3.2.6 Escalonamento em multiprocessadores
Como o escalonador mantm as tarefas em uma fila de execuo por
processo, possivelmente uma tarefa ser sempre despachada para o
processador que tem uma alta afinidade, o que aumenta o desempenho j se as
13
14
15
4 Concluses
Em relao ao gerenciamento de processos, conclumos que apesar do
Windows e do Linux serem sistemas bem diferentes, sua gerencias de
processamento tem objetivos similares, obviamente garantir o melhor
gerenciamento de processos e aproveitamento do processador, e garantem isso
16
17