Top Banner
Sumário Técnicas Avançadas de Programação Prof. João Marcos M. da Silva Departamento de Engenharia de Telecomunicações Escola de Engenharia Universidade Federal Fluminense Agosto de 2011 Prof. João Marcos Meirelles da Silva Aula 01 — pg. 1/35
36

Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA Redes, Internet e sockets Comunicações Seguras Gerência de Redes e Aplicações

Nov 23, 2018

Download

Documents

lydang
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA Redes, Internet e sockets Comunicações Seguras Gerência de Redes e Aplicações

Sumário

Técnicas Avançadas de Programação

Prof. João Marcos M. da Silva

Departamento de Engenharia de TelecomunicaçõesEscola de Engenharia

Universidade Federal Fluminense

Agosto de 2011

Prof. João Marcos Meirelles da Silva Aula 01 — pg. 1/35

Page 2: Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA Redes, Internet e sockets Comunicações Seguras Gerência de Redes e Aplicações

Sumário

Sumário

1 Informações Gerais Sobre a Disciplina

2 Introdução aos Sistemas Distribuídos

Prof. João Marcos Meirelles da Silva Aula 01 — pg. 2/35

Page 3: Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA Redes, Internet e sockets Comunicações Seguras Gerência de Redes e Aplicações

Sumário

Sumário

1 Informações Gerais Sobre a Disciplina

2 Introdução aos Sistemas Distribuídos

Prof. João Marcos Meirelles da Silva Aula 01 — pg. 2/35

Page 4: Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA Redes, Internet e sockets Comunicações Seguras Gerência de Redes e Aplicações

Informações Gerais Sobre a DisciplinaIntrodução aos Sistemas Distribuídos

Objetivo da DisciplinaAvaliaçãoEmentaBibliografia

Sumário

1 Informações Gerais Sobre a DisciplinaObjetivo da DisciplinaAvaliaçãoEmentaBibliografia

2 Introdução aos Sistemas Distribuídos

Prof. João Marcos Meirelles da Silva Aula 01 — pg. 3/35

Page 5: Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA Redes, Internet e sockets Comunicações Seguras Gerência de Redes e Aplicações

Informações Gerais Sobre a DisciplinaIntrodução aos Sistemas Distribuídos

Objetivo da DisciplinaAvaliaçãoEmentaBibliografia

Objetivo

Objetivo da disciplina:Oferecer uma visão geral de programação avançada utilizando alinguagem C e JAVA e suas tecnologias derivadas na área deTelecomunicações.

Prof. João Marcos Meirelles da Silva Aula 01 — pg. 4/35

Page 6: Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA Redes, Internet e sockets Comunicações Seguras Gerência de Redes e Aplicações

Informações Gerais Sobre a DisciplinaIntrodução aos Sistemas Distribuídos

Objetivo da DisciplinaAvaliaçãoEmentaBibliografia

Sumário

1 Informações Gerais Sobre a DisciplinaObjetivo da DisciplinaAvaliaçãoEmentaBibliografia

2 Introdução aos Sistemas Distribuídos

Prof. João Marcos Meirelles da Silva Aula 01 — pg. 5/35

Page 7: Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA Redes, Internet e sockets Comunicações Seguras Gerência de Redes e Aplicações

Informações Gerais Sobre a DisciplinaIntrodução aos Sistemas Distribuídos

Objetivo da DisciplinaAvaliaçãoEmentaBibliografia

Informações sobre a avaliação

A avaliação do curso se dará da seguinte forma:

2 Listas de Esercícios (L1 e L2)1 Projeto (P)1 Prova Final (Verificação Suplementar)

M =(L1 + L2 + P)

3

Prof. João Marcos Meirelles da Silva Aula 01 — pg. 6/35

Page 8: Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA Redes, Internet e sockets Comunicações Seguras Gerência de Redes e Aplicações

Informações Gerais Sobre a DisciplinaIntrodução aos Sistemas Distribuídos

Objetivo da DisciplinaAvaliaçãoEmentaBibliografia

Informações sobre a avaliação

CondiçõesSe M ≥ 6→ AprovadoSe 4 ≤ M < 6→ VS.Se M < 4→ Reprovado.

OBS:Os alunos que fizerem a VS deverão alcançar a nota mínimade 6,0 para serem aprovados.Freqüência mínima das aulas: 75%

Prof. João Marcos Meirelles da Silva Aula 01 — pg. 7/35

Page 9: Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA Redes, Internet e sockets Comunicações Seguras Gerência de Redes e Aplicações

Informações Gerais Sobre a DisciplinaIntrodução aos Sistemas Distribuídos

Objetivo da DisciplinaAvaliaçãoEmentaBibliografia

Sumário

1 Informações Gerais Sobre a DisciplinaObjetivo da DisciplinaAvaliaçãoEmentaBibliografia

2 Introdução aos Sistemas Distribuídos

Prof. João Marcos Meirelles da Silva Aula 01 — pg. 8/35

Page 10: Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA Redes, Internet e sockets Comunicações Seguras Gerência de Redes e Aplicações

Informações Gerais Sobre a DisciplinaIntrodução aos Sistemas Distribuídos

Objetivo da DisciplinaAvaliaçãoEmentaBibliografia

Ementa

Introdução aos Sistema DistribuídosProcessos ConcorrentesProcessos Leves (threads)Sincronização de ProcessosComunicação entre ProcessosSocketsRemote Procedure Calls (RPC)

Prof. João Marcos Meirelles da Silva Aula 01 — pg. 9/35

Page 11: Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA Redes, Internet e sockets Comunicações Seguras Gerência de Redes e Aplicações

Informações Gerais Sobre a DisciplinaIntrodução aos Sistemas Distribuídos

Objetivo da DisciplinaAvaliaçãoEmentaBibliografia

Ementa

Programação Estruturada × Programação Orientada àObjetosModelagem de Software usando UMLIntrodução à Linguagem JAVAProgramação Concorrente em JAVARedes, Internet e socketsComunicações SegurasGerência de Redes e Aplicações

Prof. João Marcos Meirelles da Silva Aula 01 — pg. 10/35

Page 12: Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA Redes, Internet e sockets Comunicações Seguras Gerência de Redes e Aplicações

Informações Gerais Sobre a DisciplinaIntrodução aos Sistemas Distribuídos

Objetivo da DisciplinaAvaliaçãoEmentaBibliografia

Sumário

1 Informações Gerais Sobre a DisciplinaObjetivo da DisciplinaAvaliaçãoEmentaBibliografia

2 Introdução aos Sistemas Distribuídos

Prof. João Marcos Meirelles da Silva Aula 01 — pg. 11/35

Page 13: Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA Redes, Internet e sockets Comunicações Seguras Gerência de Redes e Aplicações

Informações Gerais Sobre a DisciplinaIntrodução aos Sistemas Distribuídos

Objetivo da DisciplinaAvaliaçãoEmentaBibliografia

Bibliografia

Figure: Livros adotados para a disciplina.

Prof. João Marcos Meirelles da Silva Aula 01 — pg. 12/35

Page 14: Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA Redes, Internet e sockets Comunicações Seguras Gerência de Redes e Aplicações

Informações Gerais Sobre a DisciplinaIntrodução aos Sistemas Distribuídos

Definições IniciaisEvolução da ProgramaçãoMultiprogramaçãoConsiderações Finais

Sumário

1 Informações Gerais Sobre a Disciplina

2 Introdução aos Sistemas DistribuídosDefinições IniciaisEvolução da ProgramaçãoMultiprogramaçãoConsiderações Finais

Prof. João Marcos Meirelles da Silva Aula 01 — pg. 13/35

Page 15: Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA Redes, Internet e sockets Comunicações Seguras Gerência de Redes e Aplicações

Informações Gerais Sobre a DisciplinaIntrodução aos Sistemas Distribuídos

Definições IniciaisEvolução da ProgramaçãoMultiprogramaçãoConsiderações Finais

Programa, processo e Job

ProgramaUm programa é um conjunto de instruções de máquina que visamrealizar alguma função útil a um usuário.

Prof. João Marcos Meirelles da Silva Aula 01 — pg. 14/35

Page 16: Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA Redes, Internet e sockets Comunicações Seguras Gerência de Redes e Aplicações

Informações Gerais Sobre a DisciplinaIntrodução aos Sistemas Distribuídos

Definições IniciaisEvolução da ProgramaçãoMultiprogramaçãoConsiderações Finais

Programa, processo e Job

ProcessoUm processo é um pouco mais que um programa pois incluitambém [1]:

Espaço de endereçamento (contém o programa executável, osdados do programa e sua pilha);Conjunto de registradores (incluindo o Program Counter);stack pointer ;demais informações necessárias para execução.

Prof. João Marcos Meirelles da Silva Aula 01 — pg. 15/35

Page 17: Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA Redes, Internet e sockets Comunicações Seguras Gerência de Redes e Aplicações

Informações Gerais Sobre a DisciplinaIntrodução aos Sistemas Distribuídos

Definições IniciaisEvolução da ProgramaçãoMultiprogramaçãoConsiderações Finais

Sumário

1 Informações Gerais Sobre a Disciplina

2 Introdução aos Sistemas DistribuídosDefinições IniciaisEvolução da ProgramaçãoMultiprogramaçãoConsiderações Finais

Prof. João Marcos Meirelles da Silva Aula 01 — pg. 16/35

Page 18: Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA Redes, Internet e sockets Comunicações Seguras Gerência de Redes e Aplicações

Informações Gerais Sobre a DisciplinaIntrodução aos Sistemas Distribuídos

Definições IniciaisEvolução da ProgramaçãoMultiprogramaçãoConsiderações Finais

Antigamente....

Não havia “Sistemas Operacionais”Os aplicativos (programas) tinham de cuidar de tudo(literalmente);O programador tinha que ter um alto grau de conhecimentoda máquina onde o programa seria compilado e executado;A execução do programa em outra máquina (que não fosseidêntica), muitas vezes necessitava de ajustes no programa euma recompilação;Não havia o conceito de portabilidade de software, nem o dereusabilidade;E a confiabilidade?

Prof. João Marcos Meirelles da Silva Aula 01 — pg. 17/35

Page 19: Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA Redes, Internet e sockets Comunicações Seguras Gerência de Redes e Aplicações

Informações Gerais Sobre a DisciplinaIntrodução aos Sistemas Distribuídos

Definições IniciaisEvolução da ProgramaçãoMultiprogramaçãoConsiderações Finais

Atualmente...

Os Sistemas Operacionais gerenciam bem os recursosdisponíveis na máquina...... oferecem “serviços” aos usuários (sejam programas oupessoas), e......retiram um ônus grande sobre o programador - a doconhecimento de baixo nível da máquina;

1 Programar ficou mais fácil;2 Já é possível pensar na “tal” da portabilidade;3 Mais fácil criar programas de maior confiabilidade.

Prof. João Marcos Meirelles da Silva Aula 01 — pg. 18/35

Page 20: Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA Redes, Internet e sockets Comunicações Seguras Gerência de Redes e Aplicações

Informações Gerais Sobre a DisciplinaIntrodução aos Sistemas Distribuídos

Definições IniciaisEvolução da ProgramaçãoMultiprogramaçãoConsiderações Finais

Mas nem sempre foi assim...

1 Os primeiros Sistemas Operacionais (SO) erammonoprogramáveis, ou seja, um único programa de usuárioera executado por vez (inteiramente) → processamento emlote (batch);

2 A necessidade de executar mais programas levou àmultiprogramação.

Prof. João Marcos Meirelles da Silva Aula 01 — pg. 19/35

Page 21: Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA Redes, Internet e sockets Comunicações Seguras Gerência de Redes e Aplicações

Informações Gerais Sobre a DisciplinaIntrodução aos Sistemas Distribuídos

Definições IniciaisEvolução da ProgramaçãoMultiprogramaçãoConsiderações Finais

Sumário

1 Informações Gerais Sobre a Disciplina

2 Introdução aos Sistemas DistribuídosDefinições IniciaisEvolução da ProgramaçãoMultiprogramaçãoConsiderações Finais

Prof. João Marcos Meirelles da Silva Aula 01 — pg. 20/35

Page 22: Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA Redes, Internet e sockets Comunicações Seguras Gerência de Redes e Aplicações

Informações Gerais Sobre a DisciplinaIntrodução aos Sistemas Distribuídos

Definições IniciaisEvolução da ProgramaçãoMultiprogramaçãoConsiderações Finais

Multiprogramação

Cada programa é executado em uma fatia de tempo;Eventos podem provocar a troca de controle do processadorde um programa para outro programa;O processo de troca de controle do processador entre osdiversos programas chama-se escalonamento e o módulo dosistema operacional que realiza este processo é o escalonador.

Prof. João Marcos Meirelles da Silva Aula 01 — pg. 21/35

Page 23: Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA Redes, Internet e sockets Comunicações Seguras Gerência de Redes e Aplicações

Informações Gerais Sobre a DisciplinaIntrodução aos Sistemas Distribuídos

Definições IniciaisEvolução da ProgramaçãoMultiprogramaçãoConsiderações Finais

Multiprogramação

Figure: Um sistema multiprogramado com três jobs na memória.

Prof. João Marcos Meirelles da Silva Aula 01 — pg. 22/35

Page 24: Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA Redes, Internet e sockets Comunicações Seguras Gerência de Redes e Aplicações

Informações Gerais Sobre a DisciplinaIntrodução aos Sistemas Distribuídos

Definições IniciaisEvolução da ProgramaçãoMultiprogramaçãoConsiderações Finais

Tipos de Escalonamento

FIFO (First-In First-Ou)Shortest-Job FirstRound-Robin

Prof. João Marcos Meirelles da Silva Aula 01 — pg. 23/35

Page 25: Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA Redes, Internet e sockets Comunicações Seguras Gerência de Redes e Aplicações

Informações Gerais Sobre a DisciplinaIntrodução aos Sistemas Distribuídos

Definições IniciaisEvolução da ProgramaçãoMultiprogramaçãoConsiderações Finais

Escalonamento com Prioridades

IdeiaCada processo possui uma prioridade associada, e o processopronto para executar com maior prioridade é quem ganha oprocessador.

Prioridade DinâmicaPara evitar que processos com alta prioridade executemindefinidamente, o escalonador pode baixar a prioridade doprocesso em execução a cada ciclo de relógio até que ocorra atroca do controle da CPU.

Prof. João Marcos Meirelles da Silva Aula 01 — pg. 24/35

Page 26: Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA Redes, Internet e sockets Comunicações Seguras Gerência de Redes e Aplicações

Informações Gerais Sobre a DisciplinaIntrodução aos Sistemas Distribuídos

Definições IniciaisEvolução da ProgramaçãoMultiprogramaçãoConsiderações Finais

Estados de Execução dos Processos

Um processo em execução deixa o controle da CPU nas seguintessituações:

Término normal do programa;A entrada de um processo de maior prioridade;A solicitação de um evento ou recurso de sistema;Término da sua fatia de tempo.

Prof. João Marcos Meirelles da Silva Aula 01 — pg. 25/35

Page 27: Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA Redes, Internet e sockets Comunicações Seguras Gerência de Redes e Aplicações

Informações Gerais Sobre a DisciplinaIntrodução aos Sistemas Distribuídos

Definições IniciaisEvolução da ProgramaçãoMultiprogramaçãoConsiderações Finais

Estados de Execução dos Processos

Existem 3 estados básicos em que um processo pode alternar:

Pronto (Ready)Espera (wait)Execução (Exec)

Figure: Estados de execução dos processos.

Prof. João Marcos Meirelles da Silva Aula 01 — pg. 26/35

Page 28: Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA Redes, Internet e sockets Comunicações Seguras Gerência de Redes e Aplicações

Informações Gerais Sobre a DisciplinaIntrodução aos Sistemas Distribuídos

Definições IniciaisEvolução da ProgramaçãoMultiprogramaçãoConsiderações Finais

Estados de Execução dos Processos

READYNo estado de pronto, o processo está apto a tomar o controle doprocessador, esperando a sua vez.

Prof. João Marcos Meirelles da Silva Aula 01 — pg. 27/35

Page 29: Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA Redes, Internet e sockets Comunicações Seguras Gerência de Redes e Aplicações

Informações Gerais Sobre a DisciplinaIntrodução aos Sistemas Distribuídos

Definições IniciaisEvolução da ProgramaçãoMultiprogramaçãoConsiderações Finais

Estados de Execução dos Processos

WAITNo estado de espera, o processo está aguardando o resultado dealguma operação solicitada que necessitará de muito tempo paraser completada, como leitura/gravação em disco ou interação como usuário.

Prof. João Marcos Meirelles da Silva Aula 01 — pg. 28/35

Page 30: Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA Redes, Internet e sockets Comunicações Seguras Gerência de Redes e Aplicações

Informações Gerais Sobre a DisciplinaIntrodução aos Sistemas Distribuídos

Definições IniciaisEvolução da ProgramaçãoMultiprogramaçãoConsiderações Finais

Estados de Execução dos Processos

EXECNo estado de execução, o processo tem o controle do processadoraté que sua fatia de tempo termine, outro processo com maiorprioridade requisite o processador ou que uma operação demoradaseja solicitada.

Prof. João Marcos Meirelles da Silva Aula 01 — pg. 29/35

Page 31: Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA Redes, Internet e sockets Comunicações Seguras Gerência de Redes e Aplicações

Informações Gerais Sobre a DisciplinaIntrodução aos Sistemas Distribuídos

Definições IniciaisEvolução da ProgramaçãoMultiprogramaçãoConsiderações Finais

Kernel dos Sistema Operacionais

Monolítico É estruturado em um único arquivo binário, um únicoprocesso que executa inteiramente em modoprotegido. Possui performance superior na passagemde mensagens, mas é muito pouco flexível.

Micro-Kernel Apenas uma pequena parte do núcleo executa emmodo protegido para acessar diretamente o hardware,promover comunicação entre processos e gerenciar amemória. O restante do sistema roda em modousuário. Possui um grande flexibilidade, apesar daperformance inferior ao monolítico na passagem demensagens.

Prof. João Marcos Meirelles da Silva Aula 01 — pg. 30/35

Page 32: Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA Redes, Internet e sockets Comunicações Seguras Gerência de Redes e Aplicações

Informações Gerais Sobre a DisciplinaIntrodução aos Sistemas Distribuídos

Definições IniciaisEvolução da ProgramaçãoMultiprogramaçãoConsiderações Finais

Chamadas de Sistema

DefiniçãoOs serviços oferecidos pelo sistema operacional são acessíveis aosprogramas sob a forma de chamadas de sistema. Elas são asinterfaces entre os processos em execução e o sistema operacionale geralmente são implementadas com instruções de baixo nível.

Prof. João Marcos Meirelles da Silva Aula 01 — pg. 31/35

Page 33: Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA Redes, Internet e sockets Comunicações Seguras Gerência de Redes e Aplicações

Informações Gerais Sobre a DisciplinaIntrodução aos Sistemas Distribuídos

Definições IniciaisEvolução da ProgramaçãoMultiprogramaçãoConsiderações Finais

Chamadas de Sistema

As chamadas de sistemas podem estar relacionadas a:

Controle de ProcessosManipulação de ArquivosManipulação de DispositivosComunicação

Exemplos de chamadas de sistema relacionados a controle deprocessos: fork, wait, exit, exec, kill, signal e sleep.

Prof. João Marcos Meirelles da Silva Aula 01 — pg. 32/35

Page 34: Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA Redes, Internet e sockets Comunicações Seguras Gerência de Redes e Aplicações

Informações Gerais Sobre a DisciplinaIntrodução aos Sistemas Distribuídos

Definições IniciaisEvolução da ProgramaçãoMultiprogramaçãoConsiderações Finais

Sumário

1 Informações Gerais Sobre a Disciplina

2 Introdução aos Sistemas DistribuídosDefinições IniciaisEvolução da ProgramaçãoMultiprogramaçãoConsiderações Finais

Prof. João Marcos Meirelles da Silva Aula 01 — pg. 33/35

Page 35: Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA Redes, Internet e sockets Comunicações Seguras Gerência de Redes e Aplicações

Informações Gerais Sobre a DisciplinaIntrodução aos Sistemas Distribuídos

Definições IniciaisEvolução da ProgramaçãoMultiprogramaçãoConsiderações Finais

Considerações Finais

1 Os sistemas distribuídos podem ser potencialmente maisconfiáveis devido à multiplicidade e autonomia de suas partes;

2 Os sistemas distribuídos podem refletir a estruturaorganizacional ou geográfica à qual eles servem.

Prof. João Marcos Meirelles da Silva Aula 01 — pg. 34/35

Page 36: Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA Redes, Internet e sockets Comunicações Seguras Gerência de Redes e Aplicações

Informações Gerais Sobre a DisciplinaIntrodução aos Sistemas Distribuídos

Definições IniciaisEvolução da ProgramaçãoMultiprogramaçãoConsiderações Finais

Referências

[1] Tanenbaum, A.S., “Sistemas Operacionais Modernos”, 2a.edição, Pearson Prentice-Hall.

Prof. João Marcos Meirelles da Silva Aula 01 — pg. 35/35