Processos e Threads

Processos

O conceito mais central em qualquer sistema operacional é o processo: uma abstração de um programa em exibição. Tudo depende desse conceito e é importante que o projetista de sistemas operacionais tenha um entendimento completo do que é um processo.

Em sistemas operacionais, processo é módulo executável único, que corre concorrentemente com outros módulos executáveis. Por exemplo, em um ambiente multitarefa (como o Unix) que suporta processos, um processador de texto, um navegador e um sistema de banco de dados são processos separados que podem rodar concomitantemente. Processos são módulos separados e carregáveis.

A comunicação entre processos é o grupo de mecanismos que permite aos processos transferirem informação entre si. A capacidade de um sistema operacional executar simultaneamente dois ou mais processos é chamada multiprocessamento. Se existirem dois ou mais processos executados em simultâneo e disputam o acesso a recursos partilhados, problemas da concorrência podem ocorrer. Estes problemas podem ser resolvidos pelo gerenciamento adequado de múltiplas linhas de execução ou processos através da sincronização

(multitarefa) ou por outros recursos (como a troca de contexto).

Um processo pode estar em um dos seguintes estados:

  1. Running: usando a CPU naquele instante;
  2. Ready: pronto para ser executado, temporariamente parado para que outro processo possa ser executado; e
  3. Blocked: impossibilitado de ser executado até que algum evento externo ocorra.

Em um sistema de multiprogramação temos freqüentemente a situação onde vários processos estão prontos para serem executados. Quando mais de um processo está ready, o sistema operacional deve decidir qual processo deve ser executado primeiro. A parte do sistema operacional que toma esta decisão é chamada de Schedule, e o algoritmo que é usado é chamado de Schedule algorithm. A cada interrupção do relógio o sistema operacional toma o controle e decide se o processo que está sendo executado deve continuar a ser executado ou deve ser suspenso para que outro processo passe a ser executado. A estratégia que permite que um processo que está sendo executado seja suspenso temporariamente é chamada de preemptive Schedule.

A diferença entre processo e programa, é que um programa de computador é composto por uma seqüência de instruções, que é interpretada e executada por um processador ou por uma máquina virtual. Em um programa correto e funcional, essa seqüência segue padrões específicos que resultam em um comportamento desejado. Um programa pode ser executado por qualquer dispositivo capaz de interpretar e executar as instruções de que é formado.

Os quatro eventos principais que fazem com que um processo seja criado são:

  • Inicio do sistema
  • Execução de uma chamada ao sistema de criação de processo por um processo em execução.
  • Uma requisição do usuário para criar um novo processo
  • Inicio de um job em lote

As quatro condições que motivam para o termino de processo são:

  • Saída normal (voluntaria)
  • Saída por erro (voluntaria)
  • Erro fatal (voluntario)
  • Cancelamento por outro processo (involuntário)

Hierarquia de um processo

É quando um processo cria outro processo (processo pai cria um processo filho) e esse outro processo pode gerar outros processos, mas mesmo assim estes continuam associados. O Windows não apresenta nenhum conceito de hierarquia. Algo parecido é quando um processo é criado. Ao pai é dado um identificador especial (handle), que poderá controlar o filho ou passar o identificador para outros processos.

Estados de um processo e suas transições.

O estado em execução (usando a CPU naquele instante), pronto (executável, temporariamente parado para dar lugar a outro processo) e bloqueado (incapaz de executar enquanto um evento externo não ocorrer). E a transição entre elas são: o processo bloqueia aguardando uma entrada, o escalonador seleciona outro processo, o escalonador seleciona esse processo e a entrada torna-se disponível.

Threads

É uma forma de um processo dividir a si mesmo em duas ou mais tarefas que podem ser executadas concorrentemente.

A diferença entre threads e processos, é que threads compartilham o espaço de memória (threads pertencentes a um mesmo processo). Os processos têm espaços de memória independentes e quase sempre não têm acesso ao espaço de outros processos. Threads são como se fossem versões mais leves dos processos, o termo é comumente traduzido como linha de execução.

O thread pode ser vista como um subprocesso de um processo, que permite compartilhar a sua área de dados com o programa ou outros threads. O início de execução de um thread é muito mais rápido do que um processo, e o acesso a sua área de dados funciona como um único programa.

Uso de threads

Pode-se fazer o uso dos threads para operações de Entrada e Saída de dados não bloqueastes, programação de alarmes e timer, execução de tarefas independentes e aplicações paralelas (desempenho em códigos que exigem grande poder computacional e possam ser executados em paralelos).

About these ads

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s