Software Básico Silvio Fernandes 2009.1 Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula.

Slides:



Advertisements
Apresentações semelhantes
Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 11 Criado por Frederick H. Colclough, Colorado Technical University Compilação Separada.
Advertisements

Sistemas Operacionais
Software Básico Silvio Fernandes
Software Básico Silvio Fernandes
Parte 1: Organização de Computadores
SISTEMAS OPERACIONAIS (SO) Aula 5 Luciana A. F. Martimiano 2002
Software Básico Silvio Fernandes Universidade Federal Rural do Semiárido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula 05:
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 06: Funções.
Noções de Sistemas Operacionais
Teoria da Computação MÁQUINA DE TURING (Continuação) Fabrício Dias
Capítulo 1 Introdução.
Programa de Pós-Graduação Lato Sensu MBA em Gestão de Software
ELEMENTOS DA INFORMÁTICA
Sistemas Operacionais de Rede Professor: João Paulo de Brito Gonçalves
Software Básico Silvio Fernandes
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula.
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula.
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula.
Sistemas Operacionais
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula.
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula.
Software Básico Silvio Fernandes
ODBC.
Threads Estagiário: Bruno Guazzelli Batista Slides de autoria do Prof Drº Marcos José Santana baseados no livro Sistemas Operacionais Modernos de A. Tanenbaum.
Sistemas Operacionais
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Universidade Federal de Minas Gerais
Tecnologia da Informação Orientação a Aspectos
Arquitetura de Computadores
Aula 6 Subprogramas Universidade do Vale do Rio dos Sinos
Aula 10 Manipulação de Exceções
09/03/10 20:13 Claudio de Oliveira – 1/21.
Ponteiros.
Threads.
Listas Encadeadas.
Revisão da Linguagem C.
Sistemas Operacionais
Sistemas Operacionais I
Sistemas Operacionais
JAVA: Conceitos Iniciais
Capítulo 9: Memória Virtual
PROGRAMAÇÃO I UNIDADE 1.
Aula prática 13 Orientação a Objetos – C++ Parte 1
Linguagem de Programação II Parte IX
SISTEMAS OPERACIONAIS
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 02: Introdução.
CADEIA DE CARACTERES (Strings)
PnP – Plug And Play Fernando Witzke Luiz Mello
Sistemas Operacionais
Sistemas Distribuídos
Introdução a Linguagens de Programação
UNIVERSIDADE FEDERAL RURAL DE PERNAMBUCO BACHARELADO EM SISTEMAS DE INFORMAÇÃO Recife 2014.
Sistemas Operacionais
Tipos Abstratos de Dados
Módulos de um S.O. Tiago Gomes Nº21 11ºi.
Geração de Código aula-12-geração-de-código.pdf.
Sistemas Operacionais
SISTEMAS OPERACIONAIS I Gerenciamento de Arquivos
Capítulo 5 Entrada/Saída 5.1 Princípios do hardware de E/S
Serviço Nacional de Aprendizagem Comercial do Rio Grande do Sul Informação e Comunicação Habilitação Técnica de Nível Médio Técnico em Informática Prof.
Nomeação de arquivos – Cap 4.1.1
Sistemas Operacionais
Back-End Compilação aula-11-back-end.pdf.
1 Baseado em whitepapers/eclipse-overview.pdf Nelson Lago IME/USP 04/2003 A Plataforma Eclipse.
Programação Computacional Aula 9: Meu primeiro programa em C
Sistemas Operacionais IV – Gerenciamento de E/S
Linguagem de Programação
Capítulo 5 Entrada/Saída 5.1 Princípios do hardware de E/S
COMPILADORES 02 Prof. Marcos. COMPILADORES Do Programa à Execução Computadores das mais variadas arquiteturas têm funcionamento:
Transcrição da apresentação:

Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Exatas e Naturais Ciência da Computação Aula 15: Carregamento dinâmico 1

Introdução Bibliotecas contém código e dados auxiliares, que provém serviços a programas independentes, o que permite o compartilhamento e a alteração de código e dados de forma modular Alguns executáveis são tanto programas independentes quanto bibliotecas, mas a maioria das bibliotecas não são executáveis A maior parte dos SO modernos provê bibliotecas que implementam a maioria dos serviços do sistema 2

Introdução Bibliotecas podem ser classificadas – pela maneira como são compartilhadas, – pela maneira como são ligadas – e por quando são ligadas 3

Ligação dinâmica Significa que os dados em uma biblioteca não são copiados para um novo executável ou biblioteca em tempo de compilação, mas permanecem em um arquivo separado no disco O ligador apenas grava quais bibliotecas são necessárias para o executável em um índice A ligação pode acontecer em tempo de carregamento ou em tempo de execução Plugins são uma utilização comum de bibliotecas de ligação dinâmica 4

Carregamento dinâmico É um subconjunto da ligação dinâmica em que uma biblioteca ligada é carregada ou descarregada do sistema em tempo de execução após requisição A requisição pode ser feita implicitamente em tempo de compilação, ou explicitamente em tempo de execução A maioria dos SO que suportam a ligação dinâmica também suportam o carregamento dinâmico através de uma API específica 5

Bibliotecas dinâmicas no Linux O Linux oferece suporte a dois tipos de bibliotecas – A biblioteca estática contém funcionalidade ligada, de forma estática, a um programa no momento da compilação – As bibliotecas dinâmicas, que são carregadas quando um aplicativo é carregado e a ligação ocorre no momento da execução 6

Bibliotecas dinâmicas no Linux Hierarquia de bibliotecas no Linux 7

Bibliotecas dinâmicas no Linux As bibliotecas estáticas podem ser úteis em pequenos programas, que exigem funcionalidade mínima Para programas que exigem várias bibliotecas, as bibliotecas compartilhadas podem reduzir a área de cobertura de memória do programa Com uma biblioteca estática, cada programa de execução tem sua própria cópia da biblioteca 8

Bibliotecas dinâmicas no Linux GNU/Linux fornece duas formas de lidar com as bibliotecas compartilhadas – É possível vincular dinamicamente seu programa com a biblioteca compartilhada, fazendo com que o Linux carregue a biblioteca na execução – Fazer com que o programa chame funções seletivamente com a biblioteca em um processo chamado carregamento dinâmico Um programa pode carregar uma biblioteca específica e depois chamar uma determinada função dentro daquela biblioteca 9

Bibliotecas dinâmicas no Linux Vínculo estático X dinâmico 10

Bibliotecas dinâmicas no Linux A API de Dynamic Loading (DL) existe para o carregamento dinâmico e permite que uma biblioteca compartilhada fique disponível para um programa de espaço de usuário 11 FunçãoDescrição dlopen Torna um arquivo de objeto acessível a um programa dlsym Obtém o endereço de um símbolo dentro de um arquivo de objeto dlopen dlerror Retorna um erro em sequência do último erro ocorrido dlcloseFecha um arquivo de objeto

Bibliotecas dinâmicas no Windows Dynamic-link library (Biblioteca de ligação dinâmica) ou DLL, é a implementação feita pela Microsoft para o conceito de bibliotecas compartilhadas Essas bibliotecas geralmente tem as extensões DLL, OCX (para bibliotecas que contêm controles ActiveX), ou DRV (para drivers de sistema legacy) 12

Bibliotecas dinâmicas no Windows Os formatos de arquivos para DLL são os mesmos dos arquivos executáveis para Windows – Podem conter códigos, dados, e recursos (ícones, fontes, cursores, entre outros) em qualquer combinação O propósito original das DLL era economizar espaço em disco e memória necessária para aplicativos, armazenando-as localmente no disco rígido 13

Bibliotecas dinâmicas no Windows As DLL proveem os benefícios comuns de bibliotecas compartilhadas, como a modularidade – Uso de interfaces genéricas para plug-ins Um problema significante, conhecido como "DLL hell" (literalmente, o inferno das DLL), ocorre quando vários aplicativos entram em conflito sobre qual versão de uma biblioteca deve ser utilizada 14

Bibliotecas dinâmicas no Windows Cada função exportada por uma DLL é identificada por um numeral ordinal e, opcionalmente, um nome Esse numeral representa a posição do ponteiro de endereçamento das funções, na Tabela de Endereços de Exportação da DLL 15

Bibliotecas dinâmicas no Windows Arquivos DLL podem ser carregados explicitamente em tempo de execução, um processo chamado pela Microsoft como ligação dinâmica em tempo de execução, utilizando a função LoadLibrary (ou LoadLibraryEx) de sua API Note que com a ligação implícita em tempo de execução, chamada pela Microsoft como ligação dinâmica em tempo de carregamento, se o arquivo DLL não for encontrado, o Windows mostrará uma mensagem de erro e não carregará o aplicativo 16

Bibliotecas dinâmicas no Windows O desenvolvedor não tem maneiras de tratar a ausência de arquivos DLL ligados implicitamente pelo linker de tempo de compilação Por outro lado, com a ligação explícita em tempo de execução, os desenvolvedores tem a oportunidade de criar um tratamento para esse tipo de exceção A rotina de ligação explícita em tempo de execução é a mesma em qualquer linguagem, pois ela depende da API do Windows e não dos construtores das linguagens 17

Referências ary/l-dynamic-libraries/index.html uta%C3%A7%C3%A3o) 18