You are on page 1of 102

Sistemas Operacionais

Prof. MSc. Jos Hermano Cavalcanti Filho

jose.cavalcanti@ifpb.edu.br

http://www.ifpb.edu.br
Processos

n Conceito de processo;

n Criao e trmino de um processo;

n Estado de um processo;

n Implementao de processos;

n Fila de processo;

n Escalonador;

n Comunicao entre processos;


Processos

n Um programa em execuo;

n A execuo do processo deve progredir de modo


sequencial;

n Um SO executa diversos programas:

q Sistemas batch jobs;


q Sistemas compartilhados no tempo programas ou tarefas
do usurio;

n Normalmente job e processo so sinnimos;


Processos

n (a) Multiprogramao de quatro programas;

n (b) Modelo Conceitual de quatro processos sequenciais;

n (c) Somente um programa est ativo a cada momento;


Processos

n Um processo inclui:

q Contador de programa (fluxo de controle);

q Pilha;

q Seo de dados;
Processos

n Exemplo:

q Processo Fazer um bolo:


v Receita do bolo (programa/algoritmo);
v Ingredientes (dados de entrada);
v Materiais de cozinha (recursos);
v Cozinheiro (processador);

q Processo Socorro mdico:


v Registra onde parou o processo anterior (estado do
processo);
v Busca um livro de primeiro socorros;
v Segue as instrues;
v Volta para o processo anterior;
Criao de Processos

n criado por um processo existente executando uma


chamada de sistema para a criao de processo;

n Processo pai cria processos filho que, por sua vez, criam
outros processos, formando uma rvore de processos:
q Compartilhamento de recursos;
q Pai e filhos compartilham todos os recursos;
q Filhos compartilham subconjunto dos recursos do pai;
q Pai e filho no compartilham recursos;

n Execuo:
q Pai e filhos executam simultaneamente;
q Pai espera at que filhos terminem;
Criao de Processos

n Espao de endereos:
q Filho duplica do pai;
q Filho tem um programa carregado;

n Exemplos do UNIX:
q Chamada do sistema fork cria novo processos;
q Chamada do sistema exec usada aps um fork para
substituir o espao de memria do processo por um novo
programa;

n Exemplos do Windows:
q Chamada do sistema CreateProcess cria novo processos;
Criao de Processos

n Podem ser de acordo com a utilizao do processador e dos


dispositivos de E/S:

q CPU-bound passa a maior parte do tempo em estado de


execuo, utilizando o processador, ou pronto. Ex.: Clculos
cientficos;

q I/O-bound passa a maior parte do tempo no estado de


espera, pois realiza um elevado nmero de operaes de
E/S. Ex.: Processo interativo, aguardar pelo usurio.
Criao de Processos

n Podem utilizar dois meios de comunicao:

q Foreground (primeiro plano) interagem com usurios;

q Background (segundo plano) no esto associados a


usurios em particular;

v Tambm chamado de Daemon;

v Ex.: aceitar mensagens eletrnicas sendo recebidas,


comando ps linux, gerenciador de tarefas windows, clicar
em um icone de programa no SO;
Criao de Processos
Trmino de um Processo

n Mais cedo ou mais tarde o novo processo terminar,


normalmente em razo de alguma das seguintes condies:

q Sada normal (voluntria);

q Sada por erro (voluntria);

q Erro fatal (involuntrio);

q Cancelamento por um outro processo (involuntrio)


Trmino de um Processo

n Exemplos do UNIX:
q Chamada do sistema exit sada normal;
q Chamada do sistema kill sada por outro processo;

n Exemplos do Windows:
q Chamada do sistema ExitProcess;
q Chamada do sistema TerminateProcess sada por outro
processo;
Trmino de um Processo

n Processo executa ltima instruo e pede ao SO para exclu-


la (exit):
q Dados de sada do filho para o pai (via wait);
q Recursos do processo so desalocados pelo SO;

n Pai pode terminar a execuo dos processos dos filhos


(abort):
q Filho excedeu recursos alocados;
q Tarefa atribuda ao filho no mais exigida;

n Se o pai estiver saindo:


q Alguns SO no permitem que o filho continue se o pai
terminar;
q Todos os filhos terminam trmino em cascata;
Estados de um Processo

n Novo:
q Processo est sendo criado;

n Executando (running):
q Instrues esto sendo executadas;

n Esperando (wait):
q Processo est esperando que ocorra algum evento;

n Pronto (ready):
q Processo est esperando para ser executado;

n Terminado:
q Processo terminou a execuo;
Estados de um Processo
Troca de Contexto

n Quando a CPU passa para outro processo, o sistema deve


salvar o estado do processo antigo e carregar o estado salvo
para o novo processo;

n O tempo de troca de contexto overhead;

n O sistema no realiza trabalho til enquanto faz a troca;

n Tempo dependente do suporte do hardware;


Troca de Contexto
Implementao de processos

n criada uma tabela de processos, com uma entrada para


cada processo;

n Alguns autores chamam essa tabela de PCB Process


Control Block;

n Ela contm informaes associadas a cada processo:


q Estado do processo;
q Contador de programa;
q Registradores da CPU;
q Informao de escalonamento da CPU;
q Informao de gerenciamento de memria;
q Informao de contabilidade;
q Informao de status de E/S;
Filas de Processos

n Fila de job:
q Conjunto de todos os processos no sistema;

n Fila de pronto:
q Conjunto de todos os processos residindo na memria
principal, prontos e esperando para execuo;

n Filas de dispositivo:
q Conjunto de processos esperando por um dispositivo de E/S;

n Processos migram entre as diversas filas;


Filas de Processos
Escalonador

n Responsvel pela ordenao das filas de processos;

n Tipos de escalonadores:

q Longo prazo:
v Seleciona quais processos devem ser trazidos para a fila
de pronto;
v invocado com pouca frequncia (segundos, minutos);
v Controla o grau de multiprogramao;

q Curto prazo:
v Seleciona qual processo deve ser executado em seguida
e aloca CPU;
v invocado muito frequentemente (milissegundos);
Atividades Laboratrio Simulador Sosim (Pg 79)

n Criao de Processos;

n Tipos de Processos;

n PCB;

n Estatsticas;

n Log de execuo;

n Suspenso e Eliminao de Processos;


Threads

n uma linha de execuo de cdigo que executa em paralelo


com outras linhas do mesmo processo, compartilhando seu
espao de memria;

n Na prtica uma thread equivalente a um mini-processo


dentro de um processo;

n Isto permite que vrias aes sejam executadas em paralelo


por um mesmo processo.
Threads

n Em um programa muitas vezes necessrio executar mais


de uma atividade ao mesmo tempo;
q Ex.: aguardar a entrada de dados do usurio e reproduzir um
som enquanto aguarda;

n Uma thread muito mais leve que um processo comum;

n Ganho de performance na criao e destruio de threads se


comparada a processos (10 a 100x);

n Quando uma aplicao tem atividade I/O bound e CPU bound


as threads podem acelerar a execuo, pois no
concorrero por recurso;
Threads

n Exemplo: Utilizar um processador de texto para escrever um


livro de 800 pginas.

q Uma thread para o cursor do editor;

q Uma thread para reformatar o texto;

q Uma thread para salvar o arquivo automaticamente;


Threads

n Se o exemplo anterior tivesse apenas uma thread, ento,


sempre que um backup de disco se iniciasse, os comandos
do teclado e do mouse seriam ignorados enquanto o backup
no terminasse;

n O usurio certamente perceberia isso como uma queda de


desempenho;

n Deve estar claro que trs processos separados no


funcionariam no exemplo dado, pois todos os trs threads
precisam operar sobre o documento;

n Outro exemplo: planilha eletrnica com clculos em certos


campos;
Threads

n Comparativo:
Threads

n O uso de Threads pode garantir um uso mximo dos vrios


processadores existentes em uma CPU;
Threads

n Recursos:

q A thread utiliza os recursos do processo;


Threads

n Recursos:

q Contador de Programa Posio da sequncia da thread;

q Registradores rea que ir armazenar as threads;

q Pilha Instrues que sero executadas;

q Estado O estado da thread (novo, espera, pronto, ...)


Threads

n Comandos comuns:

q Create() Cria uma nova thread;

q Exit() Encerra uma thread liberando os recursos alocados


para esta;

q Join() Aguarda que uma outra thread termine para


continuar a execuo, til quando uma thread necessita de
dados de outra;

q Yield() ou Sleep() Libera a CPU e volta para fila de pronto,


comum quando a atividade da thread no necessria no
momento;
Threads

n Implementao:

q Podem ser implementadas em:

v nvel de usurio

v em nvel de kernel

v forma hbrida;

q As alternativas so vlidas e tem vantagens e desvantagens;


Threads

n Em nvel de usurio:

q Nesse modelo uma biblioteca de threads responsvel por


gerenciar a multiprogramao e escalonamento das threads;

q Cada processo precisa de sua prpria tabela de threads;


Threads

n Em nvel de usurio:

q Nesse modelo a mudana de uma thread para outra rpida


pois no envolve necessariamente uma sytem call;

q A troca entre esses tipos de threads da ordem de


nanosegundos;

q Permitem que cada processo use o algoritmo de


escalonamento que achar mais adequado;

q So mais econmicas quanto ao espao de memria (no


kernel) necessrio para sua implementao;
Threads

n Em nvel de usurio - desvantagens:

q Uma chamada bloqueante pode bloquear todo o processo e


no apenas a thread em questo;

q Uma page_fault pode ocorrer o que causar uma system call


e tambm parar todo o processo;

q Dentro de um processo no h como o escalonador contar o


tempo de uso da CPU para retirar uma thread de execuo a
no ser que esta execute yield;

q A maioria dos processos de usurio que usam threads o


fazem pela caracterstica I/O bound o que implica que
bloquearo o sistema sempre que fizerem I/O;
Threads

n Em nvel de kernel:

q Nesse modelo o kernel cuida da criao e escalonamento


das threads de todos os processos;

q O ncleo tem uma tabela de threads;


Threads

n Em nvel de kernel:

q As chamadas de criao e fim de threads so gerenciadas


pelo kernel;

q Isso significa um overhead para essas operaes;

q Este modelo de implementao resolve um problema grave


das threads em nvel de usurio:

v Threads que bloqueiam um processo inteiro;

q Uma estratgia para diminuir o overhead reciclar threads;


Threads

n Estratgia hbrida:

q Mltiplas threads mapeadas em uma thread do kernel;


Comunicao entre Processos (IPC Interprocess Comunication)

n Os SOs hoje em dia so multitarefa;

n Alguns processos precisam cooperar para cumprir seus


objetivos;

n Sugestes de implementao?

n Exemplos:

q Um aplicativo imprimindo um documento.


Comunicao entre Processos (IPC Interprocess Comunication)

n Problemas:

q Como um processo passa a informao para outro?

q Como garantir que dois processos no entrem em


conflito?

v Ex.: Reservar o mesmo lugar no avio

q Qual a sequncia adequada quando existirem


dependncias?

v Ex.: P1 produz os dados e P2 os imprime. P2 deve


esperar at que P1 produza os dados.
Comunicao entre Processos

n Condio de Corrida (Race Condition)

q Condio em que dois processos leem e escrevem um dado


compartilhado e o resultado final depende da ordem em que
os processos so executados;

q Lembra-se que em um sistema multitarefa um processo pode


ser retirado da execuo para pronto a qualquer momento;

q Essa condies so muito difceis de debuggar, encontrar


falhas, que podem ocorrer dependendo de fatores externos;
Comunicao entre Processos

n Condio de Corrida (Race Condition)

q Dois processos querem acessar a memria compartilhada ao


mesmo tempo;
Comunicao entre Processos

n Condio de Corrida (Race Condition)

q Uma soluo para o problema da condio de corrida


evitar que mais de um processo leia/escreva ao mesmo
tempo;

q Essa estratgia chamada excluso mtua (mutex);

q dever do programador, identificar estas situaes e


proteger seu cdigo nestas situaes;
Comunicao entre Processos

n Condio de Corrida (Race Condition)

q Para que a soluo seja implementada pelo SO, 4 condies


so necessrias:

v Dois processos no podem estar em sua regio crtica


simultaneamente;

v A soluo deve funcionar para qualquer nmero de CPUs


e qualquer velocidade;

v Nenhum processo fora da regio crtica pode bloquear


outros processos;

v Nenhum processo deve esperar eternamente para entrar


em sua regio crtica;
Comunicao entre Processos

n Condio de Corrida (Race Condition)


Comunicao entre Processos

n Algumas solues possveis:

q Desabilitar interrupes;

q Variveis de trava (lock);

q Chaveamento obrigatrio;

q Soluo de Peterson;

q Dormir e acordar;

q Semforos;

q Mutex;

q Monitores;
Comunicao entre Processos

n Desabilitar interrupes:

q Ao entrar na regio crtica ficam desabilitadas as


interrupes;

q Evita que ocorra troca de contexto por tempo;

q Em um sistema multiprocessado pode ser complexo ou


impossvel desabilitar a interrupo em todos os
processadores;

q Entregar o controle das interrupes ao usurio pode ser


perigoso se o processo no habilitar novamente estas
interrupes;
Comunicao entre Processos

n Variveis de trava (lock):

q Uma nica varivel lock indica quando h algum processo


em uma regio crtica;

q Se lock == 0 no h processo na regio crtica;

q Se lock == 1 h processo na regio crtica;

q A ideia : se o seu processo quer entrar na regio crtica ele


deve ler lock e s poder entrar quando lock == 0;

q Quando ele entrar deve fazer lock == 1;


Comunicao entre Processos

n Chaveamento obrigatrio:

q Alterna entre dois processos;

q A varivel turn indica qual processo tem direito a entrar na


regio crtica;

q Viola a condio que um processo em regio no crtica


bloqueia um processo;
Comunicao entre Processos

n Soluo de Peterson:

q Define duas funes enter_region e leave_region;

q Usa um vetor de interessados em entrar na regio crtica;

q Usa uma varivel turn para definir quem a vez para usar a
regio crtica;
Comunicao entre Processos

n Dormir e acordar:

q As solues anteriores so corretas mas empregam a


espera ocupada tambm chamada espera ociosa;

q Se um processo no consegue entrar na regio crtica ele


fica preso em um loop consumido tempo de CPU;

q Pode gerar um problema de inverso de prioridades;

q Para resolver este problema podemos usar chamadas do SO


sleep e wakeup;
Comunicao entre Processos

n Dormir e acordar:

q Sleep() e Wakeup():

v A diferena mais importante desta estratgia para as


outras que estas permitem que o SO bloqueie o
processo em sleep;

v Assim o processo no consumir CPU enquanto espera


para entrar em sua regio crtica;
Comunicao entre Processos

n Problema do Produtor Consumidor:

q Paradigma para processos em cooperao, processo


produtor produz informaes que so consumidas por um
processo consumidor;

q Quando o produtor quer colocar um novo item no buffer, mas


ele j est cheio, a soluo o produtor dormir e s
despert-lo quando o consumidor remover um ou mais itens
do buffer;

q Se o consumidor quiser remover um item do buffer e


perceber que est vazio, ele dormir at que o produtor
ponha algo no buffer;
Comunicao entre Processos

n Semforos:

q Um semforo uma estratgia que permite que 2 ou mais


processos se alternem no uso de um recurso compartilhado;

q Corrigindo o problema do sinal wakeup perdido, os


semforos tem um contador interno para os sleep e wakeup;

q Para manter a clareza nos semforos as instrues so


chamadas down e up;
Comunicao entre Processos

n Mutex:

q So tipos especiais de semforos que tem apenas uma


varivel binria, permitindo que apenas 1 processo acesse a
regio crtica;

q equivalente a um semforo iniciado em 1;

q A implementao mais simples e mais rpida;

q Muito usado para garantir excluso mtua a uma varivel


compartilhada;
Comunicao entre Processos

n Monitores:

q A ltima estratgia para o problema da condio de corrida;

q um artificio de algumas linguagens de programao;

q Permite que se defina um conjunto de mtodos e


propriedades dentro de um pacote ou mdulo;

q O importante aqui que Somente 1 processo pode estar


ativo em um monitor por vez;
Comunicao entre Processos

n Duas formas:

q Memria compartilhada;

q Troca de mensagem;
Comunicao entre Processos

n Troca de mensagens:

q Sistema de mensagem:
v Processos se comunicam entre si sem lanar mo de
variveis compartilhadas;

q A comunicao utiliza duas funes:


v Send (destino, mensagem);
v Receive (origem, mensagem);

q Se P e Q quiserem se comunicar, eles precisam:


v Estabelecer um link de comunicao entre eles;
v Trocar mensagens por meio de send/receive;
Escalonamento

n Mais importante em sistemas multiprogramados;

n Trata da ordem em que processos so executados na CPU;

n Trata da prioridade entre estes processos;

n H vrios tipos:

q Batch;

q Interativo;

q Tempo Real;
Escalonamento Tipos

n Batch:

q Grande tempo alocado a cada processo;

q Um processo no interromper outro processo;

q Mudana comumente ocorre por bloqueio do processo;


Escalonamento Tipos

n Iterativo:

q Grande alternncia entre processos;

q Mudana rpida;

q Muitas trocas de contexto por segundo;


Escalonamento Tipos

n Tempo Real:

q Exigem que o sistema tenha um tempo de resposta definido;

q A perda de um determinado limite de tempo de execuo


pode ser catastrfica;

q Dividido em Soft Real Time e Hard Real Time;


Escalonamento

n Processos comumente trabalham em fluxos pequenos de


uso de CPU e muito longos de E/S (I/O-bound);

n Mas tambm h processos que podem consumir muito de


CPU (CPU-bound);
Escalonamento Objetivos

n Todos os sistemas:

q Justia dar a cada processo uma poro justa da CPU;


q Aplicao da poltica verificar se a poltica estabelecida
cumprida;
q Equilbrio manter ocupadas todas as partes do sistema;

n Sistemas em lote(batch):

q Vazo (throughput) maximizar o nmero de tarefas por


hora;
q Tempo de retorno minimizar o tempo entre a submisso e o
trmino;
q Utilizao de CPU manter a CPU ocupada o tempo todo;
Escalonamento Objetivos

n Sistemas interativos:

q Tempo de resposta responder rapidamente s requisies;


q Proporcionalidade satisfazer s expectativas dos usurios;

n Sistemas de tempo real:

q Cumprimento dos prazos evitar a perda de dados;


q Previsibilidade evitar a degradao da qualidade em
sistemas multimdia;
Escalonamento Atuao
Escalonamento Atuao

n Troca de Contexto:
Escalonamento

n Critrios:

q Utilizao de CPU mantenha a CPU a mais ocupada


possvel;

q Throughput nmero de processos que completam sua


execuo por unidade de tempo;

q Tempo de turnaround quantidade de tempo para executar


um processo em particular;

q Tempo de espera tempo em que um processo esteve


esperando na fila de prontos;

q Tempo de resposta tempo desde quando uma solicitao


foi submetida at a primeira resposta ser produzida;
Escalonamento Classificao

n As polticas de escalonamento podem ser classificadas


segundo a possibilidade de o SO interromper um processo
em execuo e substitu-lo por outro, atividade esta
conhecida como preempo.

n No Preemptivos:

q Quando um processo est em execuo nenhum evento


externo pode ocasionar a perda do uso do processador;

n Preemptivos:

q O SO pode interromper um processo em execuo e pass-


lo para o estado de pronto, como objetivo de alocar outro
processo na CPU;
Escalonamento Algoritmos

n Algoritmos na literatura:

q FIFO First In First Out;

q SJF Shortest Job First;

q Circular Round Robin;

q Circular com prioridade;

q Filas Mltiplas;

q Filas Mltiplas com realimentao;


Escalonamento Algoritmo FIFO

n First In First Out (Primeiro que entra, primeiro que sai);


n Tambm chamado de FCFS ( First Come First Served);
n Conceito de Fila;
n No-preemptivo;
Escalonamento Algoritmo FIFO

n Exemplo:
Escalonamento Algoritmo FIFO

n Exemplo:
Escalonamento Algoritmo FIFO

n Exemplo:
Escalonamento Algoritmo FIFO

n Exemplo:
Escalonamento Algoritmo SJF

n SJF (Shortest Job First)

q Escolhe o processo de menor custo;

q Dois esquemas:

v No preemptivo uma vez a CPU dada ao processo,


ele no pode ser apropriado at que termine seu burst de
CPU;

v Preemptivo se um novo processo chega com tamanho


de burst de CPU menor que o tempo restante do
processo atualmente em execuo, apropria.
Escalonamento Algoritmo SJF

n Exemplo:
Escalonamento Algoritmo SJF

n Exemplo:
Escalonamento Algoritmo SJF

n Exemplo:
Escalonamento Algoritmo SJF

n Exemplo:
Escalonamento Algoritmo SJF

n Exemplo:
Escalonamento Algoritmo Circular (Round Robin)

n Preemptivo;

n A cada processo dado um tempo fixo de CPU que este


pode usar;

n Expirado esse tempo o processo retirado da CPU e


colocado no fim da fila de pronto;

n Na prtica h uma alternncia circular entre os processos


em estado pronto;
Escalonamento Algoritmo Circular (Round Robin)

n Exemplo:
Escalonamento Algoritmo Circular (Round Robin)

n Exemplo:
Escalonamento Algoritmo Circular (Round Robin)

n Exemplo:
Escalonamento Algoritmo Circular (Round Robin)

n Exemplo:
Escalonamento Algoritmo Circular (Round Robin)

n Exemplo:
Escalonamento Algoritmo Circular (Round Robin)

n Exemplo:
Escalonamento Algoritmo Circular (Round Robin)

n Exemplo:
Escalonamento Algoritmo Circular (Round Robin)

n Exemplo:
Escalonamento Algoritmo Circular (Round Robin)

n Exemplo:
Escalonamento Algoritmo Circular (Round Robin)

n Exemplo:
Escalonamento Algoritmo Circular com Prioridade

n Preemptivo;

n O processo com maior prioridade no estado de pronto


sempre escolhido para execuo, e processos com valores
iguais so escalonados seguindo o critrio de FIFO;
Escalonamento Algoritmo Circular com Prioridade

n Exemplo:
Escalonamento Algoritmo Filas Mltiplas

n Existem diversas filas de processos no estado de pronto,


cada qual com uma prioridade especfica;

n Os processo so associados s filas em funo de


caractersticas prprias, como importncia para a aplicao,
tipo de processamento ou rea de memria necessria;
Escalonamento Algoritmo Filas Mltiplas

n Exemplo:
Atividade Laboratrio Simulador Sosim (Pg 143)

n Escalonamento Circular;

n Escalonamento Circular com Prioridades Estatsticas I;

n Escalonamento Circular com Prioridades Estatsticas II;

n Escalonamento Circular com Prioridades Dinmicas;


Problemas Clssicos de IPC

n Jantar dos filsofos

q Para comer o espaguete necessrio utilizar dois garfos,


pois o espaguete est escorregadio.
Problemas Clssicos de IPC

n Leitores e escritores

q Se um processo(P1-Escritor) estiver atualizando uma base


de dados, nenhum outro processo pode ter acesso ao banco
de dados, nem mesmo os leitores(P2-Leitor).

q Como programar os leitores e os escritores?


Problemas Clssicos de IPC

n Barbeiro

q Um barbeiro recebe clientes para cortar cabelo. Na barbearia


h uma cadeira de barbeiro e apenas cinco cadeiras para
clientes esperarem.
Obrigado!

Sistemas Operacionais
Prof. MSc. Jos Hermano Cavalcanti Filho

jose.cavalcanti@ifpb.edu.br

http://www.ifpb.edu.br

You might also like