• Matéria: Informática
  • Autor: visilva5690
  • Perguntado 6 anos atrás

Uma thread é uma linha de execução em um processo. Um processo pode ter uma ou mais threads executando ao mesmo tempo. Neste contexto, um dos problemas encontrados na execução de várias threads ao mesmo tempo é:


A)Possuírem os mesmos estados que os processos




B)Sincronização entre elas




C)Não fazerem mudança de contexto




D)Não poderem ser interrompidas sem interromper o processo




E)Usarem o mesmo espaço de endereçamento.

Respostas

respondido por: catherinemossinigreg
1

Resposta:

Explicação:

Thread, que em inglês significa “linha”, representa uma linha de execução de um processo. Para entender melhor este conceito, veremos como funciona a execução de um programa no computador (que ocorre dentro de um processo, como já vimos no artigo anterior).

Ao iniciar um processo, a primeira instrução do programa é lida pela CPU e executada. De acordo com o que está codificado na instrução, a CPU poderá pegar a próxima instrução ou pular para um outro local do programa e continuar. Mas o processo é sempre o mesmo: as instruções vão sendo trazidas para a CPU de acordo com o que havia sido programado pelas instruções anteriores. Ou seja, elas vão sendo executadas sequencialmente.

Este é o conceito de thread: uma linha de execução onde as instruções do programa vão sendo executadas sequencialmente, até que o processo termine. Todo processo tem, pelo menos, uma linha de execução (ou thread). Pode-se dizer com segurança que, até o lançamento do Windows 95 em 1995, a grande maioria dos programas tinham apenas uma thread. Isso fazia com que o conceito de thread praticamente se fundisse em uma característica dos processos.

 

Programas com múltiplas threads

Ocorre que, muitas vezes, parte dos algoritmos de um programa em execução não exige esta sequência: seria mais vantajoso rodar 2 rotinas paralelamente. Para possibilitar esta execução simultânea de trechos dos programas, os sistemas operacionais implementam chamadas de sistema capazes de iniciar uma segunda (ou terceira, quarta, etc..) thread em um processo que está em execução. Esta técnica é chamada de “multithreading” na literatura técnica.

Mas existe uma forma muito mais simples de executar o mesmo algoritmo em paralelo: basta iniciar o mesmo programa várias vezes. Desta forma é criado um processo para cada vez que o programa é iniciado e todos rodam ao mesmo tempo. Então, qual é a diferença entre este conceito e o conceito de múltiplos processos executando o mesmo programa ao mesmo tempo?

Múltiplos processos versus múltiplas threads

A diferença principal é que ao utilizarmos o “multithreading” dentro do mesmo processo, a memória do processo é compartilhada entre todas as threads. Ao passo que, ao executar várias vezes o mesmo programa, cada processo originado terá sua própria memória isolada dos outros processos.

Além da memória, todos os recursos alocados (como arquivos, dispositivos e portas de comunicação) também são compartilhados por todas as threads do mesmo processo. Em resumo: tudo que uma thread do processo pode acessar, uma outra thread do mesmo processo também pode. E isso é extremamente eficiente pois evita a que seja necessário enviar dados de um processo para outro, uma vez tudo já é acessível a todas as threads.

Outra vantagem importante é que a criação e término de threads em um processo é muito eficiente, bem mais do que a criação e término de processos. Desta forma, sempre que um programa quiser ou precisar rodar parte do algoritmo em paralelo, ele cria uma nova thread para isso sem que a CPU tenha muito trabalho.


visilva5690: resposta é D
Perguntas similares