quinta-feira, 5 de março de 2009

AULA: 16 à 20/02 - Paralelismo a nível de instrução, Sistema de banco de dados, Projeto de engenharia de software, Redes distribuidas, Grafos

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES II

Paralelismo a nível de instrução

· PIPELIRING

Há anos sabe-se que o processo de buscar instruções na memória é um grande gargalo na velocidade de execução da instrução. Para amenizar esse problema, os computadores desde o IBM Strech (1959) tinham a capacidade de buscar instruções na memória antecipadamente de maneira que estivessem presentes quando necessárias.
A busca antecipada diante a execução da instrução em duas partes: a busca e a execução propriamente ditas. O conceito de pipeline amplia muito mais essa estratégia. Em vez de dividir a execução da instrução em apenas duas partes, muitas vezes ela é dividida em muitas partes (uma dúzia ou mais), cada uma manipulada por uma parte dividida do hardware, e todas elas podem executar em paralelo.
A figura abaixo, ilustra uma pipeline com cinco unidades também denominadas estágios. O estágio 1 busca a instrução na memória e a coloca em um buffer até que ela seja necessária. O estágio 2 decodifica a instrução, determina o seu tipo e de quais operadores ela necessita. O estágio 3 localiza e busca os operandos, seja nos registradores na memória. O estágio 4 é o que realiza o trabalho de executar a instrução, normalmente fazendo os operando passar pelo caminho de dados. Por fim, o estágio 5, escreve o resultado de volta no registrador adequado.

S1 - UNIDADE DE BUSCA DE INSTRUÇÃO -> S2 - UNIDADE DE DECODIFICAÇÃO DE INSTRUÇÃO -> S3 - UNIDADE DE BUSCA DE OPERANDO ->
S4 - UNIDADE DE GRAVAÇÃO S5 -> UNIDADE DE EXECUÇÃO DE INSTRUÇÃO

Na figura seguinte, vemos como o pipeline funciona em função do tempo. Durante o ciclo de relógio 1, o estágio 1 está trabalhando na instrução 1, buscando-a na memória. Durante o ciclo 2, o estágio S2 decodifica a instrução 1, enquanto o estágio 1 busca a instrução 2. Durante o ciclo 3, o estágio S3 busca os operandos para a instrução 1, o estágio S2 decodifica a instrução 2, e o estágio S1 busca a instrução 3. Durante o ciclo 4, o es´tagio S4 executa a instrução 1, o S3 busca os operandos para a instrução 2, S2 decodifica a instrução 3 e S1 busca a instrução 4. Por fim, durante o ciclo 5, S5 escreve (grava) o resultado da instrução 1 de voltado no registrador, enquanto os outros estágios trabalham nas instruções seguintes.

FIGURA

No nosso pipeline da figura acima, suponha que o tempo de ciclo dessa máquina seja de 2ns. Sendo assim, uma instrução leva 10ns para percorrer todo o caminho do pipeline de cinco estágios. À primeira vista, uma instrução demora 10ns, mas na verdade, ela funciona muito melhor do que isso. A cada ciclo de relógio (2ns), uma nova instrução é concluída, portanto a velocidade real de 5 vezes menor. Tendo um aumento no desempenho do sistema.

COMENTÁRIO: No ano passado, fizemos uma pesquisa sobre pipeline e acredito que com a aula de hoje não restou nenhuma dúvida sobre o assunto. Vamos ter uma outro aula de como funciona o pipeline em diferentes tipos de processadores então, vou aproveitar para postar o trabalho que fiz com a Aline e Bárbara, aonde pesquisamos mais de 10 processadores diferentes.

SISTEMAS OPERACIONAIS

Processos

Podemos visualizar os processos como sendo os programas em execução do sistema.

Quais as diferenças entre processos e programas?

Estrtutura de um processo

FIGURA


Fluxo de execução: Representa o caminho lógico seguido na execução do programa.
Os processos apresentam um único pluxo de execução (monothread).
O que é isso?

Estados de um processo

EXEC
Criação
Apto E E/S Reg.Imed. Finalização
Evento Bloqueado Erro

Diagrama de estados ampliado

Criação
Apto Finalização
Apto Suspenso EXEC

Bloqueado suspenso Bloqueado
DISCO

Dar um exemplo de uma aplicação que utilize o Diagrama de estados ampliado

COMENTÁRIO:

SISTEMA DE BANCO DE DADOS I

Sistemas de Banco de dados:

Componentes:
- Dados
- Hardware
- Software
- Usuário

Todos esses elementos formam um banco de dados. Um banco de dados depende de dados armazenados em um hardware, um software gerenciador (SGBD) e um usuário para interagir com o sistema.
SGBD: Software responsável para manipular os dados (acesso), restringir o acesso de usuários e certas áreas de dados, gerenciar transições, controlar concorrência, etc.

· Tipos de usuário em um SBD:
o Usuário final (ou leigo): Desconhece qualquer detalhe de implementação do BD. E limitado pelo seu aplicativo (Sistema de informação). Administrativo
o Usuário Administrador de banco de dados: resolve todos os detalhes de implementação do BD. É responsável por criar e manter as estruturas de dados, relacionamentos entre os dados, monitorar o desempenho, implementar as políticas de segurança, backup, etc. ‘(SGBD + Linguagem SQL)’ Técnico
o Usuário desenvolvedor de aplicações: Desenvolver os SI’s que acessam o BD. Precisa conhecer a linguagem de programação + Linguagem SQL para manipular e reparar os dados. Técnico
o Administrador de Dados: conhece os processos de negociações da organização e as necessidades de dados. Administrativo

Comparativo entre sistemas baseados em arquivos e sistemas de dados

Redundância de dados = o mesmo dado armazenado em diferentes locais (várias cópias do mesmo dado => réplica.Redundância de dados não-controlada = a responsabilidade pode atualizar as réplicas é do usuário => inconsistência dos dados.

COMENTÁRIO:

ENGENHARIA DE SOFTWARE I

Primeiro Tópico: Resumo do projeto (Em torno de 15 a 20 linhas). Descrever o que a aplicação trata. O objetivo é: uma pessoa leiga entender o aplicativo.

-Segundo tópico: Índice, com figura.
A lista de tabelas é opcional

- Lista de siglas

-Incluir um glossário: Fazer caso aparecer muitos termos técnicos

- Atribuir uma sigla ao projeto

-Sumário: Gerar automaticamente no WORD

-Tópicos para tratar na introdução: Identificação do cliente, qual o nicho de mercado, descrição da equipe de desenvolvimento (nome, função)

- Motivação para desenvolver o sistema: Um amigo ou coisa parecida.

- Pensar que a aplicação será destinada para alguém verdadeiro. Expor o número de funcionários a empresa tem para mostrar a grandeza da empresa.

- Legislação: Se a aplicação for regida por alguma lei brasileira, o software tem que se encarregar de tratar.

- Citar recursos humanos e materiais: O cliente disponibiliza alguém de sua confiança para acompanhar o desenvolvimento. Recursos humanos: Quem da parte da empresa irá acompanhar o desenvolvimento.

- Situação atual: É a situação do hoje. Qual é a situação do cliente hoje. Pode-se partir do ponto de que o processo é todo manual, não existe nada eletrônico. Outra situação: Há um ambiente mínimo, percebeu-se que esse ambiente não atende 100%das necessidades. Pode-se propor uma melhoria.

- Controle de dados: Situação manual: Cadastro feito por papel armazenado em um arquivo.

- Citar considerando a situação atual quais os pontos positivos e negativos.

- Solução proposta: O que o software se propõe a fazer. Exatamente nesse momento
- Abrangência do sistema, dizer qual a responsabilidade do sistema e qual não é a responsabilidade do programa para a disciplina.
- Objetivos da solução:
- Análise da receptividade: Qual é a impressão que as pessoas têm sobre o sistema.
- Citar todo o ambiente de hardware e software que o aplicativo irá demandar, quais são as licenças que o cliente precisará ter.
- Citar os produtos que o sistema irá ter. Quais são os relatórios que serão gerados.
- Apontar os benefícios.

- Comentar qual é a competência do cliente e do desenvolvedor. EX: CLIENTE: COMPRAR LICENÇAS, INSTALAÇÃO ELÉTRICA. DESENVOLVEDOR: ASSITENCIA, DESENVOLVIMENTO, TREINAMENTO.

- Cronograma: Fazer um cronograma mensal; EX: FEV: Reunião do grupo para discutir o tema, MAR: Visitação ao local onde a aplicação foi destinada.

PRÓXIMOS PASSOS:
- Gerar DFD
- Dicionários de dados
- Especificação de processo
- Diagrama entidade relacionamento
- Comentários sobre os testes
- Resultados
- Conclusão do projeto - Referências bibliográficas - SITE: Ultima data de acesso

COMENTÁRIO: Estou com o material de todas as aulas de engenharia de software e vou postar em um arquivo separado para que vocês possam imprimir.


ELETRÔNICA EXPERIMENTAL

COMENTÁRIO:

INTRODUÇÃO À ELETRÔNICA

ANÁLISE DE ALGORITMO

REDES DE COMPUTADORES


Redes Distribuídas
Na computação distribuída, Pcs (computadores pessoais) tem suas próprias capacidades de processamento.
Neste modelo, o aplicativo é dividido em tarefas, e cada tarefa é atribuída a um computador. Com um determinado poder de processamento podem ser enviados como dados para outros computadores.
Exemplo: Em um ambiente de computação distribuída, um cliente acessa um Banco de dados através de uma interface de usuário rodando em uma estação de trabalho. O necessário do Banco de Dados roda em um servidor que pode ser acessado a qualquer tempo por outro computador da rede.
Na realidade uma aplicação distribuída real funciona de acordo com o esquema abaixo.

Aplicativo

FIGURA

Em um sistema distribuída real existe uma camada de software intermediário chamado middleware que possibilita o processamento distribuído entre os computadores

APLICATIVO à TASK à MIDDLEWARE à SO à CPU

O usuário da “maquina A” não precebe que pode estar utilizando um recurso ou o processamento de uma ou mais máquinas como a máquina “B” e “C”.

Computação Colaborativa

A computação colaborativa também chamado processamento cooperativo só é possível em um sistema distibuido. Os computadores ligados em rede colaboram em compartilhar ao compartilhar as suas capacidades de processamento.
Este modelo permite aos computadores solicitar recursos de processamento de outros computadores conforme necessário.
As redes de computadores indicam CPU + SO (Hardware + Software) que podem ser associados com todos os modelos de computação. Uma rede típica inclui diversos computadores pessoais, servidores de banco de dados, servidor web e até mesmo e até mesmo o bom e velho mainframe.
Essas redes freqüentemente são classificados um tamanho e por Distribuída coberta. Uma outra classificação se faz pela mídia de transição:


CLASSIFICAÇÃO DE REDES QUANDO AO TAMANHO E DISTÂNCIA.
· LAN: (Local Area Network) Rede localWAN: (Wide Area Network) Rede de tamanho muito grande entre cidades e paises

Camada OSI e mídias de transição

As camadas são de fundamental importância para criação de sistemas de redes e protocolos de comunicação próximo capitulo vamos estudar todos os níveis da camada OSI. Vamos mostrar a organização dessas camadas em um diagrama geral.

FIGURA


Aplicação
Sessão 5
Protocolos
Apresentação
Sessão 6
Camadas físicas
Sessão
Sessão 7
Camada de link
Transporte
Sessão 8
Camada de rede
Rede
Sessão 9
Camada de transporte
Link de dados
Sessão 10
Camada de apresentação
Física
Sessão 11
Camada de aplicações

As mídias de comunicação são formado por um sistema que depende do tipo de dado da largura de banda que se necessita para realizar a comunicação.
Existem diversos conceitos para podermos estudar os tipos de mídia.
1) Espectro eletromagnético
2) Mídia metálica (Cabos UTP / STQ e coaxial)
3) Mídia Óptica (Fibra óptica)
4) Radio freqüência (microondas e bandas padronizadas – wifi e outras)

COMENTÁRIO:


PROJETO DE HARDWARE

TEORIA DOS GRAFOS
O que é um grafo?

É uma entidade matemática que permite construir relacionamento entre variáveis.
Por Exemplo: Dado um conjunto de pessoas (Alunos do 3º Ano de CCO-Noturno), deseja-se construir um modelo de conjunto de relacionamento onde ocorra:

· Gostar de música pop e rock
· Gostar de ouvir Skank

FIGURA

G (V, A, Ø)
Definição Formal

Um grafo G é modelado usando um TRIO ordenado, de modo que:
G (V, A, Ø).

“V” é o conjunto de vértices
“A” é o conjunto de arestas
Ø é a função, ou funções, que permitem o relacionamento entre os vértices.

Notar que: V = {v1, v2, v3, ..., Vn} ou seja
V = {Y Vi i = 1 até n}

COMENTÁRIO: Outros exemplos de grafos: os mapas das linhas do metrô, pontes de konigsberg e o caxeiro viajante.

Nenhum comentário:

Postar um comentário