Um programa em execuo, o qual constitudo por uma seqncia de instrues, um conjunto de dados e um registro descritor.
Processo:
Entidade dinmica e efmera
Altera seu estado a medida que avana sua execuo
Forma pela qual um sistema operacional enxerga um programa e possibilita sua execuo:
Acordado
Em execuo
Despacho
Adormecido
Bloqueio
Bloqueado
Temporizador esgotado
Pronto
Despertar
Criados
Momento de execuo Chamadas de sistemas Podem ser associados a uma sesso de trabalho
Destrudos
Trmino de Execuo Por outros processos
Se um processo passa a maior parte do tempo esperando por dispositivos de E/S, diz-se que o processo limitado por E/S (I/O-bound). Se, ao contrrio, o processo gasta a maior parte do seu tempo usando a CPU ele dito limitado por computao (compute-bound ou CPU-bound ou ainda UCP-bound). Obviamente, processos I/O-bound devem ter prioridade sobre processos CPU-bound.
Alm dos estados vistos acima, o Processo pode ter os estados: Novo: quando est sendo criado; Inativo ou Morto: quando sua execuo finalizada.
Suspender
Suspender
Estados suspensos
Suspenso pronto
Suspenso bloqueado
G
H I J
xfs
rpcd
bash
vi
ls
ps
Se diz que um algoritmo/sistema operacional preemptivo quando um processo entra na CPU e o mesmo pode ser retirado da CPU antes do trmino da execuo do mesmo.
Processos independentes
Grupo de processos
Hierarquia de processos Representao atravs de uma arvore Semntica associada
de de de de
PCB
Informaes de contabilizao:
Quantidade de CPU; Tempo Real Usado pelo Processo; Nmero de contas; Nmero de Jobs ou processos, dentre outros.
O PCB tambm chamado de Tabela de Processos; Atravs desta tabela que o S.O. controla os processos e fornece informaes para os algoritmos de escalonamento da CPU;
Todo S.O. que suporte processos deve possuir uma System Call que permita cri-los;
O processo que cria outro chamado de Processo Pai e o criado, Processo Filho;
Quando um processo pai finalizado, ele pode deixar um processo filho , que ser chamado de processo rfo;
Os processos-rfos, no S.O. Posix, so assumidos pelo Init.
uma forma de um processo dividir a si mesmo em duas ou mais tarefas que podem ser executadas concorrentemente. O suporte thread fornecido pelo prprio sistema operacional (SO) Uma linha de execuo permite que o usurio de programa, por exemplo, utilize uma funcionalidade do ambiente enquanto outras linhas de execuo realizam outros clculos e operaes.
O conceito de um Processo pode ser dividido em dois : 1: um agrupamento de recursos necessrios para a execuo duma programa. Por exemplo :
um espao de endereamento (virtual address space) que contem o texto do programa e dados uma tabela de Descritores de Ficheiros abertos informao sobre processos filhos cdigo para tratar de sinais (signal handlers) informao sobre Permisses, Nome do Utilizador etc.
Uma thread tem um programa counter (pc) que guarde informao sobre a prxima instruo a executar Registadores valores das variaveis atuais Stack contem a historia de execuo com um frame para cada procedimento chamado mas no terminado
Programa principal
Spawned processes (giria de windows)
FORK FORK
filho e pai do
fork-join
pid = fork() if (pid == 0) cdigo executado pelo filho else cdigo executado pelo pai if (pid == 0) exit (0); else wait (0); //esperar pelo filho .. JOIN
A principal razo para a existncia da Thread que em muitas aplicaes ocorrem mltiplas atividades ao mesmo tempo, algumas atividades podem bloquear ao longo do tempo, porm as threads no tm quaisquer recursos associados a eles.
Um exemplo simples pode ser expressado atravs de um jogo onde o mesmo pode ser modelado com linhas de execuo diferentes, sendo uma para desenho de imagem e outra para udio; Neste caso, h um thread para tratar rotinas de desenho e outro thread para tratar udio; No ponto de vista do usurio, a imagem desenhada ao mesmo tempo em que o udio emitido pelos autofalantes; Porm, para sistemas com uma nica CPU, cada linha de execuo processada por vez;
so suportadas pela aplicao, sem conhecimento do ncleo e geralmente so implementadas por pacotes de rotinas (cdigos para criao, trmino, escalonamento e armazenagem de contexto) fornecidas por uma determinada biblioteca de uma linguagem, como o caso da thread.h (biblioteca padro da linguagem C).
O gerenciamento de linha de execuo (KLT) no realizado atravs do cdigo do prprio programa; todo o processo subsidiado pelo SO.
Vantagens: Esse modelo tem a vantagem de permitir o suporte a multiprocessamento e o fato do bloqueio de uma linha de execuo no acarretar bloqueio de todo processo
Desvantagem: temos a desvantagem de ter que mudar o tipo de acesso sempre que o escalonamento for necessrio aumentando assim o to temido overhead.
Quando um ou mais processos esto prontos para serem executados, o sistema operacional deve decidir qual deles vai ser executado primeiro. A parte do sistema operacional responsvel por essa deciso chamada escalonador, e o algoritmo usado para tal chamado de algoritmo de escalonamento.
1. 2. 3. 4.
5.
Justia: fazer com que cada processo ganhe seu tempo justo de CPU; Eficincia: manter a CPU ocupada 100% do tempo (se houver demanda); Tempo de Reposta: minimizar o tempo de resposta para os usurios interativos; Tempo de Turnaround: minimizar o tempo que usurios batch devem esperar pelo resultado; Throughput: maximizar o nmero de jobs processados por unidade de tempo.
Uma complicao que os escalonadores devem levar em considerao que cada processo nico e imprevisvel.
Para que um processo no execute tempo demais, praticamente todos os computadores possuem um mecanismo de relgio (clock) que causa uma interrupo periodicamente.
Processos so despachados de acordo com sua ordem de chegada na fila de processos prontos do sistema. Uma vez que um processo ganhe a CPU, ele roda at terminar. FIFO uma disciplina no preemptiva.
Cada processo recebe um intervalo de tempo, chamado quantum, durante o qual ele pode executar. Se o processo ainda estiver executando ao final do quantum, a CPU dada a outro processo. Se um processo bloqueou ou terminou antes do final do quantum, a troca de CPU para outro processo obviamente feita assim que o processo bloqueia ou termina. preemptivo.
Mudar de um processo para outro requer um certo tempo para a administrao salvar e carregar registradores e mapas de memria, atualizar tabelas e listas do SO, etc. Isto chama-se troca de contexto. Suponha que esta troca dure 5 ms. Suponha tambm que o quantum est ajustado em 20 ms. Com esses parmetros, aps fazer 20 ms de trabalho til, a CPU ter que gastar 5 ms com troca de contexto. Assim, 20% do tempo de CPU gasto com o overhead administrativo
Para melhorar a eficincia da CPU, poderamos ajustar o quantum para 500 ms. Agora o tempo gasto com troca de contexto menos do que 1 %. Considere o que aconteceria se dez usurios apertassem a tecla <ENTER> exatamente ao mesmo tempo, disparando cada um processo. Dez processos sero colocados na lista de processo aptos a executar. Se a CPU estiver ociosa, o primeiro comear imediatamente, o segundo no comear antes de segundo depois, e assim por diante. O azarado do ltimo processo somente comear a executar 5 segundos depois do usurio ter apertado <ENTER>, isto se todos os outros processos tiverem utilizado todo o seu quantum. Muitos usurios vo achar que o tempo de resposta de 5 segundos para um comando simples muita coisa.
Ajustar um quantum muito pequeno causa muitas trocas de contexto e diminui a eficincia da CPU, mas ajust-lo para um valor muito alto causa um tempo de resposta inaceitvel para pequenas tarefas interativas. Um quantum em torno de 100 ms freqentemente um valor razovel.
Cada processo possui uma prioridade associada, e o processo pronto para executar com a maior prioridade quem ganha o processador. Para evitar que processos com alta prioridade executem indefinidamente, o escalonador pode decrementar a prioridade do processo atualmente executando a cada tick de relgio. Se esta ao fizer com que a prioridade do processo se torne menor do que a prioridade do processo que possua a segunda mais alta prioridade, ento uma troca de processos ocorre.
Se as prioridades no forem ajustadas de tempos em tempos, os processos nas classes de prioridades mais baixas podem sofrer o fenmeno que chamamos starvation (o processo nunca recebe o processador, pois sua vez nunca chega).
Alternncia circular egosta. O processo fica em uma fila at atingir a maturidade suficiente, depois entra na fila Round-Robin tradicional. Processos mais antigos so favorecidos.
Favorecer pequenos jobs; Favorecer jobs limitados por E/S para atingir uma boa utilizao dos dispositivos de E/S; e Determinar a natureza de um job to rpido quanto possvel e escalonar o job de acordo. Multilevel feedback queues (filas multi-nvel com retorno) fornecem uma estrutura que atinge esses objetivos.
Usa a CPU
Trmino
Usa a CPU
Trmino
Usa a CPU
Trmino
No escalonamento com prazos certos jobs so escalonados para serem completados at uma certa data ou hora, ou um prazo. Esses jobs podem ter alta importncia se entregues dentro do tempo, ou podem no ter utilidade alguma se terminarem de ser processados alm do tempo previsto no prazo.
Shortest-job-first (o menor job primeiro) um algoritmo no preemptivo no qual o job na fila de espera com o menor tempo total estimado de processamento executado em seguida. SJF reduz o tempo mdio de espera sobre o algoritmo FIFO. Entretanto, os tempos de espera tem uma varincia muito grande (so mais imprevisveis) do que no algoritmo FIFO, especialmente para grandes jobs. SJF favorece jobs pequenos em prejuzo dos jobs maiores. Tambm pode ser encontrado como SPF (shortestprocess-first)
Menor tempo de execuo restante. Alternativa preemptiva ao SJF ou SPF. Tenta aumentar o rendimento atendendo pequenos processos que chegam.
Os processos do conjunto so manipulados por outros algoritmos de escalonamento. EX. Uma CPU para dois usurios:
User 1: 50 % User 2: 50 %
1.
2.
3.
Tirando suas prprias concluses, defina processos e sua importncia para o sistema operacional: O que Mudana ou Troca de Contexto de Processos? Quais as informaes contidas no PCB? Como ocorre a criao, finalizao dos processos e como eles so implementados em relao a utilizao do hardware.
4.
4.
5. 6. 7.
Por que poderia se til acrescentar um estado morto ao diagrama de transio de estado ? O que so Threads e para que so usadas? Diferencie Thread de usurio e de ncleo. O que um Processo Limitado por I/O e um Processo Limitado por CPU? Como o escalonador se comporta dentro do OS? D exemplo de algum algoritmo de escalonamento explicando o mesmo.