LZMA

Kokeneet kirjoittajat eivät ole vielä tarkistaneet sivun nykyistä versiota, ja se voi poiketa merkittävästi 17. helmikuuta 2021 tarkistetusta versiosta . tarkastukset vaativat 3 muokkausta .

LZMA ( englanniksi  Lempel-Ziv-Markov chain-Algorithm ) on Igor Pavlovin vuodesta 1996 tai 1998 lähtien kehittämä tiedonpakkausalgoritmi [1] . Sama kirjoittaja käyttää 7-Zip-arkistointityökalussa pakattujen arkistojen luomiseen 7z-muodossa.

Algoritmi perustuu sanakirjatietojen pakkausjärjestelmään , joka on samanlainen kuin LZ77 :ssä , ja tarjoaa korkean pakkaussuhteen (yleensä korkeamman kuin bzip2 :lla pakattuna ) ja mahdollistaa myös erikokoisten sanakirjojen käytön (jopa 4). GB [2] ).

Lisäksi lzma  on avoimen lähdekoodin komentorivitietojen pakkausapuohjelma LZMA SDK : sta , joka toimii .lzma-muotoisten tiedostojen kanssa .

Yleiskatsaus

Avoimen lähdekoodin LZMA-kehityspaketti, joka on kirjoitettu C++ -kielellä , käyttää parannettua LZ77 -pakkausalgoritmia , jota on täydennetty erillään olevalla koodausalgoritmilla sekä erityisiä menettelyjä binääritiedostojen käsittelyyn.

LZMA tukee erilaisia ​​hash-ketjujen , binääripuiden ja etuliitepuiden muunnelmia sanakirjahakualgoritmien perustana.

BCJ/BCJ2-algoritmit suoritettaville tiedostoille

LZMA SDK sisältää myös BCJ/BCJ2-algoritmin, joka on toteutettu x86- , ARM- , PowerPC- , IA-64- ja ARM Thumb -arkkitehtuuriprosessoreille. Siinä hyppypisteet normalisoidaan ennen pakkausta - eli esimerkiksi x86:lle, tämä tarkoittaa, että ohjeet lähi- ja ehdollisiin hyppyihin ja funktiokutsuihin muunnetaan lomakkeesta suhteellisella siirtymällä "palaa 1665 tavua" muotoon, jossa on absoluuttinen osoite "siirry osoitteeseen 5554".

7- Zipissä toteutettu BCJ2-algoritmi käyttää 32-bittistä osoitusta. UPX - suoritettavassa pakettiohjelmassa osoitus riippuu arkkitehtuurin tyypistä (esimerkiksi 16-bittistä osoitetta käytetään DOS - suoritettaville tiedostoille ).

Toteutukset

Toteutuksessa, joka on siirretty CPL :stä julkiseen käyttöön version 4.61 beta -version jälkeen, on seuraavat ominaisuudet:

LZMA-pakkauskoodin koko on noin 5 kt; dynaaminen muistin kulutus riippuu sanakirjojen koosta. Nämä ominaisuudet mahdollistavat pakkauksen purkamisen sulautetuissa järjestelmissä .

Microsoft Windows -ominaisuuksien käyttö lähdekoodissa vaikeuttaa Unix-versioiden luomista ohjelmasta. On kuitenkin olemassa kaksi toimivaa siirrettyä versiota: p7zip enemmän tai vähemmän siirretyt versiot 7z- ja 7za-komentoriviohjelmista POSIX-järjestelmille ( GNU/Linux , Solaris , OpenBSD , FreeBSD , Cygwin ja muut), Mac OS X ja BeOS .

On myös virallinen kannettava toteutus, LZMA Utils, joka on suunniteltu luomaan inline-kompressoreita, kuten gzip [3] . Vuodesta 2008 lähtien sitä on käytetty yhä enemmän paketinhallintajärjestelmissä  - erityisesti dpkg :ssa ja RPM :ssä .

7-Zip käyttää melko joustavaa arkistomuotoa, ja jotkin kolmannen osapuolen apuohjelmat tukevat myös sitä (esimerkiksi 7z-luku tukee WinRAR :ia ).

Mac OS X:lle on myös 7-Zip-portti nimeltään Compress, joka on tällä hetkellä melko keskeneräinen työkalu. Mac OS X:ssä on myös p7zip- ja 7zX- koontiversiot .

LZMA:n kanssa työskennelläkseen kirjoittaja tarjoaa monialustaisen SDK:n, jolla on yllä olevat ominaisuudet. Suurin osa SDK:sta on kirjoitettu C++-kielellä ja alun perin jaettu GNU LGPL:n ehtojen mukaisesti. Kannattaa huomioida muutama seikka:

Jotkut verkkolaitteet (kuten US Robotics 9105 ja 9106) käyttävät muokattua Linuxia laiteohjelmistona , joka käynnistetään pakatusta tiedostojärjestelmästä. LZMA-algoritmia käytetään Zlibin sijaan tiedostojärjestelmän pakkausalgoritmina. Tyypillisesti tämä tiedostojärjestelmä on squashfs , jossa on LZMA- korjaus [4] [5] .

Lisäksi LZMA:ta käytetään UEFI -toteutuksissa yhtenä pakkausalgoritmeista.

LZMA2

LZMA2 on uusi versio LZMA-algoritmista. Tällä algoritmilla on seuraavat edut LZMA-algoritmiin verrattuna:

Muistiinpanot

  1. Igor Pavlov on todennut useita kertoja SourceForgessa , että hän loi LZMA-algoritmin. LZMA-spesifikaatio? (19. helmikuuta 2004). Haettu 16. kesäkuuta 2013. Arkistoitu alkuperäisestä 9. marraskuuta 2012.
  2. 7z-muoto . Haettu 13. marraskuuta 2009. Arkistoitu alkuperäisestä 3. huhtikuuta 2011.
  3. LZMA utils Arkistoitu 27. lokakuuta 2020 Wayback Machinessa 
  4. squashfs-projekti osoitteessa SourceForge.net
  5. Virallinen sivusto squashfs-lzma . Käyttöpäivä: 30. tammikuuta 2009. Arkistoitu alkuperäisestä 29. lokakuuta 2012.

Linkit