Linguagem C. Produção de programas em C (Ligação estática) Centro de Cálculo Instituto Superior de Engenharia de Lisboa

Tamanho: px
Começar a partir da página:

Download "Linguagem C. Produção de programas em C (Ligação estática) Centro de Cálculo Instituto Superior de Engenharia de Lisboa"

Transcrição

1 Capítulo 7, secções.1-.9 Capítulo 4, secções Linguagem C Produção de programas em C (Ligação estática) Centro de Cálculo Instituto Superior de Engenharia de Lisboa João Pedro Patriarca (jpatri@cc.isel.ipl.pt)

2 Ficheiro objecto realocável (formato ELF) secções descreve secções ELF header.text.rodata.data.bss.symtab.rel.text.rel.data.debug.line.strtab Section header table 0 > objdump h x.o, apresenta a header table das secções > objdump s -t x.o, apresenta o conteúdo das secções e os símbolos > objdump j.rodata -s x.o, apresenta o conteúdo da secção indicada > objdump d M intel S x.o, apresenta o disassembly das secções que contêm código (.text) com o código fonte embebido (opção g) > nm n -S x.o, apresenta a tabela com os símbolos por ordem crescente de endereços (-n) e a dimensão associada a cada símbolo (-S) 2

3 Ligação estática (linker) Ligação estática de objectos realocáveis: Soluções, eventualmente, específicas do linker da GNU para problemas comuns de qualquer linker Entrada: ficheiros objectos realocáveis; bibliotecas estáticas. 1ª fase Resolução de símbolos: associa cada referência de símbolo com uma única definição de símbolo Secção.symtab: tabela com os símbolos definidos e referenciados no programa; não inclui apenas os símbolos mantidos no stack nm filename.o, para apresentação da tabela com os símbolos 2ª fase Realocação: junta e realoca as secções do mesmo tipo, associa a cada definição de símbolo a sua localização em memória e actualiza todas as referências para esses símbolos no programa (.text e.data) Secções.rel.text e.rel.data: contém lista de localizações na secção.text e.data, respectivamente, a actualizar pelo linker Saída: ficheiro objecto executável 3

4 Ficheiro objecto executável (formato ELF) Mapeia secções a segmentos de memória descreve secções 0 ELF header Segment header table.init.text.rodata.data.bss.symtab.debug.line.strtab Section header table segmento de memória read-only (code segment) segmento de memória read/write (data segment) secções não carregadas em memória Os mesmos comandos servem para observar a informação presente nas secções do executável 4

5 Imagem em memória de um processo Linux 0xc kernel virtual memory user stack (created at runtime) memória invisível ao código do utilizador (user code) esp (stack pointer) 0x memory mapped region for shared libraries 0x runtime heap (created at runtime by malloc) read/write segment (.data,.bss) read-only segment (.init,.text,.rodata) unused brk carregado do ficheiro executável 5

6 Classificação de símbolos Símbolos fortes: funções e variáveis globais inicializadas Símbolos fracos: variáveis globais não inicializadas Definição múltipla de símbolos globais: Regra 1: não são permitidos múltiplos símbolos fortes; Regra 2: na presença de um símbolo forte e múltiplos símbolos fracos é seleccionado o símbolo forte; Regra 3: na presença de múltiplos símbolos fracos é escolhido qualquer um, tipicamente o que ocupará maior espaço em memória 6

7 Potenciais problemas no processo de ligação Cenário 1 definições repetidas: As variáveis globais não inicializadas (símbolos fracos) têm um tratamento diferente Os restantes símbolos são considerados fortes (var globais inicialidas, funções globais) Erro de ligação na presença de repetições de símbolos fortes Cenário 2 ausência da declaração de uma função externa: Na chamada à função passa como argumentos literais inteiros Na definição recebe doubles O erro manifesta-se apenas em tempo de execução Cenário 3 definição múltipla de variáveis globais não inicializadas: Na tabela de símbolos apresentada pela ferramenta nm têm o atributo COMMON (significa que ainda não têm espaço alocado em memória) Não dá erro de ligação, é criado um único símbolo e é alocado espaço que dê suporte à definição que necessite de mais espaço em memória Na presença de um símbolo forte e múltiplos símbolos fracos ganha sempre o forte Exemplo com duas variáveis globais x e y do tipo inteiro, iniciadas e definidas no mesmo módulo A e uma variável x do tipo double, não iniciada, e definida no módulo B. No módulo B, uma função altera o double x; no main, chama-se a função e apresenta-se em notação hexadecimal os dois inteiros (CSPP pg 360) 7

8 Biblioteca estática Comando para gerar a biblioteca estática: ar crs libname.a fileobj1.o fileobj2.o fileobj3.o opções: c create; r sobrepõe módulos repetidos; s cria tabela com indexação para os módulos Motivação: reduzir a dimensão de um ficheiro objecto executável bib: CSPP 7.{ } reduz, ligando apenas os módulos da biblioteca que efectivamente resolvam algum símbolo indefinido A opção static no Linker força a ligação estática de todos os módulos (incluindo os módulos presentes na biblioteca libc.a) 8

9 Makefile (exemplo) Requisitos Regra Makefile app: app.o libdynamic_mem.a gcc -o app app.o./libdynamic_mem.a Objectivo por omissão Começa com o carácter \t e não espaços app.o: app.c dynamic_memory.h utils.h gcc -Wall -pedantic -c -O2 app.c Objectivo libdynamic_mem.a: dynamic_memory.o utils.o heap.o ar rcs libdynamic_mem.a dynamic_memory.o utils.o heap.o dynamic_memory.o: dynamic_memory.c dynamic_memory.h heap.h macros.h gcc -Wall -pedantic -c -O2 dynamic_memory.c utils.o: utils.c utils.h heap.h dynamic_memory.h gcc -Wall -pedantic -c -O2 utils.c heap.o: heap.c heap.h gcc -Wall -pedantic -c -O2 heap.c Comando: Linha shell (zero ou mais) r replace existing members c create archive s write object file index > ar t lib, para ver a tabela Make: Algoritmo recursivo que executa os comandos para a regra cujas dependências tenham uma data posterior à data do objectivo 9

10 Makefile com variáveis automáticas (exemplo) CFLAGS = -Wall pedantic g -c O2 app: app.o libdynamic_mem.a gcc -o $@ $<./libdynamic_mem.a app.o: app.c dynamic_memory.h utils.h gcc $(CFLAGS) $< Makefile Variáveis automáticas: $@ nome do objectivo $^ requisitos (todos) $< primeiro requisito $( ) variável libdynamic_mem.a: dynamic_memory.o utils.o heap.o ar rcs $@ $^ dynamic_memory.o: dynamic_memory.c dynamic_memory.h heap.h macros.h gcc $(CFLAGS) $< utils.o: utils.c utils.h heap.h dynamic_memory.h gcc $(CFLAGS) $< heap.o: heap.c heap.h gcc $(CFLAGS) $< 10

Linguagem C. Produção de programas em C (Ligação dinâmica) João Pedro Patriarca

Linguagem C. Produção de programas em C (Ligação dinâmica) João Pedro Patriarca Capítulo 7, secções 10-12 Linguagem C Produção de programas em C (Ligação dinâmica) Centro de Cálculo Instituto Superior de Engenharia de Lisboa João Pedro Patriarca (jpatri@cc.isel.ipl.pt) Ligação estática

Leia mais

Ligação e Relocação. Noemi Rodriguez Ana Lúcia de Moura Raúl Renteria.

Ligação e Relocação. Noemi Rodriguez Ana Lúcia de Moura Raúl Renteria. Ligação e Relocação Noemi Rodriguez Ana Lúcia de Moura Raúl Renteria http://www.inf.puc-rio.br/~inf1018 Compilação e Ligação hello.c Preprocessador hello.i programa fonte expandido (texto) Compilador hello.s

Leia mais

A ferramenta make. A - Introdução. O C é orientado para a produção de aplicações informáticas de grande dimensão

A ferramenta make. A - Introdução. O C é orientado para a produção de aplicações informáticas de grande dimensão A - Introdução O C é orientado para a produção de aplicações informáticas de grande dimensão Na geração de aplicações informáticas há ficheiros gerados a partir de outros: logo, os segundos têm obrigatoriamente

Leia mais

A separação dos programas em módulos (ficheiros) é uma prática indispensável que facilita a produção, manutenção e a reutilização de software.

A separação dos programas em módulos (ficheiros) é uma prática indispensável que facilita a produção, manutenção e a reutilização de software. Módulos A separação dos programas em módulos (ficheiros) é uma prática indispensável que facilita a produção, manutenção e a reutilização de software. Uma parte de um programa num módulo interage com outra

Leia mais

UNIX Gerência de Memória

UNIX Gerência de Memória UNIX Gerência de Memória Introdução Unix implementado sobre muitos computadores diferen tes baseada, segmentada, paginada, segmentada/paginada A gerência de memória garante: Proteção do espaço de endereçamento

Leia mais

Compilação, Amarração e Relocação

Compilação, Amarração e Relocação Compilação, Amarração e Relocação Desenvolvimento modular Programas grandes devem ser implementados de forma modular Limitam a complexidade de manutenção do código Mudança em um módulo não requer a re-compilação

Leia mais

Bibliotecas são arquivos que contêm módulos reutilizáveis pré-compilados que serão usados por desenvolvedores de aplicações.

Bibliotecas são arquivos que contêm módulos reutilizáveis pré-compilados que serão usados por desenvolvedores de aplicações. 19. - Biblioteca de funções Os arquivos.c estão associados aos headers correspondentes, logo tem-se que: arquivo.h + arquivo.c = arquivo.o Bibliotecas são arquivos que contêm módulos reutilizáveis pré-compilados

Leia mais

Arquitetura e Organização de Computadores. Compiladores e processamento

Arquitetura e Organização de Computadores. Compiladores e processamento Arquitetura e Organização de Computadores Compiladores e processamento Verificar a existência dos pacotes: - GCC (Gnu C Compiler); - GDB (Gnu Debuger); - Libc (blibliotecas C); - nano, vi, emacs ou outro

Leia mais

Sumário. Sistemas Operativos 1

Sumário. Sistemas Operativos 1 Sumário Requisitos mínimos do hardware para suportar um SO protegido (ex: Windows/Linux) Mecanismos hardware de suporte nas arquitecturas x86/x64 Sequência de chamada de serviços sistema no Windows a 32

Leia mais

Linguagem C (continuação)

Linguagem C (continuação) Linguagem C (continuação) Funções, arrays e ponteiros Slides adaptados, inspirados, muitos copiados dos slides do professor Pedro Pereira Centro de Cálculo Instituto Superior de Engenharia de Lisboa João

Leia mais

Linguagem C Introdução. Contexto Histórico Principais diferenças do Java Funções em C Compilar programas em C no Linux

Linguagem C Introdução. Contexto Histórico Principais diferenças do Java Funções em C Compilar programas em C no Linux Linguagem C Introdução Contexto Histórico Principais diferenças do Java Funções em C Compilar programas em C no Linux Porquê C em AC? A linguagem C fornece um modelo de programação próximo da máquina física

Leia mais

Desenvolvimento de Bibliotecas

Desenvolvimento de Bibliotecas 5 Desenvolvimento de Bibliotecas Sumário: Tipos de bibliotecas: arquivo (.a) e partilhada (.so)bibliotecas do sistema (libc, libm,...) Criação duma biblioteca estática Visualização do conteúdo duma biblioteca

Leia mais

Programação Imperativa. Lição n.º 16 A pilha de execução

Programação Imperativa. Lição n.º 16 A pilha de execução Programação Imperativa Lição n.º 16 A pilha de execução A pilha de execução Registos de execução. Arrays locais. Caso da alocação dinâmica. Segmento de dados. 11/17/16 Programação Imperativa 2 A pilha

Leia mais

Fundamentos de Programação

Fundamentos de Programação Fundamentos de Programação CP41F Aula 12 Prof. Daniel Cavalcanti Jeronymo Layout de memória. Ponteiros: conceito, operadores de referência e dereferência, operações, aritmética e indireção múltipla Universidade

Leia mais

Chamada ao sistema: sbrk. Chamada ao sistema: brk. brk sbrk. Generalidades. José Pedro Oliveira calloc e malloc free

Chamada ao sistema: sbrk. Chamada ao sistema: brk. brk sbrk. Generalidades. José Pedro Oliveira calloc e malloc free Generalidades (jpo@di.uminho.pt) Grupo de Sistemas Distribuídos Departamento de Informática Escola de Engenharia Universidade do Minho Sistemas Operativos I 2006-2007 1 s Chamada ao sistema: Chamada ao

Leia mais

Departamento de Engenharia Informática. Sistemas Operativos 1. Utilitário Make

Departamento de Engenharia Informática. Sistemas Operativos 1. Utilitário Make Departamento de Engenharia Informática Sistemas Operativos 1 Utilitário Make Março 2003 1. Modelo de Compilação da Linguagem C Compilar um programa muito simples em C requer, pelo menos, o ficheiro de

Leia mais

Ambiente de tempo de Execução Cap. 7

Ambiente de tempo de Execução Cap. 7 Ambiente de tempo de Execução Cap. 7 Introdução Subdivisão da memória usada pelo programa em tempo de execução Segmento de Código Segmento Estático (segmento de dados) Pilha Área de memória livre Heap

Leia mais

7 Mecanismos de gestão de memória. Prof. Ricardo Silva

7 Mecanismos de gestão de memória. Prof. Ricardo Silva 7 Mecanismos de gestão de memória Prof. Ricardo Silva Introdução Um programa reside no disco sob a forma de ficheiro executável Para ser executado, o programa tem de ser colocado em memória e associado

Leia mais

Linguagem C. Brian W. Kernighan, Dennis Ritchie (K&R) Slides adaptados, inspirados, muitos copiados dos slides do professor Pedro Pereira

Linguagem C. Brian W. Kernighan, Dennis Ritchie (K&R) Slides adaptados, inspirados, muitos copiados dos slides do professor Pedro Pereira Linguagem C Brian W. Kernighan, Dennis Ritchie (K&R) Slides adaptados, inspirados, muitos copiados dos slides do professor Pedro Pereira Centro de Cálculo Instituto Superior de Engenharia de Lisboa João

Leia mais

16. Compilação no Linux

16. Compilação no Linux 16. Compilação no Linux 16.1 Compilador X Interpretador Um código fonte pode ser compilado ou interpretado. Compiladores e interpretadores tratam o código de maneira diferente. Interpretador: Lê o código

Leia mais

Sintaxe da linguagem Java

Sintaxe da linguagem Java Sintaxe da linguagem Java (PG) Centro de Cálculo Instituto Superior de Engenharia de Lisboa Pedro Alexandre Pereira (palex@cc.isel.ipl.pt) Classe pública com método main Uma classe pública com nome A tem

Leia mais

Mestrado em Engenharia Física Tecnológica

Mestrado em Engenharia Física Tecnológica 21 a Aulas - Ambiente de Janelas: GTK+ Programação Mestrado em Engenharia Física Tecnológica Samuel M. Eleutério sme@tecnico.ulisboa.pt Departamento de Física Instituto Superior Técnico Universidade de

Leia mais

Fundamentos de Programação

Fundamentos de Programação Fundamentos de Programação ET42G Aula 21 Prof. Daniel Cavalcanti Jeronymo Conversão de tipos. Alocação dinâmica de memória. Recursão. Criação de bibliotecas, arquivos de cabeçalhos e variáveis globais.

Leia mais

Mestrado em Engenharia Física Tecnológica

Mestrado em Engenharia Física Tecnológica 20 a Aulas - Ambiente de Janelas: GTK+ Programação Mestrado em Engenharia Física Tecnológica Samuel M. Eleutério sme@tecnico.ulisboa.pt Departamento de Física Instituto Superior Técnico Universidade de

Leia mais

Sistemas Operacionais I Aula Prática 1 - Introdução ao Linux

Sistemas Operacionais I Aula Prática 1 - Introdução ao Linux Sistemas Operacionais I Aula Prática 1 - Introdução ao Linux Objetivo Introdução ao desenvolvimento de aplicações em linguagem C no ambiente Linux/POSIX Familiarização com as ferramentas necessárias: gcc,

Leia mais

Revisões de PG. Programação Orientada por Objetos (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa

Revisões de PG. Programação Orientada por Objetos (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa Revisões de PG (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa Pedro Alexandre Pereira (palex@cc.isel.ipl.pt) Compilar e executar programas em Java Ficheiro fonte (Prog.java) Ficheiro

Leia mais

Linguagem de Programação III

Linguagem de Programação III Linguagem de Programação III Aula-4 Construtores e Sobrecarga Prof. Esbel Tomás Valero Orellana Até Aqui Modelos e POO Classes e sua implementação em Java Encapsulamento Tipos de dados nativos em Java

Leia mais

Pragmática das Linguagens de

Pragmática das Linguagens de Instituto Superior Técnico Pragmática das Linguagens de Programação 2004/2005 Primeiro Exame/Segundo Teste 17/12/2004 Número: Turma: Nome: Escreva o seu número em todas as folhas do teste. O tamanho das

Leia mais

Implementação da programação modular II

Implementação da programação modular II Implementação da programação modular II - 1 Implementação da programação modular II Aula 11 Agenda Declaração e definição de dados Os conceitos relacionados com a ligação de programas Os elementos essenciais

Leia mais

ESTRUTURAS DE DADOS (LEI, LM, LEE) PROGRAMAÇÃO III (LTSI) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2017/2018

ESTRUTURAS DE DADOS (LEI, LM, LEE) PROGRAMAÇÃO III (LTSI) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2017/2018 ESTRUTURAS DE DADOS (LEI, LM, LEE) PROGRAMAÇÃO III (LTSI) Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2017/2018 Apontadores O que é um apontador? Variável que contém

Leia mais

A linguagem C (visão histórica)

A linguagem C (visão histórica) A linguagem C (visão histórica) A linguagem C é uma linguagem de programação desenvolvida no ínício dos anos 70 por Dennis Ritchie, que trabalhava nos laboratórios Bell e que também inciou em paralelo,

Leia mais

Gerência de Memória. Eduardo Ferreira dos Santos. Abril, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 45

Gerência de Memória. Eduardo Ferreira dos Santos. Abril, Ciência da Computação Centro Universitário de Brasília UniCEUB 1 / 45 Gerência de Memória Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Abril, 2016 1 / 45 Sumário 1 Introdução 2 Espaços de endereçamento 3 Realocação estática e

Leia mais

Gerência de Memória. Sistemas Operacionais Flavio Figueiredo (

Gerência de Memória. Sistemas Operacionais Flavio Figueiredo ( Gerência de Memória Sistemas Operacionais 2017-1 Flavio Figueiredo (http://flaviovdf.github.io) 1 Até Agora Aprendemos que o SO é uma interface entre o hardware eo software Trocas de contexto Gerência

Leia mais

ALGORITMOS AULA 01. Baseado nas aulas do Prof. Jorgiano Vidal

ALGORITMOS AULA 01. Baseado nas aulas do Prof. Jorgiano Vidal ALGORITMOS AULA 01 Baseado nas aulas do Prof. Jorgiano Vidal LINGUAGEM C Uma das grandes vantagens do C é que ele possui tanto caracterìsticas de "alto nìvel" quanto de "baixo nìvel". Linguagem de propósito

Leia mais

facilita o trabalho em equipe, com diferentes grupos trabalhando em cada módulo independente.

facilita o trabalho em equipe, com diferentes grupos trabalhando em cada módulo independente. Estruturação do Programa Queremos organizar um programa de forma a: dividi-lo em partes que realizem tarefas específicas, resumindo um problema complexo a vários problemas mais simples simplifica a elaboração

Leia mais

Professor: Jó Ueyama Estagiário PAE: Heitor Freitas

Professor: Jó Ueyama Estagiário PAE: Heitor Freitas Alocação Dinâmica de Memória Professor: Jó Ueyama Estagiário PAE: Heitor Freitas Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo SSC 300 - Linguagem de Programação e Aplicações

Leia mais

Declarações. Tipos de Acesso, Inicialização e Constantes

Declarações. Tipos de Acesso, Inicialização e Constantes Declarações Tipos de Acesso, Inicialização e Constantes Objetivo Continuação... ESPECIFICADOR de TIPO de ACESSO const e volatile Além disso, discutiremos as regras gerais do processo de INICIALIZAÇÃO de

Leia mais

Conceitos Básicos sobre Programação Prática

Conceitos Básicos sobre Programação Prática Conceitos Básicos sobre Programação Prática Programa de computador conjunto de instruções e informação necessários ao alcance de um objectivo instruções + dados normalmente, guardados em ficheiros (em

Leia mais

Desenvolvimento de programas em UNIX

Desenvolvimento de programas em UNIX 4 Desenvolvimento de programas em UNIX Sumário: Fases de desenvolvimento de programas Compiladores Ficheiros em código objecto (.o) Visualização de símbolos dum ficheiro objecto (nm) Unificadores (linkers)

Leia mais

Introdução aos Sistemas Operacionais. Subsistema de Entrada e Saída

Introdução aos Sistemas Operacionais. Subsistema de Entrada e Saída Introdução aos Sistemas Operacionais Subsistema de Entrada e Saída Eleri Cardozo FEEC/Unicamp Entrada e Saída O subsistema de entrada e saída é responsável pela interface entre o sistema operacional e

Leia mais

SISTEMAS OPERATIVOS I

SISTEMAS OPERATIVOS I Instituto Superior de Engenharia do Porto Departamento de Engenharia Informática SISTEMAS OPERATIVOS I Ficha 6 Abril de 2006 Nuno Malheiro Maria João Viamonte Berta Batista Luis Lino Ferreira Sugestões

Leia mais

USP - ICMC - SSC SSC o. Semestre 2010 Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria

USP - ICMC - SSC SSC o. Semestre 2010 Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria USP - ICMC - SSC SSC 0501-1o. Semestre 2010 Disciplina de Introdução à Ciência da Computação ICC 1 - Teoria Prof. Fernando Santos Osório Email: fosorio [at] { icmc. usp. br, gmail. com } Página Pessoal:

Leia mais

Básico: estrutura de programa, sintaxe Interface com linha de comando

Básico: estrutura de programa, sintaxe Interface com linha de comando Programação em C Sintaxe Básico: estrutura de programa, sintaxe Interface com linha de comando Preprocessamento e compilação Makefiles Ponteiros e estruturas Bibliotecas, ficheiros include e funções Referências

Leia mais

Hierarquia de memória

Hierarquia de memória Hierarquia de memória Capítulo 6, Secção.{3..} Caches Slides adaptados dos slides do professor Pedro Pereira Consultar slides originais no moodle Centro de Cálculo Instituto Superior de Engenharia de Lisboa

Leia mais

Conceitos básicos de programação de sistemas. ambientes UNIX e Linux Taisy Silva Weber

Conceitos básicos de programação de sistemas. ambientes UNIX e Linux Taisy Silva Weber Conceitos básicos de programação de sistemas ambientes UNIX e Linux Taisy Silva Weber conceitos básicos programação de sistemas programação em ambientes UNIX: executáveis e scripts compiladores C e C++,

Leia mais

DEM-Sec.Sistemas Tipos Abstractos de Informação 2006 / Programação

DEM-Sec.Sistemas Tipos Abstractos de Informação 2006 / Programação Funções DEM-Sec.Sistemas Tipos Abstractos de Informação 2006 / 07 1 Programação modular Programação modular: divir um programa em módulos mais pequenos Função: um conjunto de instruções que desempenham

Leia mais

Sistemas Embarcados. GNU toolchain. Introdução. Mas o compilador sozinho não adianta muito... Compilador. Aula 07

Sistemas Embarcados. GNU toolchain. Introdução. Mas o compilador sozinho não adianta muito... Compilador. Aula 07 Sistemas Embarcados Ferramentas de desenvolvimento GNU toolchain Introdução Projetistas de software empregam várias ferramentas durante o ciclo de desenvolvimento de um software E.g.: editores, compiladores,

Leia mais

Apresentação da disciplina. Programação em ambiente Linux prof: Taisy Silva Weber

Apresentação da disciplina. Programação em ambiente Linux prof: Taisy Silva Weber Apresentação da disciplina Programação em ambiente Linux prof: Taisy Silva Weber Página da disciplina endereço http://www.inf.ufrgs.br/~taisy/disciplinas/ conteúdo da página: listas de exercícios conceitos

Leia mais

Bases de Dados. Lab 1: Introdução ao ambiente. Figura 1. Base de dados de exemplo

Bases de Dados. Lab 1: Introdução ao ambiente. Figura 1. Base de dados de exemplo Departamento de Engenharia Informática 2013/2014 Bases de Dados Lab 1: Introdução ao ambiente 1º semestre O ficheiro bank.sql contém um conjunto de instruções SQL para criar a base de dados de exemplo

Leia mais

TASM DEFINIÇÃO DE UMA NOVA TABELA DE CONVERSÃO

TASM DEFINIÇÃO DE UMA NOVA TABELA DE CONVERSÃO TASM O TASM (Telemark Assembler) é um assemblador baseado em tabelas de conversão que corre em MS-DOS ou Linux. Código Assembly escrito de acordo com uma determinada sintaxe pode ser compilado usando o

Leia mais

Programação. MEAer e LEE. Bertinho Andrade da Costa. Instituto Superior Técnico. Argumentos da linha de comando Funções recursivas

Programação. MEAer e LEE. Bertinho Andrade da Costa. Instituto Superior Técnico. Argumentos da linha de comando Funções recursivas Programação MEAer e LEE Bertinho Andrade da Costa 2010/2011 1º Semestre Instituto Superior Técnico Argumentos da linha de comando Funções recursivas Programação 2010/2011 DEEC-IST Arg. da linha de comando;

Leia mais

Função Fundamental do SO

Função Fundamental do SO Função Fundamental do SO Gestão do Hardware Uma das funções fundamentais do sistema operativo é gerir os recursos do hardware de um modo o mais transparente possível ao utilizador Recursos principais a

Leia mais

- Mapa de memória de um processo - Ponteiros

- Mapa de memória de um processo - Ponteiros 1 MCTA028 Programação Estruturada - Mapa de memória de um processo - Ponteiros Material preparado a partir de slides dos profs. Jesús Mena-Chalco e Fabrício Olivetti Luiz Rozante 3Q-2018 2 Alocação de

Leia mais

PROGRAMAÇÃO I. Introdução

PROGRAMAÇÃO I. Introdução PROGRAMAÇÃO I Introdução Introdução 2 Princípios da Solução de Problemas Problema 1 Fase de Resolução do Problema Solução na forma de Algoritmo Solução como um programa de computador 2 Fase de Implementação

Leia mais

Argumentos da linha de comando Exemplos Recursividade de funções Exemplos

Argumentos da linha de comando Exemplos Recursividade de funções Exemplos Sumário Argumentos da linha de comando Exemplos Recursividade de funções Exemplos Programação 2007/2008 DEEC-IST 1 Argumentos da linha de comando Motivação: Nas aulas de laboratório foi utilizado o compilador

Leia mais

PIkit : A New Kernel-Independent Processor-Interconnect Rootkit

PIkit : A New Kernel-Independent Processor-Interconnect Rootkit PIkit : A New Kernel-Independent Processor-Interconnect Rootkit Autores do artigo: Wonjun Song, Hyunwoo Choi, Junhong Kim, Eunsoo Kim, Yongdae Kim, John Kim Apresentação: Vagner Kaefer Dos Santos Introdução

Leia mais

Revisões de PG. Programação Orientada por Objetos (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa

Revisões de PG. Programação Orientada por Objetos (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa Revisões de PG (POO) Centro de Cálculo Instituto Superior de Engenharia de Lisboa Pedro Alexandre Pereira (palex@cc.isel.ipl.pt) Compilar e executar programas em Java Ficheiro fonte (Prog.java) Ficheiro

Leia mais

Ordem de Bytes: Big Endian e Little Endian

Ordem de Bytes: Big Endian e Little Endian Ordem de Bytes: Big Endian e Little Endian Dependendo da máquina que se usa, tem de se considerar a ordem pela qual os números constituídos por múltiplos bytes estão armazenados. As ordem são duas: big

Leia mais

Procedimentos. Sistemas de Computação

Procedimentos. Sistemas de Computação Procedimentos Chamada de Procedimentos Utilização de procedimentos: Facilitar entendimento do programa Reutilização de código Passos necessários para execução de um procedimento: Os parâmetros a serem

Leia mais

Sistemas Operacionais

Sistemas Operacionais Introdução Memória virtual Trabalho sob a Licença Atribuição-SemDerivações-SemDerivados 3.0 Brasil Creative Commons. Para visualizar uma cópia desta licença, visite http://creativecommons.org/licenses/by-nc-nd/3.0/br/

Leia mais

Interface gráfico. José Pedro Oliveira Interpretador de comandos Comando su. Conceitos de Sistemas Informáticos 2005

Interface gráfico. José Pedro Oliveira Interpretador de comandos Comando su. Conceitos de Sistemas Informáticos 2005 Conteúdo (jpo@di.uminho.pt) Grupo de Sistemas Distribuídos Departamento de Informática Escola de Engenharia Universidade do Minho 1 Conceitos de Sistemas Informáticos 2005 Interface gráfico KDE Consolas

Leia mais

Linguagens de Programação

Linguagens de Programação Linguagens de Programação Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel Parte IV Introdução à Programação em C++ (Continuação) Relembrando da Última Aula... Definição de classes e objetos

Leia mais

Parte IV. Linguagens de Programação. Relembrando da Última Aula... Repetição Controlada por Contador. Nono Exemplo utilizando Classes em C++

Parte IV. Linguagens de Programação. Relembrando da Última Aula... Repetição Controlada por Contador. Nono Exemplo utilizando Classes em C++ Linguagens de Programação Parte IV Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel Introdução à Programação (Continuação) Relembrando da Última Aula... Definição de classes e objetos Primeiros

Leia mais

1. Objectivos. 2. O equipamento Linksys WRT54GL. Mestrado em Engenharia Electrotécnica e de Computadores Lab3. Encaminhamento IP

1. Objectivos. 2. O equipamento Linksys WRT54GL. Mestrado em Engenharia Electrotécnica e de Computadores Lab3. Encaminhamento IP Mestrado em Engenharia Electrotécnica e de Computadores Lab3. Encaminhamento IP Nome: Número: 1. Objectivos Entender o conceito de routing. Configurar um encaminhador (router). Gerir as tabelas de encaminhamento

Leia mais

Linguagem C Ficheiros Compilação Separada

Linguagem C Ficheiros Compilação Separada Linguagem C Ficheiros Compilação Separada typedef definição de tipos Apontadores para estruturas Ficheiros na bibiloteca standard do C Compilação Separada Definição de novos tipos em C É possível definir

Leia mais

ao paradigma imperativo

ao paradigma imperativo PARADIGMA FUNCIONAL PARADIGMA FUNCIONAL: INTRODUÇÃO G Exemplos de linguagens funcionais LISP - Início: LP puramente funcional - Depois: acréscimo de alguns recursos imperativos (aumentaram eficiência de

Leia mais

AULA 05: LINGUAGEM DE MONTAGEM: SUPORTE A PROCEDIMENTOS

AULA 05: LINGUAGEM DE MONTAGEM: SUPORTE A PROCEDIMENTOS ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 05: Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação O QUE SÃO PROCEDIMENTOS? Procedimentos são um conjunto

Leia mais

Introdução à programação em PASCAL. Aula de 22/10/2001. Nota: Conjunto de slides baseados nas transparências utilizadas em PEDA em anos anteriores

Introdução à programação em PASCAL. Aula de 22/10/2001. Nota: Conjunto de slides baseados nas transparências utilizadas em PEDA em anos anteriores Introdução à programação em PASCAL Aula de 22/10/2001 Nota: Conjunto de slides baseados nas transparências utilizadas em PEDA em anos anteriores Conteúdo Conceito de linguagem de programação O processo

Leia mais

Fundamentos de Programação

Fundamentos de Programação Fundamentos de Programação CP41F Aula 2 Prof. Daniel Cavalcanti Jeronymo Conceito de algoritmo. Raciocínio lógico na construção de algoritmos. Estrutura de algoritmos. Universidade Tecnológica Federal

Leia mais

Sumário. Ficheiros. Ficheiros

Sumário. Ficheiros. Ficheiros Sumário Ficheiros Motivação Operações Ficheiros de texto e binários Manipulação de ficheiros de texto Abertura Encerramento Descritores de ficheiros: stdin, stdout, stderr Escrita Leitura Outras funções

Leia mais

INTRODUÇÃO A SISTEMAS DE ARQUIVO E GERENCIA DE MEMÓRIA

INTRODUÇÃO A SISTEMAS DE ARQUIVO E GERENCIA DE MEMÓRIA INTRODUÇÃO A SISTEMAS DE ARQUIVO E GERENCIA DE MEMÓRIA Prof. Hélio Esperidião DEFINIÇÕES DE ARQUIVOS Um arquivo é basicamente um conjunto de dados armazenados em um dispositivo físico não-volátil, com

Leia mais

Programação. Module Introduction. Cap. 1 Fundamentos de Computadores

Programação. Module Introduction. Cap. 1 Fundamentos de Computadores Engenharia Informática (5374) - 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) - 1º ano, 1º semestre Bioengenharia (9099) 2º ano, 1º semestre Ciências Biomédicas (10135) 2º ano, 1º semestre

Leia mais

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: ponteiros e alocação dinâmica Prof. Renato Pimentel 1 Ponteiros 2 Prof. Renato Pimentel 1 Ponteiros: introdução Toda a informação

Leia mais

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO E DO DESPORTO CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS CEFET-MG UNIDADE DE ENSINO

SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO E DO DESPORTO CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS CEFET-MG UNIDADE DE ENSINO SERVIÇO PÚBLICO FEDERAL MINISTÉRIO DA EDUCAÇÃO E DO DESPORTO CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS CEFET-MG UNIDADE DE ENSINO DESCENTRALIZADA DE VARGINHA CAMPUS VIII 1 Algoritmo, Contexto

Leia mais

Descrição geral do Android

Descrição geral do Android Descrição geral do Android (PDM) Centro de Cálculo Instituto Superior de Engenharia de Lisboa Pedro Alexandre Pereira (palex@cc.isel.ipl.pt) Utilização Home screen: Área de notificações Múltiplas páginas

Leia mais

Sistemas de Arquivos. (Aula 23)

Sistemas de Arquivos. (Aula 23) Sistemas de Arquivos (Aula 23) Funções de um SO Gerência de processos Gerência de memória Gerência de Arquivos Gerência de I/O Sistema de Proteção 2 Sistemas Operacionais 2008/1 Necessidade de Armazenamento

Leia mais

Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores

Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores 2013-2 Compilador para a Linguagem Cafezinho Especificação dos trabalhos: T2 (Geração da Representação Intermediária e Análise

Leia mais

Algoritmos e Estruturas de Dados. Prof. Marcelo Zorzan Profa. Melissa Zanatta

Algoritmos e Estruturas de Dados. Prof. Marcelo Zorzan Profa. Melissa Zanatta Algoritmos e Estruturas de Dados Prof. Marcelo Zorzan Profa. Melissa Zanatta Assuntos da Aula Alocação de Memória Alocação estática de memória Alocação dinâmica de memória Malloc, Calloc, Free, Realloc

Leia mais

Gerência de memória II

Gerência de memória II Gerência de memória II Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Maio, 2017 1 / 48 Sumário 1 Memória Virtual Segmentação Paginação 2 Alocação de páginas

Leia mais

Linguagem C. IF61A/IF71A - Computação 1 Prof. Leonelo Almeida. Universidade Tecnológica Federal do Paraná

Linguagem C. IF61A/IF71A - Computação 1 Prof. Leonelo Almeida. Universidade Tecnológica Federal do Paraná Linguagem C IF61A/IF71A - Computação 1 Prof. Leonelo Almeida Universidade Tecnológica Federal do Paraná Até agora... Sabemos construir algoritmos que tenham: Variáveis Comandos sequenciais Entrada e saída

Leia mais

MC-102 Aula 19 Ponteiros II

MC-102 Aula 19 Ponteiros II MC-102 Aula 19 Ponteiros II Instituto de Computação Unicamp 20 de Outubro de 2016 Roteiro 1 Ponteiros e Alocação Dinâmica 2 Exemplo de Alocação Dinâmica de Vetores 3 Erros Comuns ao Usar Alocação Dinâmica

Leia mais

Programação Estruturada Prof. Rodrigo Hausen Organização e Gerenciamento de Memória

Programação Estruturada Prof. Rodrigo Hausen  Organização e Gerenciamento de Memória Programação Estruturada Prof. Rodrigo Hausen http://progest.compscinet.org Organização e Gerenciamento de Memória 1 AULA PASSADA - vetores ou arrays Declaração de um vetor (array) em C: tipo nome[tamanho];

Leia mais

Sistemas Operativos. Gestão de memória no Windows NT

Sistemas Operativos. Gestão de memória no Windows NT Sistemas Operativos Gestão de memória no Windows NT Windows Internals, Russinovich, cap. 9, Memory Management Windows Via C/C++, Richter, cap. 13, cap. 14. MSDN, http://msdn.microsoft.com/en-us/library/aa366779(v=vs.85).aspx

Leia mais

Programação. MEAer e LEE. Manipulação de ficheiros de texto. Bertinho Andrade da Costa. Instituto Superior Técnico. 2010/2011 1º Semestre

Programação. MEAer e LEE. Manipulação de ficheiros de texto. Bertinho Andrade da Costa. Instituto Superior Técnico. 2010/2011 1º Semestre Programação MEAer e LEE Bertinho Andrade da Costa 2010/2011 1º Semestre Instituto Superior Técnico Manipulação de ficheiros de texto Programação 2010/2011 IST-DEEC Manipulação de Ficheiros 1 Sumário Ficheiros

Leia mais

Getting Started. Pedro Garcia de Janeiro de Assembly Working Party

Getting Started. Pedro Garcia de Janeiro de Assembly Working Party Pedro Garcia http://www.sawp.com.br 22 de Janeiro de 2010 Assembly Working Party Laboratório de Cálculos Científicos, Instituto de Física, Universidade de Brasília, Brasil Motivação Tópicos 1 Motivação

Leia mais

Laboratório de Microprocessadores Compilação Cruzada

Laboratório de Microprocessadores Compilação Cruzada Laboratório de Microprocessadores Compilação Cruzada Giovani Gracioli giovani@lisha.ufsc.br Março 2010 Mar 2010 Giovani Gracioli (http://www.lisha.ufsc.br/~giovani) 1 Roteiro Visão geral sobre compilação

Leia mais

Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang

Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES. Introdução. Geovane Griesang Universidade de Santa Cruz do Sul UNISC Departamento de informática COMPILADORES Introdução geovanegriesang@unisc.br Processadores de linguagem Linguagens de programação são notações para se descrever

Leia mais

Gilberto A. S. Segundo. 24 de agosto de 2011

Gilberto A. S. Segundo. 24 de agosto de 2011 Exercícios - Alocação Dinâmica Gilberto A. S. Segundo Programação Aplicada de Computadores Engenharia Elétrica Universidade Federal do Espírito Santo - UFES 24 de agosto de 2011 1 / 23 Grupo de e-mail

Leia mais

Gerenciamento de memória

Gerenciamento de memória Gerenciamento de memória Adriano J. Holanda 19/11/2015 Revisão: processos Visão geral Composto por código do programa em execução, arquivos abertos, sinais pendentes, dados internos do núcleo do SO, estado

Leia mais

Ambientes de Execução

Ambientes de Execução Ambientes de Execução Organização da memória Ambientes totalmente estáticos, baseados em pilhas e totalmente dinâmicos Passagem de parâmetros Prof. Thiago A. S. Pardo 1 Ambientes de execução na estrutura

Leia mais

Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação. Profa Rosana Braga

Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação. Profa Rosana Braga Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Profa Rosana Braga 1º semestre de 2010 1 Arquivo-FONTE /*******************************/ /* Primeiro exemplo arq exemplo1.c

Leia mais

Ambientes de Execução

Ambientes de Execução Ambientes de execução na estrutura do compilador programa-fonte Ambientes de Execução Tabela de símbolos analisador léxico analisador sintático Organização da memória Ambientes totalmente estáticos, baseados

Leia mais

PLANO DE UNIDADE DIDÁTICA- PUD

PLANO DE UNIDADE DIDÁTICA- PUD Professor: Marcus Vinícius Midena Ramos Coordenação: Ricardo Argenton Ramos Data: 03/08/2010 Página: 1 de 5 EMENTA: Conceitos básicos de linguagens. Histórico, classificação e principais aplicações de

Leia mais

Introdução. PCO / PPO Departamento de Informática Faculdade de Ciências da Universidade de Lisboa

Introdução. PCO / PPO Departamento de Informática Faculdade de Ciências da Universidade de Lisboa Introdução PCO / PPO Departamento de Informática Faculdade de Ciências da Universidade de Lisboa Resumo Funcionamento da cadeira Intuição sobre programação orientada-a-objectos A linguagem Java: história

Leia mais

Hierarquia de memória

Hierarquia de memória Hierarquia de memória Capítulo 6, Secção.{3..} Caches Slides adaptados dos slides do professor Pedro Pereira Centro de Cálculo Instituto Superior de Engenharia de Lisboa João Pedro Patriarca (jpatri@cc.isel.ipl.pt)

Leia mais

Compiladores Geração de Código

Compiladores Geração de Código Compiladores Geração de Código Fabio Mascarenhas - 2013.2 http://www.dcc.ufrj.br/~fabiom/comp O Back-end Até agora vimos as fases do front-end do compilador: Análise Léxica Análise Sintática Análise Semântica

Leia mais

Ana Paula Tomás. Departamento de Ciência de Computadores Faculdade de Ciências da Universidade do Porto 2010/2011

Ana Paula Tomás. Departamento de Ciência de Computadores Faculdade de Ciências da Universidade do Porto 2010/2011 Ana Paula Tomás Departamento de Ciência de Computadores Faculdade de Ciências da Universidade do Porto 2010/2011 Aula 1 Objectivos e programa da disciplina. Critérios de avaliação. Um primeiro programa

Leia mais

Universidade Federal de Minas Gerais. Sistemas Operacionais. Aula 16. Memória Virtual: Linux

Universidade Federal de Minas Gerais. Sistemas Operacionais. Aula 16. Memória Virtual: Linux Aula 16 Memória Virtual: Linux Gerência de Memória Física Como o usuário aloca memória? - Através do sistema de memória virtual Como o núcleo aloca memória? - Por exemplo, para uso interno, ou como o sistema

Leia mais

Sumário. Estruturas de suporte à paginação Entrada de tabela de páginas Visão geral da tradução de um endereço virtual

Sumário. Estruturas de suporte à paginação Entrada de tabela de páginas Visão geral da tradução de um endereço virtual Sumário Estruturas de suporte à paginação Entrada de tabela de páginas Visão geral da tradução de um endereço virtual Gestão de memória no csoker Layout do espaço de endereçamento linear Layout da memória

Leia mais

O que é uma variável?

O que é uma variável? Escopo, Ligação e Ambiente de Execução mleal@inf.puc-rio.br 1 O que é uma variável? Uma variável pode ser definida como uma tupla r nome é um string usado para

Leia mais