Sunteți pe pagina 1din 79

Programao Cliente Servidor

Gerenciamento de Processos
2014
Professor Melo

Apresentao
Tcnico em Desenvolvimento de Sistemas - Ibratec,

Recife-PE
Bacharel em Sistemas de Informao FIR, Recife-PE
Especialista em Docncia no Ensino Superior
Faculdade Maurcio de Nassau, Recife-PE
Mestre em Cincia da Computao UFPE/CIN,
Recife-PE
Currculo Lattes
http://lattes.cnpq.br/0759508594425296)
Homepage
https://sites.google.com/site/hildebertomelo/

Disciplinas Lecionadas

Desenvolvimento de Aplicaes Desktop


Programao Orientada a Objetos
Estrutura de Dados
Tecnologia da Informao & Sociedade
Sistemas Operacionais
Sistemas Distribudos
Introduo a Informtica
Lgica de Programao
Informtica Aplicada a Sade
Banco de Dados
Projeto de Banco de Dados
Anlise de Projetos Orientado a Objetos
Programao Cliente Servidor
Linguagens de Programao: C, C#, Pascal, PHP, ASP, Delphi, Java, JavaScript
Programao WEB

Processo
basicamente um programa em execuo;
Possui associado um espao de endereamento de

memria;
O seu espao de endereamento contm o programa

executvel, os dados do programa e a sua pilha de execuo;


Cada processo tambm est associado a um conjunto de

registradores:
Contador de programa, ponteiro de pilha, dentre outros.

Conceito de Processos
O conceito de processo foi criado devido
multiprogramao
Um nico processador pode ser compartilhado entre

vrios processos, com o uso de um algoritmo de


escalonamento

Relembrando...
Em um S.O time-sharing, periodicamente o sistema

operacional decide parar de executar um processo e comea


a execuo de outro, em seguida retorna ao primeiro...
Todas as informaes sobre um processo devem ser

explicitamente salvas em algum lugar durante a suspenso


do mesmo. Para isso, o S.O possui uma tabela denominada
tabela de processos.

Tabela de Processos
Contm todas as informaes sobre os processos;
uma lista encadeada de estruturas, uma para cada processo

atualmente existentes;
Se um processo pode criar um ou mais processos, esses

ltimos so referenciados como processos-filho, que por sua


vez, podem criar outros processos-filho. Assim chega-se a
estrutura de rvore de processos.

rvore de Processos
A

Estados de um Processo
Executando realmente utilizando a CPU
Pronto executvel temporariamente parado para
permitir que outro processo execute

Bloqueado incapaz de executar at que algum


evento externo acontea

Estados de um Processo
3

EXECUTANDO

PRONTO
2

1.
2.
3.
4.

BLOQUEADO

O processo bloqueia para entrada


O agendador seleciona outro processo
O agendador seleciona esse processo
A entrada torna-se disponvel

Modelo de Processos
Neste

modelo, todo software executvel no


computador, incluindo o sistemas operacional
organizado em um nmero de processos seqenciais;

Processo:
um programa em execuo incluindo os valores atuais

do contador de programa, registradores e variveis;


Conceitualmente, cada processo tem sua prpria CPU

virtual.

Estados de um Processo

New

Runnin
g

Ready

Waiting

Halted

Estados de um Processo
New - Um programa excolhido para ser executado e o

S.O vai inici-lo movendo-o para o estado Ready.


Ready - O processo est pronto e a espera de acesso ao
processador.
Running - O processo est sendo executado pelo
processador.
Waitting - O processo est suspenso a espera por
recursos, por exemplo, I/O.
Halted - O processo terminou e ser destrudo pelo
sistema operacional.

Transies de Estado

RunningWaitting: Ocorre quando um processo descobre


que no pode continuar;

Running Ready: Ocorre quando o agendador (scheduler)


decide que o processo em execuo atuou por tempo
suficiente e permite que outro processo em execuo tenha
algum tempo da CPU;

Ready Running: Ocorre quando todos os outros


processos tiveram sua fatia justa e hora do primeiro deles
receber a CPU para executar novamente.

Transies de Estado

Waitting Ready: Ocorre quando acontece o evento


externo pelo qual o processo est esperando acontecer. Se
nenhum outro processo est executando nesse instante, a
transio ser ativada imediatamente e o
processo
comear a executar.

Implementao de Processos
Tabela de processos:
Utilizada e mantida pelo S.O para implementar o
modelo de processos;
Contm uma entrada para cada processo;

Contm informaes sobre o estado do processo, o


seu contador de programa, o ponteiro da pilha,
alocao de memria, status dos arquivos abertos,
informaes de contabilidade;
Contm todas as informaes necessrias para que o
processo possa ser reiniciado mais tarde aps ter
passada do estado de execuo (running) para o
estado pronto (ready).

Interrupes
Como acontece a multiprogramao em uma mquina

com 1 CPU e vrios dispositivos de I/O?


Associado a cada classe de dispositivos de entrada e sada (I/O)

existe uma rea prxima a parte inferior da memria chamada de


vetor de interrupo.

Vetor de interrupo contm o endereo do procedimento de servio


da interrupo.

Processamento de Interrupes
1.

O hardware empilha o contador de programa, etc.

2.

O hardware carrega um novo contador de programa a partir do


vetor de interrupo;

3.

O procedimento em linguagem assembly salva os registradores;

4.

O procedimento em linguagem assembly define uma nova pilha;

5.

O servio de interrupo em C executa;

6.

O agendador (scheduler) marca a tarefa em espera como pronta;

7.

O agendador decide qual processo ser executado em seguida;

8.

O procedimento em C retorna para o cdigo assembly;

9.

O procedimento de linguagem assembly inicia processo atual de


novo.

Exemplo de Interrupo
Supor que um processo de usurio esteja executando

quando ocorre uma interrupo de disco:


O contador de programa, a palavra de status do

programa, e os outros registradores so enviados pilha


pelo hardware de interrupo;
A CPU salta para o endereo especificado no vetor de
interrupo de disco;

Exemplo de Interrupo
Continuao...
O procedimento de servio de interrupo inicia
salvando todos os registradores na entrada da tabela de
processos para o processo atual;
As informaes depositadas pela interrupo so
removidas da pilha;
O prximo passo consta da formao de uma mensagem
a ser enviada ao processo de disco dizendo que houve
uma interrupo.

Threads

Threads
Em um processo tradicional, h uma nica linha de

controle e um nico contador de programa em cada


processo;
Porm, nos sistemas operacionais modernos,
fornecido suporte para mltiplas linhas de controle
dentro de um processo;
Tais linhas de controle so chamadas de threads ou
processos leves.

Threads
Caso 1

Caso 2

computador

Thread
contador de programa

computador

Processo

Threads
Caso 1

3 processos tradicionais
Cada processo tem seu prprio espao de
endereo e uma nica linha de controle

Caso 2

Um nico processo com 3 linhas de


controle

Os trs processos compartilham


mesmo espao de endereo

Ambos os casos possuem 3 threads

Exemplo para Comparao


Considere um servidor de arquivos:
Este servidor recebe solicitaes de leitura e gravao de

arquivos enviando de volta os dados requisitados ou aceita os


dados atualizados;
Para uma melhoria de desempenho, o servidor mantm uma

cache de arquivos recentemente utilizados em memria.

Exemplo Usando Caso 2


Para o caso 2, quando uma requisio entra, ela

passada a uma thread para processamento:


Se esta thread bloqueia no meio do caminho para

esperar uma transferncia de disco, outros threads so


ainda capazes de executar;
Dessa forma o servidor poder continuar processando

novas requisies, mesmo quando est havendo entrada


e sada (I/O) de disco.

Exemplo Usando Caso 1


Para o caso 1, quando uma requisio entra, ela

passada a uma thread para processamento:


essencial que todas as threads do servidor de arquivos

acessem o mesmo cache e como as trs threads no


compartilham o mesmo espao de endereos ento no
podem compartilhar o mesmo cache de memria.

Threads

Definio
Um thread um fluxo de execuo dentro de um

processo
Um processo pode possuir um ou vrios threads

Definio
Os threads compartilham o mesmo espao de

endereamento do processo que os contm

Aproveita os recursos
alocados
para o processo

Definio
Cada thread possui:
Contador de programas
Conjunto de registradores
Espao de pilha
Estado

Processo X Thread
A criao de um processo cara
Alocao de espao de endereamento
A criao de threads rpida e barata, quando j existe

o processo
O tempo de criao de um thread mil vezes menor que

o tempo de criao de um processo

Processo X Thread
A troca de contexto entre processos demorada em

relao troca de contexto entre threads


A troca de contexto ente threads envolve apenas

alterao no conjunto de registradores

Processo X Thread
Os threads possuem caractersticas semelhantes aos

processos:
Possui estados: pronto, bloqueado e rodando
Os threads compartilham a CPU e apenas um thread

pode estar sendo executado

Processo X Thread
Caractersticas diferentes:
A execuo de threads, pertencentes ao mesmo processo,
so dependentes

Um thread pode ler e escrever sobre pilhas de outros processos

Processo X Thread
A comunicao entre threads de um processo simples

pois os threads compartilham o mesmo espao


necessrio, ento, algum mecanismo de
sincronizao entre os processos
semforos

Multithreading X
Single Threading
Single Threading: SO no conhece o conceito de threads
Multithreading: SO suporta vrios threads dentro de um

nico processo

Multithreading X
Single Threading
MS-DOS: suporta um nico processo um nico

thread
UNIX: suporta vrios processos e somente um thread
por processo
Solaris: suporta multithreading

Nveis de Threads
Threads a nvel de usurio: bibliotecas threads
Threads a nvel de kernel: chamadas de sistema
O SO Solaris implementa os dois nveis

Threads a Nvel de Usurio


O kernel no tem conhecimento dos threads que so

implementados a nvel de usurio


O gerenciamento de threads feito pela aplicao
atravs de uma biblioteca thread

Threads a Nvel de Usurio


O kernel faz o gerenciamento do processo que contm

os threads
Quando um thread faz uma chamada de sistema, todo
o processo bloqueado
O thread continua no estado de execuo

Threads a Nvel de Usurio


Vantagem:
Pode-se utilizar threads em qualquer SO
Desvantagem:
Quando um thread bloqueado, todos os threads
pertencentes ao mesmo processo tambm so
bloqueados
Os threads de um processo no podem ser executados
simultaneamente em ambientes com mais de um
processador

Threads a Nvel de Kernel


Todo o gerenciamento de threads feito pelo kernel
O kernel mantm informao sobre o processo e seus

threads
O escalonamento na CPU feito a nvel de threads

Threads a Nvel de Kernel


Vantagens:
Vrios threads de um mesmo processo podem ser
executados ao mesmo tempo em ambientes com mais de
um processador
Se um thread bloqueado, os outros threads do processo
podem rodar

Threads
Threads como os processos, podem estar nos estados de

execuo (running), pronto (ready), bloqueado (waitting) e


ainda no estado novo (new) ou finalizado (halted);
Cada uma delas apresenta um contador de programa,

registradores e o seu prprio estado:


O contador de programa necessrio porque os threads

podem ser suspensos e retomados;


Os registradores so necessrios porque quando os threads

so suspensos, seus registradores devem ser salvos.

Comunicao Entre Processos

Comunicao entre Processos


Um processo freqentemente precisa se comunicar
com outro processo;
Exemplo:
Em um comando que utiliza pipe no shell , a sada do

primeiro processo deve ser passada para o segundo


processo e assim por diante ao longo da linha.

Dessa forma, h a necessidade de comunicao

entre processos de maneira bastante estruturada.

Comunicao entre Processos


IPC (InterProcess Communication)
Os processos podem se comunicar atravs de vrios

mtodos:
Memria compartilhadaPrincipal ou arquivo

compartilhado;
Troca de mensagens

Situao Exemplo
Spooler de impresso:
Processo quer imprimir um arquivo, ento ele insere
o nome de arquivo em um diretrio de spooler
especial;
Outro processo, o servidor de impresso, verifica
periodicamente se h qualquer arquivo a ser
impresso;
Caso hajam arquivos a serem impressos, eles sero e
os seus nomes sero removidos do diretrio.

Expandindo o Exemplo
Imaginemos que o diretrio de spooler tenha um
nmero muito grande de entradas....
Cada entrada capaz de armazenar o nome de um
arquivo.
Imaginemos ainda que existem duas variveis
compartilhadas...
in->aponta para a prxima entrada livre no diretrio;
out->aponta para o prximo arquivo a ser impresso;

Expandindo o Exemplo
Imaginemos ainda que as entradas 0,1,2 e 3 do
diretrio de spooler estejam vazias e as entradas 4 a
6 esto cheias.
Caso dois processos A e B decidam ao mesmo
tempo colocar arquivos na fila de impresso e a lei
de Murphy seja aplicada....

Expandindo o Exemplo
O processo A l in e armazena o valor 7 em uma
varivel local chamada next_free_slot;
Acontece uma interrupo de relgio e a CPU
decide que o processo A j executou por tempo
suficiente e faz o chaveamento de contexto para B;
O processo B tambm l in e recebe o valor 7,
ento ele armazena o nome do seu arquivo na
posio 7 atualizando o in para que seja 8.

Expandindo o Exemplo
O processador volta a processar o processo A que
estava suspenso....
A vai continuar do local onde parou;
Vai examinar o next_free_slot e encontra um 7;
Ento escreve o seu nome de arquivo na entrada 7

apagando o nome que o processo B acabou de colocar l;


Neste momento, ele calcula o next_free_slot +1 , ou seja,
8, e o in ser definido como 8;
O diretrio do spooler est internamente consistente.

Condies de Corrida
Situaes como a relatada no exemplo anterior:
Dois ou mais processos esto lendo e gravando dados

compartilhados...
Resultado final depende de quem executou e quando o
fez..

CONDIES DE CORRIDA

Condies de Corrida
Depurar programas contendo condies de corrida
muito trabalhoso.
Esse problema
tambm
Pergunta:
comum em
situaes
Como evitar?
envolvendo
memria
Resposta:
compartilhada,
Proibir que mais de um processo leia
e grave os dados compartilhados ao
mesmo tempo.

arquivos
compartilhados
e tudo mais
compartilhado.

Excluso Mtua
Certificao de que se um processo est utilizando
um arquivo ou varivel compartilhados, os outros
processos ficam impedidos de fazerem o mesmo.

A escolha das operaes primitivas


apropriadas para obter a excluso
mtua uma questo de projeto
importante em qualquer sistema
operacional

Regio Crtica
Definio:
Parte do programa em que a memria compartilhada
acessada.
Resoluo do Problema:
Nenhum dos processos que executam simultaneamente
podem estar na sua regio crtica ao mesmo tempo.
Evita mas no suficiente.

Soluo Completa
Para se ter uma boa soluo de excluso mtua:

1. Nenhum dos dois processos podem estar


simultaneamente dentro da sua regio crtica
2. Nenhuma suposio pode ser feita sobre as
velocidades ou sobre o nmero de CPUs

3. Nenhum processo que executa fora de sua


regio crtica pode bloquear outro processo
4. Nenhum processo deve ter de esperar
eternamente para entrar em sua regio crtica

Resumo dos Conceitos


Corrida de Processos: situao onde dois ou mais

processos concorrem a um nico recurso


Regio Crtica: Segmento de cdigo de um processo, no

qual valores armazenados em variveis globais podem ser


alterados por outros processos

Propostas para Obter a Excluso Mtua


Desativao das interrupes:
Soluo simples;

Cada processo desativa as interrupes imediatamente

depois de ele entrar em sua regio crtica e reativa-as


imediatamente aps sair dela;
LEMBRETE: A CPU s alterna de um processo para outros como
resultado de interrupes (relgio ou outras)

CPU no alterna entre processos;


O processo pode examinar e atualizar a memria

compartilhada sem medo da interveno de qualquer


outro processo.

Propostas para Obter a Excluso Mtua


Desativao das interrupes (continuao):
Abordagem pouco atraente;

No aconselhvel dar o poder de desativar instrues a

processos de usurio;
Caminho sem volta nunca mais as reative;
Tcnica til para processos do Kernel.
Desativar
interrupes
afeta s a CPU
que executou a
instruo
de
desativamento.

Propostas para Obter a Excluso Mtua


Variveis de Bloqueio:
Definio de uma varivel nica compartilhadavarivel

de bloqueio;
Varivel de bloqueio inicialmente 0;
Se um processo entra na sua regio crtica seta a varivel
de bloqueio para 1;
No vivel;

0 Significa que nenhum


processo est na sua
regio crtica

1 Significa que algum


processo est na sua
regio crtica

Propostas para Obter a Excluso Mtua


Alternncia estrita
Soluo somente para dois processos:Processo 0 e Processo 1
Utilizao de uma varivel compartilhada: turn

Pode assumir 0, dando a vez ao processo 0


Pode assumir 1, dando a vez ao processo 1

Alternncia Estrita
Desvantagem: No funciona quando um processo

mais lento que o outro

Um processo pode ficar bloqueado


por um processo que no est
em sua regio crtica

Deadlock
Um conjunto de processos est em uma situao de
deadlock, se cada processo do conjunto estiver
esperando por um evento que somente outro processo,
tambm bloqueado, pode executar.

Modelo Cliente/Servidor
Tendncia nos sistemas operacionais modernos de

levar adiante a idia de mover cdigo para camadas


mais altas e remover tanto quanto possvel do S.O,
deixando um mnimo de kernel;
A abordagem normal implementar a maior parte das

funes do S.O em processos de usurios.

Modelo Cliente/Servidor

Processo Processo Processo Servidor ............. Servidor Servidor


de
de
cliente
cliente
servidor terminal
arquivos memria
Kernel

Modo usurio
Modo kernel

O cliente obtm o servio


enviando mensagens para
processos servidores

Modelo Cliente/Servidor
A diviso do S.O em partes, cada uma gerenciando apenas

uma faceta do sistema como servio de arquivo, de


processo, de terminal ou servios de memria torna todas
as partes pequenas e gerenciveis;
Como todos os servidores executam como processos em

modo usurio e no em modo kernel, eles no tm acesso


direto ao hardware;
Dessa forma se ocorrer um bug no servidor de arquivos, o

servio de arquivos pode cair, mas isso normalmente no


derrubar a mquina inteira.

Modelo Cliente/Servidor
Vantagens deste modelo:
Adaptabilidade para o uso em sistemas distribudos;
Se um cliente comunica-se com um servidor enviando-

lhe mensagens, o cliente no precisa saber se a


mensagem manipulada localmente na prpria
mquina ou se for enviada atravs de uma rede para um
servidor em mquina remota.

Perguntas

Referncias
Visual C# Developer Center

http://msdn.microsoft.com/ptbr/vcsharp/aa336809.aspx
Microsoft Visual C# 2005 passo a passo, Jonh Sharp,
editora Bookman
C# Como programar, Deitel.

79

S-ar putea să vă placă și