SóProvas


ID
332710
Banca
CESPE / CEBRASPE
Órgão
Correios
Ano
2011
Provas
Disciplina
Sistemas Operacionais
Assuntos

Com relação às características e funções básicas de um sistema operacional, julgue os itens seguintes.

Em um ambiente com múltiplos threads (multithread), não é necessário haver vários processos para se implementarem aplicações concorrentes.

Alternativas
Comentários
  • Threads são linhas de execução dentro de um processo.

    Um processo tem seu endereço de memória, seus registradores, descritores de arquivos abertos e sua pilha.
     Acontece que multiplexar processos para uma CPU é caro porque a cada escalonamento do novo processo, seu estado tem que ser recuperado, isto é, seu ponteiro de pilha, seu contador de programa, seus dados para os registradores...

    Então a galera pensou em threads, que podem ser escalonadas intra-processo.

    Cada thread, dentro um processo, possui sua propria pilha, seu proprio contador de programa e seus registradores, porém como estão dentro de um mesmo espaço de endereço de memória ( o do processo), uma thread pode muito bem acessar e modificar a pilha ou outras coisas de outra thread.

    Isso não é necessariamente um problema porque threads tem um propósito mais específico que processos. Geralmente as threads trabalham juntas para se chegar à um objetivo global comum, como atender as requisições em um webserver. Para cada requisição de usuário pode ser criada uma thread.
  • Enunciado muito mal elaborado.

    "implementarem aplicações concorrentes"

    "Aplicações" é algo muito abstrato. O cara em uma prova ao ler isso fica na dúvida se a banca se refere a um processamento qualquer concorrente ou falando de programas/softwares que executam de forma concorrente.
  • Concordo com o comentário do colega acima. Qual a definição de aplicação? Se for um arquivo binário (executável), obviamente a questão está incorreta! (não há como carregar dois binários distintos com um único PID, process ID).
  • Exatamente!
    Marquei errada por causa da palavra "aplicações".
    Fica difícil... e olha que foi CESPE!
  • Pessoal. Para que tanta confusão para uma questão tão simples. A questão está corretíssima, isso, porque, o que é um ambiente multihread? É um ambiente onde há duas ou mais threads rodando dentro de um ÙNICO processo. Então, a questão ainda não pega pesado, pois ela diz: "não é necessário", realmente não é necessário haver mais de um processo. No ambiente Multithead, a aplicação concorrente -de threads- ocorre sim, porém em um único processo. Abraços e bons estudos.
  • Questão mal elaborada. Ainda que tenhamos múltiplas threads, ainda serão necessários múltiplos processos para implementar aplicações concorrentes. É possíve executar um editor de texto, uma calculadora e um browser utilizando APENAS UM processo? CLARO QUE NÃO.
    As threads operam de forma colaborativa dentro do escopo de uma aplicação, e não implementam aplicações concorrentes, como afirma a questão.
  • A principio, pensei exatamente como o Mauricio.
    Porem, para responder a questao, vc deve saber a diferença entre concorrente e simultaneo(ou paralelo).
    Aplicações concorrente significa q elas concorrem por um mesmo recurso quanto executam ao mesmo tempo. Se dois ou mais programas executam ao mesmo tempo em uma máquina com apenas um processador, logo, seus processos executam concorrentemente/competem pelo mesmo recurso. Aparentemente, elas executam em paralelo, pois podemos ter vários programas abertos ao mesmo tempo. Porem, eh pura ilusão. O processador eh chaveado milhoes de vezes em uma fração de tempo, q o usuario tem a sensacao de paralelismo.
    Já em aplicacoes paralelas(q executam simultaneamente), necessitam de um ou mais recursos para realmente(e não aparentemente) executar processos em paralelo. Aqui, os processos não competem por recursos(pelo processador), pois eles realmente executam ao mesmo tempo q o outro.
    Quando a questão afirma q em um ambiente multithread não é necessário haver vários processos para se implementarem aplicações concorrentes, ela está certa, pois as várias threads por si so já representa a concorrencia, visto q, mesmo no caso das threads, não eh possivel executa-las de forma paralela tendo apenas um processador. As threads, assim como os processos, executam de forma chaveada, concorrendo pelo uso do processador.
    Apesar das criticas dos colegas, achei uma questão muito bem elaborada, q cobra um conhecimento mais profundo sobre processos e, inclusive, as diferencas entre paralelismo e concorrencia.
  • O que gerou confusão foi exatamente a palavra APLICAÇÕES.


    Se no final do enunciado utiliza-se apenas o termo: "PARA SE IMPLEMENTAR CONCORRÊNCIA", não haveria má interpretação, ou duplo sentido.


    Aqui o Cespe está afirmando que um thread é uma aplicação. Pra mim é novidade.

  • Certinho.

    Em suma, multithreading é a associação de vários fluxos de execução a um único processo.

  • Gabarito Certo

    Ótima resposta do companheiro Lucc O !

     

     

    "Retroceder Nunca Render-se Jamais !"
    Força e Fé !
    Fortuna Audaces Sequitur !