INSTITUTO FEDERAL DO CEARÁ Mauro Oliveira

Slides:



Advertisements
Apresentações semelhantes
A CPU E SUA EVOLUÇÃO. CPU (Central Processing Unit ou Unidade Central de Processamento)  DEFINIÇÕES:  A CPU é o hardware principal do computador; 
Advertisements

Fundamentos de Sistemas Operacionais Aula 2 Princípios de Programação Prof. Belarmino.
Introdução à Informática com Software Livre 12:58.
1 Bianca, Felipe, Fernanda, Fernando, Jeferson, José, Juliana, Marco, Matheus, Maurício, Patrick, Rodrigo K., Vitor.
Introdução a Ciência da Computação Aula 05 Prof. Francisco G. Rodrigues.
Administração de Sistemas Operacionais 1 -Windows Processos Curso Técnico em Redes de Computadores Prof. Emerson Felipe.
Como funciona o processador Nomes: Fernando, Maurício, William Turma: 1J-1PC1 Disciplina: Fundamentos da Computação Curso: Técnico em Programação de Computadores.
Trabalho De Tecnologia Nomes: Davi Régis, Paulo Vitor, João Victor Silva e Matheus Assis. Números: 04, 34, 15, 29. Turma: 1.1. Professor: Marcos.
Lógica de programação Introdução à lógica de programação Diagrama de bloco Programação Sequencial 1.
UNIDADE 2 Ferramentas do Pacote Office Hardware e Software Olá! Aqui estamos nós outras vez! Agora para dar início à unidade 2.
Sistemas Operacionais. O que é Sistema Operacional? O Sistema Operacional é parte mais importante do seu computador, pois é ele que executa as tarefas.
Arquiteturas de Redes de Computadores Prof. Dr. José Luís Zem Faculdade de Tecnologia de Americana Centro Paula Souza.
Aula 3 - Estruturas de Repetição
Arquitetura do SET de instruções Instruction SET CISC vs RISC
Estruturas de Repetição
Projeto de Compiladores
PSI3441 – Arquitetura de Sistemas Embarcados
INTRODUÇÃO À PROGRAMAÇÃO Lógica de Programação e Algoritmo
Algoritmos e Estruturas de Dados I Prof. Dsc. Alex F. V. Machado
Aspectos de Interrupção
Criação: Caroline Brasileiro Atualização: Laura Matos
SISTEMAS OPERACIONAIS
Contagem Aula 2, ciclo 1.
ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES
Introdução a Linguagem Java
PROGRAMAÇÃO ORIENTADA A OBJETO - JAVA
Prof. Dr. Carina Oliveira
Introdução ao Módulo Arthur Albertin
Complementos de Engenharia de Software 2005/06
Módulo I Capítulo 1: Introdução ao curso
INSTITUTO FEDERAL DO CEARÁ Mauro Oliveira
FUNDAMENTOS DE PROGRAMAÇÃO
Contagem Aula 2, ciclo 1.
Instruções.
Arquitetura e organização de computadores
1 Introdução aos COMPUTADORES Profª Alda Vagarinho.
Introdução à Computação
Níveis de Abstrações TANENBAUM:
Considere as situações: 1ª situação: Observe as dimensões da figura a seguir. Qual a expressão que representa a sua área? X x2 ou.

Notas de aula baseadas no livro de William Stallings Arquitetura e Organização de Computadores 8a Edição Capítulo 1 Introdução.
Aplicações de Flip-Flops Registradores
Representação da Informação
Tecnologia da Informação Visão Geral sobre Informática
Sistemas Operacionais I
Sistemas operacionais
Introdução à Computação
ELEMENTOS DE ORGANIZAÇÃO DE COMPUTADORES :
Unidade 1: Analise Combinatória 1.1 Conjunto e operações sobre conjunto 1.2 Factorial 1.3 Princípio fundamental da contagem ( princípio multiplicativo)
Programação Estruturada Aula 1 Prof. Jorge Barreto Julho 2018.
Linguagem de Programação
Estrutura do Sistema Operacional
Introdução à Programação
INSTITUTO FEDERAL DO CEARÁ Mauro Oliveira
INSTITUTO FEDERAL DO CEARÁ Mauro Oliveira
Antonio Cabrera Edson Marreta
Programação Orientada a Objetos
INSTITUTO FEDERAL DO CEARÁ Mauro Oliveira
Arquitetura de Computadores
Instalação e Manutenção de Computadores Técnico em Informática MAI1
Soluções Inteligentes para ONGs Esportivas
Professora Roberta Bonamichi Guidi Garcia
Linguagem de Programação I
Computação Eletrônica Vetores e Matrizes
Organização de um Computador
Introdução a lógica de programação Tipos de algoritmos.
Conceito de Hardware e Software. Hardware Hardware – São os dispositivos físicos de um Computador (placas mãe, memorias auxiliar e principal, periféricos.
O que é Programação? = ABSTRAÇÃO!
Remote Method Invocation (RMI) Sistemas Distribuídos.
Transcrição da apresentação:

INSTITUTO FEDERAL DO CEARÁ Mauro Oliveira www.maurooliveira.com.br Chico Anysio Óleo sobre tela 60x40 cm

Arquitetura de Computadores Aula 01 Chico Anysio Óleo sobre tela 60x40 cm

Programa pela CPU Execução de um Execução de um Programa pela CPU

Visão de ENGENHARIA de um computador ALAN TURING Von NEUMANN

Execução de um programa na CPU

Execução de um programa na CPU

Execução de um programa na CPU

Modelo de Von Neumann

Visão de ENGENHARIA de um computador ALAN TURING Von NEUMANN

Como funciona um computador? Algoritmos implementados por um programa escrito em uma sequências linguagem de de instruções programação Programadores se comunicam com computadores através de uma linguagem de programação

Veremos a seguir que, na verdade, tradução é apenas parte do processo Linguagens Linguagem de alto nível Linguagem de máquina É necessária uma espécie de tradução das linguagens comuns para a linguagem binária, que é o que o computador “entende” de fato Veremos a seguir que, na verdade, tradução é apenas parte do processo

LINGUAGEM DE ALTO NÍVEL LLINGUAGEM DE MÁQUINA LINGUAGEM DE ALTO NÍVEL DUAS TÉCNICAS Tradução Interpretação

MÁQUINA VIRTUAL

Interpretação Parcial Nível de software: T R A D U Ç Ã O Ling. de Prog. Alto Nível N5 Compilação Montagem N4 Lê o código e, usando as informações nele contidas, manipula a memória. Montador Sistema Operacional N3 Interpretação Parcial Macroprogramação N2 Interpretação

Só agora são executadas as instruções A nível de hardware, temos: Interpretação Microprogramação N1 Aqui, há um número muito maior de instruções do que havia no início. Com isso, mais circuitos devem ser criados, aumentando o custo. Portanto, linguagem simples é necessária. Só agora são executadas as instruções Circuitos Digitais N0

Tradução X Interpretação O esquema das etapas de execução de um programa apresentado anteriormente não é uma generalização Isto porque existem linguagens compiladas (utilizam tradução) e outras, interpretadas A tradução é feita uma vez apenas. Já a interpretação é realizada cada vez que o programa é executado

Tradução: Interpretação: ________________________________________________________________________________________ Execução ✔✔✔✔✔✔✔ . ______________________________________________________ L2 L1 ______________________________________________________ ✔ ✔ ✔ ✔ . Tempo de execução L2 L1

Mas afinal, para que tantas etapas na execução de um programa? O esquema abaixo mostra um dos problemas que ocorreriam caso as instruções das linguagens em alto nível fossem executadas sem todas essas etapas m ..... C Pascal Cobol C++ n ..... Pentium 4 I7 Xeon AMD

Note que, para cada linguagem diferente, seria necessária uma maneira diferente de fazer suas instruções serem executadas. Isso para cada processador Para cada nova linguagem ou novo processador, já haveria uma nova necessidade para que o programa fosse executado No total, teríamos m*n necessidades diferentes!

Todas aquelas etapas servem então para que, utilizando o conceito de divisão e conquista, os processadores não precisem “se preocupar” com linguagens, e vice-versa As instruções complexas são reduzidas a instruções em uma linguagem simples, entendida por todos os processadores m ..... C Pascal Cobol C++ n ..... Pentium 4 I7 Xeon AMD

Agora, são apenas m+n maneiras diferentes de execução de programas Intuitivamente, temos um custo maior por ter tantas etapas... mas não é bem assim. Dos níveis N5 até N3, o custo muitas vezes nem chega ao usuário, pois o software é compilado antes de chegar até ele É importante ressaltar que uma instrução em L2 não pode nunca ser diretamente executada no nível N0. Depois de N2, não ocorre mais tradução, apenas interpretação

Na interpretação, as instruções são apenas convertidas nas ordens em que serão executadas, o que acontece de N1 para N0 no esquema apresentado anteriormente Relembrando: A seguir, uma melhor representação das etapas de um programa até que ele esteja em L2 Macroprogramação L2 Interpretação Microprogramação L1 Execução Circuitos digitais Instruções

____________________________________________________ L5 Compilação _____________________ _____________________ _____________________ ....... + + + + ....... L4 Montagem 010010101101001010101010101011100110 ... L3 -> L2 + L1 O programa em L3 tem também os endereços de memória envolvidos no processo 101101010101010100101101... L2

Com o conceito de linguagens (L1, L2, L3 etc) apresentado, temos também o conceito de máquinas virtuais. Por exemplo: Macroprogramação Máquina virtual L3 L2 Microprogramação Máquina virtual L2 L1 Máquina física Circuitos digitais Instruções

Linguagem de programação de alto nível Generalizando para o topo, temos: Linguagem de programação de alto nível L5 Compilação . Máquina virtual à vista do usuário

Abstração Considere o seguinte esquema: C Pascal Java Linux Windows Compilador B Compilador C Compilador D Compilador A Windows Linux Política de compatibilidade da Intel: todas as instruções entendidas por um Pentium 4 são entendidas também pelo I7 (mais avançado) Processador 1 Processador 2

Vimos anteriormente que os compiladores A, B, C e D não são necessariamente diferentes, assim como os processadores Porém, com processadores que não sejam da Intel, é possível que sejam necessários diferentes compiladores para cada situação A linguagem Java, teoricamente, não possui restrições de plataforma Veremos a seguir que ela utiliza uma espécie de disfarce...

Através da abstração, a JVM (Java Virtual Machine) “esconde” as complexidades que envolvem as plataformas Java __________________________________________ ____________________________________________________________________ Interpretação Java ByteCode JVM Máquina Virtual Java

Hardware X Software COMPLEXIDADE Considere o esquema abaixo: software

Mas, complexidade de...? Funcionalidade Cabe ao arquiteto do sistema saber onde cada função deve ser implementada Adição e multiplicação são sempre feitas em hardware, pois o desempenho é muito melhor. Mas então, por que não implementar tudo em hardware? Custo é a resposta. Operações mais sofisticadas, se implementadas todas em hardware, aumentariam demais o custo (circuitos demais)

Não são poucos os circuitos necessários para implementar operações de soma e multiplicação em hardware. Agora imagine implementar um programa complexo inteiro usando apenas esses circuitos digitais! Por outro lado, imagine também o gasto de tempo desnecessário que haveria se, para cada vez que precisássemos somar ou multiplicar, fosse necessário traduzir as instruções em software para hardware!

Outra desvantagem de hardware é: se ocorrer algum problema físico com as peças, como reparar? Softwares são mais baratos e, caso haja algum erro, é muito mais fácil localizar e consertá-lo. Porém, como já foi citado, o desempenho é menor.