Compilação, Amarração e Relocação
|
|
- Agustina Dreer Minho
- 7 Há anos
- Visualizações:
Transcrição
1 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 de todo o programa Módulos comuns podem ser disponibilizados em bibliotecas Cada módulo: define uma coleção símbolos que representam tipos, constantes, variáveis e procedimentos, e referencia outros símbolos de outros módulos O compilador gera código objeto para cada módulo, e o amarrador (linker) junta os objetos em um executável.
2 O processo completo O driver de compilador (gcc) invoca cada uma das etapas: pré-processador (cpp), compilador(cc1), assembler (as) e linker(ld), para gerar o executável (para ver as etapas, use gcc v... ) m.c a.c ccp, cc1, as ccp, cc1, as m.o Linker (ld) a.o Arquivos objeto relocáveis (endereços relativos ao início do arquivo) p Arquivo objeto executável (com todos dados e procedimentos definidos em m.c and a.c) Obs: arquivos objeto (.o) não podem ser executados, pois há referências não resolvidas e os endereços não são os definitivos. Tarefas do processo de amarração (linker) 1. Combina vários arquivos objeto relocáveis (.o) em um único arquivo executável, que pode ser carregado na memória e executado; 2. Resolve todas as referências externas, isto é referências a um símbolo definido em outro arquivo objeto 3. Faz a relocação de todos os símbolos Transforma endereços relativos em endereços absolutos no executável Atualiza todas as referências para estes símbolos para refletir suas novas posições Obs: As referências podem ser para código ou dados Amarração poder ser feita em tempo de compilação (ld do Unix), tempo de carga ou de execução
3 Estrutura geral de um arquivo objeto Tabela de símbolos exportados Tabela de referências externas Código (.text) Dados incializados (.data) Exemplo: int x = 3; Dados não incializados Exemplo: int x; Dicionário de relocação (= tabela com as posições no código onde existe uma referência à memória) Informação para o depurador (debugger) Os formatos mais usados: ELF (Executable and Linkable Format) para sistemas Unix PE (Portable Executable) para Windows Formato ELF de arquivo objeto (1/2) Header ELF contém magic number, tipo (.o, exec,.so), arquitetura, big/little endian, etc. Tabela de header de programas (para executáveis) Contém tamanho de página (para memória virtual), segmentos e seus tamanhos.text código.data Dados inicializados státicos (*).bss section Dados não incializados státicos Não ocupa espaço ( Better Save Space ) ELF header Program header table (required for executables).text section.data section.bss section.symtab.rel.txt.rel.data.debug Section header table (required for relocatables) (*) Lembre-se que variáveis dinâmicas, no corpo de procedimentos, são alocados na pilha de execução 0
4 Formato ELF de arquivo objeto (2/2).symtab =Tabela de símbolos com: Nomes de procedimentos e variáveis estáticas Nomes de seções e posições.rel.text Informação de relocação para seção.text Endereços das instruções que precisarão ser modificados no executável.rel.data Informação de relocação para seção.data Endereços dos enderços (ponteiros para dados) que precisarão ser modificados no executável.debug Seção que relaciona posições no arquivo objeto com linhas do código fonte; para depuração (gcc -g) ELF header Program header table (required for executables).text section.data section.bss section.symtab.rel.text.rel.data.debug Section header table (required for relocatables) 0 Amarração (Linker) Principais tarefas (recapitulando) 1. combinar todos os objetos em um executável 2. Resolver as referências externas 3. Relocar as referências absolutas à memória Vejamos usando um exempo: m.c int e=7; a.c extern int e; int main() { int r = a(); exit(0); } int *ep=&e; int x=15; int y; int a() { return *ep+x+y; }
5 m.o a.o Combinação de todos os objetos em um executável Arquivos objeto relocáveis system code system data main() int e = 7 a() int *ep = &e int x = 15 int y.text.data.text.data.text.data.bss Arquivo executável 0 headers system code main() a() more system code system data int e = 7 int *ep = &e int x = 15 uninitialized data.symtab.debug A união requer a relocação dos endereços em cada módulo de forma a acrescentar sua posição dentro da concatenação.text.data.bss Def of local symbol e Resolução de referências Cada símbolo (entidade léxica) possui um valor (=seu endereço de memória). Referências podem ser locais ou externas. Ref to external symbol exit (defined in libc.so) m.c int e=7; int main() { int r = a(); exit(0); } Ref to external symbol a Def of local symbol ep a.c extern int e; int *ep=&e; int x=15; int y; int a() { return *ep+x+y; } Def of local symbol a Refs of local symbols ep,x,y Ref to external symbol e Defs of local symbols x and y
6 Resolução de referências Objetivo: associar cada referência externa a exatamente uma (1) definição do símbolo Usa a tabela de símbolo de cada módulo m que contém: Símbolos globais: definidos em m e que podem ser referenciados por outros módulos (funções e variáveis não definidos com static) Símbolos referenciados por m, mas definidos em outro módulo Símbolos locais: definfidos e referenciados exclusivamente por m (funções e variáveis definidos com static) Obs: as tabelas de símbolos são criadas pelo montador (as), usando os símbolos exportados na etapa de compilação. Resolução de referências Pode ser impossível: Se um símbolo referenciado não foi declarado Linker produz uma mensagem de erro ( undefined reference to foo ) Pode ser ambígua: se existem várias definições para o mesmo símbolo em diferentes módulos Linker usa o conceito de símbolo forte e fraco (variáveis incializadas VS não inicializadas) e as seguintes regras: R1: não permite definição de >1 símbolos fortes R2: se houver definição de 1 símbolo forte e vários fracos, escolha a definição forte R3: se só houver definições de símbolos fracos, escolha qualquer uma (de a cordo com a ordem dos módulos)
7 Exemplos Linker escolhe o x de foo3.c por ser forte, e resultado é x= 15212! Linker escolhe qualquer um dos x (ambos fracos) e resultado pode ser igualmente inesperado! Mais um erro de difícil detecção Linker escolhe o x de foo5.c por ser forte, mas agora x de bar5.c ocupa 8 bytes, e f() sobre escreve y! Resultado é x= 0x Para identificar possíveis conflitos use flag warn-common no gcc
8 Relocação É o processo (no ligador) de atribuir endereços de carga às várias partes do programa: Ajustando o código e dados (.text e.data) para refletir os endereços designados e Levando em conta os endereços dos símbolos definidos em outros módulos Na resolução de referências, as posições são calculadas com relação ao endereço 0 (zero), que seria o início do código. Quando a relocação é feita as posições de memória calculadas na etapa anterior funcionarão como distâncias (offsets) Informação de relocação de m.o m.c int e=7; int main() { int r = a(); exit(0); } Disassembly of section.text: <main>: <main>: 0: 55 pushl %ebp 1: 89 e5 movl %esp,%ebp 3: e8 fc ff ff ff call 4 <main+0x4> 4: R_386_PC32 a 8: 6a 00 pushl $0x0 a: e8 fc ff ff ff call b <main+0xb> b: R_386_PC32 exit f: 90 nop Disassembly of section.data: <e>: 0: source: objdump
9 Informação de Relocação de a.o (.text) a.c extern int e; Disassembly of section.text: <a>: 0: 55 pushl %ebp int *ep=&e; 1: 8b movl 0x0,%edx int x=15; 6: 00 int y; 3: R_386_32 ep 7: a movl 0x0,%eax int a() { 8: R_386_32 x c: 89 e5 movl %esp,%ebp return *ep+x+y; e: addl (%edx),%eax } 10: 89 ec movl %ebp,%esp 12: addl 0x0,%eax 17: 00 14: R_386_32 y 18: 5d popl %ebp 19: c3 ret Informação de Relocação de a.o (.data) a.c extern int e; Disassembly of section.data: int *ep=&e; int x=15; int y; int a() { return *ep+x+y; } <ep>: 0: <x>: 4: 0f : R_386_32 e
10 Executável depois de resolução de referência e relocação (.text) <main>: : 55 pushl %ebp : 89 e5 movl %esp,%ebp : e call <a> : 6a 00 pushl $0x a: e8 35 ff ff ff call <_init+0x94> f: 90 nop <a>: : 55 pushl %ebp : 8b 15 1c a0 04 movl 0x804a01c,%edx : : a1 20 a movl 0x804a020,%eax c: 89 e5 movl %esp,%ebp e: addl (%edx),%eax : 89 ec movl %ebp,%esp : d0 a3 04 addl 0x804a3d0,%eax : : 5d popl %ebp : c3 ret Seção de Dados em 0x804a... Bibliotecas Permitem agrupar módulos objeto relacionados em um arquivo No momento da ligação, apenas os módulos necessários são copiados e combinados com o executável Para resolução de referências, processa-se as bibliotecas da esquerda para a direita! gcc main.c mylib.a /usr/lib/libm.a Driver gcc já amarra automaticamente com libc.a Para criar uma biblioteca, basta listar os arquivos objeto relocáveis, por exemplo: ar rcs mylib.a addvector.o multvector.o
11 Bibliotecas estáticas (archives) p1.c p2.c compilação compilação p1.o p2.o libc.a Linker (ld) p Arquivo executável somente conterá código e dados de libc que são referenciadas em p1.c e p2.c Carga (loading) O ato de copiar algumas seções para o espaço de endereçamento do processo, naturalmente,fazendo-se a relocação. ELF header Program header table (required for executables).text section.data section.bss section.symtab.rel.text.rel.data.debug Section header table (required for relocatables) Process image init and shared lib segments.text segment (r/o).data segment (initialized r/w).bss segment (uninitialized r/w) Virtual addr 0x080483e0 0x x0804a010 0x0804a3b0
12 Bibliotecas dinâmicas e compartilhadas Principais desvantagens de bibliotecas estáticas: Replicação de código comum nos executáveis Desperdício de espaço em disco e na memória Qualquer modificação (correção) nas bibliotecas requer uma re-amarração (re-linking) de todas as aplicações que as usam Bibliotecas dinâmicas (ou dynamic link libraries, DLLs) os módulos são dinâmicamente carregados e ligados à aplicação em tempo de carga ou em tempo de execução Vantagem adicional: estas bibliotecas podem ser compartilhadas por vários processos. Bibliotecas Dinâmicas e compartilhadas m.c a.c (cc1, as) m.o (cc1,as) a.o Linker (ld) Executável parcialmente ligado (em disco) p libc.so Biblioteca dinâmica Executável totalmente ligado (em RAM) Loader/Dynamic Linker (ld-linux.so) P Funções de libc.so chamdas por m.c & a.c são carregadas, ligadas, e compartilhadas entre vários processos.
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 maisOrdem 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 maisDesenvolvimento 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 maisArquitetura 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 maisLinguagem C. Produção de programas em C (Ligação estática) Centro de Cálculo Instituto Superior de Engenharia de Lisboa
Capítulo 7, secções.1-.9 Capítulo 4, secções.5-.11 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)
Leia maisLinguagem 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 maisGetting 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 maisProgramando em Assembly
Programando em Assembly precisa-se saber exatamente como interpretar & gerenciar a memória e como usar instruções de baixo nível para o processamento Não existem tipos e variáveis (apenas bytes na memória)
Leia maisA 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 maisSistemas Operacionais
Introdução Inst tituto de Info ormátic ca - UF FRGS Sistemas Operacionais i Introdução a gerência de memória Aula 9 Programa para executar tem que estar na memória Programa em execução é um processo Multiprogramação
Leia maisImplementaçã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 mais16. 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 maisSistemas Operacionais
Visão geral de montadores, ligadores e carregadores 2 a edição Revisão: Fev/2003 Sistemas Operacionais Montadores, ligadores e carregadores Anexo A Como um programa é construído até ser executado? Montadores
Leia maisIntel x AT&T - recapitulação
ASSEMBLY aula 2 Intel x AT&T - recapitulação mov mov int mov mov mov mov add lea sub Intel Code eax,1 ebx,0ffh 80h ebx, eax eax,[ecx] eax,[ebx+3] eax,[ebx+20h] eax,[ebx+ecx*2h] eax,[ebx+ecx] eax,[ebx+ecx*4h-20h]
Leia maisProcedimentos. 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 maisArquitectura e Organização de Computadores
Arquitectura e Organização de Computadores (micro-arquitectura) atributos visíveis ao programador: I.S.A. tamanho da palavra (bits) registos Componentes que realizam a arquitectura: organização do CPU
Leia maisPilha de execução Volnys Borges Bernal Departamento de Sistemas Eletrônicos (PSI) Escola Politécnica da USP
2005-2015 Volnys Bernal 1 Pilha de execução Volnys Borges Bernal volnys@lsi.usp.br Departamento de Sistemas Eletrônicos (PSI) Escola Politécnica da USP 2005-2015 Volnys Bernal 2 Agenda Os desafios da execução
Leia maisLic. Ciências da Computação
Arquitectura de Computadores Análise do Instruction Set Architecture (1) Lic. Ciências da Computação 1º ano 2007/08 A.J.Proença Tema Estrutura do tema ISA do IA32 1. Desenvolvimento de programas no IA32
Leia maisCOMPILAÇÃO. Ricardo José Cabeça de Souza
COMPILAÇÃO Ricardo José Cabeça de Souza www.ricardojcsouza.com.br Programas Código-fonte escrito em linguagem de programação de alto nível, ou seja, com um nível de abstração muito grande, mais próximo
Leia maisSoftware Básico. Silvio Fernandes Aula 15: Carregamento dinâmico
Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Software Básico Aula 15: Carregamento dinâmico Silvio Fernandes 2009.1 1 Introdução Bibliotecas
Leia maisLinguagens e a máquina
Linguagens e a máquina Seguem algumas breves definições das etapas utilizadas na geração de programas a partir de linguagens de programação: 1. A compilação pode ser entendida como o processo de traduzir
Leia maisArquitectura e Organização de Computadores
Arquitectura e Organização de Computadores (micro-arquitectura) atributos visíveis ao programador: I.S.A. tamanho da palavra (bits) registos Componentes que realizam a arquitectura: organização do CPU
Leia maisNivel de Linguagem de Montagem (Assembly)
Nivel de Linguagem de Montagem (Assembly) Orlando Loques setembro 2006 Referências: Structured Computer Organization (capítulo 7), A.S. Tanenbaum, (c) 2006 Pearson Education Inc Computer Organization and
Leia mais3. Linguagem de Programação C
Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3. Linguagem de programação C 3.1. Conceitos
Leia maisCompiladores Ambiente de Execução
Compiladores Ambiente de Execução Fabio Mascarenhas 2015.1 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 maisCapítulo 8: Memória Principal. Operating System Concepts 8 th Edition
Capítulo 8: Memória Principal Silberschatz, Galvin and Gagne 2009 Objetivos Fornecer uma descrição detalhada das várias formas de organizar a memória do computador Discutir várias técnicas de gerenciamento
Leia maisO Ligador Dinâmico e o Ligador de Tempo de Execução
Capítulo 8 O Ligador Dinâmico e o Ligador de Tempo de Execução 010000000000000000 010000020000000000 013333333333333333 do Processo Dinâmicos Reservado ao Sistema Não Mapeado Text Data BSS Heap Stack 010000000000000000
Leia maisESTRATÉGIAS DE ALOCAÇÃO AULA 11 Sistemas Operacionais Gil Eduardo de Andrade
ESTRATÉGIAS DE ALOCAÇÃO AULA 11 Sistemas Operacionais Gil Eduardo de Andrade O conteúdo deste documento é baseado no livro do Prof. Dr. Carlos Alberto Maziero, disponível no link: http://dainf.ct.utfpr.edu.br/~maziero
Leia maisFundamentos 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 maisAula 13 Implementação da Programação Modular
Aula 13 Implementação da Programação Modular Alessandro Garcia Alexander Chávez LES/DI/PUC-Rio Outubro 2016 Especificação Objetivo dessa aula Visão geral sobre compilação de programas modulares Estudar
Leia maisAula 12. Implementação da Programação Modular
Aula 12 Implementação da Programação Modular Prof. Alessandro Garcia Eduardo Fernandes (assistente) LES/DI/PUC-Rio Abril 2018 Especificação Objetivo dessa aula Visão geral sobre compilação de programas
Leia maisCI064 - Software Básico. Bruno Müller Junior
CI064 - Software Básico Bruno Müller Junior 12 de Março de 2012 2 Prefácio Como professor do departamento de informática da UFPR, ministrei várias disciplinas na área de sistemas, como Construção de Compiladores,
Leia maisConceitos 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 maisSoftware Básico. Versão 1.2
Software Básico para AMD64 Versão 1.2 BRUNO MÜLLER JUNIOR Fevereiro 2018 DEPARTAMENTO DE INFORMÁTICA UFPR 2015 Bruno Müller Junior Este texto está licenciado sob a Licença Attribution-NonCommercial-ShareAlike
Leia maisComputadores podem ser úteis em problemas que envolvem: Grande número de dados. Grande número de cálculos. Complexidade. Precisão.
O uso do computador Computadores podem ser úteis em problemas que envolvem: Grande número de dados. Grande número de cálculos. Complexidade. Precisão. Exemplos: Modelos meteorológicos. Cálculo estrutural.
Leia maisComputadores e Programação (DCC/UFRJ)
Computadores e Programação (DCC/UFRJ) Aula 6: 1 2 3 A necessidade dos programadores escreverem código em linguagem de montagem tem mudado ao longo dos últimos anos: de um programador capaz de escrever
Leia maisMIEI Sistemas de Computação 2017/18. Níveis de Abstração. TPC5 e Guião laboratorial. Luís Paulo Santos e Alberto José Proença
MIEI Sistemas de Computação 2017/18 Níveis de Abstração TPC5 e Guião laboratorial Luís Paulo Santos e Alberto José Proença ------------------------------------------------------------------------------------------------------------------------------------------------
Leia maisImplementando subprogramas
Implementando subprogramas Linguagens de Programação Marco A L Barbosa cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional. http://github.com/malbarbo/na-lp-copl
Leia maisAssembly x86. Hugo Bessa - hrba Paulo Serra Filho ptvsf
Assembly x86 Hugo Bessa - hrba Paulo Serra Filho ptvsf Roteiro Assembly Assemblers Sections Registradores Registradores de Segmentos Principais Operações do NASM Funcões e Macros Interrupções Compilando
Leia maisProgramação Estruturada
Programação Estruturada Organização de um ambiente computacional Professores Emílio Francesquini e Carla Negri Lintzmayer 2018.Q3 Centro de Matemática, Computação e Cognição Universidade Federal do ABC
Leia maisSistemas 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 maisSistemas Operacionais. Pilha de execução Volnys B. Bernal 1. Agenda. Pilha de execução. Os problemas. Os problemas.
25-215 Volns Bernal 1 25-215 Volns Bernal 2 Agenda Volns Borges Bernal volns@lsi.u.br Os problemas Controle do endereço de retorno da função Controle do quadro da pilha de Departamento de Sistemas Eletrônicos
Leia maisLinguagens de Programação Aula 11
Linguagens de Programação Aula 11 Celso Olivete Júnior olivete@fct.unesp.br Na aula passada Uma definição de subprograma descreve as ações representadas pelo subprograma Subprogramas podem ser funções
Leia maisLinguagem 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%LEOLRWHFDV(VWiWLFDVH'LQkPLFDV
38& 81,; Prof. Renato Mauro Carlos Henrique Pereira de Oliveira kkrj@terra.com.br 16 de setembro de 2002 %LEOLRWHFDV(VWiWLFDVH'LQkPLFDV %LEOLRWHFDV Biblioteca é um recurso de programação que trás vantagens
Leia maisCompiladores I Prof. Ricardo Santos (cap 1)
Compiladores I Prof. Ricardo Santos (cap 1) Compiladores Linguagens de programação são notações que permitem descrever como programas devem executar em uma máquina Mas, antes do programa executar, deve
Leia maisComputadores de Programação (DCC/UFRJ)
Computadores de Programação (DCC/UFRJ) Aula 14: 04 de junho de 2013 1 2 ...antigamente.. No início da Computação, todos os programas eram escritos em linguagem de montagem Complexidade, propenso a erros,
Leia maisFundamentos de Sistemas Operacionais
Fundamentos de Sistemas Operacionais Aula 7: Implementação de Processos e Threads Diego Passos Revisão Programação Concorrente e Multiprogramação SOs modernos permitem diversos processos em memória. Cada
Leia maisSegmentação com paginação Intel 386. Esquema de tradução de endereço Intel 386
Segmentação com paginação Intel 386 O processador Intel 386 usava segmentação com paginação para gerenciamento de memória com um esquema de paginação em dois níveis. Esquema de tradução de endereço Intel
Leia maisProgramaçã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 maisArquitectura de Computadores Y86 Instruções
Arquitectura de Computadores Y86 Instruções Créditos Randal E. Bryant http://csapp.cs.cmu.edu António Pina e Luís Paulo Santos DI/UM Arquitectura do Jogo de Instruções Linguagem de montagem Estado do processador
Leia maisConversões de Linguagens: Tradução, Montagem, Compilação, Ligação e Interpretação
Conversões de Linguagens: Tradução, Montagem, Compilação, Ligação e Interpretação Para executar uma tarefa qualquer, um computador precisa receber instruções precisas sobre o que fazer. Uma seqüência adequada
Leia maisEstruturas de Dados Aula 2: Estruturas Estáticas. Tipos Básicos. Quantos valores distintos podemos representar com o tipo char?
Estruturas de Dados Aula 2: Estruturas Estáticas Tipos Básicos Quantos valores distintos podemos representar com o tipo char? 1 Operadores de Incremento e Decremento ++ e -- Incrementa ou decrementa o
Leia maisEstruturas de Dados Aula 2: Estruturas Estáticas 02/03/2011
Estruturas de Dados Aula 2: Estruturas Estáticas 02/03/2011 Tipos Básicos Quantos valores distintos podemos representar com o tipo char? Operadores de Incremento e Decremento ++ e -- Incrementa ou decrementa
Leia maisSistemas Operacionais João Bosco T. Junior. Sistemas Operacionais João Bosco Junior - V1.3
João Bosco T. Junior Apresentação da Disciplina Bibliografia Sistemas Operacionais Modernos (3ª Ed.) Ed Prentice Hall, A. S. Tanenbaum Sistemas Operacionais (3ª Ed.) Sagra Luzzatto, Rômulo, Alexandre e
Leia maisCurso: LMCC Exame 1ª Chamada 14/Jun/06 Disciplina: Arquitectura de Computadores Duração: 2h30m
MCC Arquitectura de Computadores 2005/2006 Curso: LMCC Exame 1ª Chamada 14/Jun/06 Disciplina: Arquitectura de Computadores Duração: 2h30m Nota: Apresente sempre o raciocínio ou os cálculos que efectuar;
Leia maisSistemas Operacionais. Pilha de Execução Volnys B. Bernal 1. Agenda. Pilha de execução. Os problemas. Os problemas.
Eecução 17-29 - Volns Bernal 1 17-29 - Volns Bernal 2 Agenda Volns Borges Bernal volns@lsi.u.br http://www.lsi.u.br/~volns Os problemas Controle do endereço de orno da função Controle do quadro da pilha
Leia maisAssembly IA32 Procedimentos
1 Procedimentos Assembly IA32 Procedimentos Uma chamada a um procedimento implica a transferência de dados (na forma de parâmetros do procedimento e na forma de valores retornados pelo procedimento) e
Leia maisEA876 - Introdução a Software de Sistema
A876 - Introdução a Software de Sistema Software de Sistema: conjunto de programas utilizados para tornar o hardware transparente para o desenvolvedor ou usuário. Preenche um gap de abstração. algoritmos
Leia maisDesenvolvimento 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 maisLinguagem C Princípios Básicos (parte 1)
Linguagem C Princípios Básicos (parte 1) Objetivos O principal objetivo deste artigo é explicar alguns conceitos fundamentais de programação em C. No final será implementado um programa envolvendo todos
Leia maisMétodos de implementação de linguagens. Kellen Pinagé
Métodos de implementação de linguagens Kellen Pinagé Sumário Métodos de implementação de linguagens Compilação Interpretação pura Híbrido Métodos de implementação de linguagens Principais componentes de
Leia maisSistemas de Computação. Gerenciamento de memória
Gerenciamento de memória Localização de processos Um programa fica armazenado em disco como um arquivo executável binário e tem que ser colocado na memória para começar a ser executado Os processos podem
Leia maisUniversidade 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 maisUNIX 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 maisCompiladores 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 maisLinguagens de Programação Classificação
Classificação Classificação A proximidade que a linguagem de programação tem com a humana determina sua classe (o nível): Linguagem de máquina (primeira geração) Linguagem assembly - de montagem (segunda
Leia maisUniversidade 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 maisTEÓRICA. lb $t0, 1($t1)
T1: T2: T3: T4: T5: T6: T7: T: P: TEÓRICA As questões devem ser respondidas na própria folha do enunciado. As questões 1 a 4 são de escolha múltipla, e apenas uma das respostas está correcta, valendo 1
Leia maisSistemas Operacionais
Sistemas Operacionais CAP 2: Conceitos de Hardware e Software Prof. MSc. Diego R. Moraes diegorm@anhanguera.com Download de todo conteúdo da disciplina https://sites.google.com/site/diegorafaelmoraes/downloads
Leia maisPROGRAMAÇÃ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 maisAula 23: Noções de Compilação, Montagem, Link-edição, e Interpretação
Aula 23: Noções de Compilação, Montagem, Link-edição, e Interpretação Diego Passos Universidade Federal Fluminense Fundamentos de Arquiteturas de Computadores Diego Passos (UFF) Compilação, Montagem, Link-edição,
Leia maisUm Conjunto de Softwares Básicos Integrados para Arquitetura SIC/XE
Um Conjunto de Softwares Básicos Integrados para Arquitetura SIC/XE Argemiro Soares de Aliança Neto, Sílvio Roberto Fernandes de Araújo Departamento de Ciências Exatas e Naturais - DCEN Universidade Federal
Leia maisTipos Básicos. Operadores de Incremento e Decremento. Operador Sizeof. Estruturas de Dados Aula 2: Estruturas Estáticas
Tipos Básicos Quantos valores distintos podemos representar com o tipo char? Estruturas de Dados Aula 2: Estruturas Estáticas 03/03/2010 Operadores de Incremento e Decremento ++ e -- Incrementa ou decrementa
Leia maisAJProença, Sistemas de Computação, UMinho, 2017/18 1. Componentes (físicos) a analisar: a unidade de processamento / o processador:
Introdução aos Sistemas de Computação (4) Estrutura do tema ISC 1. Representação de informação num computador 2. Organização e estrutura interna dum computador 3. Execução de programas num computador 4.
Leia maisConceitos básicos sobre computadores (continuação)
SSC0101 - ICC1 Teórica Introdução à Ciência da Computação I Conceitos básicos sobre computadores (continuação) Prof. Vanderlei Bonato Prof. Cláudio Fabiano Motta Toledo Sumário O que é um computador e
Leia maisCompiladores Ambiente de Execução
Compiladores Ambiente de Execução Fabio Mascarenhas 2015.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 maisGerenciamento de Memória
Gerenciamento de Memória Conceitos básicos Swapping Alocação contígua Paginação Segmentação Segmentação com paginação Atribuição de endereços (ligação) de código e dados na memória A atribuição de endereços
Leia maisA arquitectura IA32. A arquitectura de um processador é caracterizada pelo conjunto de atributos que são visíveis ao programador.
A arquitectura IA32 A arquitectura de um processador é caracterizada pelo conjunto de atributos que são visíveis ao programador. Tamanho da palavra Número de registos visíveis Número de operandos Endereçamento
Leia maisConceitos Básicos de Programação
BCC 201 - Introdução à Programação Conceitos Básicos de Programação Guillermo Cámara-Chávez UFOP 1/53 Conceitos básicos I Variável 2/53 Conceitos básicos II Posição de memoria, identificada através de
Leia maisSistemas Operacionais
Provocação (brainstorming) Sistemas Oeracionais Introdução a gerência de memória Trabalho sob a Licença Atribuição-SemDerivações-SemDerivados 3. Brasil Creative Commons. Para visualizar uma cóia desta
Leia maisSoftware Básico. para AMD64 BRUNO MÜLLER JUNIOR DEPARTAMENTO DE INFORMÁTICA UFPR. Versão 0.2. Setembro 2015
Software Básico para AMD64 Versão 0.2 BRUNO MÜLLER JUNIOR Setembro 2015 DEPARTAMENTO DE INFORMÁTICA UFPR 2015 Bruno Müller Junior Qualquer parte desta publicação pode ser reproduzida, desde que citada
Leia maisLaborató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 maisLeandro Soares de Sousa (DSc.) Página: Aula 04 - desenvolvimento multithread
Tópicos Especiais Leandro Soares de Sousa (DSc.) e-mail: lsousa@id.uff.br Página: http://www.ic.uff.br/~lsousa Aula 04 - desenvolvimento multithread Mais e mais ferramentas! 2 Processos e Threads: desenvolvimento
Leia mais25/8/2010. Praticamente todas as arquiteturas de computadores fornecem mais de um modo de
Arquitetura de Computadores Conjuntos de Instruções: modos de endereçamento e formatos Prof. Marcos Quinet Universidade Federal Fluminense P.U.R.O. Endereçamento Normalmente, os campos de endereço são
Leia maisImplementação de subprogramas
Implementação de subprogramas Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual
Leia maisMódulo 5 Vetores e Alocação Dinâmica
Estruturas de Dados Módulo 5 Vetores e Alocação Dinâmica 1/9/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora
Leia maisIntrodução. Nível da Linguagem de Montagem. Linguagem de Montagem (2) Linguagem de Montagem (1) Linguagem de Montagem
Nível da Linguagem de Montagem (Aula 15) Linguagem de Montagem Roberta Lima Gomes - LPRM/DI/UFES Sistemas de Programação I Eng. Elétrica 2007/2 Introdução Tradutores Programas que convertem um programa
Leia maisMétodos Computacionais
Métodos Computacionais Objetivos da Disciplina e Introdução a Linguagem C Construções Básicas Objetivos da Disciplina Objetivo Geral Discutir técnicas de programação e estruturação de dados para o desenvolvimento
Leia maisHardware e Software. Prof. Paulo Cesar F. de Oliveira, BSc, PhD
Prof. Paulo Cesar F. de Oliveira, BSc, PhD 1 Seção 1.1 Hardware 2 Unidades Funcionais Processador / U C P Unidade Lógica e Aritmética Unidade de Controle Registradores Memória Principal Dispositivos de
Leia maisPorque usar um montador? Formato de uma linha de código fonte:
Instruções de uso do montador DAEDALUS (baseadas em texto extraído da monografia apresentada como trabalho de diplomação no curso de Bacharelado em Ciência da Computação por Luís Ricardo Schwengber, sob
Leia maisDepartamento 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 maisAmbiente de desenvolvimento
Linguagem C Ambiente de desenvolvimento Um programa em C passa por seis fases até a execução: 1) Edição 2) Pré-processamento 3) Compilação 4) Linking 5) Carregamento 6) Execução Etapa 1: Criação do programa
Leia maisSumá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 maisGuia Rápido MIPS. Tipos de Dados e Formatações
Tipos de Dados e Formatações Guia Rápido MIPS Tipos de Dados: Todas as instruções são de 32 bits Byte = 8 bits Halfword = 2 bytes Word = 4 bytes Um caractere ocupa 1 byte na memória Um inteiro ocupa 1
Leia maisPCS3616. Programação de Sistemas (Sistemas de Programação) Semana 8, Aula 14. Editores de Ligação e Relocadores Programação em linguagem de montagem
PCS3616 Programação de Sistemas (Sistemas de Programação) Semana 8, Aula 14 Editores de Ligação e Relocadores Programação em linguagem de montagem Escola Politécnica da Universidade de São Paulo Roteiro
Leia maisAssembly na arquitetura IA-32 com NASM no Linux
Assembly na arquitetura IA-32 com NASM no Linux Prof. Dr. Luciano José Senger 1 Introdução A Figura 1 mostra os registradores principais para a arquitetura IA-32. Essa arquitetura trabalha com palavras
Leia maisFluxo de Execução em Assembly
Fluxo de Execução em Assembly A forma natural de execução de um programa é sequencial: CPU busca instruções na memória em endereços sequenciais Instruções de desvio de assembly servem para quebrar a execução
Leia maisSubstituição de Páginas
Substituição de Páginas Pedro Cruz EEL770 Sistemas Operacionais Lembranças sobre memória Tempo virtual Segmentação de memória Realocação Estática Dinâmica Sobreposições MMU Memory Management Unit Página
Leia mais