1 Como uma aplicação pode implementar concorrência em um ambiente
monothread?
Elas permitem dividir as aplicações para trabalhar de forma concorrente,
implementadas com múltiplos processos independentes ou subprocessos.
2 Quais os problemas de aplicações concorrentes desenvolvidas em ambientes
monothread?
Demanda o consumo de diversos recursos do sistema monothread, pois quando há a
criação de um novo processo, o sistema deve alocar recursos para cada
um dos processos, tomando tempo. E problemas no compartilhamento do espaço do
endereçamento, tornando-se lenta quando cada um dos processos tem seu
proprio espaço de endereçamento.
3 O que é um ambiente multithread e quais as vantagens de sua utilização?
Cada processo pode responder a várias solicitações concorrentemente ou mesmo
simultaneamente, no caso de haver mais de um processador.
A vantagem no uso de threads é minimizar a alocação de recursos com a criação de
novos processos.
4 Explique a diferença entre unidade de alocação de recursos e unidade de
escalonamento.
Unidade de alocação de recursos: onde o processo e todos seus threads compartilham
espaço de endereçamento, descritores de arquivos e dispositivos.
Unidade de escalonamento: distribui o acesso aos recursos presentes no sistema
entre os processos ativos, permitindo que todos eles que estejam na fila possam
utilizar a CPU.
5 Quais as vantagens e desvantagens do compartilhamento do espaço de endereçamento
entre threads de um mesmo processo?
Compartilhar os dados entre as threads, porém o compartilhamento do espaço de
endereçamento, dentro desse espaço não há proteção de acesso a memória,
permitindo que os dados entre as threads sejam alterados.
6 No programa multithread do item 6.4, qual dos três threads será executado
primeiro, depois de criados?
Thread num 1, depois entra em um tempo de espera entre 0 e 5 segundos, depois está
pronta para ser escalonada.
7 No programa multithread do item 6.4, é possível que o thread 3 seja executado
mais que três vezes seguidas?
Não é possível determinar qual sera executada apos a criação de três threads.
8 Altere o programa do item 6.4 de forma a criar mais um thread, totalizando uma
aplicação concorrente com quatro threads.
int i, n = 4; //mudanca de tres para quatro
9 Compare os pacotes de threads em modo usuário e modo kernel.
Modo usuário: implementadas pela aplicação e não pelo SO. Deve existir uma
biblioteca de rotinas que permite a aplicação
realizar tarefas (criar e eliminar threads, comonicação entre threads).
Responsabilidade da aplicação gerenciar e sincronizar as diversas
threads existentes.
Modo kernel: SO sabe da existência de cada thread e pode escaloná-los de maneira
individual. As rotinas do sistema oferecem todas as funções de gerenciamento de
sincronização.
Em muilti-cores, os threads de um mesmo processo podem ser executados
simultaneamente.
10 Qual a vantagem do scheduler activations comparado ao pacote híbrido?
Combina as duas arquiteturas do modo híbrido, mas inves de dividir as threads em
ambos os modos(usúario e kernel), o núcel do sistema troca informações com a
biblioteca threads com estrutura de dados.
11 Dê exemplos do uso de threads no desenvolvimento de aplicativos, como editores
de textos e planilhas eletrônicas
Words e PowerPoint, há threads prontas para ser executada como correções
ortograficas, criação de novas paginas, sugestões de palavras,etc.
12 Como o uso de threads pode melhorar o desempenho de aplicações paralelas em
ambientes com múltiplos processadores?
Com o uso do modo híbrido, a biblioteca em modo usuario e o kernel se comunicam e
trabalham de forma cooperativa, trocando informações quando necessário.