SóProvas


ID
27556
Banca
CESGRANRIO
Órgão
Petrobras
Ano
2004
Provas
Disciplina
Sistemas Operacionais
Assuntos

Para resolver o problema de hierarquia de processos, foi criado o conceito "thread", no qual um processo pode efetuar várias operações concorrente ou simultaneamente, sem o consumo de espaço de endereçamento. Neste caso, o processo é dividido no número de threads sem que haja necessidade de ser criado um outro processo concorrente. Baseado nesta idéia, indique a afirmativa INCORRETA.

Alternativas
Comentários
  • o SO não tem a obrigação de fazer o escalonamento destas threads, em geral ele nem sabe que as threads existem.
  • O suporte à thread é fornecido pelo próprio sistema operacional (SO), no caso da linha de execução ao nível do núcleo, ou implementada através de uma biblioteca de uma determinada linguagem, no caso de uma User-Level Thread (ULT).

    Uma linha de execução permite que o usuário de programa, por exemplo, utilize uma funcionalidade do ambiente enquanto outras linhas de execução realizam outros cálculos e operações.
     

    A execução de threads (parcial ou totalmente simultâneas) dependerá, além do processador, do sistema operacional, pois o mesmo irá gerenciar a execução das threads de maneira semelhante à realizada com os processos.

  • a) Mudanças feitas por um thread a um recurso compartilhado do sistema serão vistas por todos os outros threads. ISSO. Note que Threads oculpam o mesmo espaço de endereçamento, diferente dos processos, onde cada um tem o seu. Cada thread tem sua própria pilha, contador de programa e conjunto de registradores ( que armazenam o contador de programa e o ponteiro de pilha - por exemplo).Uma thread pode até mesmo alterar a pilha da outra. as variáveis globais e os arquivos abertos usados pelas outras. Esse Java isso é muito comum com o uso de Threads, por isso existem algumas coleções que são sincrinizadas, isto é, não permitem anomalias de acesso concorrente.

     b) Threads podem compartilhar os recursos do processo com outros threads igualmente independentes. Sim, recursos tais como variáveis globais e descritores de arquivos abertos. Uma thread pode abrir um arquivo e outra thread ler desse arquivo.  c) Threads não podem ser escalonados pelo sistema operacional e nem rodar como entidades independentes dentro de um processo. ERRADO. Quer dizer, Nem sempre... Se a thread estiver rodando no espaço de usuário realmente o sistema operacional não enxerga a thread - cada processo tem uma tabela de threads. Nesse caso o SO enxerga apenas o processo. Porém se a thread estiver rodando  no núcleo, o SO tem uma tabela de threads e pode escalonar essas threads do mesmo processo ou de outros processos.  d) Cada thread tem seu próprio conjunto de registradores, mas todos eles compartilham o mesmo espaço de endereçamento, pois o processo é um só. Isso. A thread tem: Seu próprio conjunto de registradores Sua própria pilha Seu próprio contador de programas Seu próprio estadoAs threads compartilham Espaço de endereçamento Descritores de arquivos abertos Alarmes Variáveis globais Processos filhos Sinais e tratadores de sinais Informações de contabilidade  e) Os threads criados por um processo morrem quando esse processo pai morre. Sim.  Uma thread nada mais é que uma linha de execução intra-processo, dependente do espaço de endereçamento do processo. Se este é terminado as threads morrem também. Como já foi dito, alguns SOs nem sequer enxergam as threads, so os processos.
  • c-

    Processo - programa em execução (ativo). Programa é um conjunto de códigos (passivo) que quando carregado em memória vira processo.


    Um programa pode executar vários processos, como um editor de textos (um programa), com vários documentos distintos abertos (processos).


    Na criação de um processo, o sistema operacional o aloca criando recursos em três partes conforme

    - Contexto de software: determina limites dos recursos alocados, como memória, quantidade de arquivos abertos, prioridade etc.


    - Contexto de hardware: armazena o conteúdo dos registradores tais como pilha e o contador do programa, de programa, status etc.

     

    -Espaço de endereçamento: armazena as instruções executadas pelo processo.

     

    O sistema operacional tb cria PCB – Process Control Block- para gerenciar os contextos do processo. PCB contém:


    1- Nome e/ou número do processo


    2- Ponteiros.


    3-  Estado do processo.


    4 - Prioridade.


    5 - Registradores.


    6- Limites de memória.


    7- Listas de arquivos abertos.


    O PCB fica em área de memória de acesso exclusivo do sistema operacional.  Limita o tamanho dessa área, limita a quantidade de processos 
    que sistema operacional pode executar.

     

    Thread compartilha a mesma área do programa principal. Vantagem -economia de recursos pois não há criação de PCB. Contexto do thread é o mesmo do ao processo principal.


    Threads se diferenciam apenas nos dados que processam.