Em um sentido geral, uma biblioteca de sistema é um repositório de dados usado por sistemas operacionais ou software aplicativo durante a operação ou compilação.
As bibliotecas do sistema contêm sub-rotinas e funções comumente usadas. Com relação à programação, as bibliotecas armazenam classes comuns para trabalhar com gráficos, matrizes, diálogos e muito mais.
O conceito de biblioteca de sistema é aplicável a programas individuais e a sistemas operacionais como um todo, e isso se aplica a famílias de Windows, UNIX e Mac.
A definição de "biblioteca" apareceu pela primeira vez em 1951 no livro de M. Wilkes, D. Wheeler e S. Gill "Programming for Electronic Calculating Machines"
De acordo com o princípio de operação, as bibliotecas do sistema são divididas em dinâmicas e estáticas.
Bibliotecas dinâmicas
Bibliotecas de vínculo dinâmico são componentes carregados na memória quando solicitados por um programa em execução. Assim, não há necessidade de copiar o código da sub-rotina em cada aplicativo - as funções mais comuns são armazenadas como uma biblioteca.
Além disso, a biblioteca carregada na RAM pode ser usada simultaneamente por vários aplicativos, o que economiza recursos do sistema. Isso era especialmente verdadeiro nos primeiros dias da computação.
Os arquivos da Dynamic Link Library no Windows OC têm a extensão.dll (Dynamic Link Library) e são armazenados no diretório system32. Componentes semelhantes em sistemas semelhantes ao UNIX são chamados de objetos compartilhados e têm a extensão.so, no Mac OS -.dlyb.
Maurice Wilkes e outros deram a seguinte definição a uma biblioteca - um programa curto e pré-preparado para operações computacionais individuais e freqüentemente encontradas (padrão).
Não foi possível obter todas as vantagens de uma abordagem modular para a execução do programa. Isso se deve ao fenômeno conhecido como DLL hell, no qual o programa solicita simultaneamente diferentes versões da mesma biblioteca (DLL). Isso leva a falhas e redução da confiabilidade do sistema operacional.
Nos sistemas operacionais modernos da família Windows, para evitar conflitos, é permitido o uso de diferentes versões de bibliotecas, o que aumenta a confiabilidade, mas contradiz o próprio princípio da modularidade.
Bibliotecas estáticas
Bibliotecas estáticas também armazenam códigos de sub-rotinas e funções, mas, ao contrário das dinâmicas, são usadas na compilação de programas. Ou seja, todo o código necessário está incluído no programa. O aplicativo torna-se autônomo, independente de bibliotecas dinâmicas, mas cresce em tamanho.
Via de regra, no Windows, os arquivos dessas bibliotecas têm a extensão.lib, em sistemas semelhantes ao UNIX -.a.
Trabalhar com a maioria das linguagens compiladas, por exemplo, C, C ++, Pascal, é impossível sem bibliotecas estáticas.