Você está na página 1de 4

1.

Gerenciamento de processos Um processo um programa carregado na memoria composto por todos os seus recursos atribudos, mas o processo esttico e no faz nada sozinho. Uma thread executa comandos de programas, segundo um caminho bem definido na execuo de um determinado cdigo. O NT trata processo como um objeto do tipo processo e uma thread como um objeto do tipo thread, e a todo processo atribudo pelo menos um objeto thread inicial. Opcionalmente a thread inicialpode criar outras threads. Todas as threads que pertencem a um mesmo processo compartilham todos os recursos deste processo (memria, handle, token, etc..) No nvel do sistema, uma thread um objeto gerenciado pelo Gerenciador de Objetos e a maioria dos mtodos de uma thread tem uma correspondncia direta com uma funo de API Win32, de modo que quando voc chama um mtodo, na verdade o subsistema a qual este programa pertence faz uma chamada de sistema Win32. Algumas chamadas importantes podem ser vista na tabela 1:
CreateProcess CreateThread GetThreadPriority SetThreadPriority SuspendThread ExitThread TerminateThread TerminateProcess 10 argumentos; retorna o PID 6 argumentos; retorna o handle Handle Handle Handle Handle Handle PID
Tabela1: Chamadasimportantes.

1.1 Escalonamento Nas antigas verses do Windows, pouca implementao se tinha em termos de escalonamento. Basicamente o sistema era monotarefa e no preemptivo, alm disso, no existia um mdulo de escalonamento, ficando os algoritmos com essa funcionalidade espalhados pelo kernel. O Windows NT multithread e possui diversas funcionalidades importantes para gerenciamento de processos.

4.2 Estados de Thread Basicamente todo o gerenciamento de schedule feito com o objeto thread, estes assumem 6 estados conforme ilustra a Figura X.x: Pronto: quando as threads esto aptas para executar, esto disposio do escalonador que pode seleciona-las a qualquer momento para alguma fila de execuo. Ativa: Estado em que a thread foi selecionada pelo escalonador e aguarda em alguma fila a troca de contexto para entrar em execuo. Execuo: estado assumido enquanto detm o processador; fica neste estado at que seja preemptada ou finalize. Espera: A thread pode ficar em estado de espera basicamente em trs situaes: 1- for bloqueada por algum evento de entrada e sada ou trap. 2- primitiva de sincronizao (espera de recurso). 3- suspenso. Transio: corresponde ao estado de apta, entretanto, falta algum recurso do sistema necessrio para ser ativada, por exemplo paginao. Termino: Estado assumido depois de ter sido totalmente executada pelo processador, ou terminada por outra thread ou mesmo pelo processo a que pertena.

Estado de Threads 1

4.3 Nveis de Prioridade Outro aspecto importante usado para o escalonamento de thread so os nveis de prioridade, visto que o escalonador preempitivo com prioridades. O Windows implementa 32 nveis, os quais so divididos duas classes: tempo real e tempo varivel. A denominao tempo-real no significa um sistema de tempo real, e sim um tipo de prioridade fixa, com alguma vantagem sobre as de tempo varivel, este nvel de

prioridade vai de 16 a 31. As prioridades variveis so um pouco mais complexas, visto que uma thread pode ser criada com uma prioridade e dependendo das manipulaes e trocas de estado sua prioridade vai ser incrementada ou decrementada; threads de prioridade variveis vo de 1 a 15. A thread de prioridade 0, exclusiva do sistema operacional, e utilizada por alguns algoritmos, por exemplo quando a CPU est ociosa ou quando o Gerenciador de Memoria precisa zerar pginas. Eventos de entrada e sada sempre recebem prioridades de tempo real, e mesmo se uma thread de tempo real estiver sendo executada ela dever dar espao ao evento de E/S. O Windows tambm implementa subclasses para as threads de tempo varivel, desse modo elas podem estar com prioridade Hight, Normal ou Idle. Threads tambm possuem seus nveis de prioridade relativos, porqu no NT uma thread no pode ser beneficiada com prioridade muito maior a dos seus pares. Portanto, o escalonamento das threads so baseados em 2 tipos de Prioridade, a bsica (aquela que recebe do processo que a criou) e a sua relativa (aquela que ser manupulada constantemente alterada). A figura X.X ilustra bem isso. No Windows, Guis tambm so threads, e isto leva-nos a uma discusso importante sobre alterao de prioridade de processos, embora o escalonador no leve em considerao os processos em si, o Windows um sistema operacional baseado em eventos e o processo a entidade mais prxima do usurio, este pode alterar prioridades de processos quando bem entender, seja por ferramentas do sistema ou por cliques na rea de trabalho.

Prioridade de threads 1

4.4 Filas Como j vimos, o escalonador utiliza o mtodo de preempo com prioridades, e estas prioridades pertencem a classe de tempo real ou classe de tempo varivel. Para cada nvel de prioridade o escalonador do Windows reserva uma fila, em cada fila usa o

algoritmo Roud Robin. Mas o que acontece quando uma thread preemptada pela chegada de um processo de maior prioridade ou uma IRQ? Neste caso o processo vai para o estado de apto, e assim que terminar a execuo do processo de maior prioridade ele ter sua prioridade incrementada e voltar ao fim de fila de maior prioridade (embora hajam casos em que o processo volte imediatamente a ocupar o processador), mas se a mesma thread voltar a ocupar o processador e no conseguir terminar e acabar sendo preemptada pelo trmino do seu quantum, este ter sua prioridade decrementada e voltar ao fim da fila.

Você também pode gostar