LZMA

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2021. február 17-én felülvizsgált verziótól ; az ellenőrzések 3 szerkesztést igényelnek .

Az LZMA ( angolul  Lempel-Ziv-Markov chain-Algorithm ) egy adattömörítési algoritmus, amelyet 1996 vagy 1998 óta fejlesztett ki Igor Pavlov [1] . A 7-Zip archiválóban ugyanaz a szerző használta tömörített archívumok létrehozásához 7z formátumban.

Az algoritmus egy szótári adattömörítési sémán alapul , hasonlóan az LZ77 -ben használthoz , és magas tömörítési arányt biztosít (általában magasabb, mint a bzip2 használatával történő tömörítés esetén ), valamint lehetővé teszi különböző méretű szótárak használatát (legfeljebb 4 GB [2] ).

Ezenkívül az lzma  egy nyílt forráskódú parancssori adattömörítő segédprogram az LZMA SDK -ból , amely .lzma formátumú és kiterjesztésű fájlokkal működik .

Áttekintés

A C++ nyelven írt nyílt forráskódú LZMA fejlesztőkészlet a továbbfejlesztett LZ77 tömörítési algoritmust használja , kiegészítve egy térközű kódolási algoritmussal , valamint speciális eljárásokkal a bináris fájlok feldolgozására.

Az LZMA támogatja a hash láncok , bináris fák és előtagfák különféle változatait a szótári keresési algoritmusok alapjaként.

BCJ/BCJ2 algoritmusok végrehajtható fájlokhoz

Az LZMA SDK az x86 , ARM , PowerPC , IA-64 és ARM Thumb architektúra processzorokhoz implementált BCJ/BCJ2 algoritmust is tartalmazza . Ebben az ugráspontok normalizálásra kerülnek a tömörítés előtt - azaz például x86 esetén ez azt jelenti, hogy a közeli és feltételes ugrásokra, valamint a függvényhívásokra vonatkozó utasítások az űrlapról relatív eltolású "menj vissza 1665 bájttal" az űrlapra konvertálva. az abszolút cím "ugorjon az 5554-es címre".

A 7-Zip- ben megvalósított BCJ2 algoritmus 32 bites címzést használ. Az UPX végrehajtható csomagolóban a címzés az architektúra típusától függ (például 16 bites címzést használnak a DOS futtatható fájlok ).

Megvalósítások

A 4.61-es bétaverzió óta a CPL -ből köztulajdonba helyezett megvalósítás a következő tulajdonságokkal rendelkezik:

Az LZMA kicsomagoló kód mérete körülbelül 5 KB; a dinamikus memóriafelhasználás a szótárak méretétől függ. Ezek a funkciók lehetővé teszik a kicsomagolás megvalósítását beágyazott rendszereken .

A Microsoft Windows szolgáltatásainak forráskódban való használata megnehezíti a program Unix verzióinak létrehozását. Van azonban két működőképes portolt verzió: a 7z és 7za parancssori segédprogramok p7zip többé-kevésbé portolt változatai POSIX rendszerekre ( GNU/Linux , Solaris , OpenBSD , FreeBSD , Cygwin és mások), Mac OS X és BeOS .

Létezik egy hivatalos hordozható megvalósítás is, az LZMA Utils, amely a gzip -hez hasonló beépített tömörítők létrehozására szolgál [3] . 2008 óta egyre gyakrabban használják csomagkezelő rendszerekben  - különösen a dpkg és az RPM .

A 7-Zip meglehetősen rugalmas archív formátumot használ, és néhány harmadik féltől származó segédprogram is támogatja (például a 7z olvasás támogatja a WinRAR -t ).

A Mac OS X-hez egy Compress nevű 7-Zip port is található, amely jelenleg meglehetősen befejezetlen eszköz. A Mac OS X operációs rendszerhez p7zip és 7zX buildek is rendelkezésre állnak .

Az LZMA-val való együttműködéshez a szerző rendelkezésre bocsátja a többplatformos SDK-ját, amely a fenti tulajdonságokkal rendelkezik. Az SDK nagy része C++ nyelven íródott, és eredetileg a GNU LGPL feltételei szerint terjesztették. Érdemes megjegyezni néhány szempontot:

Egyes hálózati eszközök (például a US Robotics 9105 és 9106) módosított Linuxot használnak firmware -ként, tömörített fájlrendszerről indítva. A fájlrendszer tömörítési algoritmusaként a Zlib helyett az LZMA algoritmust használják. Ez a fájlrendszer jellemzően squashfs egy LZMA javítással [4] [5] .

Ezenkívül az LZMA-t az UEFI implementációkban használják a tömörítési algoritmusok egyikeként.

LZMA2

Az LZMA2 az LZMA algoritmus új verziója. Ennek az algoritmusnak a következő előnyei vannak az LZMA algoritmushoz képest:

Jegyzetek

  1. Igor Pavlov többször is kijelentette a SourceForge -on , hogy ő készítette az LZMA algoritmust. LZMA specifikáció? (2004. február 19.). Letöltve: 2013. június 16. Az eredetiből archiválva : 2012. november 9..
  2. 7z formátum . Letöltve: 2009. november 13. Az eredetiből archiválva : 2011. április 3..
  3. LZMA utils archiválva 2020. október 27-én a Wayback Machine -nél 
  4. squashfs projekt a SourceForge.net oldalon
  5. Hivatalos oldal squashfs-lzma . Hozzáférés dátuma: 2009. január 30. Az eredetiből archiválva : 2012. október 29.

Linkek