MAB-353 Computadores e Programação (DCC/UFRJ)



Documentos relacionados
Organização e Arquitetura de Computadores I. Introdução. Ivan Saraiva Silva Leonardo Casillo

Figura 1 - O computador

Componentes do Computador e. aula 3. Profa. Débora Matos

Introdução à Arquitetura de Computadores

ARQUITETURA DE COMPUTADORES

Software Básico (INF1018)

Arquitetura de Computadores. Ivan Saraiva Silva

1.1. Organização de um Sistema Computacional

Tais operações podem utilizar um (operações unárias) ou dois (operações binárias) valores.

Introdução. Introdução. Introdução. Organização Estruturada de Computadores. Introdução. Máquinas Multiníveis

Computadores de Programação (MAB353)

Organização e Arquitetura de Computadores I. de Computadores

ARQUITETURA DE COMPUTADORES. Rogério Spindula Rosa

Unidade Central de Processamento (CPU) Processador. Renan Manola Introdução ao Computador 2010/01

Arquitetura e Organização de Computadores

Sistemas Operacionais

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

Edeyson Andrade Gomes

Organização de Computadores Hardware

Introdução à Organização e Arquitetura de Computadores. Prof. Leonardo Barreto Campos 1

INTRODUÇÃO À PROGRAMAÇÃO BCC 201 TURMAS 31, 32 E AULA TEÓRICA 2 PROF. MARCELO LUIZ SILVA (R E D)

BARRAMENTO DO SISTEMA

1. NÍVEL CONVENCIONAL DE MÁQUINA

Arquitetura de Computadores Paralelismo, CISC X RISC, Interpretação X Tradução, Caminho de dados

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini prof.andre.luis.belini@gmail.com /

ALP Algoritmos e Programação. . Linguagens para Computadores

Capítulo I : Noções Gerais

28/9/2010. Unidade de Controle Funcionamento e Implementação

Unidade Central de Processamento Organização da UCP Execução de instruções em paralelo ("pipeline") Execução de programas

Capítulo 4. MARIE (Machine Architecture Really Intuitive and Easy)

Introdução aos Computadores

Componentes de um Computador: Modelo Von Neumann

Sistema de Computação

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES

Visão Geral de Sistemas Operacionais

INTRODUÇÃO ÀS LINGUAGENS DE PROGRAMAÇÃO

Disciplina: Organização de computadores

ULA Sinais de Controle enviados pela UC

ARQUITETURA DE COMPUTADORES

MC102 Algoritmos e Programação de Computadores 2ª Aula Programa, entrada e saída de dados

Introdução. INF1005 Programação I 33K Prof. Gustavo Moreira gmoreira@inf.puc-rio.br

O que é um programa? Programa é uma lista de instruções que descrevem uma tarefa a ser realizada pelo computador.

Estrutura de um Computador

Hardware (Nível 0) Organização. Interface de Máquina (IM) Interface Interna de Microprogramação (IIMP)

Arquitetura de Computadores - Revisão -

Informática I. Aula 4. Aula 4-11/09/2006 1

Capacidade = 512 x 300 x x 2 x 5 = ,72 GB

3. Arquitetura Básica do Computador

A Unidade Central de Processamento é a responsável pelo processamento e execução de programas armazenados na MP.

Componentes básicos de um sistema computacional. Cap. 1 (Stallings)

Linguagem de Montagem Funcionamento de CPU e Assembly Rudimentar

Dispositivos de Entrada e Saída

3/9/2010. Ligação da UCP com o barramento do. sistema. As funções básicas dos registradores nos permitem classificá-los em duas categorias:

Arquitetura de Computadores 1

Arquitetura de Computadores. Tipos de Instruções

Introdução à Engenharia de Computação

Programação de Computadores III

Introdução à Programação 2006/07. Computadores e Programação

Introdução à Informática

ENIAC. Introdução aos Computadores e à Programação (Noções Básicas)

1 - Processamento de dados

1. CAPÍTULO COMPUTADORES

NOTAS DE AULA Prof. Antonio Carlos Schneider Beck Filho (UFSM) Prof. Júlio Carlos Balzano de Mattos (UFPel) Arquitetura de Von Neumann

ISL - Introdução. Sistema. Binário. Introdução. Tipos de Computador. Sub title text goes here. Unused Section Space 2. Unused Section Space 1

ARQUITETURA DE COMPUTADORES

3. O NIVEL DA LINGUAGEM DE MONTAGEM

Introdução à Arquitetura de Computadores IFES Campus Serra

Software. Professora Milene Selbach Silveira Prof. Celso Maciel da Costa Faculdade de Informática - PUCRS

CAPÍTULO 2 CARACTERÍSTICAS DE E/S E PORTA PARALELA

Algoritmos. Cláudio Barbosa

Entrada e Saída. Prof. Leonardo Barreto Campos 1

SIS17-Arquitetura de Computadores

Arquitetura de Computadores Moderna

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

RISC - Reduced Instruction Set Computer

Informática I. Aula 5. Aula 5-13/05/2006 1

UNIVERSIDADE FEDERAL DE UBERLÂNDIA Faculdade de Computação Curso de Introdução à Informática Prof: Anilton Joaquim da Silva / Ezequiel Roberto Zorzal

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

Controladores Lógicos Programáveis CLP (parte-3)

Parte II Introdução a Linguagens de Programação

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 03 Conceitos de Hardware e Software parte 01. Cursos de Computação

Máquina Multinível. Um programa pode ser definido como uma seqüência de instruções que descrevem como executar uma determinada tarefa.

ADMINISTRAÇÃO DOS RECURSOS DE HARDWARE E SOFTWARE

1. NÍVEL CONVENCIONAL DE MÁQUINA (Cont.) 1.3. INSTRUÇÕES Conceitos Básicos

3 Revisão de Software

Arquiteturas RISC. (Reduced Instructions Set Computers)

Organização Básica do Computador

ARQUITETURA DE COMPUTADORES

Organização de Computadores

ANHANGUERA EDUCACIONAL. Capítulo 2. Conceitos de Hardware e Software

Web site. Objetivos gerais. Introdução. Profa. Patrícia Dockhorn Costa

Computador Digital Circuitos de um computador (Hardware)

Linguagem de Montagem

Introdução à Arquitetura de Computadores. Prof.ª Ms. Elaine Cecília Gatto

Organização de Computadores I

O modelo do computador

Introdução às Linguagens de Programação

Computadores de Programação (MAB353)

Introdução à Programação de Computadores

Transcrição:

MAB-353 Computadores e Programação (DCC/UFRJ) Aula 1:

1 Objetivos e ementa Metodologia Material bibliográfico 2 Motivação para a disciplina A linguagem dos computadores 3 Sistemas digitais Perguntas para começarmos o nosso estudo Arquitetura e organização dos computadores 4

Objetivos e página da disciplina Objetivos e ementa Metodologia Material bibliográfico Objetivos Apresentar uma visão concisa dos sistemas de computação sob a perspectiva de programação; Compreender como programas escritos em linguagens de alto-nível são traduzidos em linguagem de máquina e como o computador executa esses programas; Compreender o processo de montagem, ligação e carga de programas de computador; Aprender técnicas que permitam melhorar o desempenho e robustez dos programas de computador. Página da disciplina www.voip.nce.ufrj.br/cursos

Ementa da disciplina Objetivos e ementa Metodologia Material bibliográfico Estrutura dos computadores: principais elementos de hardware e software; Representação e manipulação da informação: técnicas de endereçamento, e representação de inteiros e reais; Codificação simbólica e montadores; Linguagem de montagem para a arquitetura IA32 Compilação de código de montagem com linguagem C Medidas contra vulnerabilidades de estouro de memória Controle de fluxo e sinais entre programas e sistema operacional Segmentação e ligação de programas; X86-64: estendo a arquitetura IA32 para 64 bits (caso haja tempo)

Objetivos e ementa Metodologia Material bibliográfico Metodologia de trabalho e atendimento extra-classe Método de ensino e atividades discentes Explanação dos tópicos de estudo, resolução de exercícios, laboratórios As atividades discentes incluirão: Participação nas aulas e estudo de material suplementar Resolução de exercícios propostos (teóricos e práticos) Atendimento professor Terças e Quintas, de 15:00h às 17:00h (sala E-2208 NCE)(ou agendando) Lista da disciplina para esclarecimento de dúvidas e recebimento de informações https://groups.google.com/d/forum/mab353-20141, mab353-20141@googlegroups.com

Objetivos e ementa Metodologia Material bibliográfico Instrumentos de acompanhamento e avaliação P 1, P 2, P s, L (média das listas) Falta em prova por motivo justo (com atestado médico ou justificativa no prazo de 5 dias após a prova), a nota da P s poderá ser usada para substituir quaisquer destas duas provas, sabendo que esta prova substitutiva cobrirá toda a matéria Critério para aprovação: N f = [P 1 + P 2 + P s minimo(p 1, P 2, P s)]/2 0, 75 + L 0, 25 5, 0 Será passada a lista de presença em sala para controle apenas, mas durante a aula poderão ser dados bônus ou exercícios de avaliação sem aviso prévio Freq. mínima de 75% será necessária para aprovação, seguindo a norma da UFRJ Quem já tiver passado direto sem P s poderá tentar melhorar a média fazendo a P s, sem risco de dimininuição de nota final já alcançada. A nota final será dada pelo cálculo que melhor beneficiar o aluno.

Bibliografia Sumário Objetivos e ementa Metodologia Material bibliográfico 1 Computer Systems - A Programmer s Perspective, R. E. Bryant e D. R. O Hallaron, 2ed, Prentice Hall, 2010. (livro base) 2 The C Programming Language, B. Kernighan e D. Ritchie, 2ed, Prentice Hall, 1988.

Ponteiros na Web Objetivos e ementa Metodologia Material bibliográfico Livro base - csapp.cs.cmu.edu Lista de discussão: https://groups.google.com/d/forum/mab353-20141

Motivação para a disciplina A linguagem dos computadores Motivação para a área de Computação A Terceira Revolução A Computação permitiu a terceira revolução da civilização revolução da agricultura revolução industrial revolução da informação Novos caminhos de investigação científica: cientistas da computação em conjunto com cientistas teóricos e experimentais na exploração de novas fronteiras em astronomia, biologia, medicina, física, etc; Computadores onipresentes: em automóveis, em celulares, nas organizações, nas construções civis, no corpo humano, etc.

Motivação para a disciplina Motivação para a disciplina A linguagem dos computadores Conhecer os princípios básicos da computação O aprendizado em Ciência da Computação deve introduzir os princípios que são os alicerces da computação ( o que é computável? ), e refletir o estado atual da área Compreender a relação entre hardware e software As tecnologias de computação modernas requerem profissionais que compreendam a relação entre hardware e software Compreender o impacto do hardware no desempenho dos sistemas O desempenho dos sistemas de software são afetados pela maneira como os projetistas de software compreendem as técnicas de hardware básicas

Motivação para a disciplina A linguagem dos computadores Passos para rodar um programa de computador Aplicações usuais (como um processador de texto ou um banco de dados) contêm milhões de linhas de código...mas o hardware do computador é capaz de executar apenas um conjunto simples e limitado de instruções Traduzir instruções complexas em instruções que a máquina entende requer várias camadas de software

Conhecer os passos envolvidos ajuda Motivação para a disciplina A linguagem dos computadores Otimizar o desempenho de um programa Comando SWITCH (ou CASE) mais eficiente do que uma sequência de comandos IF-ELSE? Qual o overhead de uma chamada de rotina? Um loop WHILE seria mais eficiente do que um loop FOR? Com uma função pode rodar mais rápido pela alteração de parênteses em exp. aritmética? Compreender os erros em link edição Listar bibliotecas em ordem diferente na linha de comando é crítico? Por que erros de link edição só aparecem durante a execução?

Conhecer os passos envolvidos ajuda Motivação para a disciplina A linguagem dos computadores Evitar falhas de segurança Conhecer como a informação é armazenada previne vulnerabilidades devidas a overflow e estouro de pilha, entre outras.

Falando com o computador Motivação para a disciplina A linguagem dos computadores Código binário Computadores executam instruções e entendem apenas dois sinais (bits): 0 e 1 (ligado ou desligado) Instruções para o computador são sequências de bits, ex., 1000110010100000 é uma instrução para adicionar dois números Os primeiros programadores comunicavam-se com os computadores em linguagem de números binários Como era uma tarefa muito tediosa, rapidamente inventaram uma nova notação (mais próxima da linguagem humana) que era traduzida para o código binário

Falando com o computador Motivação para a disciplina A linguagem dos computadores Linguagem de montagem O primeiro programa projetado com a finalidade de traduzir notações (símbolos) para código binário foi chamado montador (assembler) ex., adda, B > 1000110010100000 O nome dado a essa linguagem simbólica foi linguagem de montagem (assembly)...em contraste, a linguagem que a máquina entende é chamada linguagem de máquina

Falando com o computador Motivação para a disciplina A linguagem dos computadores Linguagens de alto nível A linguagem de montagem ainda está longe de ser uma notação simples e fácil de se expressar Cada instrução de máquina requer uma linha de código de montagem (força o programador a pensar como o computador) Essa dificuldade impulsionou a criação das linguagens de programação de alto nível (ex., Fortran, C, Java, Pascal, Python, Lua) e de compiladores que traduzem programas nessas linguagens para instruções que a máquina entende

Motivação para a disciplina A linguagem dos computadores Exemplo de programa em C e sua tradução em Assembly

Falando com o computador Motivação para a disciplina A linguagem dos computadores Vantagens das linguagens de alto nível 1 Independência dos programas em relação às instruções de um máquina específica (compiladores e montadores fazem a tradução) 2 Aumento da produtividade do programador (instruções mais compactas e complexas) 3 Possibilidade de projetar linguagens para uso específico (ex., Fortran, para computação científica; Lisp, para manipulação de símbolos)

Falando com o computador Motivação para a disciplina A linguagem dos computadores Hardware por trás dos programas Para oferecer abstrações de nível mais alto (demanda sempre crescente), é preciso profissionais aptos a transformar essas abstrações em funções básicas que o hardware é capaz de executar: entrada, armazenamento, processamento e saída de dados ( máquina de Turing )

Formas de representar grandezas físicas Sistemas digitais Perguntas para começarmos o nosso estudo Arquitetura e organização dos computadores Representação analógica versus representação digital As grandezas físicas são representadas na forma analógica (quantidade proporcional ao valor em questão) ou na forma digital (conjunto de dígitos representando faixas de valores) A representação analógica varia de forma contínua, enquanto a representacao digital varia de forma discreta

Representação digital Sistemas digitais Perguntas para começarmos o nosso estudo Arquitetura e organização dos computadores Vantagens da representação digital Sistemas digitais são mais simples pois consideram valores exatos mas faixas de valores distintos Operar e manusear valores digitais é MUITO mais simples do que valores analógicos Permite maior confiabilidade pois os valores digitais não são facilmente corrompidos por flutuações aleatórias (ruídos) no circuito eletrônico (o oposto do circuito analógico) Desvantagens da representação digital A principal limitação da representação e das técnicas digitais é que o mundo real é analógico em grande parte!

O computador é um sistema digital Sistemas digitais Perguntas para começarmos o nosso estudo Arquitetura e organização dos computadores Um sistema digital é constituído de circuitos eletrônicos que processam informação usando apenas dígitos (binários) para implementar as suas operações e cálculos Um equipamento digital deve executar as seguintes tarefas: 1 codificar a informação do nosso cotidiano para a linguagem binária que será compreendida pelo sistema digital (conversor analógico-digital) 2 executar as operações e cálculos necessários usando a numeração binária 3 retornar a resposta do processamento no formato compreensível pelo usuário (conversor digital-analógico)

O que é um computador digital? Sistemas digitais Perguntas para começarmos o nosso estudo Arquitetura e organização dos computadores Uma combinação de dispositivos e circuitos digitais que podem realizar uma sequência programada de operações com mínima intervenção humana O que é um programa? Conjunto de instruções codificadas e armazenadas na memória do computador juntamente com os dados necessário para a sua execução Como um computador executa um programa de instruções? Executando as instruções através de uma arquitetura específica

Como os computadores pensam? Sistemas digitais Perguntas para começarmos o nosso estudo Arquitetura e organização dos computadores Os computadores não pensam! O programador do computador fornece um programa com instruções e dados que especificam cada detalhe sobre o que fazer e quando fazer O computador é simplesmente uma máquina muito rápida que processa as instruções de um programa

Sistemas digitais Perguntas para começarmos o nosso estudo Arquitetura e organização dos computadores Como um sistema computacional básico é organizado? A partir de unidades lógicas: 1 dispositivos de armazenamento (memória, registradores) 2 unidade processadora capaz de executar operações básicas (operações matemáticas, de armazenamento, de transferência de dados) 3 circuito lógico de controle capaz de decodificar um comando e acionar os sinais binários que controlarão a operação dos demais elementos do sistema

O que um computador pode fazer? Sistemas digitais Perguntas para começarmos o nosso estudo Arquitetura e organização dos computadores Os modos de operação internos são surpreendentemente simples (e limitados): Movimentação de dados Execução de operações binárias Cada comando de um programa pode envolver uma ou mais operações básicas O grupo de instruções básicas de um computador é chamado conjunto de instruções de máquina As instruções de máquinas variam em número de bytes e os dados manipulados variam dependendo do tipo (integer, float, double, etc) Para cada instrução de máquina existe uma sequência de sinais de controle capaz de executá-la em um ou mais ciclos do relógio da máquina Abstração entre a arquitetura e o conjunto de instruções Arquiteturas de computadores implementadas de forma diferente podem suportar um mesmo conjunto de instruções de máquina

Sistemas digitais Perguntas para começarmos o nosso estudo Arquitetura e organização dos computadores Quais são os componentes centrais de um computador? 1 Circuitos de entrada e de saída (I/O) (interface com o mundo externo) 2 Memória (armazenamento de instruções e dados, organizada como um conjunto linear de bytes) 3 Via de dados ou barramentos (caminhos percorridos pela informação durante o processamento) 4 Unidade Lógica e Aritmética (ALU ou ULA) 5 Unidade de controle (contém circuitos lógicos e de temporização que geram sinais apropriados e necessários para executar cada instrução do programa) 6 Contador de programa ou PC (Program Counter) (contém o endereço da instrução corrente em linguagem de máquina (aponta para o primeiro byte da instrução em memória)

Arquitetura de um microprocessador Sistemas digitais Perguntas para começarmos o nosso estudo Arquitetura e organização dos computadores 1 Fonte: http://csapp.cmu.edu 1

Sistemas digitais Perguntas para começarmos o nosso estudo Arquitetura e organização dos computadores A Unidade Central de Processamento (CPU ou UCP) Em geral um microprocessador contendo: vias de dados, ULA, registradores e unidade de controle Operações de uma CPU básica 1 operações registrador/registrador Lê conteúdo de registradores como entrada para a ULA e o resultado é armazenado em outro registrador 2 operações de carga Transfere dados da memória para registradores 3 operações de armazenamento Transfere dados de registradores para a memória

Como usamos o computador? Sistemas digitais Perguntas para começarmos o nosso estudo Arquitetura e organização dos computadores Inicialmente, rodamos o Sistema Operacional (SO) que é a interface entre o usuário e o hardware A ação de iniciar um programa/aplicativo começa com o carregamento do programa, do disco para a memória do computador via DMA e a especificação do endereço da primeira instrução Direct Memory Access DMA Permite I/O direto entre disco e memória sem uso da CPU Carrega na interface endereço de carga na memória e especifica bloco de informação a ser transferido do disco Barramentos de I/O ficam ocupados durante operação de DMA, mas a CPU fica livre para continuar o processamento

Sistemas digitais Perguntas para começarmos o nosso estudo Arquitetura e organização dos computadores Exemplo de transferência entre disco e memória via DMA 2 Fonte: http://csapp.cmu.edu 2

Ciclo básico de operação Sistemas digitais Perguntas para começarmos o nosso estudo Arquitetura e organização dos computadores Processador lê da memória a instrução apontada pelo PC Executa as operações básicas ditadas pela instrução Atualiza o PC para apontar para a próxima instrução (que pode não ser contígua à instrução que acabou de ser executada Registradores Alguns registradores são específicos do sistema como o PC e outros são de uso geral e podem ser acessados via programação

Execução de uma instrução Sistemas digitais Perguntas para começarmos o nosso estudo Arquitetura e organização dos computadores Requer um ou mais ciclos de máquina Passos da execução Endereçar a memória apontada pelo PC Carregar (LOAD) registradores com instrução e operandos buscados da memória Operar sobre os registradores Armazenar resultado (STORE) na memória Incrementar PC para apontar para a próxima instrução (incremento pode depender da execução da instrução

Sistemas digitais Perguntas para começarmos o nosso estudo Arquitetura e organização dos computadores O que torna o computador uma ferramenta tão versátil? O fato da sua lógica interna não ser acessível externamente...em vez disso é possível controlar o que acontece dentro do microprocessador pelo programa de instruções colocado na memória Altera-se o programa e não os circuitos eletrônicos!

Sistemas digitais Perguntas para começarmos o nosso estudo Arquitetura e organização dos computadores O que torna essa disciplina tão interessante? Apresenta os sistemas de computação de uma perspectiva de programação, permitindo que os programadores usem o conhecimento adquirido para escrever programas melhores e mais robustos Oferece uma base importante de conhecimento para outros conteúdos: Compiladores, Sistemas Operacionais, Arquitetura de computadores, Sistemas Embutidos..e ainda é muito divertida!!!.. 0

Computer Systems - A Programmer s Perspective, R. E. Bryant e D. R. O Hallaron, 2ed, Prentice Hall, 2010. (Capítulo 1) Outras fontes para consulta: 1 Sistemas Digitais: uma abordagem integrada, John P. Uyemura, Thomson-Pioneira, 2002 2 Sistemas Digitais: princípios e aplicações, Ronald J. Tocci and Neal S. Widmer, Prentice-Hall, 8ed., 2003 3 Computer Organization and Design The Hardware/Software Interface, D. Patterson and J. Hennessy, Morgan Kaufmann, 2009