Vous êtes sur la page 1sur 4

Universidade Federal Do Pará

Instituto de Ciências Exatas e Naturais


Faculdade de Computação
Bacharelado em Ciência da Computação
Sistemas Operacionais

Lista 04 – Threads

1 - Forneça dois exemplos de programação, um em que a criação de várias threads


não proporcione melhor desempenho e outro em que a criação de várias threads
proporcione melhor desempenho do que uma solução com um único thread.

Os ambientes monothreads operam apenas com um única thread por processo e isso
provoca uma queda no desempenho de certa forma devido a necessidade de utilizar vários
processos e sub processos e alocar recursos para cada um deles, ao contrário dos ambientes
multithreads, que compartilham seu espaço de endereçamento com inúmeras threads. Em
ambientes cliente-servidor threads são essenciais para solicitações de serviços remotos,
como um programa GUI interativo, como um depurador em que uma thread é usada para
monitorar a entrada do usuário, outra thread representa a aplicação em execução e uma
terceira thread monitora o desempenho, ou um servidor Web que atende a cada requisição
em uma thread separada. Mas, qualquer tipo de programa sequencial não é um bom
candidato para usar multithreads, um exemplo disso é um programa para calcular a
devolução de imposto de renda individual. Outro exemplo é um programa de “shell”, como
o C-shell ou o Korn shell. Esse tipo de programa precisa monitorar de perto seu próprio
espaço de trabalho, como arquivos abertos, variáveis de ambiente e diretório de trabalho
atual.

2 - Quais os problemas de aplicações concorrentes desenvolvidas em


ambientesmonothread?

Existem vários tipos de problemas quando nos relacionamos a sistemas de


programação monothreads, principalmente na parte de comunicação e no tempo de
processamento, pois cada processo possui o seu próprio espaço de endereçamento e logo
como possuem uma única thread por processo, se tem a necessidade de utilizar vários
processos e sub processos que proporcionam uma queda na velocidade de processamento,
pois ele precisa alocar recursos para criação de um novo processo a cada vez que lhe for
solicitada, consumindo tempo de processador neste trabalho.

3 - Quais as vantagens e as desvantagens do compartilhamento do espaço de


endereçamento entre threads de um mesmo processo? Explique.

A principal vantagem no compartilhamento do espaço de endereçamento entre


threads é que esse ele possibilita uma espécie de troca de dados mais rápida e simples entre
as threads dentro de um mesmo processo, pois permite uma maior comunicação entre eles.
E a desvantagem é que devido a esse compartilhamento dos dados no endereçamento faz
com que a memória fique desprotegida, fazendo com que threads possam alterar dados
entre si.
4 - Uma solução com vários threads usando múltiplos threads de nível de usuário pode
obter melhor desempenho em um sistema multiprocessador do que em um sistema
com um único processador? Explique.

Não, porque o sistema que utiliza a implementação de múltiplas threads em um


nível de usuário só pode gerenciar o sistema operacional como se existisse apenas uma
única thread, ou seja, o sistema reconhece apenas os processos e não as threads em si,
sendo assim é de responsabilidade da aplicação gerenciar e sincronizar as threads
existentes, e ainda pelo fato de não ser possível a implementação de múltiplas threads em
diferentes processadores, devido o sistema selecionar apenas processos para a execução e
não as threads do processo, fazendo com que seja executado somente em um processador

5 - Como o uso de threads pode melhorar o desempenho de aplicações paralelas em


ambientes com múltiplos processadores? Explique

Para obter os benefícios do uso de threads, uma aplicação deve permitir que partes
diferentes do seu código sejam executadas em paralelo de formam independente. O uso de
uma arquitetura com múltiplos processadores beneficia a concorrência entre as threads com
a possibilidade do paralelismo de execução entre processadores

6 - Por que uma aplicação de software escrita para threads de núcleo é menos portável
do que um software escrito para threads de usuário? Explique.

Uma aplicação de threads em modo kernel é menos portável, pois todas as


implementações são feitas pelo núcleo do sistema operacional utilizando as rotinas do
sistema, assim sendo leva a um baixo desempenho e consequentemente há várias mudanças
no modo de acesso,enquanto que nos pacotes de rotinas em modo usuário todo o tratamento
é feito sem a ajuda no sistema operacional.

7 - Em que cenários (ou situações) threads de núcleo são mais eficientes do que
threads de usuário?

Ele se torna mais eficiente quando se trata de sistemas utilizando múltiplos


processadores, pois o sistema em modo kernel reconhecemúltiplas threads por processo, e
podem ser executadas em vários processadores simultaneamente, enquanto que nos
sistemas de threads de modo usuário, possui a limitação de não poder ser utilizado em
sistemas com múltiplos processadores, já que o sistema gerencia o processo como se
houvesse uma única thread.

8 - Quais os benefícios do uso de threads em ambientes cliente-servidor? Cite


vantagens e desvantagens no uso do pool de threads nesse tipo de ambiente.

As Threads facilitam o trabalho do servidor, quando temos em foco a rapidez e


agilidade do sistema operacional, pois a utilização das threads são muito eficientes quando
levamos em consideração o tempo em que o sistema perderia na criação de um novo
processo para o servidor, e recursos do sistema que são alocados para o novo processo. A
utilização das threads inibe essa criação de um novo processo gerando apenas uma nova
thread para o mesmo processo, utilizando os mesmos recursos alocados para o mesmo
processo. A utilização do pool de threads é apenas para se ter um controle de quantas
threads vão ser criadas pelo servidor, impedindo que ele faça uma criação de threads sem
limites, que comprometeria o desempenho do sistema.
A vantagem em utiliza-lo é que o sistema ficaria mais ágil, já que ele criaria várias
threads para o processo antecipadamente, e a solicitação de uma thread seria mais rápida,
pela ausência de da criação da mesma toda vez que se for solicitada. A Desvantagem
acontece quando o cliente faz uma solicitação e as threads criadas já foram todas
disponibilizadas, e esta petição fica em espera.

9 - Qual a vantagem do Scheduler Activations comparado ao pacote híbrido.


Explique.

O Scheduler Activations é mais vantajoso, pois possibilita uma troca de


informações entre as threads modo usuários e as threads modo kernel o que facilita a
comunicação entre os dois modos, e no modo hibrido essa comunicação é inexistente
causando mudanças de acesso desnecessárias, que não ocorrem no modo Scheduler
Activations.

10 - Por que, em mapeamentos de thread muitos-para-um, o sistema operacional


bloqueia o processo multithread inteiro quando um único thread fica bloqueado?
Explique.

Porque o sistema de muitos para um, utiliza o método de threads de modo usuário, que não
identifica a utilização de múltiplas threads identifica apenas o processo, ou seja, quando
uma thread no modo usuário sofre um bloqueio, logo será bloqueado o todo o processo.

11 - Cite duas diferenças entre os threads de nível de usuário e as de nível de kernel.


Sob que circunstâncias um tipo é melhor do que o outro?

A principal diferença entre as threads de modo usuário e kernel está na forma em


que elas são utilizadas pelo sistema operacional, nas threads de modo usuário elas são
implementadas pela aplicação e não pelo sistema operacional, logo cabe à aplicação
gerenciar e sincronizar as threads do processo, enquanto que no modo kernel a
implementação é feita diretamente pelo sistema operacional, através de chamadas de rotina
de sistema que oferece as funções de gerência e sincronização. Outra diferença está no
desempenho que nas implementações de threads modo usuário são bem mais eficientes por
não precisarem utilizar o kernel do sistema operacional, evitando a troca de modo de
acesso, contrariamente nas threads modo kernel a utilização das chamadas de rotinas do
sistema provocam inúmeras mudanças no modo de acesso.
Em threads modo usuário é possível implementar aplicações multithreads mesmo
em sistemas operacionais que não suportam threads através do uso de bibliotecas pela
aplicação. Enquanto que em modo kernel é recomendável usar em ambientes com múltiplos
processadores pois as threads de um mesmo processo pode ser executada simultaneamente.
12 - Que recursos são usados quando um thread é criado? Em que eles diferem dos
usados quando um processo é criado? Explique.

No momento da criação da Thread, é gerado a sua identificação (TID), um controlador de


programas, um conjunto de registradores e uma pilha, ou seja, seu contexto de hardware, e
essas informações ficam armazenadas em uma estrutura de dados denominada TCB
(Thread Control Block). A diferença na criação dos processos está no ambiente
multithreads em que as threads do processo compartilham o mesmo contexto de software e
espaço de endereçamento, diferente do processo que não compartilha o contexto de
software e espaço de endereçamento, cada um tem seu próprio contexto de hardware, de
software e espaço de endereçamento.