close

Zlib

Gå til navigasjon Gå til søk


zlib
Info-ZIP-komponent
zlib-logo
Generell informasjon
programtype Datakomprimering
utvikler
  • Mark Adler
  • Jean Loup Gailly
Første utgivelse 1. mai 1995
Tillatelse Zlib lisens
Teknisk informasjon
Planlagt inn C
Versjoner
Siste stabile versjon 1.2.12 (27. mars 2022)
Lenker

zlib er et programvarebibliotek som brukes til datakomprimering . Den ble skrevet av Jean-loup Gailly og Mark Adler og er en abstraksjon av DEFLATE -komprimeringsalgoritmen som brukes i gzip -filkomprimeringsprogrammet . zlib er også en viktig komponent i mange programvareplattformer, inkludert Linux, Mac OS X og iOS. Det har også blitt brukt i videospillkonsoller som PlayStation 4 , PlayStation 3 , Wii U , Wii , Xbox One og Xbox 360.

Den første offentlige versjonen av zlib, 0.9, ble utgitt 1. mai 1995 og var opprinnelig ment for bruk med  libpng -biblioteket . Det er gratis programvare distribuert under  Zlib-lisensen .

Evner

Innkapsling

zlib-komprimerte data er vanligvis skrevet av en gzip eller zlib wrapper. Innpakningen innkapsler de rå DEFLATE-dataene ved å legge til en header og en hale. Dette gir strømidentifikasjon og feildeteksjon som ikke er gitt i de rå DEFLATE-dataene.

Gzip-headeren, som brukes allestedsnærværende i gzip-filformatet, er større enn zlib-headeren fordi den lagrer filnavnet og annen filsysteminformasjon.

Algoritme

Fra september 2018 støtter zlib bare én algoritme, kalt  DEFLATE , som er en variant av LZ77-algoritmen (Lempel–Ziv 1977). Denne algoritmen gir god komprimering på et bredt utvalg av data med minimal bruk av systemressurser. Det er også algoritmen som brukes i  ZIP-arkivformatet .

Overskriften tillater andre algoritmer, men foreløpig er ingen implementert.

Ressursbruk

Zlib tilbyr fasiliteter for overvåking av prosessor- og minnebruk. Du kan spesifisere en parameter for å øke hastigheten til skade for kompresjonen. Minnebruken kan også være begrenset.

Strategi

Komprimering kan optimaliseres for visse data. Hvis du bruker data som alltid opprettholder en bestemt struktur, kan bruk av en spesifikk strategi forbedre komprimeringsforhold og ytelse. For eksempel, hvis dataene inneholder lange lengder av gjentatte byte, kan RLE-strategien ( RLE- koding ) gi gode hastighetsresultater. For generelle data foretrekkes standardinnstillingene.


Feilhåndtering

Feil i de komprimerte dataene kan oppdages og hoppes over. Dessuten, hvis full-flush-punkter skrives til den komprimerte strømmen, kan korrupte data hoppes over og dekomprimering vil bli resynkronisert ved neste full-flush-punkt, selv om ingen datafeilgjenopprettingsmekanismer er gitt. Denne typen punkter er nyttige for store datastrømmer på upålitelige kanaler, der noe tap av data ikke er viktig, for eksempel i noen multimedieapplikasjoner. Å lage for mange av disse "flush-punktene" kan imidlertid påvirke hastighet og kompresjonsforhold.

Datalengde

Det er ingen grense for lengden på data som kan komprimeres eller dekomprimeres. Gjentatte anrop til biblioteket tillater et ubegrenset antall datablokker. Noen tellere kan lide av bufferoverløp, men dette påvirker ikke kompresjon eller dekompresjon.

Når datasettet er veldig stort (eller uendelig) anbefales det regelmessig å skrive "full-flush"-punkter.

Applikasjoner

I dag er zlib en de facto -standard , til det punktet at zlib og DEFLATE ofte brukes om hverandre i dokumenter, med tusenvis av applikasjoner som er avhengige av komprimering, direkte eller indirekte. [ 1 ] Dette inkluderer:

  • Til Linux-kjernen , der zlib brukes til nettverksprotokoller, filsystemer  , og for å komprimere kjernen ved oppstart av operativsystemet.
  • GNU Binutils og GNU Debugger (GDB)
  • libpng , referanseimplementeringen for PNG-bildeformatet, som spesifiserer DEFLATE som komprimering for punktgrafikkdataene .
  • libwww, et API for nettapplikasjoner som  nettlesere .
  • Apache HTTP-serveren , som bruker zlib for å implementere HTTP/1.1.
  • OpenSSH -klienten og serveren , som bruker komprimeringen som tilbys av Secure Shell-protokollen i zlib.
  • OpenSSL- og GnuTLS - prosjektene , som begge kan bruke zlib til å komprimere TLS-tilkoblinger.
  • FFmpeg -mediebiblioteket  , som bruker zlib til å lese og skrive data til DEFLATE, for eksempel Matroska .
  • rsync ekstern filsynkronisering, som bruker zlib til å komprimere data.
  • Pakkebehandlerne dpkg og RPM , som bruker zlib til å pakke ut filer fra komprimerte programvarepakker.
  • Subversion- og CVS -versjonskontrollsystemene  , som begge bruker zlib for å komprimere trafikk til og fra eksterne depoter.
  • Git -versjonskontrollsystemet bruker zlib til å lagre innholdet i dataobjektene (blober, trær, commits og tags) .
  • PostgreSQL RDBMS bruker zlib som eksportformat (pg_dump -Fc) for sikkerhetskopiering av databaser .
  • Klassen .IO.Compression.DeflateStream fra Microsoft .NET 2.0-rammeverket eller høyere. [ 2 ]
  • "Deflate"-verktøyet i TORNADO som en del av VxWorks , operativsystemet laget av Wind River Systems , bruker zlib for å komprimere oppstarts-ROM-bildet.

zlib brukes også i mange innebygde enheter, som Apple iPhone og  Sony PlayStation 3 , fordi koden er bærbar, fritt lisensiert og har lav minnebruk.

Se også

Referanser

  1. Gailly, Jean-loup; Adler, Mark (18. april 2002), zlib Applications  .
  2. System.IO.Compression.DeflateStream . MSDNLibrary.

Eksterne lenker