LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTE

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

Sistemas Operacionais

Fundamentos de Sistemas Operacionais

SISTEMAS OPERACIONAIS

Sistemas Operacionais

Sistemas Operacionais. Capítulo 5 Processos

Sistemas Operacionais

Processos Concorrentes

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

Computadores e Programação (DCC/UFRJ)

Ferramentas para Programação em Processadores Multi-Core

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

SISTEMAS OPERACIONAIS

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

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

Threads. O que é uma Thread? Paralelismo

Fundamentos de Sistemas Operacionais

Fundamentos de Sistemas Operacionais

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

Prof. Kleber R. Rovai

Figura 01 Programa e Processo

Sistemas Operacionais. Prof. Fabio Augusto Oliveira

Técnicas Avançadas de Programação

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

Escalonamento. Eduardo Ferreira dos Santos. Abril, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 28

Programação Orientada a Objetos. Concorrência

Sistemas Operacionais I

Notas da Aula 7 - Fundamentos de Sistemas Operacionais

Sincronização e Comunicação

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

Fundamentos de Sistemas Operacionais

INE5645 Programação Paralela e Distribuída - Prova 1 22/10/2012 Aluno: Parte 1 Controle de Concorrência Conceitos Básicos (2,5)

Bibliografia em processamento paralelo

Sistemas Operacionais

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

Introdução a Sistemas Operacionais. Adão de Melo Neto

Sistemas Operacionais II

Carlos Eduardo Batista Centro de Informática - UFPB

Sistemas Operacionais

Processos. Processo (1) Processo (2) Processo (3) Conceitos Básicos

Processos. Conceitos Básicos

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 12 - Threads e Concorrência em Java

ENADE 2011 SISTEMAS OPERACIONAIS

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

Programação Concorrente

1B Conceitos Básicos: Indique Verdade/Falso

Modelos de Programação de Tempo Real

UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO Bacharelado em Sistemas de Informação. Processamento Paralelo Threads. Aluno: Wagner Palacio

Programação de Sistemas em Tempo Real

AULA Nº 08 SISTEMAS OPERACIONAIS. Threads

Processos. Pedro Cruz. EEL770 Sistemas Operacionais

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

Sistemas Distribuídos Aula 3

Sistemas Operacionais. Rodrigo Rubira Branco

Arquitetura e Organização de Computadores

INE 5645 Programação Paralela e Distribuída

Davidson Rodrigo Boccardo

Linguagem de Programação II

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

Programação concorrente (processos e threads)

Arquitetura de Computadores. Processamento Paralelo

Disciplina: Sistemas Operacionais

Sistemas Distribuídos Capítulo 3 - Aula 3

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

Sistemas Operacionais. Prof. André Y. Kusumoto

SISTEMAS OPERACIONAIS ABERTOS Prof. Ricardo Rodrigues Barcelar

Sistemas Operacionais I Parte VI Threads

Sistemas Distribuídos

Sistemas Operacionais

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

Introdução a Sistemas Operacionais. Carlos Eduardo Ba8sta

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

Banco de Dados. Introdução. Profa. Flávia Cristina Bernardini

Sistemas Operacionais

Sistemas Multiprogramáveis/Multitarefa

Introdução Aplicações Concorrentes Especificação de Concorrência em Programas Problemas de Compartilhamento de Recursos Exclusão Mútua Sincronização

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

Sistemas Operacionais I

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

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

SISTEMAS OPERACIONAIS

Sistemas Operacionais. Adão de Melo Neto

Questões de Múltipla escolha

Algoritmos de escalonamento

Sistemas Operacionais. Conceito de Processos

Inteligência Artificial. Prolog. Aula 2 Introdução (cont.)

Gerência de memória III

Gerenciamento de memória

Introdução e Conceitos Básicos

Fundamentos de Sistemas Operacionais

Unidade 2. Processos Threads Concorrência em Java

LABORATÓRIO DE SISTEMAS OPERACIONAIS. PROFª. M.Sc. JULIANA HOFFMANN QUINONEZ BENACCHIO

Introdução à Computação: Sistemas de Computação

Multiprogramação leve em arquiteturas multi-core

Dispositivos de Entrada e Saída

Processos. Prof. Gustavo Leitão

Gerência da Memória. Adão de Melo Neto

SISTEMAS OPERACIONAIS

Organização e Arquitetura de Computadores I

Transcrição:

LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTE Adriana Nery

Programação lógica Paradigma Predicados Dedutiva) baseado no Cálculo de (Lógica Matemática Exemplo: Zé Carioca é um papagaio. Todo papagaio é uma ave. Logo, Zé Carioca é uma ave.

Programação lógica Programas são declarativos: especificam resultados desejados vez de procedimentos para produzi-los em Semelhança com paradigma funcional

Programação lógica Separação de lógica e controle: Lógica: definição do que deve ser solucionado Controle: como a solução pode ser obtida Programador escreve definições que permitam a dedução da solução

Elementos de um programa Proposições lógicas que formam fatos conhecidos uma base de Regras que definem como deduzir novas proposições a partir da base Consultas à base (execução do programa)

Elementos de um programa: exemplo Proposição (fato) Zé Carioca é um papagaio. Regra de inferência Todo papagaio é uma ave. Consulta Zé Carioca é uma ave? Solução/resposta/resultado Sim

Elementos de um programa: exemplo Proposições (fatos) João é pai de José. João é pai de Maria. Consulta João é pai de quem? Solução/resposta/resultado José Maria

Elementos de um programa: exemplo Proposição (fato) O fatorial de 0 é 1. Regra O fatorial de um número N*fatorial(N-1). N (N > 0) é igual a Consultas/Respostas: O fatorial de 2 é 200? Resposta: Não Consulta: Quanto é o fatorial de 3? Resposta: 6

Bases da programação lógica Lógica matemática Álgebra de Boole Descrição de proposições e verificação quanto à validade das mesmas Cálculo de predicados Lógica simbólica Proposições envolvem operadores lógicos símbolos e Cláusulas de Horn: proposições Significado Representação com forma restrita, p e q p q 2 partes p ou q p q p implica q p q p equivale a q p q

Origens da programação lógica Lógica matemática, lógica de predicados simbólica e cálculo Linguagem Prolog Início da década de 70: colaboração entre universidades Colmerauer e Roussel (Marseille): processamento de linguagem natural Kowalski (Edinburgh): prova automatizada de teoremas Desenvolvimento independente a partir de meados de 70

Algumas aplicações Sistemas especialistas: emulação da habilidade humana em algum domínio do conhecimento (ex. medicina) Sub-sistemas inteligentes, por exemplo: jogos: capacidade de derivar novos cenários, comportamentos, etc. bancos de dados: capacidade de deduzir informações a partir dos dados no banco Processamento de linguagem natural: chatbots Educação: ensino de lógica, contribuindo para pensamento e expressão mais claros

Vantagens e desvantagens Vantagens Separação entre lógica de programa e controle Programas fáceis de entender e manter Desvantagens Eficiência Baixa expressividade para certas aplicações

PROGRAMAÇÃO CONCORRENTE [ O QUE É ] Um programa concorrente é um conjunto de programas seqüenciais comuns que são executados em um paralelismo abstrato (M.Bem-Ari)

PROGRAMAÇÃO CONCORRENTE [ O QUE É ] Um programa concorrente especifica 2 ou mais processos que cooperam para realizar uma tarefa. Processos cooperam através de comunicação; utilizam variáveis compartilhadas ou troca de mensagens (G. R. Andrews)

PROGRAMAÇÃO CONCORRENTE [ MOTIVAÇÃO ] Aproveitar hardware com múltiplos processadores Atender a vários usuários simultaneamente Melhorar o desempenho das aplicações Aumentar a disponibilidade para o usuário Objetos ativos e controle de atividades Programas paralelos

PROGRAMAÇÃO CONCORRENTE [ CONCEITOS ] Paralelismo Processamento simultâneo físico Concorrência Processamento simultâneo lógico (aparente) Requer entrelaçamento (interleaving) de ações Processo Execução de um programa Programa Concorrente Vários processos que cooperam para a realização de uma tarefa

PROGRAMAÇÃO CONCORRENTE [ CONCEITOS ] Comunicação Variáveis compartilhadas Passagem de mensagens Sincronização Exclusão mútua de seções críticas Sincronização por condição Estado de um programa concorrente Consiste dos valores das variáveis (explícitas e implícitas) A execução de um comando muda o estado Ações atômicas Transformação indivisível de estado

PROGRAMAÇÃO CONCORRENTE [ PROCESSOS ] Um processo é um programa que está em algum estado de execução Tem espaço de endereçamento próprio, que é mapeado pelo S.O. para memória física Possui um fluxo de controle ou thread único Mantém um contador de programa (PC) que indica o endereço da próxima instrução A MMU (Memory Management Unit) traduz os endereços lógicos em endereços físicos, que normalmente não são contíguos (Memória Virtual)

PROGRAMAÇÃO CONCORRENTE [ PROCESSOS ] Espaço de Endereçamento Lógico Pilha Espaço de Endereçamento Lógico de um Processo Heap Dados Globais Instruções

PROGRAMAÇÃO CONCORRENTE [ PROCESSOS ] Tabela de Processos Estado do processo Valores dos registradores Arquivos abertos Alocação de memória PID (Process ID) UID (User ID) GID (Owner s Group ID)

PROGRAMAÇÃO CONCORRENTE [ PROCESSOS ] Estados de um processo Executando (Running): Utilizando a CPU Executável ou Pronto (Runnable ou Ready): Esperando para ser escalonado para usar a CPU Suspenso (Suspended): Recebeu um sinal para ser suspenso Bloqueado (Blocked): Esperando pela conclusão de algum serviço solicitado ao S.O.

PROGRAMAÇÃO CONCORRENTE [ PROCESSOS ] Bloqueado Ativo Iniciado Executável Executando Suspenso Encerrado

PROGRAMAÇÃO CONCORRENTE [ THREADS ] Um processo pode ter mais de uma Thread (Linha) Cada Thread possui contador de programa e pilha próprios Quando um processo é escalonado para ser executado, uma das Threads entra em execução As Threads compartilham as variáveis globais do processo

PROGRAMAÇÃO CONCORRENTE [ THREADS ] Espaço de Endereçamento de um Processo Thread 1 Pilha Contador de Programa Pilha Thread 2 Pilha Contador de Programa Thread n Pilha Contador de Programa Heap Variáveis Globais Instruções

PROGRAMAÇÃO CONCORRENTE [ THREADS ] Vantagens sobre processos compartilhando memória São muito mais leves de serem criadas A troca de contexto é mais suave pois compartilha instruções, heap e variáveis globais Facilitam o compartilhamento de memória

THREADS [ CICLO DE VIDA ] Intervalo de tempo expirou Dormindo sleep Criada escalonada Término Encerrada start Pronta Executando interrompida Operação de E/S concluída notify notityall Esperando wait Operação de E/S iniciada Bloqueada

THREADS [ SINCRONIZAÇÃO ] Sincronizando Threads Programação com múltiplas Threads requer bastante cuidado: Acesso / Atualização de variáveis compartilhadas Starvation Deadlock Acesso a estados inválidos de outros objetos

THREADS [ SINCRONIZAÇÃO ] Problema de acesso a variáveis compartilhadas Várias Threads (representando os depósitos dos clientes) querendo atualizar (depositar um valor) uma mesma conta Quando uma está lendo o saldo atual, uma outra Thread pode já ter lido esse valor e calculado o novo saldo, mas ainda não ter gravado o novo valor Se nesse momento a primeira Thread gravar o valor, o saldo final será igual ao calculado pela Thread que gravar o novo valor por último (desconsiderando assim o depósito da Thread que encerrou primeiro). O ideal é impedir que uma operação de depósito seja iniciada antes da outra encerrar

THREADS [ SINCRONIZAÇÃO ] A sincronização baseia-se na idéia de que para acessar um método sincronizado ou um entrar em um bloco sincronizado, é preciso obter (ou já ter) o lock desse objeto. A Thread que conseguir esse lock é a única autorizada a acessar os recursos protegidos através de sincronização.

PROGRAMAÇÃO CONCORRENTE [ PROPRIEDADES ] Safety: O programa nunca entra em um estado inconsistente) Liveness: Em algum momento o programa entra em um estado consistente Correção Parcial: Se o programa terminar, o resultado está correto. Caso contrário, nunca pode dar o resultado correto Término: O programa termina eventualmente Ausência de Deadlock: Nunca todos os processos estarão bloqueados Correção Total: O programa sempre termina e produz o resultado correto

OBRIGADA