Unidade 1-1 Processos e Threads

36
Unidade 1-1 Processos e Threads

description

Unidade 1-1 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. - PowerPoint PPT Presentation

Transcript of Unidade 1-1 Processos e Threads

Unidade 1 Programao Concorrente

Unidade 1-1 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. ProcessosUm 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.

Problema com ProcessosNos anos 80, foi descoberto que a noo tradicional de um sistema operacional, de um processo que executa um nico fluxo de execuo, era diferente dos requisitos dos sistemas operacionais distribudos.

Solaris (anos 90), originalmente, utiliza processos.

Problema com ProcessosE tambm, diferente dos requisitos dos aplicativos mais sofisticados que utilizam um nico processador, mas que exigem concorrncia de suas atividades internas.Problema com ProcessosO processo tradicional torna complicado e dispendioso o compartilhamento de recursos entre atividades relacionadas.Soluo para o Processamento ConcorrenteAprimorar a noo de processo, para que ele pudesse ser associado a mltiplas atividades internas a ele.

Surgimento de ThreadsCom 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.ThreadsAtualmente, um processo consiste em um ambiente de execuo, contendo uma ou mais threads.

Thread: unidade de processamento concorrente nos sistemas operacionais atuais.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.ProcessoUm processo uma entidade a nvel de kernel.

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 uma ThreadUm identificador da Thread.Um segmento de cdigo.Um segmento de dados.Os valores dos registradores da CPU.O contador de programa.Uma pilha de execuo.O estado da Thread.Informaes para escalonamento (prioridade, ...)Dados para contabilizao de uso.Recursos alocados: arquivos, portas, eventos, outros.

ThreadsDefinio: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.

MultithreadingSuporte 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

Trs Processos - cada um com uma ThreadCada thread tem seu espao de endereamento.Contador de ProgramaThreadProcessoUm Processo com trs ThreadsTodas num mesmo espao de endereamento.

Multiplas ThreadsProcessoProcessos 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.Programa, Processo e ThreadO 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).Alternando para outro processoConfeiteiro, Filho do confeiteiro, Abelha

Ferrada da abelha no filho do confeiteiro.

Confeiteiro precisa socorrer o filho.

O confeiterio registra onde estava na receita (o estado e o contexto do processo so salvos).Alternando para outro processoConfeiteiro procura um livro de pronto-socorro (outro processo). Segue a orientaes do livro.

O Confeiteiro alterna do processo (Livro de Receitas pra Fazer o Bolo) para outro, de prioridade mais alta (Administrar cuidado Mdico), cada um sendo um processo diferente (receita e livro).Processo uma atividadeQuando a picada for tratada, o confeiteiro volta a fazer o seu bolo, continuando do ponto onde parou, quando abandonou o processo (Fazer o Bolo).

A ideia que processo um tipo de atividade.

E em cada atividade para Fazer o Bolo ou Atendimento Mdico existem outras tarefas:, que correspondem s Threads.

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 EscalonamentoDefine 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 depara atender a todas os processos/threads de maneira justa .

Escalonamento por Time-SlicingFracionamento de tempo do processador.

Divide o tempo do processador entre threads de igual prioridade.

Implementado por um Timer (hardware) o qual interrompe o processamento periodicamente, para permitir o scheduler buscar uma outra thread para executar.Escalonamento Time-SlicingPor Processo: escalonador aloca tempo para execuo dos processos, os quais definem como usar este tempo para executar suas threads. P1 P2 P3 t11 t12 t21 t22 t23 t31 t32Por Thread: escalonador aloca tempo e define a ordem na qual as threads sero executadas. t11 t31 t21 t32 t23 t12 t22 t16Escalonamento Pre-EmptivoBaseado 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.Mudana de ContextoProcessos/Threads escalonadas mudam de contexto.

O processo/thread em execuo suspenso, e um outro processo passa a ser executado.

Ocorre por determinao do escalonador ou quando o processo/thread que estava sendo executado suspenso.

O contexto do processo/thread suspenso deve ser salvo para retomar a execuo posteriormente.Ciclo de Vida de um Processo/ThreadCriadoProntoRodandoMortoSuspenso

Estados de um Processo/Thread

Pronto: pronto para ser executado, mas sem o direito de usar o processador.

Rodando: sendo executado pelo processador.

Suspenso: aguarda operao de I/O, liberao de um recurso ou fim de tempo de espera em uma fila.Estado SuspensoDormindo em espera temporizada.

Bloqueado aguarda I/O.

Em Espera - aguarda uma condio ser satisfeita. Mudana de Estado de um ProcessoProcessos/Threads trocam de estado de acordo com o:Algoritmo de escalonamento.Troca de mensagens entre esses.Interrupes de hardware ou software.ThreadsDa 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 ContextoQuando 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.Troca de ContextoUma troca de contexto parcial mais rpida que uma troca de contexto entre processos.

Uma troca de contexto completa necessria quando uma thread de um processo que no estava em execuo assume o processador.

Processos x ThreadsTroca 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