Sistemas Distribuídos Aula 2

Documentos relacionados
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

Programação de Sistemas em Tempo Real

Sistemas Distribuídos Aula 3

Comunicação entre Processos

Capítulo 3: Processos

INTRODUÇÃO AOS SISTEMAS OPERACIONAIS SEMANA 10. Operações nos processos. Processos cooperativos, comunicação entre processos.

Arquitetura de Computadores Sistemas Operacionais II

Programação concorrente (processos e threads)

Processos e Threads. Prof. Dr. José Luís Zem Prof. Dr. Renato Kraide Soffner Prof. Ms. Rossano Pablo Pinto

UFRJ IM - DCC. Sistemas Operacionais I. Unidade IV Gerência de Recursos Entrada e Saída. 02/12/2014 Prof. Valeria M. Bastos

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

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Sistemas Operacionais Prof. Fabrício Sérgio de Paula

Vamos fazer um pequeno experimento

Roteiro... Sistemas Distribuídos Aula 4. Troca de mensagens. Comunicação entre processos. Conceitos de SD, vantagens e desvantagens

Conceito de Processo. Estados de Processos. Diagrama de Estados de Processos

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

Sistemas Operacionais

Sockets - Conceitos Básicos. COMUNICAÇÃO ENTRE PROCESSOS Sockets. Conceitos Básicos. Tipos de Sockets

Aula 6: Comunicação entre processos. Instituto Federal da Bahia INF009 - Sistemas Operacionais Profª Flávia Maristela

Sistemas Operacionais Processos. Carlos Ferraz Jorge Cavalcanti Fonsêca

Estruturas de Sistemas Operacionais

Fundamentos de Sistemas Operacionais

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

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

Sistemas Operacionais

TAREFAS COMUNICAÇÃO ENTRE TAREFAS AULA 08 Sistemas Operacionais Gil Eduardo de Andrade

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

Sistemas Operacionais II

Sistemas Distribuídos

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.

Processos. Pedro Cruz. EEL770 Sistemas Operacionais

Comunicação entre processos COMUNICAÇÃO ENTRE PROCESSOS. Comunicação entre processos - troca de mensagens

Sistemas Operacionais II Unix: Memória e E/S. Geraldo Braz Junior

COMUNICAÇÃO ENTRE PROCESSOS

Sistemas Operacionais II

Processos. Nuno Ferreira Neves Faculdade de Ciências de Universidade de Lisboa. Fernando Ramos, Nuno Neves, Sistemas Operativos,

Sistemas Operacionais I

UNIVERSIDADE ESTADUAL DE PONTA GROSSA SETOR DE CIÊNCIAS AGRÁRIAS E DE TECNOLOGIA DEPARTAMENTO DE INFORMÁTICA ENGENHARIA DE COMPUTAÇÃO

Sistemas Operacionais

Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação

Sistemas Operacionais I

Processos. Pedro Cruz. EEL770 Sistemas Operacionais

Infra-Estrutura de Software

Sistemas Operacionais Aula 15: Sistemas de I/O. Ezequiel R. Zorzal

Sistemas de Entrada e Saída

Capítulo 13: Sistemas de E/S. Operating System Concepts with Java 7th Edition, Nov 15, 2006

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

Threads. Pedro Cruz. EEL770 Sistemas Operacionais

Sistemas Operacionais

Infra-Estrutura de Software

Sistemas de Informação. Sistemas Operacionais

Sistemas Operacionais

Processos e Threads. Prof. Dr. José Luís Zem Prof. Dr. Renato Kraide Soffner Prof. Ms. Rossano Pablo Pinto

Sistemas Operacionais. Sistema de entrada e Saída

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

Sistemas Distribuídos

Técnicas Avançadas de Programação

Sistemas Operacionais

Sistemas de Entrada e Saída

SSC0640 Sistemas Operacionais I

Concorrência em Processos

Barramento. Prof. Leonardo Barreto Campos 1

Sistemas Operacionais

Gerência de Entrada e Saída

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

PCS-2529 Introdução aos Processadores. Prof. Dr. Paulo Sérgio Cugnasca

Sistemas Operacionais. Capítulo 5 Processos

SISTEMAS OPERACIONAIS

Sistemas Operacionais

Comunicação entre processos

Arquitetura de Sistemas Operativos

Davidson Rodrigo Boccardo

Processos. Processos e Recursos (1) Tabelas de Controle do S.O. Processos e Recursos (2)

Processos. Adão de Melo Neto

Sistemas Operacionais

Sistemas Distribuídos

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

Sistemas Operacionais

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 12/06/2017 ALUNO

Processos. Prof. Gustavo Leitão

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

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 12/06/2017 ALUNO

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

Sistemas Operacionais II

Fundamentos de Sistemas Operacionais

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 12/06/2017. ALUNO Prof. Bosco

Sistemas Distribuídos Aula 10

Sistemas Distribuídos

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

Processos. Conceitos Básicos

Ambientes de Execução

Ferramentas para Programação em Processadores Multi-Core

Sistemas de Entrada e Saída

Entrada/Saída. Capítulo 5. Sistemas Operacionais João Bosco Junior -

Comunicação entre Processos

Sistemas Operacionais

Prof. Kleber R. Rovai

Unix Processos. Geraldo Braz Junior

Organização de Computadores

Transcrição:

Sistemas Distribuídos Aula 2 Aula passada Logísitica Regras do jogo Definição e características Exemplos Aula de hoje Processos IPC Características Ex. sinais, pipes, sockets Objetivos

Processos O que é um processo? no contexto de sistemas operacionais É um programa em execução! É a abstração de execução do SO unidade de execução, de escalonamento, de endereçamento, de estado de contexto programa se torna um processo (aka. job, task) Uma das principais tarefas do SO: gerenciar processos

Representando Processos O que é necessário para o SO representar um processo? Todo o estado de um programa em execução! Espaço de endereçamento (memória do processo) Código a ser executado (programa) Dados das variáveis do programa (estática e dinâmicas) Pilha de execução (chamada de funções) Contador de programa (PC) Registradores importantes (como o PC) Recursos do SO sendo utilizados: descritores de arquivos, sockets, outros dispositivos de I/O, etc muitas outras coisas...

Process Control Block (PCB) Estrutura de dados mantida pelo SO para cada processo todo estado do processo inclusive valor dos registradores (da CPU) quando não executando Armazenada em kernel space memória usada pelo SO Grande quantidade de dados atualizada a cada instante Processos são pesados para o SO!

Troca de Contexto O que é isto? Para que serve? Troca do processo que está em execução! CPU (ou core) pode executar apenas um processo de cada vez SO coloca e remove processos em execução ao remover, salva todo o estado da CPU ao colocar, restaura todo o estado CPU Durante execução, PCB também é atualizado Troca de contexto: 100 a 1000 vezes por segundo! Realmente incrível!

Estado do Processo Indica o que o processo está fazendo Quais são os estados de um processo? Running: executando instruções na CPU Ready: aguardando para ser escalonado na CPU Waiting: aguardando algum evento para continuar execução (ex. usuário teclar alguma coisa) Em que estado um processo qualquer passa a maior parte do tempo? Quantos processos podem estar no estado Running? Quantos processos um SO gerencia normalmente?

Processos se Comunicando Processos muitas vezes precisam interagir razões para isto? SO precisa oferece mecanismos para isto Interprocess Communication (IPC) Dois modelos de comunicação memória compartilhada troca de mensagens Para cada modelo, diferentes técnicas e implementações

Troca de mensagens Modelos de IPC Memória compartilhada canal de comunicação explícito através de chamadas send/receive fila de mensagens em kernel space região de memória mapeada em dois ou mais processos memória fora do kernel space

Memória Compartilhada Uma única chamada ao sistema para definir e mapear memória (a ser compartilhada) SO não faz mediação de leitura/escrita Processos precisam coordenar o que acontece quando os dois escrevem? Fonte de grandes problemas! Coordenação através de sincronização Veremos nas próximas aulas

Troca de Mensagens Processos trocam mensagens através de chamadas ao sistema (system call): send/receive enlace de comunicação não há memória compartilhada chamada ao sistema para cada mensagem Fila de mensagens em kernel space Características do enlace/troca de mensagens direto x indireto síncrono x assíncrono bufferização

Direto x Indireto Direto Processo origem/destino precisa ser identificado send(p, msg) : envia mensagem ao processo P receive(q, msg) : recebe mensagem do processo Q Enlace criado automaticamente Enlaces unidirecionais Ex. sinais Indireto Mensagens enviadas, recebidas através de uma caixa postal (CP) send(a, msg) : envia mensagem para CP A receive(a, msg) : recebe mensagem da CP A Processos precisam criar e conectar a CP CP são bidirecionais Processos pode ter múltiplas CPs Ex. pipes, sockets

Síncrono x assíncrono Síncrono Comunicação é bloqueante (blocking) send(a, msg) : transmissor aguarda até o receptor receber receive(a, msg) : receptor aguarda até mensagem chegar Aguardar = bloqueado: processo em estado Waiting Forte sincronia entre enviar e receber Assíncrono Comunicação é nãobloqueante (non-blocking) send(a, msg) : transmissor envia e continua execução receive(a, msg) : recebe mensagem caso exista (erro caso contrário), e continua execução Processos não aguardam = não ficam bloqueados

Exemplo: Produtor-Consumidor Dois processos produtor: gera informação consumidor: processa informação Produtor envia informação ao consumidor Produtor... message produced; while (true) { } produced = generate_item(); send(a, produced); Consumidor... message consumed; while (true) { receive(a, consumed); process(consumed); } O que acontece com cada caso send/receive bloqueante e não bloqueante?

Bufferização Mensagens transmitidas podem ser armazenadas pelo enlace ou canal tanto do lado do transmissor, quanto do lado do receptor (quando processos em SO diferentes) Armazenamento feito pelo SO, em kernel space (memória do SO) Tamanho do buffer é limitado, mas pode ser controlado pelo processo Permite transmissão assíncrona transmite para o SO; processo contiuna; SO entrega mensagem

Sinais (signals) Forma primitiva de IPC, usada principalmente pelo SO para se comunicar com processos Processo envia mensagem (sinal) diretamente ao outro, de forma assíncrona Processo que recebe tem sua execução interrompida para processar a mensagem (sinal) signal handler : função que processa a chegada da mensagem (sinal) Mensagem possui apenas um número inteiro, com diferentes significados Ex. comando kill no unix envia sinais

Pipes Canal de comunicação (unidirecional) entre processos anonymous pipes, conduíte Pipe tem dois lados write end: processo apenas escreve (send) read end: processo apenas le (receive) P 1 write end: send( ) pipe P 2 read end: receive( ) send( ): assíncrono quando há espaço no pipe, síncrono caso contrário (aguarda até ter espaço) Ex. no unix cria um pipe entre o stdout do primeiro processo e o stdin do segundo named pipe oferece maior funcionalidade (múltiplos processos no mesmo pipe)

Sockets Mecanismo mais comum e poderoso para comunicação entre processos base de todos os outros mecanismos, como RPC Permite comunicação entre processos de SO diferentes incluindo computadores interligados por rede processo identificado pelo endereço IP e porta (número inteiro qualquer, acima de 1024) Dois tipos de enlace (sempre bi-direcional) orientado a conexão (TCP): confiável, etc sem conexão (UDP): não-confiável, etc API em todas as linguagens de programação