Técnicas Avançadas de Programação - professores.uff.br · Programação Concorrente em JAVA...
Embed Size (px)
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