Laboratório I
Mateus Raeder
Material baseado nos originais da
Profa. Denise Bandeira e do Prof. Aníbal P. Cardoso
Introdução
Arquitetura de Von Neumann
 Apesar das mudanças na informática nas últimas décadas,
grande parte dos computadores ainda segue a arquitetura de Von
Neumann
 Esta arquitetura foi proposta por Neumann (John Von Neumann)
na década de 40
 Composto por basicamente 3 subsistemas: CPU, Unidade de
Memória Principal (RAM) e Unidades de Entrada/Saída
Mateus Raeder – fevereiro de 2009
Arquitetura de Von Neumann
CPU
Unidade de
Controle
Entrada
e Saída
Unidade
Aritmética
e Lógica
Memória Principal
Arquitetura de Von Neumann
Mateus Raeder – fevereiro de 2009
Arquitetura de Von Neumann
 Unidade de Controle: identifica e decodifica as instruções, acionando a
unidade responsável pela sua execução
 Unidade Aritmética e Lógica: executa as operações lógicas e aritméticas
 Unidade de Memória Principal (RAM - Random Access Memory):
armazena o programa e seus respectivos dados. O programa e os dados
devem estar na memória RAM no momento da execução.
 Unidades de Entrada: transferem informações externas à máquina para a
Unidade de Memória Principal (por exemplo, mouse, scanner, teclado,
webcam, microfone)
 Unidades de Saída: exibem as informações que encontram-se guardadas
na Unidade de Memória Principal através de algum meio que seja legível
aos seres humanos (por exemplo, monitor de vídeo, caixas de som,
impressora)
Mateus Raeder – fevereiro de 2009
Instruções
Mas o que é uma instrução?
 Instrução (ou comando) é uma regra que vai indicar ao computador
quais os dados a serem operados e qual a operação a ser
realizada.
 Por exemplo:
7
–
5
=
 A CPU, então, executa alguns passos para que cada uma das
instruções sejam corretamente efetuadas
Mateus Raeder – fevereiro de 2009
Instruções – etapas de processamento
As etapas para o processamento de uma instrução são
(basicamente):
 A Unidade de Controle busca a instrução na memória
 A Unidade de Controle decodifica a instrução, definindo as
posições de memória necessárias para sua execução
 A Unidade de Controle transfere os dados para a Unidade
Aritmética e Lógica
 A Unidade Aritmética e Lógica executa as operações sobre os
dados e o resultado é armazenado na memória
Mateus Raeder – fevereiro de 2009
Linguagem de Máquina x Linguagem de Alto Nível
 Podemos, então, passar para a máquina o conjunto de instruções
que desejamos que sejam executadas
 Porém, a máquina não entende a nossa linguagem
 Então, como passamos estas instruções para a máquina?
Linguagem de máquina
Linguagem de
programação de alto nível
Mateus Raeder – fevereiro de 2009
Tipo mais primitivo de linguagem. É a
linguagem que o computador entende.
Tipo de linguagem criada para facilitar a
comunicação com a máquina. Deve ser
traduzida em linguagem de máquina.
Processos de tradução
 Existem diversas linguagens de programação de alto nível. Por
exemplo: C, C++, Java, Pascal, Delphi, etc.
 Os programas de computador são, então, escritos utilizando uma
linguagem de programação de alto nível (onde um código ou
programa fonte é criado) e são traduzidos para a linguagem de
máquina
 Os 2 principais processos que traduzem programas escritos em
uma linguagem de alto nível para a linguagem de máquina são
interpretação e compilação
Mateus Raeder – fevereiro de 2009
Processo de Interpretação
 Um interpretador é um programa que recebe como entrada um
arquivo contendo um programa fonte
 O interpretador lê linha a linha este arquivo de entrada, e executa
uma a uma as instruções que estão nele programadas
Interpretador
Programa fonte
Exemplo: teste.py
Mateus Raeder – fevereiro de 2009
Execução
Processo de Interpretação
 Um programa pode ser executado em qualquer máquina, desde
que haja o interpretador disponível para utilização
 Porém, pode-se perceber que a execução de um programa que
utiliza um interpretador é relativamente lenta, pois a cada nova
linha lida no programa fonte, esta deve ser decodificada antes de
ser executada
 Se houver algum erro de no código (que vá contra as definições
da linguagem), o programa será interrompido abruptamente com
um erro
Mateus Raeder – fevereiro de 2009
Processo de Compilação
 Um compilador é um programa (ou um conjunto de programas)
que recebe como entrada um programa fonte e cria um novo
arquivo como saída
 O arquivo de entrada é o código fonte escrito pelo programador
 O arquivo que o compilador produz, é normalmente identificado
como código objeto
 Este código objeto contém instruções de baixo nível, traduzidas
para a linguagem de máquina
Mateus Raeder – fevereiro de 2009
Processo de Compilação
Compilador
Programa fonte
01001110
01100111
01001011
00011110
10101100
11001001
Arquitetura
Execução
Programa objeto
Exemplo: teste.c
 O código produzido não é portável para qualquer arquitetura
 Diferentes compiladores são construídos para as diferentes
arquiteturas de processadores (diferentes famílias de
processadores possuem conjuntos diferentes de instruções)
 O compilador somente gera corretamente o código objeto caso
não tenha encontrado um erro de compilação
Mateus Raeder – fevereiro de 2009
Linguagem Java
 Java é uma linguagem compilada
 O compilador Java, entretanto, não gera código para um
processador específico, mas sim para uma máquina virtual Java
(a JVM - Java Virtual Machine)
Compilador
javac
Programa fonte
Exemplo: teste.java
Mateus Raeder – fevereiro de 2009
01001110
01100111
01001011
00011110
10101100
11001001
Programa objeto (bytecode)
Exemplo: teste.class
Máquina
Virtual Java
(JVM)
Execução
Linguagem Java
 Os programas escritos em Java são, portanto, portáveis sobre
todos os computadores para os quais existir uma implementação
da JVM
 Desta forma, Java possui tanto beneficios característicos das
linguagens compiladas
uma vez que a execução de um programa não corre o
risco de ser abortada devido a um erro de sintaxe no seu código
 quanto das linguagens interpretadas
uma vez que executa sobre uma máquina virtual que tem
um comportamento semelhante a um interpretador
Mateus Raeder – fevereiro de 2009
Algoritmo
 Um algoritmo é uma sequência de passos finita, que devem ser
seguidos para alcançar algum objetivo
 Para ordenar ao computador que realize uma determinada tarefa,
um algoritmo é descrito em uma linguagem de programação
 Este algoritmo é, então, compilado (ou interpretado) e executado
Mateus Raeder – fevereiro de 2009
Algoritmo
 Exemplos de algoritmos do dia-a-dia:
- vir para a Unisinos
- escovar os dentes
- comprar comida
- outros?
Mateus Raeder – fevereiro de 2009
Algoritmo
Formas de representação de um algoritmo: FLUXOGRAMA
Início
Ir até o açougue
Açougue
fechado?
sim
não
Escolher carne
Comprar carne
Mateus Raeder – fevereiro de 2009
não
Carne
ruim?
sim
Comer miojo
Algoritmo
Formas de representação de um algoritmo: PORTUGUÊS ESTRUTURADO
se quero comprar carne
então
vou ao açougue
se o açougue está fechado
então vou comer miojo
se o açougue não está fechado
então vou escolher a carne
se a carne está ruim
então vou comer miojo
se a carne não está ruim
então compro a carne
Mateus Raeder – fevereiro de 2009
Download

Arquitetura de Von Neumann