Em relação aos conceitos de processo e thread, é correto afirmar que

Sistemas Operacionais
Capítulo 6
Processo

6.1 � Introdução

  • De forma simples, o processo é um programa em execução.
  • Extensão do conceito: Estrutura responsável pela manutenção de todas as informações necessárias à execução de um programa, como conteúdo de registradores e espaço na memória


6.2 � Modelo de Processo

  • Processo = ambiente onde se executa um programa
  • Um mesmo programa pode produzir resultados diferentes, dependendo do processo no qual ele é executado.
  • Bloco de controle do processo (Process Control Block � PCB) � Estrutura onde o SO guarda todas as informações do processo, contendo sua identificação, prioridade, estado corrente, recursos alocados por ele e informações sobre o programa em execução
  • O Sistema Operacional gerencia os processos através de System Calls.
  • Processo : contexto de hardware, software e espaço de endereçamento.

6.2.1 � Contexto de Hardware

  • Constitui-se do conteúdo de registradores
  • A troca de um processo por outro na CPU, pelo sistema operacional, é denominada mudança de contexto.
  • Mudança de Contexto -  salva o conteúdo dos registradores da CPU e carregá-los com os valores referente ao do processo que está ganhando a utilização do processador.


6.2.2 � Contexto de Software

  • Características do processo incluídas na execução de um programa, divididas em:
    • Identificação � Principalmente número (PID) de identificação e identificação do processo ou usuário (UID) que o criou.
    • Quotas � Limites de cada recurso do sistema que um processo pode alocar
    • Privilégios � o que o processo pode ou não fazer em relação ao sistema e aos outros processos.


6.2.3 � Espaço de Endereçamento

  • Área da memória do processo onde o programa será executado e para dados utilizados por ele.
  • Deve ser protegido do espaço de endereçamento dos demais processos


6.3 � Estado do Processo

  • Em sistemas Multitarefas o processo não é executado todo o tempo pelo processador
  • 3 tipos de estados:
    • Execução (running)  � O processo está sendo executado pela CPU.
    • Pronto (ready) � O processo está pronto e esperando para ser executado pela CPU.
    • Espera (wait) � O processo está esperando algum evento externo ou por algum recurso para poder prosseguir seu processamento.
      • Bloqueado � O processo está esperando por algum recurso do sistema que não se encontra disponível.


6.4 � Mudança de Estado do Processo

  • Mudança de estado por eventos do próprio processo (eventos voluntários) ou causados pelo sistema operacional (eventos involuntários). Dividido em 4 mudanças:
    • Pronto -> Execução = Quando um processo é criado, é colocado em uma lista de processos no estado pronto. Então é escolhido pelo sistema para ser executado.
    • Execução -> Espera = O processo passa para espera quando aguarda a conclusão de um evento solicitado.
    • Espera -> Pronto = O processo passa para pronto quando a operação solicitada é atendida ou o recurso esperado é concedido.
    • Execução -> Pronto = O processo passa de execução para pronto por eventos gerados pelo sistema.


6.5 � Subprocesso e Thread

  • Subprocesso ou processo filho
    • processos criados por um outro processo, de maneira hierárquica.
    • O subprocessos são eliminados quando o processo pai deixa de existir.
    • Permite dividir a aplicação para trabalhar de forma concorrente.
    • Cada processo e subprocesso possui seu ambiente e recursos alocados.
  • Thread ou Linha de Controle
    • No ambiente multthread cada processo pode responder a várias solicitações concorrentes ou mesmo simultaneamente, se houver mais de um processador.
    • Threads compartilham o processador da mesma forma que um processo.
    • Cada Thread possui seu próprio conjunto de registradores, porém compartilha o mesmo espaço de endereçamento com as demais threads do processo.
    • Uma Thread pode alterar os dados de outra Thread.


6.6 � Processos do Sistema

  • Grande parte do núcleo do sistema é executada no contexto de processos, inclusive no contexto de processos de usuários, como:
    • auditoria e segurança:
    • serviços de rede;
    • contabilização do uso de recursos;
    • contabilização de erros;
    • gerência de impressão;
    • gerência de jobs batch;
    • temporização;
    • comunicação de eventos;
    • inteface de comando (shell).


6.7 � Tipos de processos

  • CPU-bound (Ligado à CPU)
    • O processo passa a maior parte do tempo no estado de execução.
    • Realiza poucas operações de I/O
    • Encontrado em aplicações que efetuam muitos cálculos.
  • I/O-bound (Ligado à E/S)
    • O processo passa a maior parte do tempo no estado de espera
    • Encontrado em aplicações comerciais com bastante leitura, processamento e gravação.
    • Encontrado também em aplicações interativas.

    O que é um processo e thread?

    Um thread é a entidade dentro de um processo que pode ser agendado para execução. Todos os threads de um processo compartilham seu espaço de endereço virtual e recursos do sistema.

    Qual a relação entre processos e threads?

    A diferença básica entre threads e processos é: um processo não compartilha um mesmo recurso do computador simultaneamente com outro processo, enquanto que uma thread pode compartilhar um mesmo recurso simultaneamente com outras threads (dentro do mesmo processo).

    Qual a definição de thread?

    A tradução de Thread (em inglês) significa "fio" ou "linha", e no contexto dos microprocessadores representa uma ordem de execução, com instruções encadeadas que são desempenhadas uma por vez.

    O que é um thread em um sistema operacional?

    Em resumo, thread é a menor unidade de processamento que pode ser executada em um sistema operacional. Na maioria dos sistemas operacionais modernos, uma thread existe dentro de um processo e um único processo pode conter várias threads.