trabalho de tlp - UNIOESTE

advertisement
TRABALHO DE CONCEITOS DE LINGUAGENS DE PROGRAMAÇÃO
Prof. Jorge Habib Hanna El Khouri
Aluno: _____________
Turma: 2º A
UNIOESTE
CONCORRÊNCIA
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Quais são os três níveis de concorrência nos programas?
Qual nível de concorrência de programa é melhor suportado por computadores SIMD?
Qual nível de concorrência de programa é melhor suportado por computadores
MIMD?
O que é o thread de controle de um programa?
Defina tarefa, tarefa disjunta, sincronização, sincronização de competição e
cooperação,vivência e deadlock.
Quais tipos de tarefa não exigem nenhum tipo de sincronização?
Quais são as questões de projeto referentes ao suporte de linguagem para
concorrência?
Descreva as ações das operações de espera (wait) e de liberação (release) para
semáforos.
O que é um semáforo binário? O que é um de contagem?
Quais são os principais problemas decorrentes do uso de semáforos para fornecer
sincronização?
Qual vantagem os monitores têm sobre os semáforos?
Especificamente, qual unidade de programa Java pode rodar concorrentemente com o
método principal em um programa aplicativo?
O que o método sleep Java faz?
O que o método yield Java faz?
Quais são as duas construções Java que podem ser sincronizadas?
Quais métodos Java são usados para suportar sincronização de cooperação?
Explique porque o Java inclui a interface Runnable.
Qual é a melhor ação que um sistema pode desenvolver quando um deadlock é
detectado?
Espera ocupada (busy waiting) é um método por meio do qual uma tarefa espera que
determinado evento verifique continuamente se esse evento ocorre. Qual é o problema
com essa abordagem?
No exemplo do produtor-consumidor, suponhamos que substituímos incorretamente a
release(access) do processo consumidor por wait(access). Qual seria o resultado desse
erro na execução do sistema?
Suponhamos que duas tarefas, A e B, devam usar a variável compartilhada
TAM_BUF. A tarefa A adiciona 2 a TAM_BUF, e a tarefa B subtrai 1 dela.
Suponhamos que tais operações aritméticas sejam feitas pelo processo em três etapas:
buscar o valor atual, realizar a operação aritmética e colocar de volta o novo valor. Na
ausência de sincronização de competição, quais sequências de eventos são possíveis e
quais valores resultam dessas operações? Suponhamos que o valor inicial de
TAM_BUF seja 6.
EXCEÇÕES
22.
23.
Defina exceção, manipulador de exceções, levantamento de uma exceção, desativação
de uma exceção e exceção incorporada.
Quais são as questões de projeto relativas à manipulação de exceções?
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
O que se quer dizer por uma exceção estar vinculada a um manipulador de exceções?
Qual é o problema com a vinculação de exceções a manipuladores da PL/I?
Qual é o nome de todos os manipuladores de exceção do C++?
Como as exceções podem ser explicitamente geradas em C++?
Como as exceções são vinculadas a manipuladores em C++?
Como um manipulador de exceções pode ser escrito em C++ de maneira que manipule
qualquer exceção?
Para onde vai o controle de execução quando um manipulador de exceções do C++
encerra sua execução?
O C++ inclui exceções incorporadas?
Qual é a classe-raiz de todas as classes de exceção Java?
Qual é a classe-pai da maioria das classes de exceção Java definidas pelo usuário?
Como um manipulador de exceções pode ser escrito em Java de maneira que manipule
qualquer exceção.
Qual é a diferença entre uma especificação throw C++ e uma classe throws Java?
Como se pode desativar uma exceção Java?
Qual é o propósito da cláusula Java finally?
Em livros didáticos sobre as linguagens de programação PL/I e Ada, pesquise os
conjuntos respectivos de exceções incorporadas. Faça uma avaliação comparativa das
duas, considerando sua inteireza como sua flexibilidade.
Em linguagens sem facilidades de manipulação de exceções, é comum que a maioria
dos subprogramas inclua um parâmetro “error”, que pode ser fixado em algum valor
que representa “OK” ou algum outro valor que representa “erro de procedimento”.
Quais vantagens uma facilidade de manipulação de exceções linguísticas como a Ada
tem sobre esse método?
Compare as facilidades de manipulação de exceções do C++ com as da Java. Qual
projeto, em sua opinião, é o mais flexível? Qual deles possibilita escrever programas
mais confiáveis?
SEBESTA, Robert W. Conceitos de Linguagens de Programação. 4ed. Porto Alegre:
Bookman, 2000. 624 pág.
Download