Você está na página 1de 5

FACULDADE ANHANGUERA DE PIRACICABARua Santa Catarina, 1005 - gua

Branca - CEP 13425-107 (19)3428-1237

Trabalho De ATP S EXERCICIOS

Curso:
Cincias da computao7Semestre.

Disciplina:
Programao Concorrente

Aluno:
Nira Rocha
Felipe S. Aoyagui
Thiago R.Ferraz
Eduardo F. Bezerra
Jose Roberval Silva

RA:4259836749
RA:4252061911
RA:3727694538
RA:4836917437
- RA:8071853205

Prof. Mauricio Scoton

Piracicaba, 6 de abril de 2015

Lista de Exerccios da Aula 4


1. O que uma thread?
Uma thread uma linha de execuo de um processo. Em outras palavras,
uma sequncia de instrues a serem executadas dentro do cdigo do programa.
2. Qual a principal diferena entre threads e processos?
Do ponto de vista do programador, a principal diferena entre threads e
processos o fato das threads de um mesmo processo compartilharem memria
(o espao de endereamento), enquanto processos distintos tm espaos de
endereamento separados.
3. Por qual motivo um usurio daria preferncia a utilizao de threads ao invs de
processos em um programa concorrente?
O fato das threads compartilharem memria pode simplificar a escrita de
programas concorrentes, pois facilita a comunicao entre as threads. As threads
tambm so mais leves que os processos, o que pode fazer com que o programa
concorrente se torne mais rpido.
4. Por que as threads so algumas vezes ditas processos leves?
A manipulao das threads mais leve que a manipulao de processos, pois o
chaveamento entre duas threads do mesmo processo necessita do salvamento de
um contexto menor que o chaveamento entre dois processos.
5. Defina Programao Concorrente.
Um programa concorrente aquele que utiliza mais de um processo ou mais de
uma thread para executar a tarefa desejada.
6. Qual a diferena entre um programa sequencial e um programa paralelo?
Um programa sequencial aquele que tem apenas uma linha de execuo (um
nico processo, com uma nica thread). Um programa paralelo aquele que
utiliza vrios processos ou thread
7. Quais so as razes que podem levar um programador a escrever um programa
paralelo, ao invs de um sequencial?
Algumas aplicaes apresentam caractersticas intrinsecamente paralelas. Neste
caso, mais fcil (ou mais intuitivo) implement-las em um programa paralelo.
Programas paralelos tambm podem ser mais eficientes, pois operaes de E/S
podem ser sobrepostas com processamento. Em sistemas multiprocessados, as
aplicaes paralelas tambm podem ser mais eficientes, j que threads (ou
processos) diferentes podem ser executadas simultaneamente.

8. Quais as desvantagens da programao concorrente, em relao programao


sequencial?
Programas concorrentes so mais complexos, pois h um gerenciamento maior
das diversas linhas de execuo. Estes programas tambm so mais difceis de
depurar, pois erros em uma thread podem se manifestar como falhas em outras
threads.
9. Como a programao concorrente pode melhorar o desempenho da execuo de
um programa em uma mquina multiprocessada?
. Em uma mquina multiprocessada, um programa paralelo pode ter suas threads
ou processos executados simultaneamente nos vrios processadores disponveis.
10. Como a programao concorrente pode melhorar o desempenho da execuo de
um programa em uma mquina monoprocessada?
Em uma mquina monoprocessada, um programa concorrente pode
simultaneamente utilizar o processador e realizar operaes de E/S. Enquanto
uma thread ou processo fica bloqueada em uma operao de E/S, as demais
podem continuar suas execues no processador.
11. Por que mais fcil que erros em uma thread afetem outras threads (do mesmo
processo) do que erros em um processo afetem outro processo (do mesmo
programa).
Porque threads de um mesmo processo compartilham memria. Por isso, erros
em uma thread podem se manifestar como sintomas em outras thread
12. Suponha um programa paralelo composto por duas threads. A thread T1, em sua
primeira instruo, altera o valor de uma varivel x para 9 (suponha que,
inicialmente, x tem valor 0). A thread T2, aps a execuo de 3000000 de
instrues, l o valor de x e imprime. Qual valor impresso? Justifique.
impossvel dizer com certeza. Existem duas possibilidades: o programa pode
imprimir 0 ou 9, dependendo da ordem em que as threads so executadas. No
entanto, a ordem de execuo de programas concorrentes imprevisvel.
13. Qual a diferena entre paralelismo real e aparente?
Mquinas multiprocessadas so capazes de paralelismo real, ou seja, de executar
vrias threads, de fato, simultaneamente. Mquinas monoprocessadas so
capazes apenas de simular o paralelismo atravs do uso de estratgias de
timesharing. Neste caso, diz-se que o paralelismo aparente.
14. Qual a diferena entre uma especificao explcita de paralelismo e uma
especificao implcita de paralelismo?

. Na especificao explcita, o programador define (explicitamente) como e


quando as threads ou processos so criados e exatamente quais tarefas so
executadas por cada linha. Na especificao implcita, o programador apenas
define quais as regies do cdigo devem ser paralelizadas. O compilador ,
ento, responsvel pela criao das vrias linhas de execuo e pela diviso do
trabalho entre elas.
15. Qual a vantagem da representao de paralelismo em grafos de precedncia?
Esta representao permite que o programador facilmente indique as relaes de
dependncia entre as diversas tarefas dentro de um programa concorrente.
16. Cite exemplos de recursos comumente compartilhados em programas paralelos.
Arquivos, sockets, variveis so alguns exemplos.
17. Cite uma utilidade do compartilhamento de memria
Variveis compartilhadas podem ser utilizadas para a comunicao entre threads
ou processos. Por exemplo, uma thread pode utilizar uma varivel compartilhada
para avisar a uma segunda thread que uma determinada condio agora
verdadeira..
18. Explique o problema do Produtor-Consumidor. D um exemplo de aplicao
desde problema, comum em sistemas de computao.
Neste problema, existem vrios processos (ou threads) que produzem dados.
Estes dados so colocados em um buffer para que outros processos, conhecidos
como Consumidores, os leiam e faam alguma computao com eles. Uma
aplicao comum deste problema so os servios de impresso.
19. Defina Seo Crtica.
A seo crtica uma regio do cdigo de um programa que contm a
manipulao de algum recurso compartilhado por vrias threads ou processos.
20. Por que o conceito de Seo Crtica importante em programao concorrente?
Porque se o acesso s sees crticas de um programa concorrente no for
controlado, pode ocorrer o problema da condio de corrida.
21. O que uma condio de corrida? Em que condies esta situao pode ocorrer?
A condio de corrida um problema que pode ocorrer em programas
concorrentes quando mais de uma thread ou processo acessa a regio crtica de
um dado recurso. Neste caso, dependendo da ordem de execuo das threads ou
processos o resultado do programa pode ser diferente do esperado. Em geral,
este problema ocorre quando uma thread ou processo dentro da seo crtica tem
sua execuo interrompida, e outra entra em seu lugar e tenta acessar a regio.
22. Defina Operao Atmica. Por que uma operao atmica no pode sofrer
condio de corrida?
Uma operao atmica aquela que no pode ser interrompida, uma vez que
tenha sido iniciada. Se toda a regio crtica implementada em uma operao

atmica, no h possibilidade de condio de corrida, pois no mximo um


processo estar executando a seo crtica por vez
23. Considere o seguinte trecho de cdigo: void insere_na_lista(int valor) { t_no n; n
= (t_no *) malloc(sizeof(t_no)); n.valor = valor; n.proximo = lista; lista = n; } A
funo insere um novo valor no incio de uma lista, apontada pela varivel
global lista. O tipo t_no descreve um n da lista, contendo o valor e o ponteiro
para o prximo elemento da lista.
Um exemplo em que o trecho de cdigo apresenta erro de execuo a seguinte
situao. Um processo A entra na funo e executa todas as linhas, menos a
ltima. Neste momento, ele interrompido e em seu lugar entra o processo B. O
processo B executa toda a funo, incluindo um novo n no incio da lista.
Quando o processo A volta a executar, ele termina a rotina, alterando o ponteiro
para o incio da lista. No entanto, nesta situao o n inserido pelo processo B se
perde (no h referncia para ele).
Explique se este cdigo funciona corretamente (sempre) caso vrios processos
(ou threads) possam acessar simultaneamente esta funo de insero. Caso seja
possvel haver erros em determinados casos de execuo, mostre exemplos nos
quais tais erros ocorrem. Neste caso, explique tambm qual trecho do cdigo a
seo crtica
A seo crtica deste cdigo, portanto, contm as duas ltimas linhas da funo.
Ambas manipulam (lem e escrevem) a varivel compartilhada lista.