A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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.

Apresentações semelhantes


Apresentação em tema: "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."— Transcrição da apresentação:

1 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 15: Carregamento dinâmico 1

2 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

3 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

4 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

5 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

6 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

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

8 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

9 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

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

11 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

12 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

13 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

14 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

15 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

16 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

17 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

18 Referências http://www.ibm.com/developerworks/br/libr ary/l-dynamic-libraries/index.html http://pt.wikipedia.org/wiki/Biblioteca_(comp uta%C3%A7%C3%A3o) http://pt.wikipedia.org/wiki/DLL 18


Carregar ppt "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."

Apresentações semelhantes


Anúncios Google