2. Resumo
■ Saber oque sao e como funcionam os Processos do sistema
■ Saber oque sao e como funcionam os Threds do sistema
■ Saber como funciona a intercomunicação de processos
3. Processo
■ Um processo é basicamente um programa em
execução. A execução de um processo deve
progredir de forma seqüencial.
■ Um processo é definido como uma entidade que
representa a unidade básica de trabalho a ser
implementada no sistema.
■ Em termos simples, escrevemos nossos programas
de computador em um arquivo de texto e, quando
executamos este programa, ele se torna um
processo que executa todas as tarefas
mencionadas no programa.
■ Quando um programa é carregado na memória e
se torna um processo, ele pode ser dividido em
quatro seções: pilha, heap, texto e dados. A
imagem a seguir mostra um layout simplificado de
um processo dentro da memória principal
4. Componente e Descrição do Processo
■ Pilha (Stack)
– O processo Stack contém os dados temporários, como parâmetros de método
/ função, endereço de retorno e variáveis locais.
■ Pilha (Heap)
– Isso é dinamicamente alocado memória para um processo durante seu tempo
de execução.
■ Texto (Text)
– Isso inclui a atividade atual representada pelo valor do Contador de Programa
e o conteúdo dos registradores do processador.
■ Dados (Data)
– Esta seção contém as variáveis globais e estáticas.
5. Programa
■ Um programa é um pedaço de código que pode ser uma única linha ou milhões de
linhas. Um programa de computador é geralmente escrito por um programador de
computador em uma linguagem de programação. Por exemplo, aqui está um
programa simples escrito em linguagem de programação C.
■ Um programa de computador é uma coleção de instruções que executa uma tarefa
específica quando executada por um computador. Quando comparamos um programa
com um processo, podemos concluir que um processo é uma instância dinâmica de
um programa de computador.
■ Uma parte de um programa de computador que executa uma tarefa bem definida é
conhecida como um algoritmo. Uma coleção de programas de computador,
bibliotecas e dados relacionados são chamados de software.
6. Ciclo de Vida do Processo
■ Quando um processo é executado, ele passa por diferentes estados. Esses estágios podem diferir em sistemas operacionais
diferentes e os nomes desses estados também não são padronizados.
■ Em geral, um processo pode ter um dos cinco estados a seguir de cada vez.
■ Começar (start)
– Este é o estado inicial quando um processo é iniciado / criado pela primeira vez.
■ Pronto (ready)
– O processo está aguardando para ser atribuído a um processador. Os processos prontos estão aguardando que o
processador seja alocado para eles pelo sistema operacional para que possam ser executados. O processo pode
entrar nesse estado após o estado Start ou durante a execução, mas interrompido pelo agendador para atribuir
CPU a algum outro processo.
■ Executar(Running)
– Uma vez que o processo tenha sido atribuído a um processador pelo agendador do SO, o estado do processo é
configurado para execução e o processador executa suas instruções.
■ Esperando(Waiting)
– O processo é movido para o estado de espera se precisar aguardar por um recurso, como aguardar a entrada do
usuário ou aguardar a disponibilização de um arquivo.
■ Terminado ou Sair(Terminating or exit)
– Quando o processo termina sua execução, ou é finalizado pelo sistema operacional, ele é movido para o estado
finalado, onde ele aguarda para ser removido da memória principal.
7. Bloco de controle de processo (PCB)
■ Um bloco de controle de processo é uma estrutura de dados mantida pelo sistema
operacional para cada processo. O PCB é identificado por um ID de processo inteiro (PID).
Um PCB mantém todas as informações necessárias para acompanhar um processo
conforme listado abaixo
■ Estado do processo (Process State)
– O estado atual do processo, ou seja, se está pronto, em execução, em espera ou o
que for.
■ Privilégios do processo
– Isso é necessário para permitir / não permitir o acesso aos recursos do sistema.
■ ID do processo
– Identificação exclusiva para cada um dos processos no sistema operacional.
■ Ponteiro
– Um ponteiro para o processo pai.
■ Contador de programas
– Contador de Programa é um ponteiro para o endereço da próxima instrução a ser
executada para este processo.
8. Bloco de controle de processo (PCB)
■ Registros da CPU
– Vários registradores da CPU onde o processo precisa ser armazenado para
execução no estado de execução.
■ Informações de agendamento de CPU
– Prioridade de processo e outras informações de agendamento que são
necessárias para agendar o processo.
■ Informações de gerenciamento de memória
– Isso inclui as informações da tabela de páginas, limites de memória, tabela de
segmentos, dependendo da memória usada pelo sistema operacional.
■ Informação contábil
– Isso inclui a quantidade de CPU usada para a execução do processo, limites de
tempo, ID de execução, etc.
■ Informações de status de IO
– Isso inclui uma lista de dispositivos de E / S alocados para o processo.
10. Thread
■ Um thread é um fluxo de execução através do código de processo, com seu próprio
contador de programa que controla quais instruções executar em seguida, registros do
sistema que mantêm suas variáveis de trabalho atuais e uma pilha que contém o
histórico de execução.
■ Um thread compartilha com seus peer threads poucas informações como segmento de
código, segmento de dados e arquivos abertos. Quando um encadeamento altera um
item de memória de segmento de código, todos os outros encadeamentos o veem.
Um segmento também é chamado de processo leve. Os threads fornecem uma
maneira de melhorar o desempenho do aplicativo por meio do paralelismo. Threads
representam uma abordagem de software para melhorar o desempenho do sistema
operacional, reduzindo o segmento de sobrecarga é equivalente a um processo
clássico.
■ Cada thread pertence exatamente a um processo e nenhum thread pode existir fora
de um processo. Cada thread representa um fluxo separado de controle. Threads
foram utilizados com sucesso na implementação de servidores de rede e servidor web.
Eles também fornecem uma base adequada para execução paralela de aplicativos em
multiprocessadores de memória compartilhada. A figura a seguir mostra o
funcionamento de um processo single-threaded e multithread.
12. Diferença entre Processo e Thread
■ Processo
– O processo é pesado ou consome muitos recursos.
– A comutação de processos precisa de interação com o sistema
operacional.
– Em vários ambientes de processamento, cada processo executa o mesmo
código, mas possui seus próprios recursos de memória e arquivo.
– Se um processo for bloqueado, nenhum outro processo poderá ser
executado até que o primeiro processo seja desbloqueado.
– Múltiplos processos sem o uso de threads usam mais recursos.
– Em vários processos, cada processo opera independentemente dos outros.
13. Diferença entre Processo e Thread
■ Thread
– Thread é leve, tendo menos recursos do que um processo.
– Comutação de thread não precisa interagir com o sistema operacional.
– Todos os threads podem compartilhar o mesmo conjunto de arquivos
abertos, processos filhos.
– Enquanto um thread está bloqueado e aguardando, um segundo thread na
mesma tarefa pode ser executado.
– Vários processos encadeados usam menos recursos.
– Um thread pode ler, gravar ou alterar os dados de outro thread.
14. Vantagens do Thread
■ Threads minimizam o tempo de troca de contexto.
■ O uso de encadeamentos fornece simultaneidade dentro de um processo.
■ Comunicação eficiente.
■ É mais econômico criar e inserir threads de comutação.
■ Os threads permitem a utilização de arquiteturas multiprocessadas para uma
maior escala e eficiência.
15. Tipos de Thread
■ Threads são implementados seguindo duas maneiras
– Threads de nível de usuário - Threads gerenciados pelo usuário.
– Threads de Nível do Kernel - Threads gerenciados pelo Sistema
Operacional que atuam no kernel, um núcleo do sistema operacional.
16. Comunicação entre processos
■ Existem dois tipos de processos: Independente e Cooperativo. Um processo
independente não é afetado pela execução de outros processos, enquanto um
processo de cooperação pode ser afetado por outros processos de execução.
■ Você pode pensar que esses processos, que estão sendo executados de forma
independente, seriam executados de maneira muito eficiente. Mas, na realidade, há
muitas situações em que a natureza cooperativa de um processo pode ser utilizada
para aumentar a velocidade, a conveniência e a modularidade computacionais.
■ A comunicação entre processos (IPC) é um mecanismo que permite que os processos
se comuniquem entre si e sincronizem suas ações. A comunicação entre esses
processos pode ser vista como um método de cooperação entre eles.
Os processos podem se comunicar entre si de duas maneiras: Memória
Compartilhada e Análise de Mensagens.