Anda di halaman 1dari 59

Joo Igor Moura

Um programa em execuo, o qual constitudo por uma seqncia de instrues, um conjunto de dados e um registro descritor.

Diferenciao entre programa e sua execuo: Programa:


Entidade esttica e permanente Passivo sob o ponto de vista do OS

Processo:
Entidade dinmica e efmera
Altera seu estado a medida que avana sua execuo

Composto por cdigos, dados e contexto Identificado por um nmero nico.

Abstrao que representa um programa em execuo Diferentes instncias:


Um programa pode ter vrias instncias em execuo e diferentes processos. Mesmo cdigo (programa) porm dados e momentos de execuo (contexto) diferentes.

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.

Concluso de E/S ou Concluso de evento

Pronto Bloqueado Em execuo


Espera de E/S ou evento
Suspender Retornar Retornar Estados ativos

Suspender

Suspender

Estados suspensos

Suspenso pronto

Concluso de E/S ou Concluso de evento

Suspenso bloqueado

G
H I J

init klogd login httpd

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

Informaes Informaes Informaes Informaes

de de de de

Escalonamento de CPU; gerncia de memria; contabilizao; estado de E/S.

PCB

Informaes de escalonamento de CPU:


Prioridade de Processo; Ponteiros para Filas de Escalonamento; Parmetros para Escalonamento.

Informaes de gerncia de memria:


Valores dos Registradores de Base e Limite da memria; Tabelas de Pginas ou as Tabelas de Segmentos (dependendo do modelo de Gerenciamento de Memria adotado pelo S.O.).

Informaes de contabilizao:
Quantidade de CPU; Tempo Real Usado pelo Processo; Nmero de contas; Nmero de Jobs ou processos, dentre outros.

Informaes de estado de E/S:


Lista de Dispositivos de E/S alocados para um processo; Lista de Arquivos Abertos, dentre outras informaes.

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;

Wellington Wagner F. Sarmento

Todo S.O. que suporte processos deve possuir uma System Call que permita cri-los;

Exemplo de System Call para a criao de processo: fork();

O processo que cria outro chamado de Processo Pai e o criado, Processo Filho;

Um processo filho pode criar outros processos;


Esta relao entre processos criadores e criados estabelece uma hierarquia de processos;

No Minix, como no Linux, existe um processo inicial (raiz), chamado Init;

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.

Seqncia de execuo de processos no Minix:


Init -> Terminais Virtuais -> Login -> Shell -> Comandos e outros aplicativos;

Parte do S.O. responsvel por gerenciar os tempos de execuo dos processos;

Tambm chamado de Escalonador;


Escalonamento: tarefa de alocar tempo de CPU a diferentes tarefas dentro de um S.O.

Processos versus Threads

Utilidade de Threads Implementao de Threads

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.

2 Consiste numa linha ou contexto de execuo, normalmente chamada Thread

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

Criao de processos concorrentes utilizando a construo

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

pai JOIN JOIN

FORK JOIN JOIN

Inter Process Communication


Pipes, Shared Memory, Signal etc.

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.

Nvel 1 (FIFO) Preempo

Usa a CPU

Trmino

Nvel 2 (FIFO) Preempo

Usa a CPU

Trmino

Nvel n (round robin) Preempo

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.

Fair Share Scheduling FSS. Utilizado para grupos de processos


Linux Processos de usurios

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.

Joo Igor Moura. joaoigormoura@gmail.com

Anda mungkin juga menyukai