Anda di halaman 1dari 17

Programao Linear - 2o.

Semestre 2017

Turma Quinto ADS Fatec Taubat


Segundo Semestre de 2017

SISTEMAS DISTRIBUDOS
Divani Barbosa
http://professoradivani.blogspot.com.br/

Aula 1

BIBLIOGRAFIA
CENTRO PAULA SOUZA
COULOURIS, G; DOLLIMORE, J;
TANENBAUM, A S; STEEN, M. Sistemas
KINDBERG, T. Sistemas
Distribudos Princpios e
Distribudos: Conceitos e Projeto.
Paradigmas. Prentice-Hall, 2007
Bookman, 2007

profa. Divani Barbosa Gavinier 1


Programao Linear - 2o. Semestre 2017

EMENTA CENTRO PAULA SOUZA


1. Fundamentos de Sistemas Distribudos.
2. Comunicao e Sincronizao de
Processos.
3. Sistemas Operacionais Distribudos.
4. Sistemas de Arquivos Distribudos.
5. Memria Compartilhada Distribuda.
6. Tolerncia a Falhas.
7. Segurana.
8. Sistemas Distribudos de Tempo Real.
9. Aplicaes Distribudas.
3

CALENDRIO ACADMICO

Dia Aula

1 Volta as aulas
7 Aula 0 prof. Fabricio

14 Aula 1 Apresentao da
ementa, calendrio, forma de
avaliao. Fundamentos de
Sistemas Distribudos.
21 Aula 2 - Caracterizao de
1 Inicio do segundo Sistemas Distribudos
semestre letivo 28 Aula 3 - Modelos de Sistemas
Distribudos 4

profa. Divani Barbosa Gavinier 2


Programao Linear - 2o. Semestre 2017

CALENDRIO ACADMICO

Dia Aula

4 Aula 4 - Comunicao e
Sincronizao de Processos
11 Aula 5 - Sistemas Operacionais
Distribudos
18 Aula 6 - Segurana

25 Aula 7 Simulado Prova 1

7 Feriado Independncia do
Brasil
8 e 9 No haver aula
(emenda feriado) 5

CALENDRIO ACADMICO

Dia Aula

2 Prova 1

9 Aula 8 - Sistemas de Arquivos


Distribudos.
16 Aula 9 - Sistemas Multimdia
Distribudos
23 Aula 10 - Memria
Compartilhada Distribuda
4 Feriado Municipal So
Francisco 30 Aula 11 - Aplicaes
12 - Feriado dia de Nossa Senhora Distribudas (Estudo de Caso)
Aparecida Data final para entrega dos6
13 No haver aula (emenda Trabalhos Impresso
feriado)

profa. Divani Barbosa Gavinier 3


Programao Linear - 2o. Semestre 2017

CALENDRIO ACADMICO

Dia Aula

6 Aula 12 Apresentao
Trabalhos
13 Aula 13 Apresentao
Trabalhos
20 Aula 14 Apresentao
Trabalhos
27 Aula 15 - Simulado P2

2 Feriado Finados
3 e 4 No haver aula (emenda
feriado)
15 Feriado Proclamao da
Repblica

CALENDRIO ACADMICO

Dia Aula

4 Prova 2
11 Aula 16 - Simulado Prova 3
18 Prova 3
20 Prazo final para alteraes no
sistema SIGA

5- Feriado Aniversrio Taubat


21 Termino do segundo
semestre letivo 8

profa. Divani Barbosa Gavinier 4


Programao Linear - 2o. Semestre 2017

TRABALHOS
Seguir padro artigo cientifico (Manuscrito)
Guia disponvel no site
Apresentaes: 30 minutos
Temas: (28 alunos) 14 temas (sorteio)
1. (30/10) Fundamentos de Sistemas Distribudos.
2. (30/10) Caracterizao de Sistemas Distribudos
3. (6/11) Modelos de Sistemas Distribudos
4. (6/11) Redes de computadores e interligao em rede
5. (6/11) Comunicao e Sincronizao de Processos.
6. (6/11) Objetos Distribudos e Invocao Remota
7. (13/11) Sistemas Operacionais Distribudos.
8. (13/11) Segurana.
9. (13/11) Sistemas de Arquivos Distribudos.
10. (13/11) Coordenao e Acordo
11. (20/11) Transaes e Controle de Concorrncia
12. (20/11) Sistemas Multimdia Distribudos.
9
13. (20/11) Memria Compartilhada Distribuda.
14. (20/11) Aplicaes Distribudas (Estudo de Caso).

AVALIAO
Clculo Mdia:

P3 no mximo 6.67

Aprovao:
Somente na seguinte situao: Mdia 1 ou 2 maior igual a
6 e frequncia maior igual a 75%

Reprovao:
Situao 1: Mdia menor que 6 ou
10
Situao 2: Frequncia menor que 75% (21 faltas)

profa. Divani Barbosa Gavinier 5


Programao Linear - 2o. Semestre 2017

DATAS (RESUMO)
02/10/17 Prova 1 (P1)

30/10/17 Data final entrega Trabalho Impresso

Apresentaes Duplas 1 e 2

06/11/17 Apresentaes Duplas 3, 4, 5 e 6

13/11/17 Apresentaes Duplas 7, 8, 9 e 10

20/11/17 Apresentaes Duplas 11, 12, 13 e 14

04/12/17 Prova 2

18/12/17 Prova 3

11

AULA 1
Reviso vetores em Java

Vetores Ordenados
Algoritmo
Implementao em Java

Fila de Prioridade
Algoritmo
Implementao em Java

HeapSort
Algoritmo
Implementao em Java

Atividades Fixao 12

profa. Divani Barbosa Gavinier 6


Programao Linear - 2o. Semestre 2017

VETORES
Estrutura de armazenamento de dados mais
comumente usada.

Criando um vetor em Java


Vetores so objetos em Java, por isso necessrio o
uso do operador new para criar um vetor em Java.
int[] VetorInt; // define uma referncia a um vetor
VetorInt = new int[100]; // cria o vetor e faz
// VetorInt referenci-lo

Ou pode-se usar a abordagem equivalente com uma s


instruo:
int[] VetorInt = new int[100];
13

int VetorInt[] = new int[100];

Insero
Inserir um item no vetor fcil, usamos a sintaxe normal
de vetor e tambm controlamos quantos itens inserimos
no vetor com a varivel n.
VetorInt[0] = 77;
VetorInt[1] = 55;
n = 2;

Exibio
Considerando que a varivel n contem o nmero de
elementos do vetor. Exibir todos os elementos simples,
percorremos o vetor acessando cada elemento com
VetorInt[i] e exibimo-los.

for(i=0; i<n; i++) // para cada elemento 14


System.out.print(" " + VetorInt[i]); // mostrar item

profa. Divani Barbosa Gavinier 7


Programao Linear - 2o. Semestre 2017

Pesquisa
Considerando que a varivel chave contem o valor que
estamos procurando. Para pesquisar um item,
percorremos o vetor comparando a chave com cada
elemento. Se o contador i atingir a ultima clula ocupada
sem nenhuma coincidncia encontrada, o valor procurado
no se encontra no vetor.
chave = 66; // achar item com chave 66

for (i=0; i<n; i++) // para cada elemento


if ( v[i]==chave ) // achou item?
break; // sim achei, sair antes do fim

if (i==n) // chegou ao fim?


System.out.println(chave + " NAO encontrado"); // sim
else
System.out.println(chave + " Encontrado"); // no 15

Remoo
A remoo comea com a pesquisa do item especificado
(chave). Caso ele se encontre no vetor movemos todos os
itens de ndice mais alto para baixo e diminumos o
numero de elementos.
chave = 55; // remover item com chave 55

for (i=0; i<n ;i++) // para cada elemento

if (v[i]==chave) { // achou item?

if (i != (n-1)) { // Se NAO for o ultimo item


for(int k=i; k<(n-1); k++) // Vetor caminha
v[k]=v[k+1];
}

n--; // decrementa um elemento no vetor


16
break; // sair antes do fim
}

profa. Divani Barbosa Gavinier 8


Programao Linear - 2o. Semestre 2017

Classe Vetor:
Campos Construtor
private long[] v; public Vetor(int tam) {
private int n; v = new long[tam];
n = 0;
}
Mtodos
inserir: Insere itens no vetor
buscar: Retorna -1 caso no encontre ou a
posio no vetor onde o item se encontra.
remover: Retorna verdadeiro se removeu item
exibir: Exibe na tela todos os itens 17

nItens: Retorna o numero de itens do vetor

class Vetor {

private long[] v;
private int n; // numero de elementos adicionados

public Vetor(int tam) { // construtor


v = new long[tam];
n = 0;
}

public void inserir(long valor) {


v[n] = valor;
n++;
}

public int buscar(long chave) {


for(int i=0; i<n; i++)
if( v[i] == chave ) return i;
return -1; 18
}

profa. Divani Barbosa Gavinier 9


Programao Linear - 2o. Semestre 2017

public boolean remover(long chave) {


for(int i=0; i<n; i++)
if( v[i] == chave ) {
if ( i != (n-1) ) // Se NAO for o ultimo item
for(int k=i; k<(n-1); k++) // Vetor caminha
v[k] = v[k+1];
n--;
return true;
}
return false;
}

public void exibir() {


for(int i=0; i<n; i++)
System.out.print(" " + v[i]);
}

public int nItens() { return n; }


19
} // fim Classe Vetor

Exemplo de uso da classe Vetor:

20

profa. Divani Barbosa Gavinier 10


Programao Linear - 2o. Semestre 2017

VETORES ORDENADOS
Por que usar vetores ordenados?

Grfico de tempos Big O


(comparao algoritmos)

21

public void inserir(long valor) {


O(1) em todos os casos
v[n] = valor;
n++;
}

public int buscar(long chave) {


for(int i=0; i<n; i++)
O(n) no pior caso
if( v[i] == chave ) return i;
return -1;
}

public int buscar(long chave) { // busca binaria


int baixo=0, alto=n-1, meio;
while (baixo <= alto) {
meio=(baixo+alto)/2;
if ( v[meio] == chave) return meio;
if ( v[meio] < chave ) baixo = meio+1;
else alto = meio-1;
} 22
return -1;
} O(log n) no melhor caso

profa. Divani Barbosa Gavinier 11


Programao Linear - 2o. Semestre 2017

public void inserir(long valor) {


v[n] = valor;
O(1) em todos os casos
n++;
}

public void insere(long valor) {


int i, j;

for (i=0; i<n; i++) // Encontrando a posio para inserir


if ( v[i]>valor ) // (pesquisa linear)
break;

for (j=n; j>i; j--) // Movendo maiores para cima


v[j] = v[j-1];

v[i] = valor; // Inserindo item na posio ordenada


n++; // Aumentando em 1 o numero de itens do vetor
23
}
O(n) no pior caso

Exemplo de uso da classe VetorOrd:

24

profa. Divani Barbosa Gavinier 12


Programao Linear - 2o. Semestre 2017

VANTAGENS
O que ganhamos ao usar vetores ordenados?

Estrutura Insero Eliminao Pesquisa


Vetor O(1) O(n) O(n)
Vetor Ordenado O(n) O(n) O(log n)

A principal vantagem que o tempo de pesquisa


muito mais rpido do que num vetor no ordenado.
A desvantagem que a insero leva mais tempo,
porque todos os itens de dados com valores maiores que
a chave devem ser movidos para cima para criar
espao.
As remoes so lentas tanta nos vetores ordenados 25

como no ordenados.

VANTAGENS
O que ganhamos ao usar vetores ordenados?

Estrutura Insero Eliminao Pesquisa


Vetor O(1) O(n) O(n)
Vetor Ordenado O(n) O(n) O(log n)

Vetores Ordenados so uteis em situaes nas quais as


pesquisas so frequentes, mas, remoo e insero no.

Exemplo: Uma base de dados de funcionrios de uma


empresa. Contratar e despedir funcionrios so
ocorrncias pouco frequentes em comparao com o
acesso ao registro de funcionrios existentes para obter
informaes ou atualiza-las como alterao de endereo26 e
salrio.

profa. Divani Barbosa Gavinier 13


Programao Linear - 2o. Semestre 2017

FILA DE PRIORIDADE
Usa o princpio de que o primeiro que entra o
primeiro que sai.

First In, First Out (FIFO)


Incio
Excluses posio
e zero Final
Consultas Inseres

Necessita de controle de acesso do elementos do fim e


inicio (zero)

Uma fila precisa de uma classe de objetos N, assim


como na lista simplesmente encadeada.

class No {
espao para armazenamento
public long item;
da informao
public No prox;

public No(long v) { Um espao para armazenar uma


item = v; referncia da localizao na
} memria onde o prximo N se
encontra.
}

construtor
28

profa. Divani Barbosa Gavinier 14


Programao Linear - 2o. Semestre 2017

Classe FilaPrior:
Campos Construtor
private No inicio; public FilaPrior() {
private No fim; fim = null;
inicio = null;
}
Mtodos
front: Retorna o item do inicio.
end: Retorna o item do fim.
empty: Retorna verdadeiro se fila vazia.
push: Insere itens de maneira ordenada na
fila. 29

pop: Remove itens da fila.

class FilaPrior {
private No inicio;
private No fim;

public FilaPrior() {
fim = null;
inicio = null;
}

public long front() { return inicio.item; }


public long end() { return fim.item; }
public boolean empty() { return ( fim == null ); }

public void pop() {


if (empty()) return;
if (inicio.prox == null) fim = null;
inicio = inicio.prox;
}
30

profa. Divani Barbosa Gavinier 15


Programao Linear - 2o. Semestre 2017

public void push(long valor) {

No novo = new No(valor);

if (empty()) { // Se primeiro item


novo.prox = null;
inicio = novo;
fim = novo;
}

else { // Se NAO for o primeiro item

// Insere aqui tratamento

} // fim da classe FilaPrior

31

No atual = inicio;
No anterior = null;
while (atual != null) { // caminha para a posio de inserir
if (atual.item > valor) break;
anterior = atual;
atual = atual.prox;
}
if (anterior == null) { // Se o No ser inserido no inicio
novo.prox = atual;
inicio = novo;
}
else if (atual == null) { // Se o No ser inserido no fim
novo.prox = null;
anterior.prox = novo;
fim = novo;
}
else { // Se No ser inserido no meio
novo.prox = atual;
anterior.prox = novo;
} 32
}

profa. Divani Barbosa Gavinier 16


Programao Linear - 2o. Semestre 2017

Exemplo de uso da classe FilaPrior:

33

VANTAGENS
O que ganhamos ao usar fila de prioridade?

Estrutura Insero Eliminao Pesquisa


Vetor O(1) O(n) O(n)
Vetor Ordenado O(n) O(n) O(log n)
Fila de
O(n) O(1) -
Prioridade

A principal vantagem que o tempo eliminao


muito rpido (valor mximo e mnimo).
A desvantagem que a insero leva mais tempo, pois
deve se encontrar posio ideal para inserir o item.
Exemplo: Fila de prioridades podem ser usadas para 34
escalonamento de tarefas em computadores

profa. Divani Barbosa Gavinier 17

Anda mungkin juga menyukai