Software Básico (INF1018)



Documentos relacionados
Infra-Estrutura de Software. Introdução

Introdução à Arquitetura de Computadores

MC-102 Aula 01. Instituto de Computação Unicamp

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

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

Figura 1 - O computador

ARQUITETURA DE COMPUTADORES. Rogério Spindula Rosa

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

Linguagem de Programação I

Edeyson Andrade Gomes

Introdução. Hardware X Software. Corpo Humano Parte Física. Capacidade de utilizar o corpo em atividades especificas explorando seus componentes

Infraestrutura de Software. CIn.ufpe.br

Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre

3 Revisão de Software

Programação de Computadores III

Capítulo 1 Introdução

Infra-Estrutura de Software

Infra-Estrutura de Software

Sistemas Operacionais

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

Introdução ao Processamento de Dados (IPD)

CAPÍTULO 7 NÍVEL DE LINGUAGEM DE MONTAGEM

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

Disciplina: Organização de computadores

Estrutura de Dados. Ricardo José Cabeça de Souza Parte 1

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

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

Programação científica C++

Sistemas Operacionais. Prof. Pedro Luís Antonelli Anhanguera Educacional

Disciplina de Introdução à Computação para Engenharia Ambiental

O Processo de Programação

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

UNIVERSIDADE DO OESTE DE SANTA CATARINA CAMPUS DE SÃO MIGUEL DO OESTE

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

UFRPE Prof. Gustavo Callou

Computadores de Programação (MAB353)

Linguagem de Programação I. Aula 05 Linguagem C

Introdução. Sistemas Operacionais

Arquitetura de Computadores. Introdução aos Sistemas Operacionais

Visão Geral de Sistemas Operacionais

MC102 Algoritmos e Programação de Computadores 1ª Aula Introdução à Programação de Computadores

MATA49 Programação de Software Básico

Programação I. Departamento de Engenharia Rural Centro de Ciências Agrárias

MANUTENÇÃO DE MICRO. Mário Gomes de Oliveira

Organização de Computadores 1. Prof. Luiz Gustavo A. Martins

Sistemas Operacionais

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

Sistemas Operacionais e Introdução à Programação. Módulo 1 Sistemas Operacionais

Capítulo I : Noções Gerais

Mecanismo de Interrupção

Curso Técnico em Redes

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

Fundamentos de Banco de Dados

Linguagem de Montagem

Processamento de Dados

ARQUITETURA DE COMPUTADORES

Introdução à Arquitetura de Computadores IFES Campus Serra

Geração de código intermediário. Novembro 2006

PROJETO LÓGICO DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

Roteiro. MC-102 Aula 01. Hardware e dispositivos. O que é um computador? Primeiro Semestre de A linguagem C

11/3/2009. Software. Sistemas de Informação. Software. Software. A Construção de um programa de computador. A Construção de um programa de computador

IFTO LÓGICA DE PROGRAMAÇÃO AULA 01

BARRAMENTO DO SISTEMA

FACULDADE PITÁGORAS DISCIPLINA: ARQUITETURA DE COMPUTADORES

Resumo até aqui. Gerenciamento Proteção Compartilhamento. Infra-estrutura de Software

Introdução aos Sistemas da InformaçãoAula 4 p. 1

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

Sistemas Operacionais

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

Introdução à Programação e Algoritmos. Aécio Costa

IFPE. Disciplina: Sistemas Operacionais. Prof. Anderson Luiz Moreira

Estrutura do tema ISC

Infra-Estrutura de Software. Introdução. (cont.)

Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: Prof. Dr. Raimundo Moura

LINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO. Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto

Algoritmos e Linguagem de Programação I

Arquiteturas RISC. (Reduced Instructions Set Computers)

Conceitos Básicos da Linguagem C. Prof. Leonardo Barreto Campos 1

ARQUITETURA E ORGANIZAÇÃO DE COMPUTADORES. Prof. André Dutton

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 1. Cursos de Computação

A Linguagem Algorítmica Estrutura de Repetição. Ex. 2

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

6 - Gerência de Dispositivos

INE5317 Linguagens Formais e Compiladores. AULA 2: Es trutura geral dos Compiladores

Introdução a Computação

1.1. Organização de um Sistema Computacional

Sistemas de Computação

O hardware é a parte física do computador, como o processador, memória, placamãe, entre outras. Figura 2.1 Sistema Computacional Hardware

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

SISTEMAS OPERACIONAIS. Apostila 03 Estrutura do Sistema Operacional UNIBAN

UNIVERSIDADE FEDERAL DE SANTA CATARINA MODELAGEM DE UMA PLATAFORMA VIRTUAL PARA SISTEMAS EMBUTIDOS BASEADA EM POWERPC

Organização e Arquitetura de Computadores

4 Estrutura do Sistema Operacional Kernel

Introdução. O que vimos. Infraestrutura de Software. (cont.) História dos Sistemas Operacionais. O que vimos 12/03/2012. Primeira geração:

Linguagem de Programação

Programação de Computadores. Turma CI-180-B. Josiney de Souza.

Sistemas Operacionais

Unidade 10: A Unidade Lógica Aritmética e as Instruções em Linguagem de Máquina Prof. Daniel Caetano

Lição 1 Introdução à programação de computadores

Infra-Estrutura de Software

Transcrição:

Software Básico (INF1018) http://www.inf.puc-rio.br/~inf1018 Noemi Rodriguez (noemi@inf.puc-rio.br) Ana Lúcia de Moura (amoura@inf.puc-rio.br) 1

Objetivo do curso Entender como funciona um computador típico, visto pelo nível de Linguagem de Montagem e pela Linguagem de Máquina foco no programador, e não no projetista de computadores Idéia é compreender como os componentes básicos de hw e sw de um sistema de computação funcionam, oferecendo o suporte à hierarquia de abstrações implementada por esse sistema 2

Material básico de referência Computer Systems, A Programmer's Perspective. Randal Bryant and David O'Hallaron. Prentice Hall. 1 a edição 2003, 2 a edição 2010 pasta 161 CA Engenharia Resumos, slides e exercícios no site do curso http://www.inf.puc-rio.br/~inf1018 3

Critério de avaliação Cada grau é calculado como a média geométrica de uma prova (peso 2) e um trabalho (em dupla) G1 = 3 (P1 2 x T1) G2 = 3 (P2 2 x T2) M = (G1 + G2) / 2 Se G1 e G2 3.0 e M 6.0, M é a nota final (NF) Caso contrário: NF = (G1 + G2 + 2 x PF) / 4 4

Hierarquia de abstrações em um sistema de computação Programa final de usuário Hardware Aplicações: jogos, editores de texto, sistemas bancários, etc. Escritos geralmente em linguagem de alto nível (C, C++, Java, etc). Programa Assembly Sistema Operacional camadas intermediárias Instruções em linguagem de máquina: sequências binárias (0 s e 1 s) não muito legível por humanos. 5

Arquitetura típica de uma máquina Controla a execução dos programas Executa instruções armazenadas na memória Faz requisições à memória CPU PC A L U registradores Armazena programas e dados Atende requisições da CPU Memória Principal BARRAMENTO controlador USB controlador vídeo controlador disco Conexão ao mundo externo mouse teclado monitor HD 6

Linguagem de Montagem A linguagem de montagem (assembly language) é um mapeamento bastante direto da linguagem de máquina, mas com várias facilidades para o programador. uso de mnemônicos para representar as instruções uso de nomes" das instruções cada linha do código fonte possui apenas uma instrução para o processador (CPU) ex.: mov %eax, %edx mnemônico 7

Assembly e Assembler Um programa assembly fica acima da camada do sistema operacional, podendo fazer chamadas a ele para requisitar serviços, por exemplo de entrada e saída. Um programa montador ou assembler faz a tradução da linguagem assembly para a linguagem de máquina (uma espécie de compilador, porém bastante restrito). Esse curso lida com os aspectos de software da programação em assembly e da linguagem de máquina. o hardware só nos interessa na medida em que influencia essa programação. 8

Processo de geração de um Hello world executável O programa fonte (arquivo texto) deve ser traduzido em uma sequência de instruções de linguagem de máquina, armazenada como um executável (arquivo binário) Essa tradução é realizada em 4 fases 9

Fase 1: pré-processamento (usaremos o compilador gcc do Linux no curso) Modifica o programa em C de acordo com diretivas começadas com # #include <stdio.h> diz ao pré-processador para ler o arquivo stdio.h e inseri-lo no programa fonte (o resultado é um programa expandido em C, normalmente com extensão.i, em Unix) 10

Fase 2: compilação Compilador traduz o programa.i em programa assembly. é um formato de saída comum para os compiladores de várias linguagens de programação de alto nível 11

Fase 3: montagem Transforma o programa assembly em instruções em linguagem de máquina (chamado programa objeto) armazenado como um arquivo binário, com a extensão.o 12

Fase 4: ligação O ligador (linker) gera o programa executável a partir do programa objeto, gerado pelo assembler. Pode haver funções (ex., printf) não definidas no programa, mas em outro arquivo.o (ou biblioteca) pré-compilado O ligador faz a junção dos programas objeto necessários para gerar o executável. 13

Por que entender o processo? Saber otimizar uso de recursos/desempenho de programas Entender e evitar bugs relativos, por exemplo, às limitações das representações dos tipos e à manipulação da memória Entender erros de ligação Entender e poder evitar vulnerabilidades de segurança, como em situações de buffer overflow 14

Conteúdo do curso Ligação Resolução de referências Representação de dados Mecanismos de controle Funções, pilha, variáveis locais Interrupções Interação com S.O. Linguagem de montagem Conjunto típico de instruções 15

Programa do curso Armazenamento e representação de tipos de dados Linguagem de Montagem (IA32) conjunto típico de instruções Modelo de execução de linguagem de alto nível (C) implementação de expressões, atribuições, estruturas de controle Chamada de procedimentos pilha de execução, registro de ativação, passagem de parâmetros Interação com o Sistema Operacional, interrupções Compilação e Ligação 16