Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA...

36
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

Transcript of Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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