LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTErogerio/.../CLP20132_ling_logicas_prog_concorr… ·...

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

Transcript of LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTErogerio/.../CLP20132_ling_logicas_prog_concorr… ·...

Page 1: LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTErogerio/.../CLP20132_ling_logicas_prog_concorr… · Bases da programação lógica Lógica mate ática Álgebra de Boole Descrição

LINGUAGENS LÓGICAS E

PROGRAMAÇÃO CONCORRENTE

Adriana Nery

Page 2: LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTErogerio/.../CLP20132_ling_logicas_prog_concorr… · Bases da programação lógica Lógica mate ática Álgebra de Boole Descrição

Programação lógica

Paradigma

Predicados

Dedutiva)

Exemplo:

Zé Carioca

baseado no Cálculo de

(Lógica Matemática

é um papagaio.

Todo papagaio é uma ave.

Logo, Zé Carioca é uma ave.

Page 3: LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTErogerio/.../CLP20132_ling_logicas_prog_concorr… · Bases da programação lógica Lógica mate ática Álgebra de Boole Descrição

Programação lógica

Programas são declarativos:

especificam resultados desejados em

vez de procedimentos para produzi-los

Semelhança com paradigma funcional

Page 4: LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTErogerio/.../CLP20132_ling_logicas_prog_concorr… · Bases da programação lógica Lógica mate ática Álgebra de Boole Descrição

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

Page 5: LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTErogerio/.../CLP20132_ling_logicas_prog_concorr… · Bases da programação lógica Lógica mate ática Álgebra de Boole Descriçã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)

Page 6: LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTErogerio/.../CLP20132_ling_logicas_prog_concorr… · Bases da programação lógica Lógica mate ática Álgebra de Boole Descrição

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

Page 7: LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTErogerio/.../CLP20132_ling_logicas_prog_concorr… · Bases da programação lógica Lógica mate ática Álgebra de Boole Descrição

Elementos de um programa: exemplo

Proposições (fatos)

João é pai

João é pai

Consulta

João é pai

de

de

José.

Maria.

de quem?

Solução/resposta/resultado

José

Maria

Page 8: LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTErogerio/.../CLP20132_ling_logicas_prog_concorr… · Bases da programação lógica Lógica mate ática Álgebra de Boole Descrição

Elementos de um programa: exemplo

Proposição (fato)

O fatorial de 0 é 1.

Regra

O fatorial de um número

N*fatorial(N-1).

Consultas/Respostas:

O fatorial de 2 é 200?

Resposta: Não

N (N > 0) é igual a

Consulta: Quanto é o fatorial de

Resposta: 6

3?

Page 9: LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTErogerio/.../CLP20132_ling_logicas_prog_concorr… · Bases da programação lógica Lógica mate ática Álgebra de Boole Descrição

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

Cláusulas de Horn:

símbolos e

proposições com forma restrita, 2 partes

Significado Representação

p e q p q p ou q p q p implica q p q

p equivale a q p q

Page 10: LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTErogerio/.../CLP20132_ling_logicas_prog_concorr… · Bases da programação lógica Lógica mate ática Álgebra de Boole Descrição

Origens da programação lógica

Lógica matemática, lógica

de predicados

Linguagem Prolog

simbólica e cálculo

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

Page 11: LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTErogerio/.../CLP20132_ling_logicas_prog_concorr… · Bases da programação lógica Lógica mate ática Álgebra de Boole Descrição

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

Page 12: LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTErogerio/.../CLP20132_ling_logicas_prog_concorr… · Bases da programação lógica Lógica mate ática Álgebra de Boole Descrição

Vantagens e desvantagens

Vantagens

Separação

Programas

entre lógica de programa e controle

fáceis de entender e manter

Desvantagens

Eficiência

Baixa expressividade para certas aplicações

Page 13: LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTErogerio/.../CLP20132_ling_logicas_prog_concorr… · Bases da programação lógica Lógica mate ática Álgebra de Boole Descrição

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)

Page 14: LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTErogerio/.../CLP20132_ling_logicas_prog_concorr… · Bases da programação lógica Lógica mate ática Álgebra de Boole Descrição

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)

Page 15: LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTErogerio/.../CLP20132_ling_logicas_prog_concorr… · Bases da programação lógica Lógica mate ática Álgebra de Boole Descrição

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

Page 16: LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTErogerio/.../CLP20132_ling_logicas_prog_concorr… · Bases da programação lógica Lógica mate ática Álgebra de Boole Descrição

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

Page 17: LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTErogerio/.../CLP20132_ling_logicas_prog_concorr… · Bases da programação lógica Lógica mate ática Álgebra de Boole Descrição

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

Page 18: LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTErogerio/.../CLP20132_ling_logicas_prog_concorr… · Bases da programação lógica Lógica mate ática Álgebra de Boole Descrição

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)

Page 19: LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTErogerio/.../CLP20132_ling_logicas_prog_concorr… · Bases da programação lógica Lógica mate ática Álgebra de Boole Descrição

PROGRAMAÇÃO CONCORRENTE

[ PROCESSOS ]

Espaço de Endereçamento Lógico

Instruções

Dados Globais

Espaço de Endereçamento

Lógico de um Processo

Pilha

Heap

Page 20: LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTErogerio/.../CLP20132_ling_logicas_prog_concorr… · Bases da programação lógica Lógica mate ática Álgebra de Boole Descrição

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)

Page 21: LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTErogerio/.../CLP20132_ling_logicas_prog_concorr… · Bases da programação lógica Lógica mate ática Álgebra de Boole Descrição

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.

Page 22: LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTErogerio/.../CLP20132_ling_logicas_prog_concorr… · Bases da programação lógica Lógica mate ática Álgebra de Boole Descrição

PROGRAMAÇÃO CONCORRENTE

[ PROCESSOS ]

Executando

Suspenso

Executável

Bloqueado

Encerrado

Iniciado

Ativo

Page 23: LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTErogerio/.../CLP20132_ling_logicas_prog_concorr… · Bases da programação lógica Lógica mate ática Álgebra de Boole Descrição

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

Page 24: LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTErogerio/.../CLP20132_ling_logicas_prog_concorr… · Bases da programação lógica Lógica mate ática Álgebra de Boole Descrição

PROGRAMAÇÃO CONCORRENTE

[ THREADS ]

Espaço de Endereçamento de um Processo

Instruções

Variáveis Globais

Pilha

Heap

Pilha

Contador

de Programa

Thread 1

Pilha

Contador

de Programa

Thread 2

Pilha

Contador

de Programa

Thread n

Page 25: LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTErogerio/.../CLP20132_ling_logicas_prog_concorr… · Bases da programação lógica Lógica mate ática Álgebra de Boole Descrição

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

Page 26: LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTErogerio/.../CLP20132_ling_logicas_prog_concorr… · Bases da programação lógica Lógica mate ática Álgebra de Boole Descrição

THREADS

[ CICLO DE VIDA ]

Criada

Pronta Executando

Esperando

Dormindo

Encerrada

Bloqueada

Operação de E/S iniciada

Término

sleep

wait notify notityAll

Operação de E/S concluída

start

Intervalo de tempo expirou

escalonada

interrompida

Page 27: LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTErogerio/.../CLP20132_ling_logicas_prog_concorr… · Bases da programação lógica Lógica mate ática Álgebra de Boole Descrição

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

Page 28: LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTErogerio/.../CLP20132_ling_logicas_prog_concorr… · Bases da programação lógica Lógica mate ática Álgebra de Boole Descrição

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

Page 29: LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTErogerio/.../CLP20132_ling_logicas_prog_concorr… · Bases da programação lógica Lógica mate ática Álgebra de Boole Descrição

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.

Page 30: LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTErogerio/.../CLP20132_ling_logicas_prog_concorr… · Bases da programação lógica Lógica mate ática Álgebra de Boole Descriçã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

Page 31: LINGUAGENS LÓGICAS E PROGRAMAÇÃO CONCORRENTErogerio/.../CLP20132_ling_logicas_prog_concorr… · Bases da programação lógica Lógica mate ática Álgebra de Boole Descrição

OBRIGADA