Unidade 2. Processos Threads Concorrência em Java

Documentos relacionados
INE 5645 Programação Paralela e Distribuída

Programação Paralela. Processos. Processos. Processos. Processos. Unidade 2

Sistemas Operacionais I

Sistemas Operacionais I

SOP - TADS Processos. Revisão Ultima aula

Sistemas Operacionais

14/05/2017. Conceitos de Processos. Conceitos de Processos. Conceito de processo

SISTEMAS OPERACIONAIS

Sistemas Operacionais Processos. Carlos Ferraz Jorge Cavalcanti Fonsêca

Processo. Prof. Paulo Cesar F. de Oliveira, BSc, PhD

Sistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios. Aula 06.

Processo. Gerência de Processos. Um programa em execução. Centro de Informática/UFPE :: Infraestrutura de Software

Sistemas Operacionais. Prof. Pedro Luís Antonelli Anhanguera Educacional

Processo. Gerência de Processos. Um programa em execução. Centro de Informática/UFPE :: Infraestrutura de Software

Processos e Threads. Ciclo 2 AT3. Prof. Hermes Senger

Processos. Adão de Melo Neto

Sistemas Operacionais. Conceito de Processos

Prof. Kleber R. Rovai

Thread. Prof. Paulo Cesar F. de Oliveira, BSc, PhD

Threads. Agenda. Threads. Processo. Processo. Processo. Processo. (c) Volnys B. Bernal Versão de 22/3/2012

INTRODUÇÃO AOS SISTEMAS OPERACIONAIS SEMANA 13

Redes de Computadores. INF201 - Fundamentos de Sistemas Operacionais - 2º Período

Sistemas de Informação. Sistemas Operacionais

Capítulo 2. Multiprogramação. Conteúdo. Objetivo. Recordando. Recordando. DCA-108 Sistemas Operacionais

Sistemas Operacionais

Sistemas Operacionais

AULA Nº 08 SISTEMAS OPERACIONAIS. Threads

Sistemas Operacionais

Sistemas Operacionais. Capítulo 5 Processos

Sistemas Operacionais

Sistemas Operacionais. BSI / UAB 2013 Hélio Crestana Guardia

Estruturas de Sistemas Operacionais

Concorrência em Java. Threads em Java

Sistemas Operacionais. Processos e Threads

Davidson Rodrigo Boccardo

Sistemas Operacionais

TAREFAS IMPLEMENTAÇÃO DE TAREFAS AULA 06 Sistemas Operacionais Gil Eduardo de Andrade

EEL770 Sistemas Operacionais

SOP - TADS Threads. Revisão Ultima aula. Programa em execução Cada processo têm sua própria CPU

Estrutura dos Sistemas Operacionais. Sérgio Portari Júnior

LabSO Gerência de Processos. Processos. Porque eu preciso entender este assunto?

Processos. Pedro Cruz. EEL770 Sistemas Operacionais

Sistemas Distribuídos Aula 3

Unix Processos. Geraldo Braz Junior

Sistemas Operacionais

SISTEMAS OPERACIONAIS

Características Linux - CentOS

Sistemas Operacionais. Universidade Federal de Minas Gerais. Aula 2. Gerência de Processos

SSC0640 Sistemas Operacionais I

Processos. Pedro Cruz. EEL770 Sistemas Operacionais

Sistemas Operacionais

Processos O conceito de processos é fundamental para a implementação de um sistema multiprogramável. De uma maneira geral, um processo pode ser entend

Sistemas Operacionais. Escalonamento de Processos

1 Porque o estado de um processo deve ser salvo quando ele deixa a CPU?

Sistemas Operacionais

PROCESSOS. Sistemas Operacionais. Vinícius Pádua

Noções de Processos. Plano da aula. Serviços oferecidos. Definição & Objetivos. Definição & Objetivos. Sistemas Operacionais : introdução

Técnicas Avançadas de Programação

Arquitetura de Sistemas Operativos

Na Aula Anterior... O Conceito de Threads

Sistemas Operacionais de Tempo Real. Sérgio Campos

Programação Paralela e Distribuída

INTRODUÇÃO AOS SISTEMAS OPERACIONAIS SEMANA 08. Conceitos sobre processos. Modelos de processos, BCP, contextos, estados de processos.

Notas da Aula 2 - Fundamentos de Sistemas Operacionais

Sistemas de Computação. Processos e escalonamento

AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS

1B Conceitos Básicos: Indique Verdade/Falso

Thread. Thread. Sistemas Operacionais. Leonard B. Moreira. UNIVERSIDADE ESTÁCIO DE SÁ fevereiro, / 41

Sistemas Operacionais

Sistemas Operacionais - UCSAL Professor : Marco Antônio C. Câmara Primeira Lista de Exercícios

Figura 01 Programa e Processo

3 CONCEITOS DE SISTEMAS OPERACIONAIS

Sistemas de Computação O Sistema Operacional Unix

Fundamentos de Sistemas Operacionais. Threads. Prof. Edwar Saliba Júnior Março de Unidade Threads

Gerência de Processos. Instituto Federal da Bahia Campus Salvador INF009 - Sistemas Operacionais Profª Flávia Maristela

Variância dos Tempos de Resposta

Estados dos processos. Infra Estruturas Computacionais. A troca de contexto. Escalonamento de Processos. Escalonamento de Processos

Sistemas Operacionais. Rodrigo Rubira Branco

Sistemas Operacionais Aula 3

Concorrência em Processos

Infra-Estrutura de Software. Escalonamento

! Os primeiros computadores permitiam a execução de apenas um programa de cada vez, com acesso completo aos recursos do sistema

Questões de Múltipla escolha

Na Aula Anterior... Interrupções por software e hardware; Temporizadores; RTC; Temporizadores via software. Relação Processos Multiprogramação

Aula 04. Capítulo 3 Gerência de Processos. 3.1 Conceito de Processo. 3.2 Escalonamento de Processos. 3.3 Opera ões sobre Processos

Estrutura do Sistema Operacional

Threads. Pedro Cruz. EEL770 Sistemas Operacionais

Sistemas Operacionais Abertos. Prof. MSc. André Yoshimi Kusumoto

UNIVERSIDADE ESTADUAL VALE DO ACARAÚ- UEVA. Assunto: Programação Concorrente.

Ferramentas para Programação em Processadores Multi-Core

Sincronização e Comunicação entre Processos. Adão de Melo Neto

Fundamentos de Sistemas Operacionais

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 11 - Threads e Concorrência

6 ESCALONAMENTO DE CPU

Processos Concorrentes

Processos e Threads e em sistemas distribuídos. Prof. Me. Hélio Esperidião

SOP Sistemas Operacionais Módulo 04: Processo

Programação de Sistemas em Tempo Real

Sistemas Operacionais. Processos IC - UFF

Escalonamento no Unix. Sistemas Operacionais

Transcrição:

Unidade 2 Programação Concorrente Processos Threads Concorrência em Java

Processos Definição Um programa em execução em uma máquina. Identificado pelo seu PID (Process Identifier). A unidade de processamento em que um SO processa. Execução dos Processos Um processador pode executar somente um processo a cada instante. Em um S.O. multi-tarefa, processos se alternam no uso do processador cada processo é executado durante um quantum de tempo. Se houver N processadores, N processos podem ser executados simultaneamente.

Escalonamento de Processos O escalonador do S.O. seleciona o(s) processo(s) que deve(m) ser executado(s) pelo(s) processador(es).

Escalonamento Algoritmo de Escalonamento Define a ordem de execução de processos com base em uma fila, prioridade, deadline,... Em geral, os sistemas adotam uma política de melhor esforço para atender a todos os processos de maneira justa e igualitária Processos do sistema e aplicações críticas (um alarme, por exemplo) exigem maior prioridade.

Ciclo de vida simplificado de um processo Criado Pronto Suspenso Rodando Morto

Estados de um Processo Pronto: processo pronto para ser executado, mas sem o direito de usar o processador. Rodando: sendo executado pelo processador. Suspenso: aguarda operação de I/O, liberação de um recurso ou fim de tempo de espera.

Mudanças de Estado Processos trocam de estado de acordo com: Algoritmo de escalonamento Troca de mensagens Interrupções de hardware ou software

Time-Slicing Divide o tempo do processador entre processos de igual prioridade. Isto é implementado por um Timer (hardware) o qual interrompe o processamento periodicamente, para permitir o escalonador buscar um outro processo para executar.

Escalonamento Pre-Emptivo Prioridades dos processos. Deve ser implementado para garantir que um processo de alta prioridade possa executar logo que torna-se pronto, mesmo que signifique suspender a execução de um processo de mais baixa prioridade.

Contexto de um Processo O estado do processo. Informações para escalonamento. Dados para contabilização de uso. Um segmento de código. Um segmento de dados. Os valores dos registradores. O contador de programa. Uma pilha de execução. Arquivos, portas e outros recursos alocados.

Mudança de Contexto Processos escalonados mudam de contexto. O processo em execução é suspenso, e um outro processo passa a ser executado. Ocorre por determinação do escalonador ou quando o processo que estava sendo executado é suspenso. O contexto do processo suspenso deve ser salvo para retomar a execução posteriormente.

Motivo da Suspensão de Processos Dormindo em espera temporizada. Bloqueado aguarda I/O. Em Espera - aguarda uma condição ser satisfeita.

Chamadas do Sistema Operacional UNIX Criar um Processo: fork() cria uma cópia do processo atual. exec() carrega o códi.go do processo.

Chamadas do Sistema Operacional Unix Suspender a Execução: sleep(<tempo>) ou wait() - reinicia com kill(<pid>,sigwait) Obter Identificador do Processo: getpid() Aguarda o Fim dos Processos Criados: join() Finalizar o Processo: exit(<codigo-retorno>) Destruir um Processo: kill(<pid>,sigkill)

Interação com o Usuário no Unix Processos são criados através da interface gráfica ou de comandos digitados na Shell. Comandos bloqueiam a Shell, a não ser que sejam seguidos de um &. Os processos em execução são listados com o comando ps ef(ps aux em versões antigas) Processos são destruídos com kill -9 <pid>

Chamadas na API do Windows Criar um Processo: CreateProcess(<nome>, <comando>,...) ou CreateProcessAsUser(<usuário>,<nome>,...) Obter o Identificador do Processo: GetCurrentProcessId() Suspender a Execução: Sleep(<tempo>) Finalizar o Processo: ExitProcess(<codigo-retorno>) Destruir um Processo: TerminateProcess(<pid>, <retorno>)

Threads Definição: Threads (linhas) de execução são atividades concorrentes executadas por um processo. Um processo pode ter uma ou mais threads. Threads pertencentes a um mesmo processo compartilham recursos e memória. Suporte a Threads: Threads nativas do S.O. Suporte de programação multi-thread. Linguagem de programação multi-threaded.

Três Processos cada um com uma Thread Cada thread tem seu espaço de endereçamento. Thread Contador de Programa Processo

Um Processo com três Threads Todas num mesmo espaço de endereçamento. Processo Multiplas Threads

Diferença entre Programa e Processo Um confeiteiro Uma receita bolo Assar um bolo de aniversário Ingredientes: farinha, ovos, açucar,... A receita é o programa. O confeiteiro é o processador. Ingredientes: dados.

Diferença entre Programa e Processo 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).

Alternando para outro processo Confeiteiro 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 do processo atual é salvo).

Alternando para outro processo Confeiteiro procura um livro de prontosocorro. Segue a orientações do livro (outro programa). O Confeiteiro alterna do processo (Cozimento) para outro, de prioridade mais alta (Administrar cuidado Médico), cada um tendo um programa diferente (receita x livro).

Processo é uma atividade Quando a picada for tratada, o confeiteiro volta ao seu bolo, continuando do ponto onde parou, quando abandonou o processo (Cozimento). A ideia é que processoé um tipo de atividade. Processo tem entrada, saida e estado.

Threads Da mesma forma que os processos. Cada thread tem seu estado e segue um ciclo de vida particular. A vida da threaddepende do seu processo.

Exemplos com Múltiplas Threads Servidor de Arquivos Navegador Web???

Threads Escalonamento Por Processo: escalonador aloca tempo para execução dos processos, os quais definem como usar este tempo para executar suas threads. P1 P2 P3 t11 t12 t21 t22 t23 t31 t32 Por Thread: escalonador define a ordem na qual as threads serão executadas. t11 t31 t21 t32 t23 t12 t22 t16

Troca de Contexto Quando duas threadsde 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 Contexto Uma troca de contexto parcial é mais rápida que uma troca de contexto entre processos. Uma troca de contexto completa é necessária quando uma threadde um processo que não estava em execução assume o processador.

Processos x Threads Troca de Contexto: Completa Parcial Comunicação: Inter-Processo Intra-Processo Suporte em S.O. s: Quase todos Os mais atuais Suporte em Ling. Prog.: Quase todas As mais recentes

Threads POSIX Padrão adotado pelos UNIX e outros S.O. s. Criar uma Thread: pthread_create( <thread>, <atrib>, <rotina>, <args>); Obter Ident. da Thread: pthread_self() Suspender Execução: pthread_delay_np(<tempo>) Finalizar a Thread: pthread_exit(<retorno>) Linux usa as mesmas rotinas, mas cria um processo por thread não é 100% POSIX

Threads em Windows Criar uma Thread: CreateThread (<atribs>, <tam_stack>, <rotina>, <params>, <flags>,<thread_id>) Obter Ident. da Thread: GetCurrentThreadId() Suspender Execução: Sleep(<tempo>) ou SuspendThread (<thread>) -> retomar com ResumeThread(<t>) ou SwitchToThread(<t>) Finalizar a Thread: ExitThread(<retorno>) Destruir uma Thread: TerminateThread (<thread>,<retorno>)