A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Informática Numaboa - Referências

Processos e Linhas de processo

Dom

27

Mai

2007


10:21

(10 votos, média 3.30 de 5) 


Simplificando ao extremo, um PROCESSO é simplesmente um programa em execução. A execução do programa segue uma sequência de instruções. Podemos dizer que o programa segue o "fio da meada" das instruções, ou seja, possui no mínimo uma LINHA DE PROCESSO.

A linha de processo (thread) ocupa tempo do processador, onde as instruções são executadas. Daí a definição:

Linha de processo é a unidade básica para a qual o sistema operacional aloca tempo de processador.


Image

Uma linha de processo pode executar qualquer parte do código do processo, inclusive partes que estejam sendo utilizadas por outra linha de processo.

Mas nem só de código vive um processo. Cada processo precisa fornecer todos os recursos necessários para que o programa possa ser executado. Um processo possui um espaço de endereçamento virtual, código executável, dados, manipuladores (handles) de objetos, variáveis do ambiente e uma prioridade básica. Para cada processo que é iniciado, o sistema operacional atribui uma linha de processo inicial, geralmente chamada de linha de processo primária. Depois, se for necessário, o processo pode criar linhas de processo adicionais.

A multitarefa

Imagine um processo e sua linha de processo primária ocupando todo o tempo do processador. A uma certa altura, o processo cria uma segunda linha de processo que vai percorrer um caminho diferente na sequência de instruções. Neste caso, o processador precisa prestar serviços às duas linhas de processo, dividindo o tempo entre as duas. Pronto, nasceu a MULTITAREFA!

O Windows foi desenhado para realizar multitarefas preemptivas. Para quem não sabe, preempção é o mesmo que prioridade, preferência, direito de aquisição. E é isso mesmo o que acontece: cada linha de processo passa a ter direito a uma parte do tempo do processador. É claro que o processador não pode atender todas as linhas de processo de todos os processos em execução ao mesmo tempo. É aí que ele pratica a preempção... faz rodízio de atendimento e aloca uma fatia do seu tempo para cada linha de processo.

A duração da fatia de tempo depende do sistema operacional e do processador. De qualquer maneira, como as fatias de tempo são muito pequenas (aproximadamente 20 milisegundos), o processamento de múltiplas linhas de processo dá a impressão de ser simultâneo. Para o usuário, é como se fosse "assobiar e chupar cana ao mesmo tempo". Para o processador é uma roda viva! Se houver processos demais e/ou linhas de processo em excesso, o processador perde o fôlego e o rendimento do sistema pode cair muito.

Todas a linhas de processo de um determinado processo compartilham seu espaço de endereçamento virtual e os recursos do sistema. É claro que precisa ser assim, senão as linhas de processo iriam se estranhar. Adicionalmente, cada linha de processo mantém manipuladores de exceção (que controlam erros que possam ocorrer), a sua prioridade de atendimento e um jogo de estruturas que o sistema usa para guardar o contexto da linha de processo enquanto ela não é atendida.

Para o usuário, a vantagem de um sistema multitarefa está no fato de poder usar vários aplicativos que trabalhem simultaneamente. Por exemplo, enquanto estiver trabalhando num editor de texto, outro aplicativo pode estar recalculando uma extensa planilha de cálculos.

Para o programador também existem vantagens. Ele pode criar aplicativos que utilizem mais de um processo, cada um deles com uma ou mais linhas de processo. Por exemplo, um aplicativo pode ter uma linha de processo para a interface do usuário que gerencia a entrada do teclado e do mouse, enquanto uma segunda linha de processo realiza um trabalho diferente. Dando uma prioridade maior à linha de processo que atende o usuário, este será atendido mais rapidamente e o trabalho de fundo usará o processador com eficiência sempre que a primeira estiver ociosa.


Prioridades

O processador não atende as linhas de processo "a la burra", simplesmente uma depois da outra. Cada linha de processo possui uma prioridade de atendimento. O nível de prioridade varia de zero (a prioridade mais baixa) a 31 (a prioridade mais alta). Apenas a linha de processo da página zero possui prioridade zero. Esta linha é uma linha de processo do sistema.

Cada processo em execução pertence a uma determinada classe de prioridade: ociosa, normal, alta prioridade ou tempo real. A prioridade da classe tempo real é do tipo alerta vermelho - interrompe todas as linhas de processo do sistema que gerenciam as entradas do mouse, do teclado e que realizam tarefas de manutenção de disco - praticamente sequestra o processador. A alta prioridade ocupa a maior parte do tempo do processador, deixando muito pouco para as outras classes. A normal, bem... é apenas a normal, e a ociosa é quando o processo está tirando uma soneca smile

Cada linha de processo possui um determinado nível de prioridade: ocioso, baixo, abaixo do normal, normal, acima do normal, alto e crítico. A combinação da classe de prioridade do processo com o nível de prioridade da linha de processo resulta na chamada prioridade básica da linha de processo. A tabela abaixo mostra as composições possíveis para a prioridade básica:

Nível Classe do processoNível da linha
1 ociosa, normal ou altaocioso
2 ociosabaixo
3 ociosaabaixo do normal
4 ociosanormal
5 (processos de fundo) normal, ociosaacima do normal
6 (processos de fundo) normalabaixo do normal
ociosaalto
7 (processos de frente) normalabaixo do normal
(processos de fundo) normalnormal
8 (processos de frente) normalabaixo do normal
normalacima do normal
9 (processos de frente) normalnormal
normalalto
10 (processos de frente) normalacima do normal
11 alta prioridadebaixo
(processos de frente) normalalto
12 alta prioridadeabaixo do normal
13 alta prioridadenormal
14 alta prioridadeacima do normal
15 ociosa, normal, alta prioridadecrítico
alta prioridadealto
16 tempo realocioso
22 tempo realbaixo
23 tempo realabaixo do normal
24 tempo realnormal
25 tempo realacima do normal
26 tempo realalto
31 tempo realcrítico

Tanto a classe de prioridade do processo quanto o nível de prioridade da linha de processo podem ser alteradas durante a execução. Por exemplo, determinado processo (normal) pode ter uma missão crítica guiada por uma linha de processo (crítico). Durante o tempo em que esta tarefa precisa ser realizada, o nível de prioridade da linha pode estar em crítico. Depois de realizada a tarefa, pode-se baixar o nível para ocioso para não "amarrar" a execução.

william hill букмекерская контора сайтсковороды грильлобановский александр женавнедрение microsoftарсен аваковтруба нержавеющая 1020 14 ст 20х23н18 купить никас

Informações adicionais