Unidade 1 2
Processos e Threads
O que é um Processo
• Um processo é uma atividade (ou tarefa) de um programa, que contém o código e dados de uma atividade. • Essas são: leitura de dados, escrita de dados, cálculos no processador, comunicação com o usuário, comunicação com um BD, comunicação com a rede interna ou externa, entre outras.
Processos
– Um trecho de código em execução em uma máquina. – É a unidade de processamento concorrente que um processador sob um SO pode processar.
– Identificado pelo seu PID (Process Identifier).
– Unix (anos 70) foi construído para executar processos. Problema com Processos
• Nos anos 80, foi descoberto que a noção tradicional de um sistema operacional, de um processo que executa um único fluxo de execução, era diferente dos requisitos dos sistemas operacionais distribuídos.
• Solaris (anos 90), originalmente, utiliza processos.
Problema com Processos
• E também, diferente dos requisitos dos aplicativos mais sofisticados que utilizam um único processador, mas que exigem concorrência de suas atividades internas.
Solução para o Processamento
Concorrente
• Aprimorar a noção de processo, para que ele pudesse ser associado a múltiplas atividades internas a ele.
Processo
• Um processo é uma entidade a nível de kernel, que possui um espaço de endereçamento.
• O único modo para seu programa acessar a dados na estrutura (contexto) de um processo, consultar ou mudar seu estado, é via uma chamada de sistema.
Contexto de um Processo
•
•
•
•
•
•
•
•
•
•
Um identificador do processo (PID).
Um segmento de código.
Um segmento de dados.
Os valores dos registradores da CPU.
Um contador de programa lógico.
Uma pilha de execução.
O estado do processo.
Informações para escalonamento (prioridade, tempo)
Dados para contabilização de uso.
Recursos alocados: arquivos, portas, eventos, outros.
Surgimento de Threads
• Com o surgimento de processadores de mais alto desempenho, uma nova unidade de processamento concorrente pode ser definida