Processos ca 3 pítulo

Documentos relacionados
Sistemas Distribuídos

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

Sistemas Distribuídos Aula 3

Sistemas Distribuídos

Sistemas Distribuídos Capítulo 3 - Aula 3

Caracterização de Sistemas Distribuídos

SISTEMAS DISTRIBUÍDOS PROCESSOS. Slides cedidos pela professora Aline Nascimento

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

SISTEMAS DISTRIBUÍDOS

Sistemas Operacionais Estrutura do Sistema Operacional. Arquiteturas do Kernel

Características de Sistemas Distribuídos

Sistemas Operacionais

Características de Sistemas Distribuídos

Programação Concorrente

Sistemas Operacionais Aula 3

Estrutura dos Sistemas Operacionais. Adão de Melo Neto

Processos, Threads e o Modelo Cliente/Servidor

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

Sistema Operacional. Prof. Leonardo Barreto Campos. 1/30

Programação Paralela e Distribuída

AULA Nº 08 SISTEMAS OPERACIONAIS. Threads

Desenvolvimento de Aplicações Distribuídas

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

Sistemas Distribuídos

Invocação Remota. Prof. Leonardo Barreto Campos. 1/29

Técnicas Avançadas de Programação

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

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

Chapter 4: Threads. Operating System Concepts 8th Edition

Arquiteturas. capítulo

Sistemas Operacionais

RPC e RMI. Sistemas Distribuídos. Mauro Lopes Carvalho Silva. Professor EBTT DAI Departamento de Informática Campus Monte Castelo

Estruturas de Sistemas Operacionais

Sistemas Operacionais. Sistema de entrada e Saída

Arquitetura de Computadores. Processamento Paralelo

Estrutura do Sistema Operacional

Sistemas Distribuídos

Sistema Distribuído. Sistema Distribuído. Aplicações Distribuídas. Conceitos Básicos

Estrutura dos Sistemas Operacionais. Adão de Melo Neto

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

Sistemas Operacionais. Maria de Fátima de Freitas Bueno Marcílio

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

Sistemas de arquivos distribuídos. ECO036 - Sistemas Paralelos e Distribuídos

Fundamentos de Sistemas Operacionais de Arquitetura Aberta. CST em Redes de Computadores

Sistemas Distribuídos. Edy Hayashida

O que é um sistema distribuído?

ach 2147 desenvolvimento de sistemas de informação distribuídos

Arquiteturas para SGBD. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

SIDs: ARQUITETURA DE SISTEMAS DISTRIBUÍDOS

Sistemas Operacionais Processos. Carlos Ferraz Jorge Cavalcanti Fonsêca

Sistemas Distribuídos

Programação Distribuída. Tipos de Sistemas Distribuídos

Sistemas Distribuídos

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

Sistemas Distribuídos

Programação de Sistemas Distribuídos e Concorrência

Organização e Arquitetura de Computadores I

Introdução aos Sistemas Distribuídos

Fundamentos de Sistemas Operacionais

Sistemas Operacionais

Sistemas Operacionais (SO)

Sistemas Distribuídos Aula 10

Quando Distribuir é bom

Sistemas Distribuídos. Plano de Curso. Plano de Curso 04/03/12 ! EMENTA:

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

Resumo: Sistemas Operacionais Abertos

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

Computação Distribuída

SISTEMAS DISTRIBUÍDOS ARQUITETURAS. Slides cedidos pela Professora Aline Nascimento

Arquitectura de Sistemas Paralelos e Distribuídos Modelos de Sistemas

Capítulo 2 Processos e Threads

Exercícios Cap I. 1.1, 1.2, 1.3 (somente letras (a), (b) e (c)) , 1.8 e 1.12 IC - UFF

Introdução. Conceitos Básicos. Conceitos Básicos. Conceitos Básicos

Cliente-servidor Código móvel Agentes de software Processos pares. Prof a Ana Cristina B. Kochem Vendramin DAINF / UTFPR

INTRODUÇÃO A SISTEMAS OPERACIONAIS

Transcrição:

Processos capítulo 3

Introdução: Threads Para executar um programa, o sistema operacional cria um determinado números de processos virtuais. O sistema operacional mantém uma tabela de processos que contém os valores dos registradores de CPU, valores de memória, arquivos abertos, privilégios de contas etc. Um processo é um programa em execução. A troca entre processos executando numa CPU é sempre uma tarefa complicada.

Introdução: Threads Thread é muito parecida com um processo, ela pode ser vista como a execução (ou parte) de um programa. Diferentemente de um processo, a thread não foi feita para se obter um alto grau de transparência de concorrência. Thread, geralmente, mantém apenas o mínimo de informações sobre a CPU e que serão compartilhadas por várias outras threads (o contexto da CPU e informações sobre as threads).

Thread em um sistema não distribuído O maior benefício do uso processos multi-threads é que durante uma chamada a único processo, este não irá tomar para si todo o tempo de CPU. Outra vantagem é que o paralelismo se torna mais natural quando se executa em uma máquina multiprocessada (ou seja, todas).

Thread em um sistema não distribuído Isto é usado para permitir a cooperação entre programas. *IPC - Inter Process Communication

Thread Implementação A primeira abordagem é construir uma biblioteca de threads que executa em modo usuário. Vantagens: barato criar/destruir; a troca de contexto entre as threads é mais fácil. Desvantagem: a invocação de uma chamada de bloqueio do sistema bloqueará todas as threads daquele processo.

Thread Implementação A segunda abordagem é ter um núcleo ciente das threads e escalonar elas. O preço é que cada operação da thread, terá de ser realizada por intermédio de uma chamada de sistema.

Thread Implementação Solução alternativa

Thread Implementação Vantagens do uso de LWP: (i) Criar, destruir e sincronizar as threads a nível de usuário é relativamente barato. (ii) Uma chamada de bloqueio do sistema não irá suspender o processo inteiro. (iii) Não existe a necessidade da aplicação conhecer o LWP (iv) LWPs podem facilmente ser utilizados em um ambiente multi-processado. A única desvantagem é quando os LWPs precisam ser criados ou destruídos.

** Threads em sistemas distribuídos

Clientes multi-threads Problema: Estabelecer um alto grau de transparência de distribuição, atrasos na troca de mensagens entre os processos devem ser proibitivos. Solução: O cliente deve poder iniciar a comunicação imediatamente. Solução: É importante que o cliente quebre os processos em multi-threads e recombine o resultado demandado pela aplicação. Exemplo, um web browser que recebe parte de uma página pode usar multi-conexões.

Servidores multi-threads Modelo mais comumente utilizado

Servidores multi-threads Três diferentes formas de se construir um servidor. Threads: É usado um esquema despachante operário Single-Thread: Permite apenas uma thread executando (RPC) Finite-state: Implementa um escalonador de threads para uma aplicação específica.

Virtualização A virtualização de recursos consiste na separação entre se ter uma única CPU e ser capaz de fingir que há mais delas. Existem vários tipos de interfaces do sistema que vão desde o conjunto básico de instruções oferecido por uma CPU até o vasto conjunto de interfaces de programação.

Arquiteturas de máquinas virtuais Em geral sistemas de computadores oferecem quatro tipos diferentes de interfaces em quatro níveis diferentes. A essência da virtualização é imitar o comportamento dessas interfaces.

Arquiteturas de máquinas virtuais Uma abordagem alternativa a virtualização é fornecer um sistema que seja implementado como uma camada que protege o HW original, oferecendo um conjunto de instruções completo do mesmo. (a) VMWare; (b) Xen

Clientes: Interfaces de usuário em rede (a) Para cada serviço remoto, a máquina cliente terá uma contraparte separada que pode contatar o serviço pela rede. Exemplo: Agenda num PDA (b) Fornece acesso direto a serviços remotos oferecendo apenas uma interface de usuário. O cliente é apenas um terminal, são os chamados clientes magros.

Cliente: Exemplo X-Window

Cliente: Software do lado cliente para transparência de distribuição Uma possível abordagem para a transparência de replicação de um objeto remoto, usando uma solução do lado cliente. Geralmente usado em consultas a um BD distribuído.

Servidores: Questões Gerais de Projeto Um servidor é um processo que implementa um serviço específico para uma coleção de clientes Servidor iterativo: ele mesmo manipula as requisições e retorna uma resposta para o cliente requisitante Servidor concorrente: ele passa a requisição para uma thread ou processo separado e espera a próxima requisição. Um servidor multi-thread é um exemplo de servidor concorrente.

Servidores: Questões Gerais de Projeto 3.7 Geralmente a comunicação cliente-servidor é feita por intermédio de uma porta. Porém, existem serviço que não possuem uma porta prédeterminada, logo o cliente precisa identificar tal porta. Algumas alternativas: (a) utilização de um Daemon que sabe quais portas são utilizadas para cada serviço. (b) utilização de um superservidor que instancia um serviço quando requisitado.

Servidores: Questões Gerais de Projeto Outra questão importante é se, e como, um servidor pode ser interrompido. Abordagem mais utilizada, é o cliente sair abruptamente da aplicação. Outra abordagem é permitir uma comunicação fora da banda, ou seja, um canal extra para gerenciar a conexão. Muito utilizada por servidores multimídia.

Servidores: Questões Gerais de Projeto Uma última questão, se o servidor é sem estado ou não Um servidor sem estado não mantém informações sobre o estado de seus clientes e pode mudar de estado sem informar seus clientes. Exemplo, servidores WEB em geral. Um servidor com estado persiste os dados do cliente. Exemplo, um servidor de arquivo que permite a manutenção de arquivo em modo offline.

Cluster de servidores

Cluster de servidores Exemplo de como funciona a camada de comutação. Questão principal a ser considerada: Como escolher o servidor?

Migração de código Migração de código em sistemas distribuídos consiste na migração de processos inteiros que são movidos de uma máquina para outra. Ex1: Sistema cliente servidor em que o servidor gerencia um grande BD. As operações do cliente migram para o servidor e apenas os resultados são enviados. Ex2: Busca de informações na WEB

Razões para a migração de código Principais razões são o desempenho e a localidade. Estratégias para a mobilidade: agentes móveis e movimentação dinâmica (figura)

Modelos para a migração de código A fragmentação de um código para se executar a migração consiste em: (a) segmento de código é a parte que contém o conjunto de instruções; (b) segmento de recursos é a parte que contém referências a recursos externos de que o processo necessita; (c) segmento de execução é usado para armazenar o estado de execução de um processo no momento em questão.

Modelos para a migração de código Tipos de mobilidades: (a) Mobilidade fraca é possível transferir apenas o segmento de código, talvez junto com alguns dados de inicialização. (b) Mobilidade forte o segmento de execução também pode ser transferido. O processo para a sua execução é migrado e continua na outra máquina de onde ele parou. Em ambos os casos a mobilidade pode ser iniciado pelo remetente ou pelo destinatário.

Modelos para a migração de código

Migração e recursos locais Processo para recurso A ligação mais forte é quando um processo se refere a um recurso por seu identificador. O processo requer precisamente o recurso referenciado e nada mais. Exemplo, uma URL que referencia um site web específico. Uma ligação mais fraca é quando apenas o valor de um recurso é necessário. A execução dos processos pode não ser afetada se outro recurso pode fornecer o mesmo valor. Exemplo, C padrão ou bibliotecas Java. A ligação mais fraca de todas é quando um processo indica que ele precisa apenas de um recurso de tipo específico. Exemplo, dispositivos locais.

Migração e recursos locais Recurso para máquina Não ligado é o recuso que pode ser facilmente movido entre diferentes máquinas. Exemplos, eles são tipicamente os arquivos associados apenas com programas que serão migrados Movendo ou copiando um recurso amarrado deve ser possível, mas apenas a um relativo custo. Exemplos, base de dados locais e completos sites web. Recurso Fixo são intimamente ligados a uma máquina específica e não pode ser movido Exemplo, dispositivos locais.

Migração e recursos locais

Migração em sistemas heterogêneos Migração em sistemas heterogêneos não é fácil. Os problemas podem ser aliviados com uma mobilidade fraca. A plataforma alvo recebe o código compilado. Na mobilidade forte o problema é transferir o segmento em execução. Geralmente, é usada a migração da pilha de execução.

Migração em sistemas heterogêneos 3-15 The principle of maintaining a migration stack to support migration of an execution segment in a heterogeneous environment