Em relação aos conceitos de multithreading e de processo, a...
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Vamos analisar a questão referente aos conceitos de multithreading e de processos.
Primeiramente, a alternativa correta é a alternativa D.
A alternativa D afirma: "Nos sistemas operacionais que implantam threads em nível de sistema (modelo 1:1), o escalonamento é orientado a threads e não a processos, já que todo processo tem pelo menos uma thread."
Essa alternativa está correta porque, no modelo 1:1 de multithreading, cada thread de usuário é mapeada para uma thread do sistema. Isso significa que o sistema operacional trata cada thread individualmente, realizando o escalonamento de threads em vez de processos. Assim, o gerenciamento de threads está mais diretamente integrado ao kernel, permitindo uma melhor utilização de recursos e maior responsividade no sistema.
Agora, vamos analisar as outras alternativas para entender por que elas estão incorretas:
A - "A programação com threads só faz sentido em processadores que possuem mais de um núcleo (core); caso contrário, deve-se empregar o modelo de processo para expressar concorrência."
Essa alternativa está errada porque a programação com threads também faz sentido em processadores de núcleo único. Mesmo em sistemas de núcleo único, o uso de threads pode melhorar a organização do programa e permitir a execução concorrente de tarefas, embora não paralela. A troca de contexto entre threads pode ser mais eficiente que entre processos.
B - "As threads compartilham o espaço de endereçamento do processo que as criou, ou seja, acessam as mesmas áreas de código, de dados globais, de heap (monte) e de pilha."
Essa alternativa está parcialmente correta, mas com um erro crucial: as threads compartilham o código, os dados globais e o heap, mas cada thread tem sua própria pilha de execução. Portanto, o compartilhamento não ocorre na área de pilha.
C - "As threads são empregadas apenas para explorar o processamento paralelo, enquanto os processos são destinados apenas para a programação concorrente."
Essa alternativa está incorreta porque threads e processos podem ser usados tanto para programação concorrente quanto para processamento paralelo. A diferença entre eles está mais relacionada ao compartilhamento de recursos e ao custo de criação e gerenciamento.
E - "Quando um processo filho termina, as threads criadas durante a execução desse processo filho são herdadas pelo processo pai."
Essa alternativa está incorreta porque, quando um processo termina, todas as threads associadas a ele também são finalizadas. Não há herança de threads pelo processo pai.
Espero que essa explicação tenha ajudado a esclarecer seus conhecimentos sobre multithreading e processos. Caso tenha mais dúvidas, estarei aqui para ajudar!
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
obrigado ajudou muito
ALTERNATIVA A
O ERRO DA ALTERNATIVA É DESMERECER O USO DE THREADS EM ARQUITETURA DE APENAS 1 NUCLEO, LEMBRANDO QUE ELE É MULTITAREFA SIMULANDO O PARALELISMO
As threads compartilham o espaço de endereçamento do processo que as criou, ou seja, acessam as mesmas áreas de código, de dados globais, de heap (monte) e de pilha. O erro da alternativa "b" é que o Controlador de programa, pilha, registradores específicos e estados são itens privados da tread, ou seja, não são compartilhados com o processo que a criou.
A thread is a basic unit of CPU utilization, consisting of a program counter, a stack, and a set of registers, ( and a thread ID. ) Traditional ( heavyweight ) processes have a single thread of control - There is one program counter, and one sequence of instructions that can be carried out at any given time.
https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/4_Threads.html
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo