Você está na página 1de 6

COLGIO ETAPA 1 ANO E.M.

_______________________________________________________________________________________________

BIBLIOTECAS
Na cincia da computao, biblioteca uma coleo de subprogramas utilizados no desenvolvimento de software. Biblioteca contm cdigos e dados auxiliares, que provm servios a programas independentes, o que permite o compartilhamento e a alterao de cdigo e dados de forma modular. Alguns executveis so tanto programas independentes quanto bibliotecas, mas a maioria das bibliotecas no so executveis. Executveis e bibliotecas fazem referncias mtuas conhecidas como ligaes, tarefa tipicamente realizada por um linker. A maior parte dos sistemas operacionais modernos prov bibliotecas que implementam a maioria dos servios do sistema, que transformaram em comodidades os servios que uma aplicao moderna espera que sejam providos pelo sistema operacional. Assim sendo, a maior parte do cdigo utilizado em aplicaes modernas fornecido por estas bibliotecas. Bibliotecas podem ser classificadas pela maneira como so compartilhadas, pela maneira como so ligadas e por quando so ligadas. Bibliotecas tradicionais Historicamente, as bibliotecas consistiam de um conjunto de rotinas que eram copiadas para uma aplicao-alvo pelo compilador ou linker, produzindo uma aplicao executvel independente, ou stand-alone. Os fabricantes de compiladores proviam bibliotecas-padro (por exemplo, a biblioteca padro do C), mas os programadores tambm podiam criar suas prprias bibliotecas para uso prprio ou distribuio. Ligao dinmica Ligao dinmica significa que os dados em uma biblioteca no so copiados para um novo executvel ou biblioteca em tempo de compilao, mas permanecem a um arquivo separado no disco. O linker realiza uma quantidade mnima de trabalho em tempo de compilao, ele apenas grava quais bibliotecas so necessrias para o executvel em um ndice. A maior parte do trabalho feita quando a aplicao carregada em memria ou durante a execuo do processo. O cdigo de ligao necessrio na verdade parte do sistema operacional subjacente. Na hora apropriada, o carregador do programa encontra as bibliotecas relevantes no disco e adiciona os dados relevantes da biblioteca no espao de memria do processo. Alguns sistemas operacionais so apenas capazes de ligar uma biblioteca em tempo de carregamento, antes que a execuo do processo se inicie, outros podem ser capazes de esperar at depois do incio da execuo e apenas ligar a biblioteca quando ela for
1
_______________________________________________________________________________________________

LABORATRIO DE INFORMTICA

COLGIO ETAPA 1 ANO E.M.


_______________________________________________________________________________________________

referenciada (ou seja, durante o tempo de execuo). Este ltimo freqentemente chamado de "carregamento atrasado". Em ambos os casos, a ligao dita dinmica. Plug-ins so utilizaes comuns de bibliotecas de ligao dinmica, algo especialmente til quando as bibliotecas podem ser substitudas por outras com interfaces similares, mas funcionalidades diferentes. Diz-se que um software possui uma "arquitetura de plug-ins" se ele utiliza bibliotecas para funcionalidades essenciais com a inteno de que elas possam ser substitudas. Note, entretanto, que o uso de bibliotecas de ligao dinmica na arquitetura de uma aplicao no necessariamente significa que elas possam ser substitudas. A ligao dinmica foi originalmente desenvolvida no sistema operacional Multics, a partir de 1964. Ela tambm era uma caracterstica do Michigan Terminal System, construdo no final dos anos 1960. No Microsoft Windows, bibliotecas de ligao dinmica so chamadas dynamic-link libraries. Realocao Uma sutileza com a qual o carregador de programas tem que lidar que a localizao real dos dados da biblioteca no conhecida at que o executvel e todas as bibliotecas a ele associadas sejam carregadas para a memria. Isto se deve ao fato de que as localizaes de memria utilizadas dependero de quais bibliotecas foram carregadas. No possvel armazenar uma localizao absoluta para os dados dentro do prprio executvel, nem mesmo na biblioteca, uma vez que isto resultaria em conflitos entre diferentes bibliotecas, isto , se duas bibliotecas distintas alocassem espaos de memria iguais ou sobrepostos, seria impossvel usar as duas no mesmo programa. Isto pode vir a mudar com a adoo de arquiteturas de 64-bits, pois elas oferecem endereos de memria virtual suficientes para garantir que cada biblioteca escrita receba sua faixa de endereos nica. Seria possvel, em teoria, examinar o programa durante o tempo de carregamento e substituir cada referncia a dados na biblioteca por ponteiros para as posies de memria apropriadas uma vez que todas as bibliotecas tivessem sido carregadas. Contudo, este mtodo consumiria quantidades inaceitveis de tempo ou memria. Em vez disso, a maioria dos sistemas de bibliotecas dinmicas cria uma tabela de smbolos com endereos vazios no programa em tempo de compilao. Todas as referncias ao cdigo ou dados na biblioteca passam por esta tabela, chamada diretrio de importao. Durante o tempo de carregamento esta tabela modificada com a localizao dos cdigos e dados na biblioteca pelo carregador de programas. Este processo ainda lento a ponto de comprometer a performance de programas que faam uso de outros programas a uma taxa muito alta, como o caso de alguns shell scripts. A biblioteca, por sua vez, contm uma tabela com todos os mtodos que a compem, conhecidos como pontos de entrada. Chamadas biblioteca passam por esta tabela, procurando pela localizao do cdigo na memria e ento os executando. Isto introduz
2
_______________________________________________________________________________________________

LABORATRIO DE INFORMTICA

COLGIO ETAPA 1 ANO E.M.


_______________________________________________________________________________________________

uma sobrecarga na chamada de biblioteca, mas o atraso , em geral, to pequeno que pode ser negligenciado. Localizando bibliotecas em tempo de execuo Linkers e carregadores de programas dinmicos variam amplamente em funcionalidade. Alguns dependem de caminhos explcitos armazenados no arquivo executvel. Qualquer modificao no nome da biblioteca ou layout do sistema de arquivos causar falha nestes sistemas. Mais comumente, apenas um nome da biblioteca (e no do caminho) armazenado no executvel, e o sistema operacional prov um sistema para encontrar a biblioteca no disco, baseado em algum algoritmo. A maioria de sistemas Unix-like possuem uma "busca de caminho" especificando o sistema de arquivos no qual procurar as bibliotecas dinmicas. Em outros sistemas, o caminho padro especificado em um arquivo de configurao, em outros, codificado no carregador de programas dinmico. Alguns formatos de arquivos executveis podem especificar diretrios adicionais nos quais procurar por bibliotecas de um programa em particular. Ele pode geralmente ser relido com uma varivel de ambiente, embora ela esteja desabilitada para programas setuid e setgid, ento o usurio no pode forar tal programa a rodar cdigo arbitrrio. Desenvolvedores de bibliotecas so encorajados a colocar suas bibliotecas dinmicas em locais no caminho de busca padro. Por outro lado, isto pode tornar a instalao de novas bibliotecas problemtica, e estes caminhos conhecidos rapidamente se tornarem padro para um nmero crescente de arquivos de biblioteca, tornando o gerenciamento mais complexo. O Windows verifica o Registro do Sistema para determinar o lugar prprio para achar uma DLL ActiveX, mas para outras DLL ele verifica o diretrio de onde o programa foi carregado, o diretrio corrente de trabalho (somente nas antigas verses de Windows), quaisquer diretrios selecionados pela chamada da funo SetDllDirectory(), os diretrios System32, System e Windows, e finalmente, os diretrios especificados pela varivel de ambiente PATH. O OpenStep usa um sistema mais flexvel, coletando uma lista de bibliotecas de um nmero conhecido de localizaes (similar ao conceito de PATH) quando o sistema se inicia. O deslocamento de alguma biblioteca no causa problemas, no entanto um tempo maior ser necessrio durante o primeiro incio do sistema. Uma das grandes desvantagens da ligao dinmica que os executveis dependem de bibliotecas armazenadas separadamente para o correto funcionamento. Se uma biblioteca apagada, movida, ou renomeada, ou ainda se uma verso incompatvel de uma DLL copiada para o lugar onde procurada, o executvel pode ter mal funcionamento ou mesmo falhar no carregamento, danificando arquivos vitais usados por quase todos os executveis do sistema (como a biblioteca C libc.so nos sistemas
3
_______________________________________________________________________________________________

LABORATRIO DE INFORMTICA

COLGIO ETAPA 1 ANO E.M.


_______________________________________________________________________________________________

Unix), tornando o sistema inopervel. No Windows isso comumente chamado de DLL hell. Carregamento dinmico O Carregamento dinmico um subconjunto da ligao dinmica em que uma biblioteca ligada dinmica carregada ou descarregada do sistema em tempo de execuo aps requisio. A requisio pode ser feita implicitamente em tempo de compilao, ou explicitamente em tempo de execuo. Requisies implcitas so feitas ao adicionar referncias s bibliotecas a um arquivo objeto pelo linker. Requisies explcitas so feitas pelas aplicaes atravs do uso de uma API de ligao. A maioria dos sistemas operacionais que suportam as ligaes dinmicas, tambm suportam os carregamentos dinmicos atravs de uma API especfica. Bibliotecas remotas Outra soluo para a questo das bibliotecas utilizar executveis completamente separados e cham-los atravs de chamadas de procedimento remoto (RPC). Essa abordagem maximiza o reaproveitamento do sistema operacional, o cdigo necessrio para suportar a biblioteca o mesmo usado para prover o suporte e a segurana da aplicao para os outros programas. Adicionalmente, esse sistema remoto no requer que a biblioteca esteja na mesma mquina do executvel, as chamadas podem ser transmitidas por uma rede. A desvantagem que cada chamada da biblioteca implica uma sobrecarga considervel. Entretanto, essa abordagem tornou-se popular em diversas reas especficas, como sistemas cliente-servidor e servidores e aplicao. Bibliotecas compartilhadas Alm de poderem ser carregadas estaticamente ou dinamicamente, bibliotecas tambm so classificadas de acordo com como so compartilhadas pelos programas. Bibliotecas dinmicas quase sempre fornecem alguma forma de compartilhamento, permitindo que sejam utilizadas por diferentes programas ao mesmo tempo. Por definio, bibliotecas estticas no podem ser compartilhadas, pois so ligadas individualmente a cada programa.

4
_______________________________________________________________________________________________

LABORATRIO DE INFORMTICA

COLGIO ETAPA 1 ANO E.M.


_______________________________________________________________________________________________

O termo biblioteca compartilhada ambguo, pois se refere a dois conceitos distintos. O primeiro o compartilhamento de cdigo localizado no disco por programas no relacionados. O segundo o compartilhamento de cdigo carregado na memria, quando dois programas executam a mesma pgina fsica da RAM, mapeada em diferentes espaos de endereamento. O segundo caso possui algumas vantagens. Por exemplo, as aplicaes tm geralmente um tamanho pequeno e so carregadas instantaneamente, a vasta maioria do cdigo est localizada em bibliotecas j carregadas pelo sistema operacional. Mas existe um custo, pois o cdigo compartilhado deve ser escrito para ser executado em um ambiente multitarefa, o que afeta o desempenho. Na maioria dos sistemas operacionais modernos, o compartilhamento de bibliotecas pode ser do mesmo formato dos executveis. Isso permite que o carregador de programas seja o mesmo para executveis e bibliotecas, e que um executvel seja usado como biblioteca dinmica, se tiver uma tabela de smbolos. No Windows o conceito vai alm, pois mesmo recursos de sistema como fontes e cones so adicionados a uma DLL. Bibliotecas objeto Apesar da ligao dinmica ter sido desenvolvida na dcada de 1960, somente no final da dcada de 1980 a tecnologia atingiu o consumidor final. Durante a dcada de 1990 j estava disponvel na maioria dos sistemas operacionais. Durante o mesmo perodo a programao orientada a objeto tornou-se cada vez mais significativa no desenvolvimento de software. POO em tempo de execuo requer informaes adicionais que bibliotecas tradicionais no fornecem. Alm dos nomes e dos pontos de entrada da biblioteca, tambm requerem uma lista de objetos do qual dependem. Como no caso de uma herana, que separa partes de uma definio em diferentes pontos do cdigo. Em um sistema verdadeiramente orientado a objeto, as bibliotecas podem no ser conhecidas em tempo de compilao. Ainda no mesmo perodo outra rea de desenvolvimento era o conceito de execuo remota, em que um computador cliente executaria os servios de um mainframe. O cliente manteria mensagens para a central a fim de receber pacotes de dados para apresentar. Chamadas de procedimento remoto j eram usadas para essas tarefas, ainda que no houvesse um sistema padro para tal. Os dois conceitos logo foram fundidos, produzindo um formato de biblioteca orientada a objeto que pudesse ser executado em qualquer local. Tais sistemas foram denominados bibliotecas objeto, ou objetos distribudos se suportassem acesso remoto. A Component Object Model da Microsoft exemplo desse tipo de biblioteca para uso local, e a DCOM para uso remoto.
5
_______________________________________________________________________________________________

LABORATRIO DE INFORMTICA

COLGIO ETAPA 1 ANO E.M.


_______________________________________________________________________________________________

Por um tempo bibliotecas objeto foram sensao do mundo da programao, existindo esforos para criar sistemas que pudessem ser executados em diferentes plataformas. O que sucedeu foi que o conceito foi caindo em desuso, com exceo da COM da Microsoft e o PDO da Apple.

Fonte : http://www.wikipedia.org/
6
_______________________________________________________________________________________________

LABORATRIO DE INFORMTICA

Você também pode gostar