You are on page 1of 23

Programao Concorrente SOPC

UEM 0



ndice

1. Introduo .............................................................................................................................................................. 1
1.1. Objectivo do Trabalho .................................................................................................................................. 1
1.2. Metodologias ................................................................................................................................................ 2
2. Conceitos ............................................................................................................................................................... 4
3. Historial ................................................................................................................................................................. 4
4. Introduo a programao concorrente .................................................................................................................. 4
5. Caractersticas ........................................................................................................................................................ 5
6. Motivao do Uso da Programao Concorrente .................................................................................................. 5
7. Propsitos da Programao Concorrente ............................................................................................................... 5
8. Diferena entre thread e processo .......................................................................................................................... 7
9. O problema da partilha de recursos ....................................................................................................................... 7
9.1. Propriedades para a excluso mtua ............................................................................................................ 8
9.2. Obteno da excluso mtua ........................................................................................................................ 8
Desabilitao de Interrupes ................................................................................................................................ 8
Problemas da Soluo DI/EI .................................................................................................................................. 8
Solues com Busy Wait ....................................................................................................................................... 9
Lock/Unlock .......................................................................................................................................................... 9
Block/Wakeup(P) .................................................................................................................................................. 9
9.3. Implementao de mecanismos para excluso mtua ................................................................................ 10
Algortmica .......................................................................................................................................................... 10
Primitivas ............................................................................................................................................................. 11
Sincronizaes bsicas com semforos ............................................................................................................... 13
Sincronizao tipo lock/unlock:........................................................................................................................... 13
Sincronizao tipo block/wakeup(P): .................................................................................................................. 13
10. Criao esttica e dinmica de processos ....................................................................................................... 14
10.1. Criao esttica .......................................................................................................................................... 14
10.2. Criao dinmica ........................................................................................................................................ 14
11. Sincronizaes ................................................................................................................................................ 15
12. Deadlocks ....................................................................................................................................................... 15
12.1. Condies para a sua ocorrncia ................................................................................................................ 15
12.2. Estratgia para lidar deadlocks ................................................................................................................... 16
12.3. Metodos para tratamento de deadlocks ...................................................................................................... 16
12.4. Deteco e recuperao .............................................................................................................................. 17
13. Vantagens da Programao Concorrente ........................................................................................................ 18
14. Desvantagens da Programao Concorrente................................................................................................... 18
15. Concluso ....................................................................................................................................................... 20
16. Bibliografia ..................................................................................................................................................... 21
17. Anexos ........................................................................................................................................................ 22






Programao Concorrente SOPC


UEM 1


1. Introduo

Com o advento dos processadores com dois ou mais ncleos, h um incentivo cada vez maior
dos fabricantes de hardware para o desenvolvimento de softwares que utilizam a programao
concorrente. A programao concorrente foi usada inicialmente na construo de sistemas
operativos.
Actualmente, ela usada para desenvolver aplicaes em todas as reas da computao. Este tipo
de programao tornou-se ainda mais importante com o advento dos sistemas distribudos e das
mquinas com arquitectura paralela. No presente trabalho sero apresentados os conceitos e os
mecanismos clssicos da programao concorrente.
Neste trabalho de pesquisa, aborda-se a o tema programao concorrente desde as definies
bsicas, passando-se pelos mtodos de implementao desta vertente de programao ate os
mecanismos de tratamento dos desconfortos que advm deste modo contextualizado e necessrio
de programar, com recurso a linguagem Vp4
1

.
1.1. Objectivo do Trabalho
Objectivos gerais
De modo geral, o trabalho visa aprofundar a compreenso e entendimento sobre o tema
Programao Concorrente para posterior aplicao em actividades afins.
Objectivos especficos
Analisar o conceito Programao Concorrente;
Analisar a motivao e propsito da Programao Concorrente;
Clarificar a especificao do paralelismo na Construo de um Programa Concorrente
Demonstrar a criao e princpio de funcionamento de processos
Elucidar, com recurso a exemplos (apresentados em linguagem Vp4), sobre os
problemas e apresentar solues da programao Concorrente



1
Linguagem de programao concorrente
Programao Concorrente SOPC


UEM 2


1.2. Metodologias

Anlise comparativa das fontes de informao, nas quais o grupo baseou-se para
estruturar e compor o trabalho, sendo a o grau de clareza o critrio de seleco.
Repartio de tarefas de investigao pelos integrantes do grupo, na qual, cada
membro do grupo recebeu um subtema (tpico) com vista a dinamizar a realizao do
trabalho. Depois de localizado o teor do tpicos, teve lugar a discusso e censura e,
posteriormente, fez-se a integrao dos mesmos;
Consultas bibliogrficas online, selectivas baseadas no grau de oficialidade do website.






















Programao Concorrente SOPC


UEM 3













Programao Concorrente
















Programao Concorrente SOPC


UEM 4


2. Conceitos
Concorrncia Quando h processamento simultneo lgico (aparente), requer entrelaamento
de aces.
Deadlock - Estado de um programa concorrente depende dos valores das variveis (explcitas e
implcitas). A execuo de um comando muda o estado.
Paralelismo Quando h processamento simultneo fsico.
Processo Execuo abstrata de uma instncia de um programa.
Sincronizao Quando h excluso mtua de seces crticas.
Thread (Linha) uma forma de um processo dividir a si mesmo em duas ou mais tarefas que
podem ser executadas concorrentemente.

3. Historial

O surgimento da programao concorrente ocorreu de forma natural devido evoluo dos
sistemas operativos, quando estes passaram a implementar multiprogramao (TANENBAUM,
2003). A multiprogramao permite que diversos processos executem emu ma nicar
arquitectura de hardware concorrendo ao uso de seus recursos. Para que isso funcione
adequadamente o escalonador de processos do SO deve ser capaz de bloquear e desbloquear
processos, a fim de realizar a troca de contexto (TANENBAUM, 2003).

4. Introduo a programao concorrente
O termo programao concorrente vem do ingls concurrent programming, onde concurrent
significa acontecendo ao mesmo tempo. Uma traduo mais adequada seria programao
concomitante.
Programao concorrente a actividade de construir um programa contendo mltiplas
actividades que progridem em paralelo.
Actividades podem progredir em paralelo de duas maneiras:
Programao Concorrente SOPC


UEM 5


Sendo realmente executadas em paralelo, cada uma, de posse de um processador
diferente ou
Tendo o processador se revezando entre as actividades, de forma que cada actividade
possa fazer uso do processador durante um perodo de tempo e depois espere sua prxima
oportunidade de avanar na computao.
Um programa considerado concorrente quando ele (o prprio programa, durante a sua
execuo) origina diferentes processos. Esses processos, em geral, iro interagir entre si.
Um programa concorrente pode ser idealizado como se tivesse vrios fluxos de execuo.
Prosseguindo com o exemplo do programador, para realizar agora uma "execuo imaginria",
este vai necessitar de vrios dedos, um para cada fluxo de controle (TOSCANI et al.,2003).
5. Caractersticas
Composta por um conjunto de processos sequenciais que se executam concorrentemente;
Processos disputam recursos comuns (ex: variveis, perifricos,etc..);
Um processo dito de cooperante quando capaz de afectar, ou ser afectado pela
execuo de outro processo.
6. Motivao do Uso da Programao Concorrente
Facilidade de desenvolvimento de aplicaes que possuem paralelismo intrnseco;
Outra motivao para o uso de concorrncia a busca por solues que permitam que
vrias partes de um mesmo problema sejam atacadas em paralelo. Com este enfoque, se a
plataforma de execuo dispor de muitos processadores (o que j possvel com estaes
de trabalho de custo relativamente baixo), o problema poder ser resolvido em menos
tempo, ou pelo menos solues parciais teis ao usurio, podero ser rapidamente fornecidas
(SARMANHO F.S, 2009).
7. Propsitos da Programao Concorrente
Aproveitar hardware com mltiplos processadores;
Atender a vrios usurios simultaneamente;
Melhorar o desempenho das aplicaes;
Aumentar a disponibilidade para o usurio;
Manipular objectos activos e controle de actividades;
Programao Concorrente SOPC


UEM 6


Programas paralelos.

a) Fork/wait ou fork/join
A chamada de sistema fork cria um novo processo (processo filho) a partir de um processo
existente (processo pai), onde o cdigo do programa idntico (clone).
A execuo do processo filho inicia no prximo comando do programa
Processo filho uma cpia do processo pai, excepto por:
Identificador de processo e identificador de processo pai
Locks obtidos pelo processo pai

Chamada de sistema wait/waitpid equivalente a primitiva join
Suspende processo pai at que:
Termine a execuo de um processo filho
Processo pai receba um sinal para terminar
Libera os recursos do processo filho
Se o processo filho j terminou retorna imediatamente













b) Parbegin/parend
Comandos executados para definir uma sequencia de comandos a serem executados
concorrentemente.
Processo B
Processo A
Processo C
Fork B
Fork C
.....
....
Wait C

wait
wait
Figura 2: Fork/wait ou fork join. (Oliveira et all, 2003)

Bloqueado
Programao Concorrente SOPC


UEM 7


PARBEGIN: especifica que a seqncia seja executada concorrentemente em ordem
imprevisvel;
PAREND: ponto de sincronizao, quando os processo ou threads terminarem










8. Diferena entre thread e processo

O que melhor distingue uma thread de um processo o espao de endereamento.
Todas as threads de um processo trabalham no mesmo espao de endereamento, que a
memria lgica do processo hospedeiro.
Isto , quando se tem um conjunto de threads dentro de um processo, todas as threads executam
o cdigo do processo e compartilham as suas variveis. Por outro lado, quando se tem um
conjunto de processos, cada processo trabalha num espao de endereamento prprio, com um
conjunto separado de variveis.
No caso de um processo com N threads, tem-se um nico registro descritor (o registro do
processo hospedeiro) e N mini-descritores de threads. O mini descritor de cada thread usado
para salvar os valores dos registos da unidade central de processamento.
9. O problema da partilha de recursos

O acesso a recursos compartilhados deve ser feito de forma a manter um estado coerente e
correcto do sistema (Oliveira et all., 2003) (Ex: Fila de impresso)
Processo B
Processo A

Processo C
Parbegin
Tarefa B
Tarefa C
Parend
Bloqueado
Figura 2: Parbegin/parend (Oliveira et all, 2003)

Programao Concorrente SOPC


UEM 8


9.1. Propriedades para a excluso mtua
A apenas um processo permitido estar dentro de sua R.C. num dado instante.
Nenhum processo que executa fora de sua regio crtica pode bloquear outro processo
(ex: processo pra fora da sua R.C.).
Nenhuma suposio pode ser feita sobre as velocidades relativas dos processos ou sobre
o nmero de CPUs
2
Nenhum processo pode ter que esperar eternamente para entrar em sua R.C. ou l ficar
eternamente.
no sistema.

9.2. Obteno da excluso mtua
Pode ser obtida atravs da
Desabilitao de interrupes;
Variveis do tipo lock
Alternncia de execuo

Desabilitao de Interrupes
Usa um par de instrues do tipo DI / EI.
DI = disable interrupt EI = enable interrupt
processo desativa todas as interrupes imediatamente antes de entrar na sua R.C.,
reativando-as imediatamente depois de sair dela.
Com as interrupes desativadas, nenhum processo que est na sua R.C. pode ser
interrompido, o que garante o acesso exclusivo aos dados compartilhados.
Problemas da Soluo DI/EI
3
desaconselhvel dar aos processos de usurio o poder de desabilitar interrupes.
No funciona com vrios processadores.
Inibir interrupes por um longo perodo de tempo pode ter conseqncias danosas. Por
exemplo, perde-se a sincronizao com os dispositivos perifricos.

2
Unidade Central de Processamento
3
DI/DE Desabilitar interrupo e habilitar instrues
Programao Concorrente SOPC


UEM 9


OBS: inibir interrupes pelo tempo de algumas poucas instrues pode ser conveniente
para o kernel (p.ex., para atualizar uma estrutura de controle).
Solues com Busy Wait
Busy wait =espera ativa ou espera ocupada.
Basicamente o que essas solues fazem : Quando um processo quer entrar na sua R.C.
4
Ex: While (vez ==OUTRO) do {nothing};
ele
verifica se a entrada permitida. Se no for, ele espera em um lao (improdutivo) at que o
acesso seja liberado.
Consequncia: desperdcio de tempo de CPU.
Alternncia Estrita
- Varivel global indica de quem a vez na hora de entrar na R.C.


Lock/Unlock
Um processo s entra num trecho delimitado pelo par lock/unlock se nenhum outro processo est
executando em um outro trecho delimitado dessa maneira. Isto , o primeiro processo que
executa o comando lock passa e tranca a passagem (chaveia a fechadura) para os demais. O
comando unlock deixa passar (desbloqueia) o primeiro processo da fila de processos que esto
bloqueados por terem executado um lock (enquanto a fechadura estava trancada). Se a fila est
vazia, a fechadura destrancada (isto , deixada aberta).

Block/Wakeup(P)

Quando um processo P executa o comando block, ele se bloqueia at que um outro processo
execute o comando wakeup(P). Este ltimo comando acorda (desbloqueia) o processo
especificado por P. Se wakeup(P) executado antes, o processo P no se bloqueia ao executar o
block. Na linguagem Vale4, o argumento de wakeup pode ser um nome de processo ou um
nmero nico de processo ou thread.

4
Resposta controlada
Programao Concorrente SOPC


UEM 10


Na verdade, os comandos lock e unlock no formam uma estrutura sinttica (isto , no precisam
estar casados, como se fossem um abre e fecha parnteses), eles so comandos independentes.
Na linguagem Vale4, as operaes lock e unlock tambm podem ser referidas pelos nomes
mutexbegin emutexend, respectivamente.

9.3. Implementao de mecanismos para excluso mtua
Algortmica
Existe uma combinao de variveis do tipo lock e alternncia. Temos os seguintes algoritmos:
Algoritmo de Decker
Trata-se da primeira soluo correta para o problema da excluso mtua de dois processos
(proposta na dcada de 60).
Algoritmo de Decker resolve o problema da excluso mtua
- Uma soluo deste tipo s aceitvel se houver um nmero de CPUs igual (ou superior) ao
nmero de processos que se devam executar no sistema. Porqu?
- Poderamos nos dar 'ao luxo' de consumir ciclos de CPU,
- Situao rara na prtica (em geral, h mais processos do que CPUs)
- Isto significa que a soluo de Dekker pouco usada.

Algoritmo de Peterson
Proposto em 1981, uma soluo simples e elegante para o problema da excluso mtua, sendo
facilmente generalizado para o caso de n processos.
- O truque do algoritmo consiste no seguinte:
Ao marcar a sua inteno de entrar, o processo j indica (para o caso de empate) que a vez do
outro.
- Mais simples de ser verificado


Programao Concorrente SOPC


UEM 11




Excluso mtua atingida.
- Uma vez que P0 tenha feito flag[0] =true, P1 no pode entrar na sua R.C.
- Se P1 j estiver na sua R.C., ento flag[1] =true e P0 est impedido de entrar.

Bloqueio mtuo (deadlock) evitado.
- Supondo P0 bloqueado no seu while, isso significa que flag[1] =true e que turn =1
- se flag[1] =true e que turn =1, ento P1 por sua vez entrar na sua seo crtica
Assim, P0 s pode entrar quando ou flag[1] tornar-se false ou turn passar a ser 0.

Primitivas

Mutex
Para este existe:
Uma varivel compartilhada de acesso a seco crtica. Para o uso deste mtodo
processadores so projectados tendo em conta a possibilidade do uso de muiltiplos
processos;
Programao Concorrente SOPC


UEM 12


Inclui duas instrues assembly
5
CAS: Compare and store- que copia o valor de uma posio de memria para um
registrador interno e escreve nela o valor 1
para leitura e escrita de posies assembly para leitura e
escrita de posies de uma memria de forma atmica.
TSL: test and set lock- l o valor de uma posio de memria e coloca nela um valor
no 0.

O emprego de mutex necessita duas primitivas:
Lock e unlock
Enter_region: tst register,flag
Cmp register, 0
Jnz enter,region
ret

Leave_region: mov flag,0
ret


lock(flag);
Seco critica
unlock(flag);


Problemas do lock e unlock:
Busy waiting(spin lock)

Semforos
As variveis semforas so variveis especiais que admitem apenas duas operaes,
denominadas P e V.
6
P(S) : espera at S ser maior que 0 e ento subtrai 1 de S;
Sendo S uma varivel semfora, as operaes P e V tm a seguinte
semntica:
V(S) : incrementa S de 1.

5
Linguagem de baixo nvel com que se escreve programas de computador usando anotacoes humanamente legveis
para o cdigo de maquina que a CPU do computador entende
6
Sendo P e V as iniciais das palavras holandesas Proberen e Verhogen, que significam testar e incrementar,
respectivamente.
Programao Concorrente SOPC


UEM 13


As operaes testar S e subtrair 1 (se S >0) e incrementar S de 1 so executadas de forma
atmica (indivisvel), no kernel do Sistema Operativo. Se S =1 e dois processos executam P(S)
simultaneamente, um dos processos vai ficar bloqueado.
Pode-se fazer analogia entre uma varivel semfora e um vaso contendo bolinhas (berlindes). O
valor numrico do semforo corresponde ao nmero de bolinhas dentro do vaso.
Uma operao V corresponde a colocar uma bolinha no vaso. Cada operao P tenta remover
uma bolinha; se nenhuma est disponvel, ento a operao bloqueia o processo e o coloca numa
fila de espera.
Quando uma bolinha colocada no vaso (operao V), ela removida pelo primeiro processo da
fila de espera, o qual prossegue sua execuo.
Sincronizaes bsicas com semforos
As variveis semforas permitem implementar os dois tipos bsicos de bloqueio, conforme
explicado a seguir.

Sincronizao tipo lock/unlock:

A sincronizao do tipo excluso mtua implementada atravs de um semforo com valor
inicial 1. O acesso exclusivo a n regies crticas seria implementado como segue:
X : semaphore initial 1
P1: P2: . . . Pn:
. . . . . . . . .
P(X); P(X); P(X);


REGIO CRTICA; REGIO CRTICA; REGIO CRTICA;
V(X); V(X); V(X);
. . . . . . . . .

Sincronizao tipo block/wakeup(P):
Este tipo de sincronizao implementado atravs de um semforo com valor inicial zero. Por
exemplo, se a operao B do processo P1 deve ser executada aps a operao A do processo P2,
programa-se da seguinte maneira:
Programao Concorrente SOPC


UEM 14


Y : semaphore initial 0
P1: P2:
. . . . . .
P(Y); % block . . .
B; A;
. . . V(Y); % wakeup(P1)
. . . . . .
10. Criao esttica e dinmica de processos
Os processos de um programa concorrente podem ser criados de forma esttica ou dinmica. No
primeiro caso, o programa contm a declarao de um conjunto fixo de processos, os quais so
activados simultaneamente, no incio da execuo do programa. No segundo caso, os processos
so criados dinamicamente, durante a execuo, atravs de instrues especiais para esse fim.
Os mecanismos vistos at aqui (fork, join e quit) realizam criao dinmica (e trmino
dinmico), pois os processos (ou threads) so criados somente quando instrues especiais so
executadas.
7


10.1. Criao esttica
No caso da criao esttica, os processos so declarados explcitamente
8
no programa fonte e
vo existir desde o incio da execuo do programa concorrente. Normalmente, as linguagens de
programao permitem especificar esses processos de duas maneiras: como processos
individuais ou como um array
9

de processos.
10.2. Criao dinmica
possvel declarar explicitamente um modelo (uma forma) para criar processos durante a
execuo, conforme ilustrado a seguir.
Neste caso tem-se o que se denomina criao dinmica com declarao explcita de processos.


7
Por exemplo, se a execuo no passa por uma determinada instruo fork, ento a thread correspondente no
criada.
8
A declarao explcita consiste em definir, para cada processo do programa, as suas variveis locais e o seu
segmento de cdigo.
9

Programao Concorrente SOPC


UEM 15



11. Sincronizaes

comum um processo ter que esperar at que uma condio se torne verdadeira. Para essa
espera seja eficiente, o processo deve esperar no estado bloqueado (sem competir pela UCP).
Dois tipos de bloqueio so considerados bsicos:
Bloquear at que um recurso se torne disponvel;
10
Bloquear at que chegue um sinal de outro processo.

Estes bloqueios so caracterizados pelas operaes bsicas lock/unlock e block/wakeup(P),
descritas a seguir. Enquanto o primeiro par (lock/unlock) implementa sincronizao do tipo
excluso mtua, o segundo par implementa uma forma bsica de comunicao.
12. Deadlocks

Ocorre quando duas ou mais threads bloqueiam-se em um ciclo vicioso enquanto tentam aceder a
travas sincronizadas necessrias para continuar suas actividades ou seja ficam a esperra por
recursos que jamais sero liberados.


12.1. Condies para a sua ocorrncia
Para a ocorrncia de um deadlock e necessrio que os processos a baixo estejam decorrendo

1. Excluso mtua

Ocorre quando tudo esta disponvel ou atribudo a um nico processo.

2. Segura ou espera
Ocorre quando os processo que detm solicitam novos recursos.

3. Recurso no preemtivel
Este um recurso concedido que no pode ser retirado para outro processo.


4. Espera circular
A existncia de um ciclo com dois os mais processos cada um esperando por um recurso
j adquirido pelo prximo processo do ciclo.

10
O recurso pode ser, inclusive, o direito de acessar os dados compartilhados.
Programao Concorrente SOPC


UEM 16



12.2. Estratgia para lidar deadlocks

Ignorar
Deteco e recuperao
Monitorao de recursos liberados e alocados
Eliminao de processos
Impedir a ocorrncia cuidando na alocao de recursos
Usando o algoritmo do banqueiro
Preveno por construo
Evitar a ocorrncia de pelo menos uma das quatro condies para sua ocorrncia.


12.3. Metodos para tratamento de deadlocks

Evitar deadlocks
Segundo Coffman, as quatro condies devem estar presentes para um deadlock ocorrer. A
ausncia de uma condio impede a ocorrncia de deadlock. Portanto, previne-se situaes de
deadlock eliminando-se pelo menos uma das condies necessrias para sua ocorrncia.

Preveno de deadlocks
No preempo: Ocorre quando os recursos no podem ser confiscados temporariamente
para serem alocados a outros processos. Elimina-se esta condio se os recursos forem
ordenados e os processos devem requisitar os recursos em uma sequncia que respeite
esta ordenao.

Excluso mtua: o processo solicita o recurso para uso de forma mutuamente exclusiva.
Esta condio sera eliminada se o processo solicitar todos os recursos que necessita em
uma nica vez.

Espera circular: Quando for possvel a formao de um ciclo no qual cada processo est
bloqueado espera de recursos que esto alocados para outros processos de mesmo ciclo.
Esta condio eliminada se for construdo um grafo e se for verificado, para cada
Programao Concorrente SOPC


UEM 17


requisio, se o atendimento no levar o sistema a um estado no seguro. As requisies
que levarem o sistema a um estado no seguro ou de deadlock no devero ser atendidas.
Espera por recursos: Os processos possuem recursos enquanto esperam por recursos
adicionais. Um processo pode requisitar e liberar recursos, mas quando requisitar um
recurso no disponvel deve liberar os que estava utilizando e, ento solicitar todos
coletivamente


12.4. Deteco e recuperao
possvel, pela anlise dos grafos, determinar se existe um deadlock.
Uma maneira simples de examinar grafos para determinar se existe deadlock a reduo dos
mesmos.

Recuperao de deadlock
Quando o algoritmo de deteco de deadlock determina a existncia de um deadlock, so
possveis diversas aes como:
a) Terminao de processos
Terminar todos os processos. Esta ao implica em reexecuo do processo eliminado.
Assim:
Escolher uma vtima por vez at que o deadlock seja eliminado;
Escolher criteriosamente o processo a ser terminado;
Reexecutar o algoritmo de deteco.
Problema da reexecuo de um processo: nem sempre possvel ex. atualizao de base
de dados.

b) Preempo
11
Ocorre quando recursos so retirados de processos no ciclo e entregues a outros, no mesmo ciclo,
at que o deadlock seja eliminado. O problema a ser resolvido a definio de critrios para a
escolha da vtima.
de recursos

c) Rollback
Os processos possuem checkpoints em que, periodicamente, o estado gravado em um
arquivo (imagem de memria, recursos);
Quando um deadlock detectado, o processo rolledback at antes de pedir um recurso;
O recurso atribudo a um outro processo no ciclo.


11
Preempo , literalmente, direito a preferncia
Programao Concorrente SOPC


UEM 18


13. Vantagens da Programao Concorrente

Aumento de desempenho:
Permite a explorao do paralelismo real disponvel em mquinas multiprocessadoras;
Sobreposio de operaes de E/S
12
Facilidade de desenvolvimento de aplicaes que possuem um paralelismo intrnseco.
com processamento;

14. Desvantagens da Programao Concorrente
Dificuldade de programao tratamento de threads
Ao utilizar o paradigma concorrente, o programador poder utilizar vrios recursos, o mais
conhecido so os threads (processos leves), que dividem o trabalho que necessita ser realizado
em duas ou mais partes. Dessa forma o processador no necessita aguardar o trmino de uma
instruo para iniciar outra como ocorre no paradigma estruturado clssico, pode-se iniciar no
mnimo duas tarefas simultaneamente quando utilizamos um processador de ncleo duplo. Mas
para a utilizao desses threads estritamente necessrio um controle rigoroso dos componentes
utilizados por ela, pois como estaro sendo executados dois ou mais processos que pertencem a
uma mesma aplicao, corremos o risco de um comando de um thread requisitar acesso a uma
regio da memria que j est utilizada por outra. Isso causaria no pior caso uma interrupo
repentina na execuo do programa, podendo levar perda de informaes importantes contidas
na memria de execuo que ainda no haviam sido gravadas em um lugar definitivo. O grande
empecilho na adoo da programao concorrente est no excesso de esforo necessrio por
parte do programador para acompanhar e controlar as modificaes ou acessos que esses threads
fazem ao longo do programa.






12
Entrada e saida
Programao Concorrente SOPC


UEM 19



Sincronizao Condicional
um mtodo comum para o controle dos threads. Para que um thread no interfira em outro,
usa-se dois tipos de sinal, o WAIT (espere) e o NOTIFY (sinal para prosseguir). Supondo uma
situao onde dois threads possuam trecho de cdigo que instrui para acessar uma mesma rea de
memria, o primeiro thread teria de emitir o sinal WAIT para a segunda, e assim que realizasse
todas as operaes necessrias com aquela rea da memria, enviaria o NOTIFY para o segundo
thread iniciar seu acesso. Isso seria a situao ideal. Porm no assim que ocorre em algumas
implementaes do UNIX
13

. Dependendo da implementao pode haver uma perda de sinal
entre os threads causando a no-execuo de determinada tarefa por uma das threads,
impactando todo o andamento da aplicao.

















13
Sistema de explorao multi-usuario, multitarefa desenvolvido por Ken Thompson
Programao Concorrente SOPC


UEM 20



15. Concluso
Terminado o trabalho, conclumos que a programao concorrente uma modalidade de
programao que mostra-se ainda carente de base de hardware instalada para alavancar o
desenvolvimento em larga escala de sistemas concorrentes. Contudo, possvel o
desenvolvimento de software em paradigma de programao concorrente para um processador
com apenas um ncleo, contudo no a que o paradigma ter o seu uso optimizado.
Nota se tambm que esta modalidade de programao extremamente exigente dado que traz
uma significante bagagem de dificuldade de controlo de privilgios de threads, entretanto,
mostra-se constituir uma rea Aida pouco explorada.
Apesar das linguagens de programao oferecerem bibliotecas e compiladores para o
desenvolvimento, porm no h grande interesse na mudana de paradigma, afigura-se rduo
ainda hoje encontrar entidades que facilitem o paradigma estruturado, pois a programao
concorrente exige tempo, investimento em treinamento, depurao e testes maiores.
Adicionalmente, no h uma disseminao em larga escala de processadores de vrios ncleos, a
grande maioria dos computadores do mundo utiliza apenas um ncleo de processamento. Isso
tambm desmotiva o desenvolvedor a mudar de paradigma, pois seu produto no ser utilizado
da maneira que foi projectada, ou no ter o mesmo desempenho.













Programao Concorrente SOPC


UEM 21



16. Bibliografia

[CON63] CONWAY, M. E. A Multiprocessor system design. Proc. AFIPS Fall J oint
Computer Conference, pp.139-146. Las Vegas, Nevada, 1963.
[COU71] COURTOIS, P. J ., HEYMANS, F.and PARNAS, D. L. Concurrent Control with
Readers and Writers. Comm. ACM 14, No. 10 (October), 667-668, 1971.
[TOS03] TOSCANI, S., OLIVEIRA, R., CARISSIMI, A., Sistemas Operacionais e
Programao Concorrente. Srie didtica do II-UFRGS, 2003.
[TOS04] TOSCANI, S. S. Kit de instalao da linguagem VALE4. Disponvel em
www.inf.pucrs.br/~stoscani/V4.














Programao Concorrente SOPC


UEM 22


17. Anexos