Академический Документы
Профессиональный Документы
Культура Документы
Processos e Threads
O que um Processo
Um processo uma atividade (ou tarefa) de um programa, que contm o cdigo e dados de uma atividade.
Essas so: leitura de dados, escrita de dados, clculos no processador, comunicao com o usurio, comunicao com um BD, comunicao com a rede interna ou externa, entre outras.
Processos
Um trecho de cdigo em execuo em uma mquina. a unidade de processamento concorrente que um processador sob um SO pode processar. Identificado pelo seu PID (Process Identifier). Unix (anos 70) foi construdo para executar processos.
E tambm, diferente dos requisitos dos aplicativos mais sofisticados que utilizam um nico processador, mas que exigem concorrncia de suas atividades internas.
Aprimorar a noo de processo, para que ele pudesse ser associado a mltiplas atividades internas a ele.
Processo
Um processo uma entidade a nvel de kernel, que possui um espao de endereamento. 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 cdigo. Um segmento de dados. Os valores dos registradores da CPU. Um contador de programa lgico. Uma pilha de execuo. O estado do processo. Informaes para escalonamento (prioridade, tempo) Dados para contabilizao 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 dentro do prprio processo, novos fluxos de execuo e assim pode-se ter mltiplos fluxos de execuo (mltiplas threads) num mesmo processo. Cada fluxo de execuo chamada Thread.
Threads
Atualmente, um processo consiste em um ambiente de execuo, contendo uma ou mais threads. Thread: unidade de processamento concorrente nos sistemas operacionais atuais, dentro de um processo.
Threads
Definio:
Threads (linhas de execuo) so atividades (tarefas internas) concorrentes executadas dentro de um processo. Um processo pode ter uma ou mais threads.
Multithreading
Mltiplas threads executam concorrentemente em um processo, e anlogo a mltiplos processos executando concorrentemente em um nico processador.
Threads pertencentes a um mesmo processo, compartilham os mesmos recursos e memria (espao de endereamento) do processo.
Multithreading
Suporte a Threads:
Threads nativas do SO (entidades a nvel de kernel). Threads como entidades a nvel do usurio. Suporte de programao multithreading. Exemplo: JVM do Java Linguagem de programao multithreading. Exemplo: Java
Contador de Programa
Processo
Processo
Multiplas Threads
Processos e Threads
Um confeiteiro. O confeiteiro o processador. Um Livro de Receitas um processo. Uma receita corresponde a uma Thread. Fazer um bolo de aniversrio. Ingredientes: farinha, ovos, aucar, ... Os ingredientes so os dados.
Processo e Thread
O processo a atividade que consiste em nosso confeiteiro ler a receita (Thread), buscar os ingredientes (Thread), bater o bolo (Thread) e cozinhar o mesmo (Thread).
Escalonamento de Threads
Todo SO tem um programa chamado Scheduler (o escalonador do SO) que seleciona, num dado instante, uma thread que deve ser executada pelo processador, alternando este entre threads.
Algoritmo de Escalonamento
Define a ordem de execuo de processos/ threads com base em uma fila ou prioridade da thread.
Processos/Threads do sistema SO e de aplicaes crticas exigem maior prioridade. Em geral, os sistemas operacionais adotam uma poltica para atender a todas os processos/threads de maneira justa .
Escalonamento Time-Slicing
Por Processo: escalonador aloca tempo para execuo dos processos, os quais definem como usar este tempo para executar suas threads.
P1 t11 t12
Por Thread: escalonador aloca tempo e define a ordem na qual as threads sero executadas.
Escalonamento Pre-Emptivo
Baseado nas prioridades dos processos/threads.
Deve ser implementado para garantir que um processo/thread de alta prioridade possa executar logo que torna-se pronto, mesmo que signifique suspender a execuo de um processo de mais baixa prioridade.
Pronto
Suspenso Rodando
Morto
Estados de um Processo/Thread
Pronto: pronto para ser executado, mas sem o direito de usar o processador.
Estado Suspenso
Dormindo em espera temporizada. Bloqueado aguarda I/O.
Em Espera - aguarda uma condio ser satisfeita.
Threads
Da mesma forma que os processos. Cada thread tem seu estado e segue um ciclo de vida particular.
A vida da thread depende do seu processo.
Troca de Contexto
Quando duas threads de um mesmo processo se alternam no uso do processador, ocorre uma troca de contexto parcial.
Numa troca parcial, o contador de programa, os registradores e a pilha devem ser salvos.
Processos x Threads
Troca de Contexto: Completa | Parcial
Comunicao: Inter-Processo | Inter-Threads Suporte em S.O.s: Quase todos | Os mais atuais Suporte em Linguagem de Programao: Quase todas | As mais recentes