ΠœΠΎΡΡ‚Π° рСализация Π½Π° ΠΏΡ€ΡŠΡΡ‚Π΅Π½ΠΎΠ²ΠΈΠ΄Π΅Π½ Π±ΡƒΡ„Π΅Ρ€ Π² NOR flash

ΠŸΡ€Π΅Π΄ΠΈΡΡ‚ΠΎΡ€ΠΈΡ

ИмамС Ρ‚ΡŠΡ€Π³ΠΎΠ²ΡΠΊΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Π½ΠΈ ΠΎΡ‚ нас. Π’ тях ΠΈΠΌΠ° Raspberry Pi ΠΈ ΠΌΠ°Π»ΠΊΠΎ ΡΠ²ΡŠΡ€Π·Π²Π°Ρ‰ΠΈ ΠΏΠ»Π°Ρ‚ΠΊΠΈ. Π‘Π²ΡŠΡ€Π·Π°Π½ΠΈ са ΠΌΠΎΠ½Π΅Ρ‚ΠΎΠΏΡ€ΠΈΠ΅ΠΌΠ½ΠΈΠΊ, банкнотоброяч ΠΈ Π±Π°Π½ΠΊΠΎΠ² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»... Всичко сС управлява ΠΎΡ‚ самостоятСлна ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°. Цялата история Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‚Π΅ сС записва Π² ΠΆΡƒΡ€Π½Π°Π» Π½Π° Ρ„Π»Π°ΡˆΠΊΠ° (MicroSD), която послС сС ΠΏΡ€Π΅Π΄Π°Π²Π° ΠΎΠ½Π»Π°ΠΉΠ½ (Ρ‡Ρ€Π΅Π· USB ΠΌΠΎΠ΄Π΅ΠΌ) Π½Π° ΡΡŠΡ€Π²ΡŠΡ€, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Π² Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡΡ‚Π° Π·Π° ΠΏΡ€ΠΎΠ΄Π°ΠΆΠ±ΠΈΡ‚Π΅ сС Π·Π°Ρ€Π΅ΠΆΠ΄Π° Π² 1Π‘, ΠΈΠΌΠ° ΠΈ ΠΏΡ€ΠΎΡΡ‚ΠΈΡ‡ΡŠΠΊ ΡƒΠ΅Π± интСрфСйс Π·Π° ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ ΠΈ Ρ‚.Π½.

ВоСст ΠΆΡƒΡ€Π½Π°Π»ΡŠΡ‚ Π΅ ΠΆΠΈΠ·Π½Π΅Π½ΠΎΠ²Π°ΠΆΠ΅Π½ β€” Π·Π° ΠΎΡ‚Ρ‡ΠΈΡ‚Π°Π½Π΅ (Ρ‚Π°ΠΌ са Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅, ΠΏΡ€ΠΎΠ΄Π°ΠΆΠ±ΠΈΡ‚Π΅ ΠΈ Ρ‚.Π½.), ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ (Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΠΎΠ²Ρ€Π΅Π΄ΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ ΠΈΠ·Π²ΡŠΠ½Ρ€Π΅Π΄Π½ΠΈ обстоятСлства); Ρ‚ΠΎΠ²Π°, ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΊΠ°ΠΆΠ΅, Π΅ всяка информация, която ΠΈΠΌΠ°ΠΌΠ΅ Π·Π° Ρ‚ΠΎΠ·ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ°

Π€Π»Π°ΡˆΠΊΠΈΡ‚Π΅ ΠΏΠΎΠΊΠ°Π·Π²Π°Ρ‚, Ρ‡Π΅ са ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΈ устройства. Π’Π΅ конструктивно сС развалят с Π·Π°Π²ΠΈΠ΄Π½Π° рСдовност. Π’ΠΎΠ²Π° Π²ΠΎΠ΄ΠΈ Π΄ΠΎ спирания Π½Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‚Π΅ ΠΈ (Π°ΠΊΠΎ ΠΏΠΎ някаква ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° ΠΆΡƒΡ€Π½Π°Π»ΡŠΡ‚ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΏΡ€Π΅Π΄Π°Π΄Π΅Π½ ΠΎΠ½Π»Π°ΠΉΠ½) Π΄ΠΎ Π·Π°Π³ΡƒΠ±Π° Π½Π° Π΄Π°Π½Π½ΠΈ.

Π’ΠΎΠ²Π° Π½Π΅ Π΅ ΠΏΡŠΡ€Π²ΠΈΡΡ‚ ΠΎΠΏΠΈΡ‚ с Ρ„Π»Π°ΡˆΠΊΠΈΡ‚Π΅; ΠΏΡ€Π΅Π΄ΠΈ Ρ‚ΠΎΠ²Π° имашС Π΄Ρ€ΡƒΠ³ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ с ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ сто устройства, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ ΠΆΡƒΡ€Π½Π°Π»ΡŠΡ‚ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΡˆΠ΅ Π½Π° USB Ρ„Π»Π°ΡˆΠΊΠΈ, Ρ‚Π°ΠΌ имашС ΡΡŠΡ‰ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ с надСТдността, понякога броят Π½Π° ΠΏΠΎΠ²Ρ€Π΅Π΄Π΅Π½ΠΈΡ‚Π΅ устройства Π·Π° мСсСц Π΄ΠΎΡΡ‚ΠΈΠ³Π°ΡˆΠ΅ дСсСтки. ΠžΠΏΠΈΡ‚Π²Π°Ρ…ΠΌΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ„Π»Π°ΡˆΠΊΠΈ, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΈ ΠΌΠ°Ρ€ΠΊΠΎΠ²ΠΈ Π½Π° SLC ΠΏΠ°ΠΌΠ΅Ρ‚, Π½ΠΎ Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ някои ΠΌΠΎΠ΄Π΅Π»ΠΈ са ΠΏΠΎ-Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΈ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈ, смяната Π½Π° Ρ„Π»Π°ΡˆΠΊΠΈΡ‚Π΅ Π½Π΅ Ρ€Π΅ΡˆΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΊΠΎΡ€Π΅Π½Π½ΠΎ.

Π’Π½ΠΈΠΌΠ°Π½ΠΈΠ΅! Π”ΡŠΠ»ΡŠΠ³ тСкст! Ако Π½Π΅ Π²ΠΈ интСрСсува "Π·Π°Ρ‰ΠΎ", Π° само "ΠΊΠ°ΠΊ", ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Π΅Π΄Π½Π°Π³Π° Π΄Π° ΠΎΡ‚ΠΈΠ΄Π΅Ρ‚Π΅ Π² края статията.

РСшСниС

ΠŸΡŠΡ€Π²ΠΎΡ‚ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΈΠ΄Π²Π° Π½Π°ΡƒΠΌ: Π΄Π° сС ΠΎΡ‚ΠΊΠ°ΠΆΠ΅ΠΌ ΠΎΡ‚ MicroSD, Π΄Π° поставим Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ SSD ΠΈ Π΄Π° сС Π·Π°Ρ€Π΅ΠΆΠ΄Π°ΠΌΠ΅ ΠΎΡ‚ Π½Π΅Π³ΠΎ. Π’Π΅ΠΎΡ€Π΅Ρ‚ΠΈΡ‡Π½ΠΎ Π΅ възмоТно, ΠΌΠΎΠΆΠ΅ Π±ΠΈ, Π½ΠΎ сравнитСлно скъпо ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎ (добавя сС Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ USB-SATA; статистиката Π·Π° ΠΎΡ‚ΠΊΠ°Π·ΠΈΡ‚Π΅ ΠΏΡ€ΠΈ Π±ΡŽΠ΄ΠΆΠ΅Ρ‚Π½ΠΈ SSD ΡΡŠΡ‰ΠΎ Π½Π΅ Π΅ ΠΎΠ±Π½Π°Π΄Π΅ΠΆΠ΄Π°Π²Π°Ρ‰Π°).

USB HDD ΡΡŠΡ‰ΠΎ Π½Π΅ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° особСно ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»Π½ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅.

Π—Π°Ρ‚ΠΎΠ²Π° стигнахмС Π΄ΠΎ Ρ‚Π°ΠΊΡŠΠ² Π²Π°Ρ€ΠΈΠ°Π½Ρ‚: Π΄Π° оставим Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ ΠΎΡ‚ MicroSD, Π½ΠΎ Π΄Π° Π³ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Π² Ρ€Π΅ΠΆΠΈΠΌ само Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅, Π° ΠΆΡƒΡ€Π½Π°Π»ΡŠΡ‚ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° (ΠΈ Π΄Ρ€ΡƒΠ³Π° ΡƒΠ½ΠΈΠΊΠ°Π»Π½Π° информация, спСцифична Π·Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΡ‚ΠΎ устройство β€” сСрийСн Π½ΠΎΠΌΠ΅Ρ€, ΠΊΠ°Π»ΠΈΠ±Ρ€ΠΎΠ²ΠΊΠΈ Π½Π° сСнзори ΠΈ Ρ‚.Π½.) Π΄Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΌΠ΅ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎ място.

Π’Π΅ΠΌΠ°Ρ‚Π° Π·Π° Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΈ систСми с Ρ€Π΅ΠΆΠΈΠΌ само Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅ Π·Π° Raspberry Pi Π²Π΅Ρ‡Π΅ Π΅ ΠΏΡ€ΠΎΡƒΡ‡Π΅Π½Π° Π² Π΄Π΅Ρ‚Π°ΠΉΠ»ΠΈ, няма Π΄Π° сС спирам Π½Π° Π΄Π΅Ρ‚Π°ΠΉΠ»ΠΈΡ‚Π΅ Π² Ρ‚Π°Π·ΠΈ статия. (Π½ΠΎ Π°ΠΊΠΎ сС прояви интСрСс, ΠΌΠΎΠΆΠ΅ Π±ΠΈ Ρ‰Π΅ напиша ΠΌΠΈΠ½ΠΈ-статия Π·Π° Ρ‚Π°Π·ΠΈ Ρ‚Π΅ΠΌΠ°). ЕдинствСното Π½Π΅Ρ‰ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ искам Π΄Π° подчСртая: ΠΈ ΠΏΠΎ Π»ΠΈΡ‡Π΅Π½ ΠΎΠΏΠΈΡ‚, ΠΈ ΠΏΠΎ ΠΎΡ‚Π·ΠΈΠ²ΠΈΡ‚Π΅ ΠΎΡ‚ Π²Π΅Ρ‡Π΅ Π²Π½Π΅Π΄Ρ€ΠΈΠ»ΠΈ, ΠΈΠΌΠ° ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΈ подобрСния Π² надСТдността. Π”Π°, напълно Π΄Π° сС ΠΈΠ·Π±Π°Π²ΠΈΠΌ ΠΎΡ‚ ΠΏΠΎΠ²Ρ€Π΅Π΄ΠΈ Π½Π΅ Π΅ възмоТно, Π½ΠΎ Π΅ напълно Ρ€Π΅Π°Π»Π½ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π΄Π° сС Π½Π°ΠΌΠ°Π»ΠΈ тяхната чСстота. ОсвСн Ρ‚ΠΎΠ²Π° ΠΊΠ°Ρ€Ρ‚ΠΈΡ‚Π΅ стават ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½ΠΈ, ΠΊΠΎΠ΅Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ опростява замяната Π·Π° обслуТващия пСрсонал.

Π₯Π°Ρ€Π΄ΡƒΠ΅Ρ€Π½Π° част

НС бСшС ΠΈΠΌΠ°Π»ΠΎ особСни съмнСния относно ΠΈΠ·Π±ΠΎΡ€Π° Π½Π° Ρ‚ΠΈΠΏ ΠΏΠ°ΠΌΠ΅Ρ‚ β€” NOR Flash.
АргумСнти:

  • лСсно ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ (Π½Π°ΠΉ-чСсто шина SPI, ΠΎΠΏΠΈΡ‚ с която Π²Π΅Ρ‡Π΅ ΠΈΠΌΠ°ΠΌΠ΅, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ няма Π΄Π° сС прСдвидят 'ΠΆΠ΅Π»Π΅Π·Π½ΠΈ' ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ);
  • смСшна Ρ†Π΅Π½Π°;
  • стандартСн ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° (рСализацията Π²Π΅Ρ‡Π΅ Π΅ Π½Π°Π»ΠΈΡ‡Π½Π° Π² ядрото Π½Π° Linux, ΠΏΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС Π²Π·Π΅ΠΌΠ΅ ΠΈ външна, която ΡΡŠΡ‰ΠΎ ΠΏΡ€ΠΈΡΡŠΡΡ‚Π²Π°, ΠΈΠ»ΠΈ Π΄ΠΎΡ€ΠΈ Π΄Π° сС напишС собствСна, Π·Π°Ρ‰ΠΎΡ‚ΠΎ всичко Π΅ просто);
  • надСТдност ΠΈ рСсурс:
    ΠΎΡ‚ типичния Π΄Π°Ρ‚Π°ΡˆΠΈΡ‚: Π΄Π°Π½Π½ΠΈΡ‚Π΅ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ 20 Π³ΠΎΠ΄ΠΈΠ½ΠΈ, 100000 Ρ†ΠΈΠΊΡŠΠ»Π° ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅ Π·Π° всСки Π±Π»ΠΎΠΊ;
    ΠΎΡ‚ външни ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΡ†ΠΈ: ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ нисък BER, постулира сС, Ρ‡Π΅ няма Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ ΠΊΠΎΠ΄ΠΎΠ²Π΅ Π·Π° корСкция Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ (Π² някои Ρ€Π°Π±ΠΎΡ‚ΠΈ сС Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π° ECC Π·Π° NOR, Π½ΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΈΠΌΠ°Ρ‚ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ MLC NOR, Π΄Π°ΠΆΠ΅ ΠΈ Ρ‚Π°ΠΊΠΎΠ²Π° сС случва).

Π”Π° ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ΠΈΠΌ изискванията Π·Π° ΠΎΠ±Π΅ΠΌ ΠΈ рСсурс.

Искам Π΄Π° Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°ΠΌ, Ρ‡Π΅ Π΄Π°Π½Π½ΠΈΡ‚Π΅ Ρ‰Π΅ сС Π·Π°ΠΏΠ°Π·Π²Π°Ρ‚ Π·Π° няколко Π΄Π½ΠΈ. НуТно Π΅ Ρ‚ΠΎΠ²Π°, Π·Π° Π΄Π° Π½Π΅ сС ΠΈΠ·Π³ΡƒΠ±ΠΈ историята Π½Π° ΠΏΡ€ΠΎΠ΄Π°ΠΆΠ±ΠΈΡ‚Π΅ Π² случай Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ с Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π°. Π©Π΅ сС ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°ΠΌΠ΅ Π½Π° 5 Π΄Π½ΠΈ, Π·Π° Ρ‚ΠΎΠ·ΠΈ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ (Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΡƒΠΈΠΊΠ΅Π½Π΄ΠΈ ΠΈ ΠΏΡ€Π°Π·Π½ΠΈΡ†ΠΈ) ΠΌΠΎΠΆΠ΅ Π΄Π° сС Ρ€Π΅ΡˆΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚.

Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π°Ρ‚Ρ€ΡƒΠΏΠ²Π°ΠΌΠ΅ ΠΎΠΊΠΎΠ»ΠΎ 100ΠΊΠ± ΠΆΡƒΡ€Π½Π°Π» Π½Π° Π΄Π΅Π½ (3-4 хиляди записа), ΠΎΠ±Π°Ρ‡Π΅ постСпСнно Ρ‚Π°Π·ΠΈ Ρ†ΠΈΡ„Ρ€Π° нараства β€” ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π° сС дСтайлизацията, добавят сС Π½ΠΎΠ²ΠΈ ΡΡŠΠ±ΠΈΡ‚ΠΈΡ. Плюс ΠΈΠΌΠ° ΠΈ ΠΏΠ΅Ρ€ΠΈΠΎΠ΄ΠΈΡ‡Π½ΠΈ ΠΈΠ·Π±Π»ΠΈΡ†ΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, някой сСнзор Π·Π°ΠΏΠΎΡ‡Π²Π° Π΄Π° спами с Ρ„Π°Π»ΡˆΠΈΠ²ΠΈ сработвания). Π©Π΅ изчислим Π½Π° 10 хиляди записа ΠΏΠΎ 100 Π±Π°ΠΉΡ‚Π° β€” ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚ Π½Π° Π΄Π΅Π½.

Π’ ΠΊΡ€Π°ΠΉΠ½Π° смСтка ΠΈΠ·Π»ΠΈΠ·Π° 5Мб чисти (Π΄ΠΎΠ±Ρ€Π΅ компрСсируСми) Π΄Π°Π½Π½ΠΈ. Към тях ΠΎΡ‰Π΅ (Π³Ρ€ΡƒΠ±Π° ΠΏΡ€Π΅Ρ†Π΅Π½ΠΊΠ°) 1Мб слуТСбни Π΄Π°Π½Π½ΠΈ.

Π’.Π΅. Π½ΠΈ трябва микросхСма ΠΎΡ‚ 8Мб, Π°ΠΊΠΎ Π½Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ компрСсия, ΠΈΠ»ΠΈ 4Мб, Π°ΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅. БъвсСм рСалистични Ρ†ΠΈΡ„Ρ€ΠΈ Π·Π° Ρ‚ΠΎΠ·ΠΈ Ρ‚ΠΈΠΏ ΠΏΠ°ΠΌΠ΅Ρ‚.

Π©ΠΎ сС отнася Π΄ΠΎ рСсурса: Π°ΠΊΠΎ ΠΏΠ»Π°Π½ΠΈΡ€Π°ΠΌΠ΅, Ρ‡Π΅ ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Ρ‰Π΅ бъдС прСзаписвана Π½Π΅ ΠΏΠΎ-чСсто ΠΎΡ‚ вСднъТ Π½Π° 5 Π΄Π½ΠΈ, Ρ‚ΠΎ Π·Π° 10 Π³ΠΎΠ΄ΠΈΠ½ΠΈ Сксплоатация Ρ‰Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ‚ хиляда Ρ†ΠΈΠΊΡŠΠ»Π° прСзаписванС.
Напомням, производитСлят ΠΎΠ±Π΅Ρ‰Π°Π²Π° сто хиляди.

Няколко Π΄ΡƒΠΌΠΈ Π·Π° NOR срСщу NAND

ДнСс, Ρ€Π°Π·Π±ΠΈΡ€Π° сС, NAND ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-популярна, Π½ΠΎ Π·Π° Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π½Π΅ Π±ΠΈΡ… я ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π»: NAND, Π·Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΎΡ‚ NOR, Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ изисква ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ΄ΠΎΠ²Π΅ Π·Π° корСкция Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ, Ρ‚Π°Π±Π»ΠΈΡ†ΠΈ Π·Π° Π΄Π΅Ρ„Π΅ΠΊΡ‚Π½ΠΈ Π±Π»ΠΎΠΊΠΎΠ²Π΅ ΠΈ Ρ‚.Π½., Π° ΠΈ ΠΊΡ€Π°Ρ‡Π΅Ρ‚Π°Ρ‚Π° Π½Π° NAND Ρ‡ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ са ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Ρ‡Π΅.

ΠšΠ°Ρ‚ΠΎ Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ†ΠΈ Π½Π° NOR ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° посочим:

  • малък ΠΎΠ±Π΅ΠΌ (ΠΈ, ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ, висока Ρ†Π΅Π½Π° Π½Π° ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚);
  • нисък ΠΎΠ±ΠΌΠ΅Π½ Π½Π° скорости (Π΄ΠΎ голяма стСпСн Π·Π°Ρ€Π°Π΄ΠΈ използвания сСриалСн интСрфСйс, ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ SPI ΠΈΠ»ΠΈ I2C);
  • Π±Π°Π²Π½ΠΎ ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅ (Π² зависимост ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° Π±Π»ΠΎΠΊΠ°, ΠΎΡ‚Π½Π΅ΠΌΠ° ΠΎΡ‚ части ΠΎΡ‚ сСкундата Π΄ΠΎ няколко сСкунди).

ИзглСТда, Ρ‡Π΅ няма Π½ΠΈΡ‰ΠΎ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ Π·Π° нас, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π°ΠΌΠ΅.

Ако Π²ΠΈ интСрСсуват Π΄Π΅Ρ‚Π°ΠΉΠ»ΠΈ, ΠΈΠ·Π±Ρ€Π°Π½ Π΅ Ρ‡ΠΈΠΏΡŠΡ‚ at25df321a (Π²ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ ΡΡŠΡ‰Π΅ΡΡ‚Π²Π΅Π½ΠΎ, Π½Π° ΠΏΠ°Π·Π°Ρ€Π° ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΠΈ, ΡΡŠΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΈ ΠΏΠΎ ΠΏΠΈΠ½ΠΎΠ²Π°Ρ‚Π° схСма ΠΈ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ; Π΄Π°ΠΆΠ΅ Π°ΠΊΠΎ искамС Π΄Π° поставим Ρ‡ΠΈΠΏ Π½Π° Π΄Ρ€ΡƒΠ³ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π» ΠΈ/ΠΈΠ»ΠΈ с Π΄Ρ€ΡƒΠ³ ΠΎΠ±Π΅ΠΌ, всичко Ρ‰Π΅ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π±Π΅Π· промяна Π½Π° ΠΊΠΎΠ΄Π°).

Използвам Π²Π³Ρ€Π°Π΄Π΅Π½ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ Π² ядрото Π½Π° Linux, Π½Π° Raspberry Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° device tree overlay всичко Π΅ ΠΌΠ½ΠΎΠ³ΠΎ лСсно β€” просто трябва Π΄Π° поставитС скомпилиран ΠΎΠ²Π΅Ρ€Π»Π΅ΠΉ Π² /boot/overlays ΠΈ ΠΌΠ°Π»ΠΊΠΎ Π΄Π° ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Ρ‚Π΅ /boot/config.txt.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° dts Ρ„Π°ΠΉΠ»

ЧСстно ΠΊΠ°Π·Π°Π½ΠΎ, Π½Π΅ съм сигурСн, Ρ‡Π΅ Π΅ написан Π±Π΅Π· Π³Ρ€Π΅ΡˆΠΊΠΈ, Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ.

/*
 * Device tree overlay for at25 at spi0.1
 */

/dts-v1/;
/plugin/;

/ {
    compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2708", "brcm,bcm2709"; 

    /* disable spi-dev for spi0.1 */
    fragment@0 {
        target = <&spi0>;
        __overlay__ {
            status = "okay";
            spidev@1{
                status = "disabled";
            };
        };
    };

    /* the spi config of the at25 */
    fragment@1 {
        target = <&spi0>;
        __overlay__ {
            #address-cells = <1>;
            #size-cells = <0>;
            flash: m25p80@1 {
                    compatible = "atmel,at25df321a";
                    reg = <1>;
                    spi-max-frequency = <50000000>;

                    /* default to false:
                    m25p,fast-read ;
                    */
            };
        };
    };

    __overrides__ {
        spimaxfrequency = <&flash>,"spi-max-frequency:0";
        fastread = <&flash>,"m25p,fast-read?";
    };
};

И ΠΎΡ‰Π΅ Π΅Π΄ΠΈΠ½ Ρ€Π΅Π΄ Π² config.txt

dtoverlay=at25:spimaxfrequency=50000000

ОписаниС Π½Π° самото ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° микросхСмата с Raspberry Pi Ρ‰Π΅ пропусна. ΠžΡ‚ Π΅Π΄Π½Π° страна, Π½Π΅ съм спСциалист ΠΏΠΎ Π΅Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½ΠΈΠΊΠ°, ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π° β€” всичко Π΅ Π±Π°Π½Π°Π»Π½ΠΎ Π΄ΠΎΡ€ΠΈ Π·Π° ΠΌΠ΅Π½: Ρ‡ΠΈΠΏΡŠΡ‚ ΠΈΠΌΠ° само 8 ΠΊΡ€Π°ΠΊΠ°, ΠΎΡ‚ ΠΊΠΎΠΈΡ‚ΠΎ Π½ΠΈ трябват зСмя, Π·Π°Ρ…Ρ€Π°Π½Π²Π°Π½Π΅, SPI (CS, SI, SO, SCK); Π½ΠΈΠ²Π°Ρ‚Π° ΡΡŠΠ²ΠΏΠ°Π΄Π°Ρ‚ с Ρ‚Π΅Π·ΠΈ Π½Π° Raspberry Pi, Π½Π΅ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½Π° ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° β€” просто ΡΠ²ΡŠΡ€ΠΆΠ΅Ρ‚Π΅ посочСнитС 6 ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°.

Π€ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π°

ΠšΠ°ΠΊΡ‚ΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ, опрСдСлянСто Π½Π° Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π° ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΡ€Π΅Π· няколко ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΈ ΠΌΠΈ сС струва, Ρ‡Π΅ Π΅ Π²Ρ€Π΅ΠΌΠ΅ Π·Π° Π½ΠΎΠ²Π°. Π’Π°ΠΊΠ° Ρ‡Π΅ Π΄Π° спрСм, Π΄Π° ΠΎΠ±Π΅Π΄ΠΈΠ½ΠΈΠΌ всичко, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²Π΅Ρ‡Π΅ Π΅ написано, ΠΈ Π΄Π° изясним останалитС нСясни Π΄Π΅Ρ‚Π°ΠΉΠ»ΠΈ.

Π’Π°ΠΊΠ° Ρ‡Π΅, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ…ΠΌΠ΅, Ρ‡Π΅ ΠΆΡƒΡ€Π½Π°Π»ΡŠΡ‚ Ρ‰Π΅ бъдС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Π½ Π² SPI NOR Flash.

Какво Π΅ NOR Flash Π·Π° Ρ‚Π΅Π·ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ знаят

Π’ΠΎΠ²Π° Π΅ СнСргонСзависима ΠΏΠ°ΠΌΠ΅Ρ‚, с която ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΏΡ€Π°Π²ΠΈΠΌ Ρ‚Ρ€ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ:

  1. Π§Π΅Ρ‚Π΅Π½Π΅:
    Най-ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎΡ‚ΠΎ Ρ‡Π΅Ρ‚Π΅Π½Π΅: ΠΏΡ€Π΅Π΄Π°Π²Π°ΠΌΠ΅ адрСса ΠΈ Ρ‡Π΅Ρ‚Π΅ΠΌ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° Π±Π°ΠΉΡ‚Π°, ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ Π½ΠΈ трябва;
  2. Запис:
    ЗаписванСто Π² NOR flash ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΊΠ°Ρ‚ΠΎ ΠΎΠ±ΠΈΡ‡Π°ΠΉΠ½ΠΎ, Π½ΠΎ ΠΈΠΌΠ° Π΅Π΄Π½Π° особСност: ΠΌΠΎΠΆΠ΅ Π΄Π° сС промСня само 1 Π½Π° 0, Π½ΠΎ Π½Π΅ ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΡ‚ΠΎ. НапримСр, Π°ΠΊΠΎ Π² ΠΊΠ»Π΅Ρ‚ΠΊΠ°Ρ‚Π° Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΈΠΌΠ°ΠΌΠ΅ 0x55, слСд записа Π½Π° 0x0f Ρ‚Π°ΠΌ Π²Π΅Ρ‡Π΅ Ρ‰Π΅ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° 0x05. (Π²ΠΆ. Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ);
  3. Π˜Π·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅:
    Π Π°Π·Π±ΠΈΡ€Π° сС, трябва Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈΠΌ ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½Π°Ρ‚Π° опСрация β€” Π΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΠΌ 0 Π½Π° 1, ΠΈΠΌΠ΅Π½Π½ΠΎ Π·Π° Ρ‚ΠΎΠ²Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π° опСрацията ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅. Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΡŠΡ€Π²ΠΈΡ‚Π΅ Π΄Π²Π΅, тя ΠΎΠΏΠ΅Ρ€ΠΈΡ€Π° Π½Π΅ с Π±Π°ΠΉΡ‚ΠΎΠ²Π΅, Π° с Π±Π»ΠΎΠΊΠΎΠ²Π΅ (минималният erase block Π² ΠΈΠ·Π±Ρ€Π°Π½Π°Ρ‚Π° микросхСма Π΅ 4KB). Π˜Π·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅Ρ‚ΠΎ ΡƒΠ½ΠΈΡ‰ΠΎΠΆΠ°Π²Π° цСлия Π±Π»ΠΎΠΊ ΠΈ Ρ‚ΠΎΠ²Π° Π΅ СдинствСният Π½Π°Ρ‡ΠΈΠ½ Π΄Π° смСним 0 Π½Π° 1. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π° с Ρ„Π»Π°Ρˆ ΠΏΠ°ΠΌΠ΅Ρ‚ чСсто Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° сС подравняват структуритС Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π½Π° Π³Ρ€Π°Π½ΠΈΡ†Π°Ρ‚Π° Π½Π° erase Π±Π»ΠΎΠΊΠ°.
    Запис Π² NOR Flash:

Π”Π²ΠΎΠΈΡ‡Π½ΠΈ Π΄Π°Π½Π½ΠΈ

Π‘Π΅ΡˆΠ΅
01010101

ЗаписахмС
00001111

Π‘Ρ‚Π°Π½Π°
00000101

Бамият ΠΆΡƒΡ€Π½Π°Π» прСдставлява ΠΏΠΎΡ€Π΅Π΄ΠΈΡ†Π° ΠΎΡ‚ записи с ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° дълТина. Π’ΠΈΠΏΠΈΡ‡Π½Π°Ρ‚Π° дълТина Π½Π° записа Π΅ ΠΎΠΊΠΎΠ»ΠΎ 30 Π±Π°ΠΉΡ‚Π° (Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ понякога ΠΈΠΌΠ° ΠΈ записи с дълТина Π½Π° няколко ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚Π°). Π’ Ρ‚ΠΎΠ·ΠΈ случай Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ с тях просто ΠΊΠ°Ρ‚ΠΎ с Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ Π±Π°ΠΉΡ‚ΠΎΠ²Π΅, Π½ΠΎ, Π°ΠΊΠΎ Π΅ интСрСсно, Π²ΡŠΡ‚Ρ€Π΅ Π² записитС сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° CBOR.

ОсвСн ΠΆΡƒΡ€Π½Π°Π»Π°, трябва Π΄Π° ΡΡŠΡ…Ρ€Π°Π½ΠΈΠΌ някаква β€žΠ½Π°ΡΡ‚Ρ€ΠΎΠΉΠ²Π°Ρ‰Π°β€œ информация, ΠΊΠ°ΠΊΡ‚ΠΎ обновяСма, Ρ‚Π°ΠΊΠ° ΠΈ Π½Π΅: някакъв ID Π½Π° устройството, ΠΊΠ°Π»ΠΈΠ±Ρ€ΠΎΠ²ΠΊΠΈ Π½Π° сСнзоритС, Ρ„Π»Π°Π³ β€žΡƒΡΡ‚Ρ€ΠΎΠΉΡΡ‚Π²ΠΎΡ‚ΠΎ Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎβ€œ ΠΈ Π΄Ρ€.
Π’Π°Π·ΠΈ информация прСдставлява Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ записи ΠΊΠ»ΡŽΡ‡-стойност, ΡΡŠΡ‰ΠΎ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Π½ΠΈ Π² CBOR. НямамС ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‚ Ρ‚Π°Π·ΠΈ информация (максимум няколко ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚Π°), обновява сС Π½Π΅ чСсто.
ΠΠ°Ρ‚Π°Ρ‚ΡŠΠΊ Ρ‰Π΅ я Π½Π°Ρ€ΠΈΡ‡Π°ΠΌΠ΅ контСкст.

Ако си спомним ΠΎΡ‚ΠΊΡŠΠ΄Π΅ Π·Π°ΠΏΠΎΡ‡Π½Π° Ρ‚Π°Π·ΠΈ статия, ΠΌΠ½ΠΎΠ³ΠΎ Π²Π°ΠΆΠ½ΠΎ Π΅ Π΄Π° сС осигури надСТдност Π½Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ ΠΈ, ΠΏΠΎ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚, Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π° Π΄ΠΎΡ€ΠΈ Π² случай Π½Π° Ρ…Π°Ρ€Π΄ΡƒΠ΅Ρ€Π½ΠΈ Π°Π²Π°Ρ€ΠΈΠΈ/ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ.

Какви ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΡ†ΠΈ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅?

  • Π˜Π·ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° Π·Π°Ρ…Ρ€Π°Π½Π²Π°Π½Π΅Ρ‚ΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ write/erase. Π’ΠΎΠ²Π° Π΅ ΠΎΡ‚ Ρ€ΠΎΠ΄Π° Π½Π° β€žΠ½ΡΠΌΠ° ΠΏΡ€ΠΎΡ‚ΠΈΠ² Π»ΠΎΠΌΠ° ΠΏΡ€ΠΈΠ΅ΠΌβ€œ.
    Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎΡ‚ обсъТданС stackexchange: ΠΏΡ€ΠΈ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π²Π°Π½Π΅ Π½Π° Π·Π°Ρ…Ρ€Π°Π½Π²Π°Π½Π΅Ρ‚ΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π½Π° Ρ€Π°Π±ΠΎΡ‚Π° с Ρ„Π»Π°Ρˆ ΠΏΠ°ΠΌΠ΅Ρ‚, ΠΊΠ°ΠΊΠ²ΠΎ erase (Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° 1), Ρ‚Π°ΠΊΠ° ΠΈ write (Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° 0) водят Π΄ΠΎ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅: Π΄Π°Π½Π½ΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ записани, записани частично (Π΄Π° Ρ€Π΅Ρ‡Π΅ΠΌ, ΠΏΡ€Π΅Π΄Π°Π΄ΠΎΡ…ΠΌΠ΅ 10 Π±Π°ΠΉΡ‚Π°/80 Π±ΠΈΡ‚Π°, Π° успяхмС Π΄Π° запишСм само 45 Π±ΠΈΡ‚Π°), Π½Π΅ Π΅ ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ ΠΈ част ΠΎΡ‚ Π±ΠΈΡ‚ΠΎΠ²Π΅Ρ‚Π΅ Π΄Π° бъдС Π² β€žΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΎβ€œ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ (Ρ‡Π΅Ρ‚Π΅Π½Π΅Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄Π°Π΄Π΅ ΠΊΠ°ΠΊΡ‚ΠΎ 0, Ρ‚Π°ΠΊΠ° ΠΈ 1);
  • Π“Ρ€Π΅ΡˆΠΊΠΈ Π½Π° самата Ρ„Π»Π°Ρˆ ΠΏΠ°ΠΌΠ΅Ρ‚.
    BER ΠΌΠ°ΠΊΠ°Ρ€ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ нисък, Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Ρ€Π°Π²Π΅Π½ Π½Π° Π½ΡƒΠ»Π°;
  • Π“Ρ€Π΅ΡˆΠΊΠΈ ΠΏΠΎ ΡˆΠΈΠ½Π°Ρ‚Π°.
    Π”Π°Π½Π½ΠΈΡ‚Π΅, ΠΏΡ€Π΅Π΄Π°Π²Π°Π½ΠΈ ΠΏΠΎ SPI, Π½Π΅ са Π·Π°Ρ‰ΠΈΡ‚Π΅Π½ΠΈ, ΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π²ΡŠΠ·Π½ΠΈΠΊΠ½Π°Ρ‚ ΠΊΠ°ΠΊΡ‚ΠΎ Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½ΠΈ Π±ΠΈΡ‚ΠΎΠ²ΠΈ Π³Ρ€Π΅ΡˆΠΊΠΈ, Ρ‚Π°ΠΊΠ° ΠΈ Π³Ρ€Π΅ΡˆΠΊΠΈ Π² синхронизацията β€” Π·Π°Π³ΡƒΠ±Π° ΠΈΠ»ΠΈ добавянС Π½Π° Π±ΠΈΡ‚ΠΎΠ²Π΅ (ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΈ изкривявания Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅);
  • Π”Ρ€ΡƒΠ³ΠΈ Π³Ρ€Π΅ΡˆΠΊΠΈ/сбои
    Π“Ρ€Π΅ΡˆΠΊΠΈ Π² ΠΊΠΎΠ΄Π°, "глюковС" Π½Π° Raspberry, намСса Π½Π° извънзСмни...

Π€ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€Π°Ρ… изисквания, ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠΈΡ‚ΠΎ, спорСд ΠΌΠ΅Π½, Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° осигуряванС Π½Π° надСТдност:

  • записитС трябва Π΄Π° ΠΏΠΎΠΏΠ°Π΄Π°Ρ‚ във Ρ„Π»Π°Ρˆ ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ, ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½ΠΎΡ‚ΠΎ записванС Π½Π΅ сС Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π°; - Π°ΠΊΠΎ възникнС Π³Ρ€Π΅ΡˆΠΊΠ°, тя трябва Π΄Π° бъдС ΠΎΡ‚ΠΊΡ€ΠΈΡ‚Π° ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π΅Π½Π° възмоТно Π½Π°ΠΉ-Ρ€Π°Π½ΠΎ; - систСмата трябва Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° си слСд Π³Ρ€Π΅ΡˆΠΊΠΈ.
    (ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡ‚ ΠΆΠΈΠ²ΠΎΡ‚Π° 'ΠΊΠ°ΠΊ Π½Π΅ Π±ΠΈ трябвало Π΄Π° бъдС', с ΠΊΠΎΠΉΡ‚ΠΎ, мисля, всички смС сС сблъсквали: слСд Π°Π²Π°Ρ€ΠΈΠΉΠ½ΠΎ рСстартиранС Ρ„Π°ΠΉΠ»ΠΎΠ²Π°Ρ‚Π° систСма Π΅ 'Ρ€Π°Π·Π±ΠΈΡ‚Π°' ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма Π½Π΅ Π·Π°Ρ€Π΅ΠΆΠ΄Π°)

ИдСи, ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈ, размисли

ΠšΠΎΠ³Π°Ρ‚ΠΎ Π·Π°ΠΏΠΎΡ‡Π½Π°Ρ… Π΄Π° мисля ΠΏΠΎ Ρ‚Π°Π·ΠΈ Π·Π°Π΄Π°Ρ‡Π°, Π² Π³Π»Π°Π²Π°Ρ‚Π° ΠΌΠΈ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Ρ…Π° мноТСство ΠΈΠ΄Π΅ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

  • Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° компрСсия Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅;
  • Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ слоТни структури ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π΄Π° сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ заглавията Π½Π° записитС ΠΎΡ‚Π΄Π΅Π»Π½ΠΎ ΠΎΡ‚ самитС записи, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΏΡ€ΠΈ Π³Ρ€Π΅ΡˆΠΊΠ° Π² някой запис Π΄Π° ΠΌΠΎΠ³Π°Ρ‚ Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π΄Π° сС ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π°Ρ‚ останалитС;
  • Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π±ΠΈΡ‚ΠΎΠ²ΠΈ ΠΏΠΎΠ»Π΅Ρ‚Π° Π·Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° Π·Π°Π²ΡŠΡ€ΡˆΠ΅Π½ΠΎΡΡ‚Ρ‚Π° Π½Π° записа ΠΏΡ€ΠΈ Π·Π°Π³ΡƒΠ±Π° Π½Π° Π·Π°Ρ…Ρ€Π°Π½Π²Π°Π½Π΅;
  • Π΄Π° сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½ΠΈ суми Π·Π° всичко ΠΈ всяко;
  • Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° някакъв Π²ΠΈΠ΄ ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅, устойчиво Π½Π° смущСния.

Част ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ ΠΈΠ΄Π΅ΠΈ бСшС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π°, ΠΎΡ‚ част ΠΎΡ‚ тях бСшС Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π΄Π° сС ΠΎΡ‚ΠΊΠ°ΠΆΠ΅ΠΌ. НСка Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π½Π΅Ρ‰Π°Ρ‚Π° ΠΏΠΎ Ρ€Π΅Π΄.

Π‘ΠΆΠΈΠΌΠ°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ

Π‘Π°ΠΌΠΈ ΡΡŠΠ±ΠΈΡ‚ΠΈΡΡ‚Π°, ΠΊΠΎΠΈΡ‚ΠΎ записвамС Π² Π΄Π½Π΅Π²Π½ΠΈΠΊΠ°, са Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½ΠΈ ΠΈ повтарящи сС ("Ρ…Π²ΡŠΡ€Π»ΠΈΡ…ΠΌΠ΅ ΠΌΠΎΠ½Π΅Ρ‚Π° ΠΎΡ‚ 5 Π»Π΅Π²Π°", "натиснахмС Π±ΡƒΡ‚ΠΎΠ½Π° Π·Π° Π²Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° рСсто", ...). Π—Π°Ρ‚ΠΎΠ²Π° компрСсията трябва Π΄Π° сС ΠΎΠΊΠ°ΠΆΠ΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½Π°.

Π Π°Π·Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ Π·Π° компрСсия са Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΈ (ΠΏΡ€ΠΎΡ†Π΅ΡΠΎΡ€ΡŠΡ‚ Π½ΠΈ Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ ΠΌΠΎΡ‰Π΅Π½, Π΄ΠΎΡ€ΠΈ Π½Π° ΠΏΡŠΡ€Π²ΠΈΡ Pi имашС Π΅Π΄Π½ΠΎ ядро с чСстота 700MHz, Π½Π° Π°ΠΊΡ‚ΡƒΠ°Π»Π½ΠΈΡ‚Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ няколко ядра с чСстота Π½Π°Π΄ Π΅Π΄ΠΈΠ½ Π³ΠΈΠ³Π°Ρ…Π΅Ρ€Ρ†), скоростта Π½Π° ΠΎΠ±ΠΌΠ΅Π½ с Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ Π΅ ниска (няколко ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚Π° Π² сСкунда), Ρ€Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° записитС Π΅ малък. ΠžΠ±Ρ‰ΠΎ Π²Π·Π΅Ρ‚ΠΎ, Π°ΠΊΠΎ компрСсията повлияС Π½Π° производитСлността, Ρ‚ΠΎ само ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»Π½ΠΎ. (Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Π½Π΅ Π΅ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ, просто констатирам). Π£ нас Π½Π΅ Π΅ истински embedded, Π° стандартСн Linux, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ рСализацията Π½Π΅ Π±ΠΈ трябвало Π΄Π° изисква ΠΌΠ½ΠΎΠ³ΠΎ усилия (Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ Π΅ просто Π΄Π° ΡΠ²ΡŠΡ€ΠΆΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° ΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ няколко Π½Π΅ΠΉΠ½ΠΈΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ).

Π’Π·Π΅Ρ…ΠΌΠ΅ част ΠΎΡ‚ Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΎΡ‚ΠΎ устройство (1.7MB, 70 хиляди записа) ΠΈ ΠΏΡŠΡ€Π²ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ…ΠΌΠ΅ Π·Π° компрСсируСмост с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Π½Π°Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ Π½Π° ΠΊΠΎΠΌΠΏΡŽΡ‚ΡŠΡ€Π° gzip, lz4, lzop, bzip2, xz, zstd.

  • gzip, xz, zstd ΠΏΠΎΠΊΠ°Π·Π°Ρ…Π° Π±Π»ΠΈΠ·ΠΊΠΈ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ (40KB).
    ИзнСнада ΠΌΠ΅, Ρ‡Π΅ ΠΌΠΎΠ΄Π΅Ρ€Π΅Π½ xz ΠΏΠΎΠΊΠ°Π·Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ Π½Π° Π½ΠΈΠ²ΠΎΡ‚ΠΎ Π½Π° gzip ΠΈΠ»ΠΈ zstd;
  • lzip с настройки ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π΄Π°Π΄Π΅ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-слаб Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚;
  • lz4 ΠΈ lzop ΠΏΠΎΠΊΠ°Π·Π°Ρ…Π° Π½Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±ΡŠΡ€ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ (150KB);
  • bzip2 ΠΈΠ·Π½Π΅Π½Π°Π΄Π²Π°Ρ‰ΠΎ ΠΏΠΎΠΊΠ°Π·Π° Π΄ΠΎΠ±ΡŠΡ€ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ (18KB).

И Ρ‚Π°ΠΊΠ°, Π΄Π°Π½Π½ΠΈΡ‚Π΅ сС компрСсират ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±Ρ€Π΅.
Π’Π°ΠΊΠ° Ρ‡Π΅ (Π°ΠΊΠΎ Π½Π΅ Π½Π°ΠΌΠ΅Ρ€ΠΈΠΌ Ρ„Π°Ρ‚Π°Π»Π½ΠΈ Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ†ΠΈ) компрСсия Ρ‰Π΅ ΠΈΠΌΠ°! ΠŸΡ€ΠΎΡΡ‚ΠΎ Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π½Π° ΡΡŠΡ‰Π°Ρ‚Π° Ρ„Π»Π°ΡˆΠΊΠ° Ρ‰Π΅ сС ΠΏΠΎΠ±Π΅Ρ€Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ информация.

НСка помислим Π·Π° Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ†ΠΈΡ‚Π΅.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌ Π½ΠΎΠΌΠ΅Ρ€ Π΅Π΄Π½ΠΎ: Π²Π΅Ρ‡Π΅ сС споразумяхмС, Ρ‡Π΅ всяка запись трябва Π½Π΅Π·Π°Π±Π°Π²Π½ΠΎ Π΄Π° ΠΏΠΎΠΏΠ°Π΄Π½Π΅ Π½Π° Ρ„Π»Π°ΡˆΠΊΠ°Ρ‚Π°. ОбикновСно Π°Ρ€Ρ…ΠΈΠ²Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Π½Π°Ρ‚Ρ€ΡƒΠΏΠ²Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ входящия ΠΏΠΎΡ‚ΠΎΠΊ, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Π½Π΅ Ρ€Π΅ΡˆΠΈ, Ρ‡Π΅ Π΅ Π²Ρ€Π΅ΠΌΠ΅ Π΄Π° пишС Π½Π° ΠΈΠ·Ρ…ΠΎΠ΄Π°. На нас Π½ΠΈ трябва Π²Π΅Π΄Π½Π°Π³Π° стиснат Π±Π»ΠΎΠΊ Π΄Π°Π½Π½ΠΈ, Π·Π° Π΄Π° Π³ΠΎ Π·Π°ΠΏΠ°Π·ΠΈΠΌ Π² Π΅Π½Π΅Ρ€Π³ΠΈΠΉΠ½ΠΎ нСзависима ΠΏΠ°ΠΌΠ΅Ρ‚.

Π’ΠΈΠΆΠ΄Π°ΠΌ Ρ‚Ρ€ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ:

  1. Π”Π° компрСсирамС всяка запись с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Ρ€Π΅Ρ‡Π½ΠΈΠΊΠΎΠ²Π° компрСсия вмСсто Ρ€Π°Π·Π³Π»Π΅Π΄Π°Π½ΠΈΡ‚Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈ ΠΏΠΎ-Π³ΠΎΡ€Π΅.
    Π’ΠΎΠ²Π° Π΅ доста Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, Π½ΠΎ Π½Π΅ ΠΌΠΈ харСсва. Π—Π° Π΄Π° осигурим ΠΏΡ€ΠΈΠ΅ΠΌΠ»ΠΈΠ² Π½ΠΈΠ²ΠΎ Π½Π° компрСсия, Ρ€Π΅Ρ‡Π½ΠΈΠΊΡŠΡ‚ трябва Π΄Π° бъдС β€žΠΏΡ€ΠΈΡΠΏΠΎΡΠΎΠ±Π΅Π½β€œ Π·Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ Π΄Π°Π½Π½ΠΈ, всяка промяна Ρ‰Π΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ катастрофално спаданС Π½Π° Π½ΠΈΠ²ΠΎΡ‚ΠΎ Π½Π° компрСсия. Π”Π°, ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ сС Ρ€Π΅ΡˆΠ°Π²Π° с Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π½ΠΎΠ²Π° вСрсия Π½Π° Ρ€Π΅Ρ‡Π½ΠΈΠΊΠ°, Π½ΠΎ Ρ‚ΠΎΠ²Π° Π΅ Π³Π»Π°Π²ΠΎΠ±ΠΎΠ»ΠΈΠ΅ β€” Ρ‰Π΅ трябва Π΄Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΌΠ΅ всички вСрсии Π½Π° Ρ€Π΅Ρ‡Π½ΠΈΠΊΠ°; Π² всяка запись Ρ‰Π΅ трябва Π΄Π° посочим с коя вСрсия Π½Π° Ρ€Π΅Ρ‡Π½ΠΈΠΊΠ° Π΅ компрСсирана…
  2. Π”Π° компрСсирамС всяка запись с β€žΠΊΠ»Π°ΡΠΈΡ‡Π΅ΡΠΊΠΈβ€œ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈ, Π½ΠΎ нСзависимо ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅.
    ΠžΠ±ΡΡŠΠΆΠ΄Π°Π½ΠΈΡ‚Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈ Π·Π° компрСсия Π½Π΅ са ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈ Π΄Π° работят с записи с Ρ‚Π°ΠΊΡŠΠ² Ρ€Π°Π·ΠΌΠ΅Ρ€ (дСсСтки Π±Π°ΠΉΡ‚Π°), ΠΊΠΎΡΡ„Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ Π½Π° компрСсия Ρ‰Π΅ Π΅ явно ΠΏΠΎΠ΄ 1 (Ρ‚.Π΅. ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΌΠ° Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ вмСсто компрСсия);
  3. Π”Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ FLUSH слСд всяка запись.
    Π’ ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π·Π° компрСсия ΠΈΠΌΠ° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° FLUSH. Π’ΠΎΠ²Π° Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° (ΠΈΠ»ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚ΡŠΡ€ Π½Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°Ρ‚Π° Π·Π° компрСсия), ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΉΠΊΠΈ която Π°Ρ€Ρ…ΠΈΠ²Π°Ρ‚ΠΎΡ€ΡŠΡ‚ Ρ„ΠΎΡ€ΠΌΠΈΡ€a искан ΠΏΠΎΡ‚ΠΎΠΊ Ρ‚Π°ΠΊΠ°, Ρ‡Π΅ Π½Π° Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° основа Π΄Π° ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²Π΅Π½ΠΈ всичко Π½Π΅ компрСсиранитС Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π²Π΅Ρ‡Π΅ са Π±ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈ. Вакъв Π°Π½Π°Π»ΠΎΠ³ sync Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΈΡ‚Π΅ систСми ΠΈΠ»ΠΈ commit Π² sql.
    Π’Π°ΠΆΠ½ΠΎ Π΅, Ρ‡Π΅ послСдващитС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ компрСсия Ρ‰Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ натрупания Ρ€Π΅Ρ‡Π½ΠΈΠΊ ΠΈ стСпСнта Π½Π° компрСсия няма Π΄Π° пострада Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π°, ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ Π² ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈΡ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚.

Ясно Π΅, Ρ‡Π΅ ΠΈΠ·Π±Ρ€Π°Ρ… трСтия Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, Π½Π΅ΠΊΠ° сС спрСм Π½Π° Π½Π΅Π³ΠΎ ΠΏΠΎ-ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ.

НамСрСна ΠΎΡ‚Π»ΠΈΡ‡Π½Π° статия Π·Π° FLUSH Π² zlib.

Направих тСст Π½Π° основата Π½Π° статия, Π²Π·Π΅ΠΌΠ°ΠΉΠΊΠΈ 70 хиляди записи ΠΎΡ‚ ΠΆΡƒΡ€Π½Π°Π» Π½Π° Ρ€Π΅Π°Π»Π½ΠΎ устройство, ΠΏΡ€ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° страницата ΠΎΡ‚ 60Кб (ΠΊ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° страницата Ρ‰Π΅ сС Π²ΡŠΡ€Π½Π΅ΠΌ ΠΏΠΎ-късно) ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ…:

Π˜Π·Ρ…ΠΎΠ΄Π½ΠΈ Π΄Π°Π½Π½ΠΈ
ΠšΠΎΠΌΠΏΡ€Π΅ΡΠΈΡ gzip -9 (Π±Π΅Π· FLUSH)
zlib с Z_PARTIAL_FLUSH
zlib с Z_SYNC_FLUSH

ОбСм, Кб
1692
40
352
604

На ΠΏΡ€ΡŠΠ² ΠΏΠΎΠ³Π»Π΅Π΄ Ρ†Π΅Π½Π°Ρ‚Π°, която добавя FLUSH, ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΏΡ€Π΅ΠΊΠΎΠΌΠ΅Ρ€Π½ΠΎ висока, Π½ΠΎ Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ ΠΈΠ·Π±ΠΎΡ€ΡŠΡ‚ Π½ΠΈ Π΅ Π±Π΅Π΄Π΅Π½ - ΠΈΠ»ΠΈ Π΄Π° Π½Π΅ компрСсирамС ΠΈΠ·ΠΎΠ±Ρ‰ΠΎ, ΠΈΠ»ΠΈ Π΄Π° компрСсирамС (ΠΈ доста Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ) с FLUSH. НС трябва Π΄Π° забравямС, Ρ‡Π΅ ΠΈΠΌΠ°ΠΌΠ΅ 70 хиляди записа, ΠΈΠ·Π»ΠΈΡˆΡŠΠΊΡŠΡ‚, добавян ΠΎΡ‚ Z_PARTIAL_FLUSH, Π΅ само 4-5 Π±Π°ΠΉΡ‚Π° Π½Π° запис. А ΠΊΠΎΠ΅Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ Π½Π° компрСсия сС ΠΎΠΊΠ°Π·Π° ΠΏΠΎΡ‡Ρ‚ΠΈ 5:1, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ ΠΎΡ‚Π»ΠΈΡ‡Π΅Π½ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚.

МоТС Π΄Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΈΠ·Π½Π΅Π½Π°Π΄Π²Π°Ρ‰ΠΎ, Π½ΠΎ Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ Z_SYNC_FLUSH Π΅ ΠΏΠΎ-СфСктивният Π½Π°Ρ‡ΠΈΠ½ Π·Π° ΠΏΡ€Π°Π²Π΅Π½Π΅ Π½Π° FLUSH.

ΠŸΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Z_SYNC_FLUSH послСднитС 4 Π±Π°ΠΉΡ‚Π° Π½Π° всСки запис Π²ΠΈΠ½Π°Π³ΠΈ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ 0x00, 0x00, 0xff, 0xff. А Π°ΠΊΠΎ Π·Π½Π°Π΅ΠΌ ΠΊΠ°ΠΊΠ²ΠΈ са Ρ‚Π΅ β€” ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π½Π΅ Π³ΠΈ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΌΠ΅, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ крайният Ρ€Π°Π·ΠΌΠ΅Ρ€ сС ΠΎΠΊΠ°Π·Π²Π° само 324Кб.

Π’ статията, Π½Π° която сС ΠΏΠΎΠ·ΠΎΠ²Π°Π²Π°ΠΌ, ΠΈΠΌΠ° обяснСниС:

Нов Ρ‚ΠΈΠΏ 0 Π±Π»ΠΎΠΊ с ΠΏΡ€Π°Π·Π½ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½.

Π’ΠΈΠΏ 0 Π±Π»ΠΎΠΊ с ΠΏΡ€Π°Π·Π½ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅ сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚:

  • Ρ‚Ρ€ΠΈ битовия Π·Π°Π³Π»Π°Π²Π΅Π½ Π±Π»ΠΎΠΊ;
  • ΠΎΡ‚ 0 Π΄ΠΎ 7 Π±ΠΈΡ‚Π°, Ρ€Π°Π²Π½ΠΈ Π½Π° Π½ΡƒΠ»Π°, Π·Π° постиганС Π½Π° Π±Π°ΠΉΡ‚Π½ΠΎ подравняванС;
  • Ρ‡Π΅Ρ‚ΠΈΡ€ΠΈΠ±Π°ΠΉΡ‚ΠΎΠ²Π°Ρ‚Π° послСдоватСлност 00 00 FF FF.

ΠšΠ°ΠΊΡ‚ΠΎ Π½Π΅ Π΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π΄Π° сС Π·Π°Π±Π΅Π»Π΅ΠΆΠΈ, Π² послСдния Π±Π»ΠΎΠΊ ΠΏΡ€Π΅Π΄ΠΈ Ρ‚Π΅Π·ΠΈ 4 Π±Π°ΠΉΡ‚Π° ΠΈΠΌΠ° ΠΎΡ‚ 3 Π΄ΠΎ 10 Π½ΡƒΠ»Π΅Π²ΠΈ Π±ΠΈΡ‚Π°. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°Ρ‚Π° ΠΏΠΎΠΊΠ°Π·Π°, Ρ‡Π΅ Π½ΡƒΠ»Π΅Π²ΠΈΡ‚Π΅ Π±ΠΈΡ‚ΠΎΠ²Π΅ Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ са ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 10.

Оказва сС, Ρ‡Π΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° ΠΊΡ€Π°Ρ‚ΠΊΠΈ Π±Π»ΠΎΠΊΠΎΠ²Π΅ Π΄Π°Π½Π½ΠΈ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ (Π²ΠΈΠ½Π°Π³ΠΈ?) сС ΠΊΠΎΠ΄ΠΈΡ€Π°Ρ‚ с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° Π±Π»ΠΎΠΊ Ρ‚ΠΈΠΏ 1 (фиксиран Π±Π»ΠΎΠΊ), ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΈΠ½Π°Π³ΠΈ Π·Π°Π²ΡŠΡ€ΡˆΠ²Π° с 7 Π½ΡƒΠ»Π΅Π²ΠΈ Π±ΠΈΡ‚Π°, Ρ‚Π°ΠΊΠ° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ 10-17 Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°Π½ΠΎ Π½ΡƒΠ»Π΅Π²ΠΈ Π±ΠΈΡ‚Π° (Π° останалитС Ρ‰Π΅ са Π½ΡƒΠ»Π΅Π²ΠΈ с вСроятност ΠΎΠΊΠΎΠ»ΠΎ 50%).

И Ρ‚Π°ΠΊΠ°, ΠΏΡ€ΠΈ тСстовитС Π΄Π°Π½Π½ΠΈ Π² 100% ΠΎΡ‚ случаитС ΠΏΡ€Π΅Π΄ 0x00, 0x00, 0xff, 0xff ΠΈΠΌΠ° Π΅Π΄ΠΈΠ½ Π½ΡƒΠ»Π΅Π² Π±Π°ΠΉΡ‚, Π° Π² ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ Π΅Π΄Π½Π° Ρ‚Ρ€Π΅Ρ‚Π° ΠΎΡ‚ случаитС β€” Π΄Π²Π° Π½ΡƒΠ»Π΅Π²ΠΈ Π±Π°ΠΉΡ‚Π°. (възмоТно Π΅ Π΄Π° Π΅ ΡΠ²ΡŠΡ€Π·Π°Π½ΠΎ с Ρ„Π°ΠΊΡ‚Π°, Ρ‡Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ Π±ΠΈΠ½Π°Ρ€Π΅Π½ CBOR, Π° ΠΏΡ€ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° тСкстов JSON Π±Π»ΠΊΠΎΠ²Π΅Ρ‚Π΅ Ρ‚ΠΈΠΏ 2 β€” Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅Π½ Π±Π»ΠΎΠΊ, Π±ΠΈΡ…Π° сС срСщали ΠΏΠΎ-чСсто, ΡΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ Π±ΠΈΡ…Π° сС срСщали Π±Π»ΠΊΠΎΠ²Π΅ Π±Π΅Π· Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ Π½ΡƒΠ»Π΅Π²ΠΈ Π±Π°ΠΉΡ‚Π° ΠΏΡ€Π΅Π΄ 0x00, 0x00, 0xff, 0xff).

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Π½Π° Π½Π°Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ тСстови Π΄Π°Π½Π½ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° сС вмСстим Π² ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΠΎΡ‚ 250Кб компрСсирани Π΄Π°Π½Π½ΠΈ.

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° спСститС ΠΎΡ‰Π΅ ΠΌΠ°Π»ΠΊΠΎ, Π·Π°Π½ΠΈΠΌΠ°Π²Π°ΠΉΠΊΠΈ сС с ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π±ΠΈΡ‚ΠΎΠ²Π΅: Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€Π°ΠΌΠ΅ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° няколко Π½ΡƒΠ»Π΅Π²ΠΈ Π±ΠΈΡ‚Π° Π² края Π½Π° Π±Π»ΠΎΠΊΠ°, няколко Π±ΠΈΡ‚Π° Π² Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π½Π° Π±Π»ΠΎΠΊΠ° ΡΡŠΡ‰ΠΎ Π½Π΅ сС промСнят…
Но Ρ‚ΡƒΠΊ Π²Π·Π΅Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΄Π° спра, ΠΈΠ½Π°Ρ‡Π΅ с Ρ‚Π°ΠΊΠΈΠ²Π° Ρ‚Π΅ΠΌΠΏΠΎΠ²Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° стигна Π΄ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅ Π½Π° собствСн Π°Ρ€Ρ…ΠΈΠ²Π°Ρ‚ΠΎΡ€.

Π’ ΠΊΡ€Π°ΠΉΠ½Π° смСтка, ΠΎΡ‚ ΠΌΠΎΠΈΡ‚Π΅ тСстови Π΄Π°Π½Π½ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ… 3-4 Π±Π°ΠΉΡ‚Π° Π½Π° запис, ΠΊΠΎΠ΅Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚ΡŠΡ‚ Π½Π° компрСсия сС ΠΎΠΊΠ°Π·Π° Π½Π°Π΄ 6:1. ЧСстно ΠΊΠ°Π·Π°Π½ΠΎ: Π½Π΅ ΠΎΡ‡Π°ΠΊΠ²Π°Ρ… Ρ‚Π°ΠΊΡŠΠ² Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚, спорСд ΠΌΠ΅Π½ всичко, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€ΠΎ ΠΎΡ‚ 2:1 β€” Π²Π΅Ρ‡Π΅ Π΅ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚, ΠΎΠΏΡ€Π°Π²Π΄Π°Π²Π°Ρ‰ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° компрСсия.

Всичко Π΅ чудСсно, Π½ΠΎ zlib (deflate) β€” всС ΠΏΠ°ΠΊ Π΅ Π°Ρ€Ρ…Π°ΠΈΡ‡Π΅Π½ ΠΈ ΠΌΠ°Π»ΠΊΠΎ старомодСн Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌ Π·Π° компрСсия. Π‘Π°ΠΌΠΎΡ‚ΠΎ Ρ‚ΠΎΠ²Π°, Ρ‡Π΅ ΠΊΠ°Ρ‚ΠΎ Ρ€Π΅Ρ‡Π½ΠΈΠΊ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ послСднитС 32Кб ΠΎΡ‚ ΠΏΠΎΡ‚ΠΎΠΊΠ° Π½Π° нСс compressed Π΄Π°Π½Π½ΠΈ, днСс ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° странно (тоСст, Π°ΠΊΠΎ някой Π±Π»ΠΎΠΊ Π΄Π°Π½Π½ΠΈ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π½Π° Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ Π±ΠΈΠ»ΠΎ Π² входния ΠΏΠΎΡ‚ΠΎΠΊ ΠΏΡ€Π΅Π΄ΠΈ 40Кб, Ρ‚ΠΎΠΉ Ρ‰Π΅ Π·Π°ΠΏΠΎΡ‡Π½Π΅ Π΄Π° сС Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€Π° ΠΎΡ‚Π½ΠΎΠ²ΠΎ, Π° Π½Π΅ Π΄Π° сС ΠΏΠΎΠ·ΠΎΠ²Π° Π½Π° ΠΌΠΈΠ½Π°Π»ΠΎΡ‚ΠΎ Π²Ρ…ΠΎΠΆΠ΄Π°Π½Π΅). Π’ ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈΡ‚Π΅ Π°Ρ€Ρ…ΠΈΠ²Π°Ρ‚ΠΎΡ€ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° Ρ€Π΅Ρ‡Π½ΠΈΠΊΠ° чСсто сС ΠΈΠ·ΠΌΠ΅Ρ€Π²Π° Π² ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚ΠΈ, Π° Π½Π΅ Π² ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚ΠΈ.

Π’Π°ΠΊΠ° Ρ‡Π΅ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π°ΠΌΠ΅ Π½Π°ΡˆΠ΅Ρ‚ΠΎ ΠΌΠΈΠ½ΠΈ-изслСдванС Π½Π° Π°Ρ€Ρ…ΠΈΠ²Π°Ρ‚ΠΎΡ€ΠΈΡ‚Π΅.

БлСдващият, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€ΠΎΠ±Π²Π°Ρ…, бСшС bzip2 (напомням, Π±Π΅Π· FLUSH ΠΏΠΎΠΊΠ°Π·Π° фантастична стСпСн Π½Π° компрСсия, ΠΏΠΎΡ‡Ρ‚ΠΈ 100:1). Π£Π²ΠΈ, с FLUSH сС прСдстави ΠΌΠ½ΠΎΠ³ΠΎ Π·Π»Π΅, Ρ€Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° компрСсиранитС Π΄Π°Π½Π½ΠΈ сС ΠΎΠΊΠ°Π·Π° ΠΏΠΎ-голям ΠΎΡ‚ нСс compressed Π΄Π°Π½Π½ΠΈΡ‚Π΅.

ΠœΠΎΠΈΡ‚Π΅ прСдполоТСния Π·Π° ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈΡ‚Π΅ Π·Π° ΠΏΡ€ΠΎΠ²Π°Π»Π°

Libbz2 ΠΏΡ€Π΅Π΄Π»Π°Π³Π° само Π΅Π΄ΠΈΠ½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Π·Π° flush, ΠΊΠΎΠΉΡ‚ΠΎ, ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°, изчиства Ρ€Π΅Ρ‡Π½ΠΈΠΊΠ° (Π°Π½Π°Π»ΠΎΠ³ Π½Π° Z_FULL_FLUSH Π² zlib), Π³ΠΎΠ²ΠΎΡ€Π΅Π½Π΅Ρ‚ΠΎ Π·Π° някаква Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½Π° компрСсия слСд Ρ‚ΠΎΠ²Π° Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»Π½ΠΎ.

И послСдният, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€ΠΎΠ±Π²Π°Ρ…, бСшС zstd. Π’ зависимост ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅, Ρ‚ΠΎΠΉ компрСсира ΠΈΠ»ΠΈ Π½Π° Π½ΠΈΠ²ΠΎ gzip, Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ, ΠΈΠ»ΠΈ пък ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ ΠΎΡ‚ gzip.

Π£Π²ΠΈ, с FLUSH ΠΈ Ρ‚ΠΎΠΉ Π½Π΅ сС прСдстави β€žΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±Ρ€Π΅β€œ: Ρ€Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° компрСсиранитС Π΄Π°Π½Π½ΠΈ стана ΠΎΠΊΠΎΠ»ΠΎ 700Кб.

Аз Π·Π°Π΄Π°Π» Π²ΡŠΠΏΡ€ΠΎΡ Π½Π° страницата Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π² github, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ… ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€, Ρ‡Π΅ трябва Π΄Π° сС ΠΎΡ‡Π°ΠΊΠ²Π° Π΄ΠΎ 10 Π±Π°ΠΉΡ‚Π° слуТСбни Π΄Π°Π½Π½ΠΈ Π·Π° всСки Π±Π»ΠΎΠΊ с компрСсирани Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ Π±Π»ΠΈΠ·ΠΎ Π΄ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ, няма Π΄Π° настигна deflate ΠΏΠΎ никакъв Π½Π°Ρ‡ΠΈΠ½.

На Ρ‚ΠΎΠ²Π° Ρ€Π΅ΡˆΠΈΡ… Π΄Π° спра СкспСримСнтитС с Π°Ρ€Ρ…ΠΈΠ²Π°Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ (припомням, xz, lzip, lzo, lz4 Π½Π΅ сС ΠΏΠΎΠΊΠ°Π·Π°Ρ…Π° Π½Π° Π΅Ρ‚Π°ΠΏΠ° Π½Π° тСстванС Π±Π΅Π· FLUSH, Π° Π½Π΅ исках Π΄Π° Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π°ΠΌ ΠΏΠΎ-Π΅ΠΊΠ·ΠΎΡ‚ΠΈΡ‡Π½ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈ Π·Π° компрСсия).

Π’Ρ€ΡŠΡ‰Π°ΠΌΠ΅ сС към ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅ с Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ.

Вторият ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ (ΠΊΠ°ΠΊΡ‚ΠΎ сС ΠΊΠ°Π·Π²Π°, ΠΏΠΎ Ρ€Π΅Π΄, Π° Π½Π΅ ΠΏΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅) Π΅, Ρ‡Π΅ компрСсиранитС Π΄Π°Π½Π½ΠΈ прСдставляват Π΅Π΄ΠΈΠ½Π΅Π½ ΠΏΠΎΡ‚ΠΎΠΊ, Π² ΠΊΠΎΠΉΡ‚ΠΎ постоянно ΠΈΠΌΠ° ΠΏΡ€Π΅ΠΏΡ€Π°Ρ‚ΠΊΠΈ към ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈ ΡƒΡ‡Π°ΡΡ‚ΡŠΡ†ΠΈ. Π’Π°ΠΊΠ°, ΠΏΡ€ΠΈ ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° някой ΡƒΡ‡Π°ΡΡ‚ΡŠΠΊ ΠΎΡ‚ компрСсиранитС Π΄Π°Π½Π½ΠΈ, Π½ΠΈΠ΅ Π³ΡƒΠ±ΠΈΠΌ Π½Π΅ само ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈΡ с Π½Π΅Π³ΠΎ Π±Π»ΠΎΠΊ Π½Π΅ΠΊΠΎΠΌΡƒΡ‚ΠΈΡ€Π°Π½ΠΈ Π΄Π°Π½Π½ΠΈ, Π½ΠΎ ΠΈ всички послСдващи.

Има ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈ Π·Π° Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ:

  1. Π”Π° сС ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈ появата Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° β€” Π΄Π° сС Π΄ΠΎΠ±Π°Π²ΠΈ излишна информация Π² компрСсиранитС Π΄Π°Π½Π½ΠΈ, която Π΄Π° ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ опрСдСлянС ΠΈ поправянС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ; Π·Π° Ρ‚ΠΎΠ²Π° Ρ‰Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΏΠΎ-късно;
  2. Π”Π° сС ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€Π° Π²ΡŠΠ·Π΄Π΅ΠΉΡΡ‚Π²ΠΈΠ΅Ρ‚ΠΎ Π² случай Π½Π° възникванС Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°.
    Π’Π΅Ρ‡Π΅ спомСнахмС, Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° компрСсирамС всСки Π±Π»ΠΎΠΊ Π΄Π°Π½Π½ΠΈ нСзависимо, ΠΏΡ€ΠΈ ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡŠΡ‚ Ρ‰Π΅ ΠΈΠ·Ρ‡Π΅Π·Π½Π΅ сам ΠΏΠΎ сСбС си (ΠΏΠΎΠ²Ρ€Π΅Π΄Π°Ρ‚Π° Π½Π° Π΅Π΄ΠΈΠ½ Π±Π»ΠΎΠΊ Ρ‰Π΅ Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π·Π°Π³ΡƒΠ±Π° Π½Π° Π΄Π°Π½Π½ΠΈ само ΠΎΡ‚ Ρ‚ΠΎΠ·ΠΈ Π±Π»ΠΎΠΊ). Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, Ρ‚ΠΎΠ²Π° Π΅ ΠΊΡ€Π°ΠΉΠ½ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΏΡ€ΠΈ ΠΊΠΎΠ΅Ρ‚ΠΎ компрСсиранСто Π½Π° Π΄Π°Π½Π½ΠΈ Ρ‰Π΅ бъдС Π½Π΅Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ. ΠžΠ±Ρ€Π°Ρ‚Π½Π°Ρ‚Π° крайност Π΅: Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ всичкитС 4MB Π½Π° нашия Ρ‡ΠΈΠΏ ΠΊΠ°Ρ‚ΠΎ Π΅Π΄ΠΈΠ½Π΅Π½ Π°Ρ€Ρ…ΠΈΠ², ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‰Π΅ Π½ΠΈ осигури ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎ компрСсиранС, Π½ΠΎ катастрофални послСдици Π² случай Π½Π° ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ.
    Π”Π°, Π½ΡƒΠΆΠ΅Π½ Π΅ компромис ΠΎΡ‚ Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° надСТдността. Но трябва Π΄Π° ΠΏΠΎΠΌΠ½ΠΈΠΌ, Ρ‡Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°ΠΌΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π·Π° Π½Π΅Π΅Π½Π΅Ρ€Π³ΠΈΠΉΠ½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ с ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ нисък BER ΠΈ Π΄Π΅ΠΊΠ»Π°Ρ€ΠΈΡ€Π°Π½ срок Π½Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ ΠΎΡ‚ 20 Π³ΠΎΠ΄ΠΈΠ½ΠΈ.

Π’ процСса Π½Π° СкспСримСнти установих, Ρ‡Π΅ ΠΏΠΎ-ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΈΡ‚Π΅ Π·Π°Π³ΡƒΠ±ΠΈ Π½Π° Π½ΠΈΠ²ΠΎΡ‚ΠΎ Π½Π° компрСсия Π·Π°ΠΏΠΎΡ‡Π²Π°Ρ‚ Π½Π° Π±Π»ΠΎΠΊΠΎΠ²Π΅ с компрСсирани Π΄Π°Π½Π½ΠΈ с Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠΎΠ΄ 10KB.
По-Ρ€Π°Π½ΠΎ сС спомСнавашС, Ρ‡Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π°Ρ‚Π° ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΈΠΌΠ° странична организация, Π½Π΅ Π²ΠΈΠΆΠ΄Π°ΠΌ ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈ, ΠΏΠΎΡ€Π°Π΄ΠΈ ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ трябва Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΠ΅Ρ‚ΠΎ "Π΅Π΄Π½Π° страница β€” Π΅Π΄ΠΈΠ½ Π±Π»ΠΎΠΊ с компрСсирани Π΄Π°Π½Π½ΠΈ".

Π’Π°ΠΊΠ° минималният Ρ€Π°Π·ΡƒΠΌΠ΅Π½ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° страницата Π΅ Ρ€Π°Π²Π΅Π½ Π½Π° 16KB (с запас Π·Π° слуТСбна информация). Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° малкият Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° страницата Π½Π°Π»Π°Π³Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²Π΅Π½ΠΈ ограничСния Π²ΡŠΡ€Ρ…Ρƒ максималния Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° записа.

Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ засСга Π½Π΅ ΠΏΡ€Π΅Π΄Π²ΠΈΠΆΠ΄Π°ΠΌ записи, ΠΏΠΎ-Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΎΡ‚ Π΅Π΄ΠΈΠ½ΠΈΡ‡Π΅Π½ ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚ Π² компрСсиран Π²ΠΈΠ΄, Ρ€Π΅ΡˆΠΈΡ… Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ страници с Ρ€Π°Π·ΠΌΠ΅Ρ€ 32KB (всичко ΠΎΠ±Ρ‰ΠΎ Π΅ 128 страници Π½Π° Ρ‡ΠΈΠΏ).

РСзюмС:

  • Π”Π°Π½Π½ΠΈΡ‚Π΅ ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΌΠ΅ компрСсирани с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° zlib (deflate);
  • Π—Π° всСки запис настройвамС Z_SYNC_FLUSH;
  • На всяка компрСсирана запись отрязвамС ΠΊΡ€Π°ΠΈΡ‰Π°Ρ‚Π° Π½Π° Π±Π°ΠΉΡ‚ΠΎΠ²Π΅Ρ‚Π΅ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 0x00, 0x00, 0xff, 0xff); Π² Π·Π°Π³Π»Π°Π²ΠΈΠ΅Ρ‚ΠΎ посочвамС ΠΊΠΎΠ»ΠΊΠΎ Π±Π°ΠΉΡ‚Π° смС отрязали;
  • Π”Π°Π½Π½ΠΈΡ‚Π΅ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Π½Π° страници ΠΏΠΎ 32Кб; Π²ΡŠΡ‚Ρ€Π΅ Π² страницата ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π° Π΅Π΄ΠΈΠ½Π΅Π½ ΠΏΠΎΡ‚ΠΎΠΊ ΠΎΡ‚ компрСсирани Π΄Π°Π½Π½ΠΈ; Π½Π° всяка страница компрСсията Π·Π°ΠΏΠΎΡ‡Π²Π°ΠΌΠ΅ ΠΎΡ‚Π½ΠΎΠ²ΠΎ.

И, ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡ΠΈΠΌ с компрСсията, искам Π΄Π° подчСртая, Ρ‡Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΡ‚Π΅ компрСсирани Π΄Π°Π½Π½ΠΈ са само няколко Π±Π°ΠΉΡ‚Π° Π·Π° запис, Π·Π°Ρ‚ΠΎΠ²Π° Π΅ ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π²Π°ΠΆΠ½ΠΎ Π΄Π° Π½Π΅ сС Ρ€Π°Π·Π΄ΡƒΠ²Π° слуТСбната информация, всСки Π±Π°ΠΉΡ‚ Ρ‚ΡƒΠΊ Π΅ ΠΎΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

Π‘ΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° заглавията Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅

Въй ΠΊΠ°Ρ‚ΠΎ Π½Π°ΡˆΠΈΡ‚Π΅ записи са с ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° дълТина, трябва Π΄Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ ΠΏΠΎ някакъв Π½Π°Ρ‡ΠΈΠ½ Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ/Π³Ρ€Π°Π½ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° записитС.

Зная Ρ‚Ρ€ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°:

  1. Всички записи сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Π² Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚ ΠΏΠΎΡ‚ΠΎΠΊ, ΠΏΡŠΡ€Π²ΠΎ ΠΈΠ΄Π²Π° Π·Π°Π³Π»Π°Π²ΠΈΠ΅Ρ‚ΠΎ Π½Π° записа, ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‰ΠΎ Π΄ΡŠΠ»ΠΆΠΈΠ½Π°Ρ‚Π°, Π° слСд Ρ‚ΠΎΠ²Π° самият запис.
    Π’ Ρ‚ΠΎΠ·ΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΈ заглавията, ΠΈ Π΄Π°Π½Π½ΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΈΠΌΠ°Ρ‚ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° дълТина.
    По ΡΡŠΡ‰Π΅ΡΡ‚Π²ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ Π΅Π΄Π½ΠΎΡΠ²ΡŠΡ€Π·Π°Π½ списък, ΠΊΠΎΠΉΡ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° чСсто;
  2. Заглавията ΠΈ сами записи сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Π² ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ.
    Използвайки заглавия с постоянна дълТина, постигамС Ρ‚ΠΎΠ²Π°, Ρ‡Π΅ ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΅Π΄Π½ΠΎ Π·Π°Π³Π»Π°Π²ΠΈΠ΅ Π½Π΅ влияС Π½Π° останалитС.
    ПодобСн ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΌΠ½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΈ систСми;
  3. ЗаписитС сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Π² Π½Π΅ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚ ΠΏΠΎΡ‚ΠΎΠΊ, Π³Ρ€Π°Π½ΠΈΡ†Π°Ρ‚Π° Π½Π° записа сС опрСдСля ΠΏΠΎ извСстСн ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ (символ/послСдоватСлност ΠΎΡ‚ символи, ΠΊΠΎΠΉΡ‚ΠΎ/която Π΅ Π·Π°Π±Ρ€Π°Π½Π΅Π½ Π²ΡŠΡ‚Ρ€Π΅ Π² Π±Π»ΠΎΠΊΠΎΠ²Π΅Ρ‚Π΅ Π΄Π°Π½Π½ΠΈ). Ако Π² записа сС срСща ΠΌΠ°Ρ€ΠΊΠ΅Ρ€, Π½ΠΈΠ΅ Π³ΠΎ замСнямС с извСстна послСдоватСлност (Π΅ΠΊΡ€Π°Π½ΠΈΡ€Π°ΠΌΠ΅ Π³ΠΎ).
    ПодобСн ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° PPP.

Π©Π΅ ΠΈΠ»ΡŽΡΡ‚Ρ€ΠΈΡ€Π°ΠΌ.

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 1:
ΠœΠΎΡΡ‚Π° рСализация Π½Π° ΠΏΡ€ΡŠΡΡ‚Π΅Π½ΠΎΠ²ΠΈΠ΄Π΅Π½ Π±ΡƒΡ„Π΅Ρ€ Π² NOR flash
Π’ΡƒΠΊ всичко Π΅ ΠΌΠ½ΠΎΠ³ΠΎ просто: Π·Π½Π°Π΅ΠΉΠΊΠΈ Π΄ΡŠΠ»ΠΆΠΈΠ½Π°Ρ‚Π° Π½Π° записа, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° изчислим адрСса Π½Π° слСдващото Π·Π°Π³Π»Π°Π²ΠΈΠ΅. Π’Π°ΠΊΠ° ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°ΠΌΠ΅ ΠΏΡ€Π΅Π· заглавията, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Π½Π΅ срСщнСм област, запълнСна с 0xff (свободна област) ΠΈΠ»ΠΈ края Π½Π° страницата.

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 2:
ΠœΠΎΡΡ‚Π° рСализация Π½Π° ΠΏΡ€ΡŠΡΡ‚Π΅Π½ΠΎΠ²ΠΈΠ΄Π΅Π½ Π±ΡƒΡ„Π΅Ρ€ Π² NOR flash
ΠŸΠΎΡ€Π°Π΄ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°Ρ‚Π° дълТина Π½Π° записа, Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»Π½ΠΎ Π΄Π° ΠΊΠ°ΠΆΠ΅ΠΌ ΠΊΠΎΠ»ΠΊΠΎ ΠΌΠ½ΠΎΠ³ΠΎ записи (Π° слСдоватСлно ΠΈ заглавия) Ρ‰Π΅ Π½ΠΈ трябват Π½Π° страницата. МоТСм Π΄Π° разнСсСм заглавията ΠΈ самитС Π΄Π°Π½Π½ΠΈ ΠΏΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ страници, Π½ΠΎ ΠΌΠΈ харСсва Π΄Ρ€ΡƒΠ³ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄: ΠΈ заглавията, ΠΈ Π΄Π°Π½Π½ΠΈΡ‚Π΅ сС Ρ€Π°Π·ΠΏΠΎΠ»Π°Π³Π°Ρ‚ Π½Π° Π΅Π΄Π½Π° ΠΈ ΡΡŠΡ‰Π° страница, Π½ΠΎ заглавията (с постоянСн Ρ€Π°Π·ΠΌΠ΅Ρ€) са ΠΎΡ‚ Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π½Π° страницата, Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ (с ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° дълТина) β€” ΠΎΡ‚ края. Π’Π΅Π΄Π½Π°Π³Π° Ρ‰ΠΎΠΌ Ρ‚Π΅ β€žΡΠ΅ ΡΡ€Π΅Ρ‰Π½Π°Ρ‚β€œ (няма Π΄Π° ΠΈΠΌΠ°ΠΌΠ΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ свободно място Π·Π° Π½ΠΎΠ² запис) β€” считамС, Ρ‡Π΅ Ρ‚Π°Π·ΠΈ страница Π΅ запълнСна.

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 3:
ΠœΠΎΡΡ‚Π° рСализация Π½Π° ΠΏΡ€ΡŠΡΡ‚Π΅Π½ΠΎΠ²ΠΈΠ΄Π΅Π½ Π±ΡƒΡ„Π΅Ρ€ Π² NOR flash
Π’ΡƒΠΊ няма Π½ΡƒΠΆΠ΄Π° Π΄Π° сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Π΄ΡŠΠ»ΠΆΠΈΠ½Π°Ρ‚Π° ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³Π° информация Π·Π° Ρ€Π°Π·ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π² Π·Π°Π³Π»Π°Π²ΠΈΠ΅Ρ‚ΠΎ, Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ са ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ΠΈΡ‚Π΅, ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°Ρ‰ΠΈ Π³Ρ€Π°Π½ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° записитС. ΠžΠ±Π°Ρ‡Π΅ Π΄Π°Π½Π½ΠΈΡ‚Π΅ трябва Π΄Π° сС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‚ ΠΏΡ€ΠΈ записванС/Ρ‡ΠΈΡ‚Π΅Π½Π΅.
ΠšΠ°Ρ‚ΠΎ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ Π±ΠΈΡ… ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π» 0xff (с ΠΊΠΎΠΉΡ‚ΠΎ страницата Π΅ запълнСна слСд ΠΈΠ·Ρ‚Ρ€ΠΈΠ²Π°Π½Π΅), ΠΏΠΎ Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ свободната област със сигурност няма Π΄Π° сС ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€Π° ΠΊΠ°Ρ‚ΠΎ Π΄Π°Π½Π½ΠΈ.

Π‘Ρ€Π°Π²Π½ΠΈΡ‚Π΅Π»Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π°:

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 1
Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 2
Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 3

Устойчивост Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ
β€”
+
+

ΠšΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎΡΡ‚
+
β€”
+

БлоТност Π½Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅
*
**
**

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ 1 ΠΈΠΌΠ° Ρ„Π°Ρ‚Π°Π»Π΅Π½ Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΠΊ: ΠΏΡ€ΠΈ ΠΏΠΎΠ²Ρ€Π΅Π΄Π° Π½Π° някоС ΠΎΡ‚ заглавията, цялата слСдваща Π²Π΅Ρ€ΠΈΠ³Π° сС Ρ€Π°Π·Ρ€ΡƒΡˆΠ°Π²Π°. ΠžΡΡ‚Π°Π½Π°Π»ΠΈΡ‚Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΈ позволяват Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° част ΠΎΡ‚ Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π΄ΠΎΡ€ΠΈ ΠΏΡ€ΠΈ масови ΠΏΠΎΠ²Ρ€Π΅Π΄ΠΈ.
Но Ρ‚ΡƒΠΊ Π΅ умСстно Π΄Π° спомСна, Ρ‡Π΅ Ρ€Π΅ΡˆΠΈΡ…ΠΌΠ΅ Π΄Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΌΠ΅ Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π² компрСсиран Π²ΠΈΠ΄, Ρ‚Π°ΠΊΠ° ΠΈΠ»ΠΈ ΠΈΠ½Π°Ρ‡Π΅ Ρ‰Π΅ Π·Π°Π³ΡƒΠ±ΠΈΠΌ всички Π΄Π°Π½Π½ΠΈ Π½Π° страницата слСд "ΠΏΠΎΠ²Ρ€Π΅Π΄Π΅Π½" запис, Ρ‚Π°ΠΊΠ° Ρ‡Π΅, Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π°Ρ‚Π° стои минус, Π½Π΅ Π³ΠΎ ΠΎΡ‚Ρ‡ΠΈΡ‚Π°ΠΌΠ΅.

ΠšΠΎΠΌΠΏΠ°ΠΊΡ‚Π½ΠΎΡΡ‚:

  • Π² ΠΏΡŠΡ€Π²ΠΈΡ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ трябва Π΄Π° ΡΡŠΡ…Ρ€Π°Π½ΠΈΠΌ само Π΄ΡŠΠ»ΠΆΠΈΠ½Π°Ρ‚Π° Π² Π·Π°Π³Π»Π°Π²ΠΈΠ΅Ρ‚ΠΎ, Π°ΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Ρ†Π΅Π»ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ дълТини, Π² ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ случаи ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° сС ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠΌ Π΄ΠΎ Π΅Π΄ΠΈΠ½ Π±Π°ΠΉΡ‚;
  • във втория Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ трябва Π΄Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°ΠΌΠ΅ началния адрСс ΠΈ Π΄ΡŠΠ»ΠΆΠΈΠ½Π°Ρ‚Π°; Π·Π°ΠΏΠΈΡΡŠΡ‚ трябва Π΄Π° Π΅ с постоянСн Ρ€Π°Π·ΠΌΠ΅Ρ€, оцСнявам Π³ΠΎ Π½Π° 4 Π±Π°ΠΉΡ‚Π° Π½Π° запис (Π΄Π²Π° Π±Π°ΠΉΡ‚Π° Π·Π° отмСстванС ΠΈ Π΄Π²Π° Π±Π°ΠΉΡ‚Π° Π·Π° дълТина);
  • Π½Π° трСтия Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΌΡƒ Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π΅Π½ само Π΅Π΄ΠΈΠ½ символ Π·Π° ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°Π½Π΅ Π½Π° Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π½Π° записа, плюс самият запис Π·Π°Ρ€Π°Π΄ΠΈ Скранцията Ρ‰Π΅ нараснС с 1-2%. Π’ ΠΎΠ±Ρ‰ΠΈ Π»ΠΈΠ½ΠΈΠΈ, ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»Π΅Π½ ΠΏΠ°Ρ€ΠΈΡ‚Π΅Ρ‚ с ΠΏΡŠΡ€Π²ΠΈΡ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚.

ΠŸΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π°Ρ… втория Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΊΠ°Ρ‚ΠΎ основСн (ΠΈ Π΄ΠΎΡ€ΠΈ написах имплСмСнтация). ΠžΡ‚ΠΊΠ°Π·Π°Ρ… сС ΠΎΡ‚ Π½Π΅Π³ΠΎ Ρ‡Π°ΠΊ ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»Π½ΠΎ Ρ€Π΅ΡˆΠΈΡ… Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ компрСсия.

Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅, някога всС ΠΏΠ°ΠΊ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π΅Π½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚. НапримСр, Π°ΠΊΠΎ трябва Π΄Π° сС Π·Π°Π½ΠΈΠΌΠ°Π²Π°ΠΌ с ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π·Π° ΠΊΠΎΡ€Π°Π±, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡŠΡ‚ΡƒΠ²Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ЗСмята ΠΈ ΠœΠ°Ρ€Ρ β€” изискванията Π·Π° надСТдност са съвсСм Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ, космичСска радиация, …

Π©ΠΎ сС отнася Π΄ΠΎ трСтия Π²Π°Ρ€ΠΈΠ°Π½Ρ‚: слоТил съм ΠΌΡƒ Π΄Π²Π΅ Π·Π²Π΅Π·Π΄ΠΈΡ‡ΠΊΠΈ Π·Π° слоТността Π½Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ просто Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π½Π΅ ΠΎΠ±ΠΈΡ‡Π°ΠΌ Π΄Π° сС Π·Π°Π½ΠΈΠΌΠ°Π²Π°ΠΌ с Π΅ΠΊΡ€Π°Π½Ρ‚ΠΈΡ€Π°Π½Π΅, промяна Π½Π° Π΄ΡŠΠ»ΠΆΠΈΠ½Π°Ρ‚Π° Π² процСса ΠΈ Ρ‚.Π½. Π”Π°, възмоТно Π΅ Π΄Π° съм ΠΏΡ€Π΅Π΄ΡƒΠ±Π΅Π΄Π΅Π½, Π½ΠΎ ΠΊΠΎΠ΄Π° трябва Π΄Π° пиша Π°Π· β€” Π·Π°Ρ‰ΠΎ Π΄Π° сС натискам Π΄Π° правя Π½Π΅Ρ‰ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ Π½Π΅ харСсвам.

РСзюмС: ΠΈΠ·Π±ΠΈΡ€Π°ΠΌΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° Π²Π΅Ρ€ΠΈΠ³ΠΈ "Π·Π°Π³Π»Π°Π²ΠΈΠ΅ с дълТина β€” Π΄Π°Π½Π½ΠΈ с ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° дълТина" Π·Π°Ρ€Π°Π΄ΠΈ СфСктивността ΠΈ простотата Π½Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅.

Π˜Π·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π±ΠΈΡ‚ΠΎΠ²ΠΈ ΠΏΠΎΠ»Π΅Ρ‚Π° Π·Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΡΡ‚Ρ‚Π° Π½Π° записитС

Π’Π΅Ρ‡Π΅ Π½Π΅ помня къдС видях идСята, Π½ΠΎ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° всичко Π³ΠΎΡ€Π΅-Π΄ΠΎΠ»Ρƒ Ρ‚Π°ΠΊΠ°:
Π—Π° всСки запис отдСлямС няколко Π±ΠΈΡ‚Π° Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° Ρ„Π»Π°Π³ΠΎΠ²Π΅.
ΠšΠ°ΠΊΡ‚ΠΎ спомСнахмС ΠΏΠΎ-Ρ€Π°Π½ΠΎ, слСд erase всички Π±ΠΈΡ‚ΠΎΠ²Π΅ са запълнСни с 1, ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° промСнямС 1 Π½Π° 0, Π½ΠΎ Π½Π΅ ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ. Π’Π°ΠΊΠ° Ρ‡Π΅ Π·Π° 'Ρ„Π»Π°Π³ Π½Π΅ Π΅ Π·Π°Π΄Π°Π΄Π΅Π½' ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ 1, Π·Π° 'Ρ„Π»Π°Π³ Π΅ Π·Π°Π΄Π°Π΄Π΅Π½' β€” 0.

Π•Ρ‚ΠΎ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° мястото Π·Π° запис Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° дълТина Π² Ρ„Π»Π°Ρˆ:

  1. Π—Π°Π΄Π°Π²Π°ΠΌΠ΅ Ρ„Π»Π°Π³Π° 'запис Π½Π° Π΄ΡŠΠ»ΠΆΠΈΠ½Π°Ρ‚Π° Π·Π°ΠΏΠΎΡ‡Π½Π°';
  2. ЗаписвамС Π΄ΡŠΠ»ΠΆΠΈΠ½Π°Ρ‚Π°;
  3. Π—Π°Π΄Π°Π²Π°ΠΌΠ΅ Ρ„Π»Π°Π³Π° 'запис Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π·Π°ΠΏΠΎΡ‡Π½Π°';
  4. ЗаписвамС Π΄Π°Π½Π½ΠΈΡ‚Π΅;
  5. Π—Π°Π΄Π°Π²Π°ΠΌΠ΅ Ρ„Π»Π°Π³Π° 'Π·Π°ΠΏΠΈΡΡŠΡ‚ ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡ΠΈ'.

ОсвСн Ρ‚ΠΎΠ²Π°, Ρ‰Π΅ ΠΈΠΌΠ°ΠΌΠ΅ Ρ„Π»Π°Π³ 'възникна Π³Ρ€Π΅ΡˆΠΊΠ°', ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈ ΠΎΠ±Ρ‰ΠΎ 4 Π±ΠΈΡ‚ΠΎΠ²ΠΈ Ρ„Π»Π°Π³Π°.

Π’ Ρ‚ΠΎΠ·ΠΈ случай ΠΈΠΌΠ°ΠΌΠ΅ Π΄Π²Π΅ стабилни ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΡ '1111' β€” Π·Π°ΠΏΠΈΡΡŠΡ‚ Π½Π΅ Π΅ Π·Π°ΠΏΠΎΡ‡Π½Π°Π» ΠΈ '1000' β€” Π·Π°ΠΏΠΈΡΡŠΡ‚ Π΅ ΡƒΡΠΏΠ΅ΡˆΠ΅Π½; ΠΏΡ€ΠΈ Π½Π΅ΠΎΡ‡Π°ΠΊΠ²Π°Π½ΠΎ ΠΏΡ€Π΅ΠΊΡŠΡΠ²Π°Π½Π΅ Π½Π° процСса Π½Π° запис Ρ‰Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π½ΠΈ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΡ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎ-късно ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ΅ΠΌ ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ.

ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ΡŠΡ‚ Π΅ интСрСсСн, Π½ΠΎ Ρ‚ΠΎΠΉ Π·Π°Ρ‰ΠΈΡ‚Π°Π²Π° само ΠΎΡ‚ Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ ΠΏΡ€Π΅ΠΊΡŠΡΠ²Π°Π½Π΅ Π½Π° Π·Π°Ρ…Ρ€Π°Π½Π²Π°Π½Π΅Ρ‚ΠΎ ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Π½Π΅Ρ‰Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ, Ρ€Π°Π·Π±ΠΈΡ€Π° сС, Π΅ Π²Π°ΠΆΠ½ΠΎ, Π½ΠΎ Ρ‚ΠΎΠ²Π° Π΄Π°Π»Π΅Ρ‡ Π½Π΅ Π΅ СдинствСната (ΠΈ Π΄ΠΎΡ€ΠΈ Π½Π΅ основната) ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° Π·Π° възмоТни ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ.

РСзюмС: ΠŸΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π°ΠΌΠ΅ Π² Ρ‚ΡŠΡ€ΡΠ΅Π½Π΅ Π½Π° Π΄ΠΎΠ±Ρ€ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅.

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½ΠΈ суми

ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½ΠΈ сумитС ΡΡŠΡ‰ΠΎ Π΄Π°Π²Π°Ρ‚ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π΄Π° сС ΡƒΠ²Π΅Ρ€ΠΈΠΌ (с Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½Π° вСроятност), Ρ‡Π΅ Ρ‡Π΅Ρ‚Π΅ΠΌ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ трябва Π΄Π° бъдС записано. И, Π·Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΎΡ‚ Ρ€Π°Π·Π³Π»Π΅Π΄Π°Π½ΠΈΡ‚Π΅ ΠΏΠΎ-Π³ΠΎΡ€Π΅ Π±ΠΈΡ‚ΠΎΠ²ΠΈ ΠΏΠΎΠ»Π΅Ρ‚Π°, Ρ‚Π΅ работят Π²ΠΈΠ½Π°Π³ΠΈ.

Ако Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ списъка с ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΈ ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΡ†ΠΈ Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ, Π·Π° ΠΊΠΎΠΈΡ‚ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ…ΠΌΠ΅ ΠΏΠΎ-Π³ΠΎΡ€Π΅, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° сума ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π°Π·ΠΏΠΎΠ·Π½Π°Π΅ Π³Ρ€Π΅ΡˆΠΊΠ° нСзависимо ΠΎΡ‚ ΠΏΡ€ΠΎΠΈΠ·Ρ…ΠΎΠ΄Π° ΠΉ (с ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, ΠΌΠΎΠΆΠ΅ Π±ΠΈ, Π½Π° Π·Π»ΠΎΠ½Π°ΠΌΠ΅Ρ€Π΅Π½ΠΈ извънзСмни β€” Ρ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Ρ„Π°Π»ΡˆΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Ρ‚ ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° сума).

Π’Π°ΠΊΠ° Ρ‡Π΅, Π°ΠΊΠΎ Ρ†Π΅Π»Ρ‚Π° Π½ΠΈ Π΅ Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ, Ρ‡Π΅ Π΄Π°Π½Π½ΠΈΡ‚Π΅ са Π½Π΅ΠΏΠΎΠΊΡŠΡ‚Π½Π°Ρ‚ΠΈ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½ΠΈ сумитС са ΠΎΡ‚Π»ΠΈΡ‡Π½Π° идСя.

Π˜Π·Π±ΠΎΡ€ΡŠΡ‚ Π½Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌ Π·Π° изчислСниС Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° сума Π½Π΅ поставя Π²ΡŠΠΏΡ€ΠΎΡΠΈ β€” CRC. ΠžΡ‚ Π΅Π΄Π½Π° страна, матСматичСскитС свойства ΠΌΡƒ позволяват Π΄Π° улавя 100% ΠΎΡ‚ Π³Ρ€Π΅ΡˆΠΊΠΈΡ‚Π΅ ΠΎΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅, Π° освСн Ρ‚ΠΎΠ²Π° β€” ΠΏΡ€ΠΈ случайни Π΄Π°Π½Π½ΠΈ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ Ρ‚ΠΎΠ·ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌ ΠΏΠΎΠΊΠ°Π·Π²Π° вСроятността Π·Π° ΠΊΠΎΠ»ΠΈΠ·ΠΈΠΈ, Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΠΎ-висока ΠΎΡ‚ тСорСтичния ΠΏΡ€Π΅Π΄Π΅Π». ΠœΠΎΡΡ‚Π° рСализация Π½Π° ΠΏΡ€ΡŠΡΡ‚Π΅Π½ΠΎΠ²ΠΈΠ΄Π΅Π½ Π±ΡƒΡ„Π΅Ρ€ Π² NOR flashНСка Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ Π½Π°ΠΉ-Π±ΡŠΡ€Π·ΠΈΡΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌ ΠΈ Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ Π΅ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π΅Π½ ΠΏΠΎ Π±Ρ€ΠΎΠΉ ΠΊΠΎΠ»ΠΈΠ·ΠΈΠΈ, Π½ΠΎ Ρ‚ΠΎΠΉ ΠΏΡ€ΠΈΡ‚Π΅ΠΆΠ°Π²Π° ΠΌΠ½ΠΎΠ³ΠΎ Π²Π°ΠΆΠ½ΠΎ качСство: Π² срСщанитС тСстовС Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π½Π°Ρ… Π½Π° шаблони, ΠΏΡ€ΠΈ ΠΊΠΎΠΈΡ‚ΠΎ Ρ‚ΠΎΠΉ явно Π΄Π° сС ΠΏΡ€ΠΎΠ²Π°Π»ΠΈ. Бтабилността Π΅ основното качСство Π² Ρ‚ΠΎΠ·ΠΈ случай.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π·Π° ΠΎΠ±ΡˆΠΈΡ€Π½ΠΎ изслСдванС: част 1, част 2 (Π»ΠΈΠ½ΠΊΠΎΠ²Π΅ към narod.ru, извинявайтС).

Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π° Π·Π° ΠΈΠ·Π±ΠΎΡ€ Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° сума Π½Π΅ Π΅ Π·Π°Π²ΡŠΡ€ΡˆΠ΅Π½Π°, CRC Π΅ цяло сСмСйство ΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½ΠΈ суми. НуТно Π΅ Π΄Π° сС ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈ Π΄ΡŠΠ»ΠΆΠΈΠ½Π°Ρ‚Π° ΠΈ слСд Ρ‚ΠΎΠ²Π° Π΄Π° сС ΠΈΠ·Π±Π΅Ρ€Π΅ ΠΏΠΎΠ»ΠΈΠ½ΠΎΠΌ.

Π˜Π·Π±ΠΎΡ€ΡŠΡ‚ Π½Π° Π΄ΡŠΠ»ΠΆΠΈΠ½Π°Ρ‚Π° Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° сума Π½Π΅ Π΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° прост Π²ΡŠΠΏΡ€ΠΎΡ, ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Π½Π° ΠΏΡ€ΡŠΠ² ΠΏΠΎΠ³Π»Π΅Π΄.

НСка ΠΈΠ»ΡŽΡΡ‚Ρ€ΠΈΡ€Π°ΠΌ:
НСка ΠΈΠΌΠ°ΠΌΠ΅ вСроятност Π·Π° Π³Ρ€Π΅ΡˆΠΊΠ° във всСки Π±Π°ΠΉΡ‚ ΠœΠΎΡΡ‚Π° рСализация Π½Π° ΠΏΡ€ΡŠΡΡ‚Π΅Π½ΠΎΠ²ΠΈΠ΄Π΅Π½ Π±ΡƒΡ„Π΅Ρ€ Π² NOR flash ΠΈ ΠΈΠ΄Π΅Π°Π»Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° сума, Π΄Π° изчислим срСдния Π±Ρ€ΠΎΠΉ Π³Ρ€Π΅ΡˆΠΊΠΈ Π½Π° ΠΌΠΈΠ»ΠΈΠΎΠ½ записи:

Π”Π°Π½Π½ΠΈ, Π±Π°ΠΉΡ‚
ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° сума, Π±Π°ΠΉΡ‚
НСоткрититС Π³Ρ€Π΅ΡˆΠΊΠΈ
Π›ΡŠΠΆΠ»ΠΈΠ²ΠΈ открития Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ
ΠžΠ±Ρ‰ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΈ срабатывания

1
0
1000
0
1000

1
1
4
999
1003

1
2
β‰ˆ0
1997
1997

1
4
β‰ˆ0
3990
3990

10
0
9955
0
9955

10
1
39
990
1029

10
2
β‰ˆ0
1979
1979

10
4
β‰ˆ0
3954
3954

1000
0
632305
0
632305

1000
1
2470
368
2838

1000
2
10
735
745

1000
4
β‰ˆ0
1469
1469

ИзглСТда, Ρ‡Π΅ всичко Π΅ просто β€” ΠΈΠ·Π±Π΅Ρ€ΠΈ Π΄ΡŠΠ»ΠΆΠΈΠ½Π°Ρ‚Π° Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° сума Π² зависимост ΠΎΡ‚ Π·Π°Ρ‰ΠΈΡ‚Π΅Π½ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ с ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΈ срабатывания β€” ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π΅ ΡΠ²ΡŠΡ€ΡˆΠ΅Π½Π°.

Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, с ΠΊΡŠΡΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½ΠΈ суми възниква ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ: Ρ‚Π΅, ΠΌΠ°ΠΊΠ°Ρ€ ΠΈ Π΄ΠΎΠ±Ρ€Π΅ Π΄Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Ρ‚ Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½ΠΈ Π±ΠΈΡ‚ΠΎΠ²ΠΈ Π³Ρ€Π΅ΡˆΠΊΠΈ, ΠΌΠΎΠ³Π°Ρ‚ с относитСлно голяма вСроятност Π΄Π° ΠΏΡ€ΠΈΠ΅ΠΌΠ°Ρ‚ Π·Π° Π²Π΅Ρ€Π½ΠΈ напълно случайни Π΄Π°Π½Π½ΠΈ. Π’ Π₯Π°Π±Ρ€Π΅ Π²Π΅Ρ‡Π΅ имашС статия, описваща ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π² рСалния ΠΆΠΈΠ²ΠΎΡ‚.

Π—Π°Ρ‚ΠΎΠ²Π°, Π·Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»Π½ΠΎΡ‚ΠΎ съвпадСниС Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° сума практичСски нСвъзмоТно, Π΅ Π½ΡƒΠΆΠ½ΠΎ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½ΠΈ суми с дълТина 32 Π±ΠΈΡ‚Π° ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅ (Π·Π° дълТини Π½Π°Π΄ 64 Π±ΠΈΡ‚Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ криптографски Ρ…Π΅Ρˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ).

Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ ΠΏΠΎ-Ρ€Π°Π½ΠΎ написах, Ρ‡Π΅ трябва Π΄Π° спСстявамС място с всички сили, всС ΠΏΠ°ΠΊ Ρ‰Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ 32-Π±ΠΈΡ‚ΠΎΠ²Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° сума (16 Π±ΠΈΡ‚Π° Π΅ ΠΌΠ°Π»ΠΊΠΎ, вСроятността Π·Π° колизия Π΅ Π½Π°Π΄ 0.01%; Π° 24 Π±ΠΈΡ‚Π°, ΠΊΠ°ΠΊΡ‚ΠΎ сС ΠΊΠ°Π·Π²Π°, Π½ΠΈΡ‚ΠΎ Ρ‚ΡƒΠΊ, Π½ΠΈΡ‚ΠΎ Ρ‚Π°ΠΌ).

Π’ΡƒΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° възникнС Π²ΡŠΠ·Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅: Π·Π° Ρ‚ΠΎΠ²Π° Π»ΠΈ спСстявахмС всСки Π±Π°ΠΉΡ‚ ΠΏΡ€ΠΈ ΠΈΠ·Π±ΠΎΡ€Π° Π½Π° компрСсия, Π·Π° Π΄Π° Π΄Π°Π΄Π΅ΠΌ сСга 4 Π±Π°ΠΉΡ‚Π° навСднъТ? НС Π΅ Π»ΠΈ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅ Π΄Π° Π½Π΅ компрСсирамС ΠΈ Π΄Π° Π½Π΅ добавямС ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° сума? Π Π°Π·Π±ΠΈΡ€Π° сС, Π½Π΅, ΠΎΡ‚ΡΡŠΡΡ‚Π²ΠΈΠ΅Ρ‚ΠΎ Π½Π° компрСсия Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°Ρ‚Π° Π·Π° цялост Π½Π΅ Π½ΠΈ Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ°.

По ΠΈΠ·Π±ΠΎΡ€Π° Π½Π° ΠΏΠΎΠ»ΠΈΠ½ΠΎΠΌ няма Π΄Π° изобрСтявамС вСлосипСда, Π° Ρ‰Π΅ Π²Π·Π΅ΠΌΠ΅ΠΌ популярСн Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° CRC-32C.
Π’ΠΎΠ·ΠΈ ΠΊΠΎΠ΄ ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π° 6 Π±ΠΈΡ‚ΠΎΠ²ΠΈ Π³Ρ€Π΅ΡˆΠΊΠΈ Π² ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π΄ΠΎ 22 Π±Π°ΠΉΡ‚Π° (доста чСсто срСщан случай Π·Π° нас), 4 Π±ΠΈΡ‚ΠΎΠ²ΠΈ Π³Ρ€Π΅ΡˆΠΊΠΈ Π² ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π΄ΠΎ 655 Π±Π°ΠΉΡ‚Π° (ΡΡŠΡ‰ΠΎ чСсто срСщан случай Π·Π° нас), 2 ΠΈΠ»ΠΈ всяко Π½Π΅Ρ‡Π΅Ρ‚Π½ΠΎ число Π±ΠΈΡ‚ΠΎΠ²ΠΈ Π³Ρ€Π΅ΡˆΠΊΠΈ Π² ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ с всякаква Ρ€Π°Π·ΡƒΠΌΠ½Π° дълТина.

Ако някого Π³ΠΎ интСрСсуват Π΄Π΅Ρ‚Π°ΠΉΠ»ΠΈΡ‚Π΅

Π‘Ρ‚Π°Ρ‚ΡŒΡ Π²ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ Π·Π° CRC.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π½Π° ΠΊΠΎΠ΄Π° crc-32c Π½Π° сайта Π½Π° ΠšΡƒΠΏΠΌΠ°Π½Π° β€” вСроятно Π½Π°ΠΉ-голямият спСциалист ΠΏΠΎ CRC Π½Π° ΠΏΠ»Π°Π½Π΅Ρ‚Π°Ρ‚Π°.

Π’ Π² Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° статия ΠΈΠΌΠ° ΠΎΡ‰Π΅ Π΅Π΄ΠΈΠ½ интСрСсСн ΠΊΠΎΠ΄, ΠΊΠΎΠΉΡ‚ΠΎ осигурява ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π·Π° Π°ΠΊΡ‚ΡƒΠ°Π»Π½ΠΈΡ‚Π΅ Π·Π° нас дълТини Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ‚Π΅, Π½ΠΎ Π½Π΅ смСтнах Ρ€Π°Π·Π»ΠΈΠΊΠ°Ρ‚Π° Π·Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²Π΅Π½Π°, Π° ΠΈ сСбС си Π·Π° Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ ΠΊΠΎΠΌΠΏΠ΅Ρ‚Π΅Π½Ρ‚Π΅Π½, Π·Π° Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π° пСрсонализиран ΠΊΠΎΠ΄ вмСсто стандартния ΠΈ Π΄ΠΎΠ±Ρ€Π΅ ΠΏΡ€ΠΎΡƒΡ‡Π΅Π½.

ОсвСн Ρ‚ΠΎΠ²Π°, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π½ΠΈ са компрСсирани, възниква Π²ΡŠΠΏΡ€ΠΎΡΡŠΡ‚: Π΄Π°Π»ΠΈ Π΄Π° сС изчисли ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° сума Π½Π° компрСсиранитС ΠΈΠ»ΠΈ Π½Π° нСкомпрСсиранитС Π΄Π°Π½Π½ΠΈ?

АргумСнти "Π·Π°" изчисляванСто Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° сума Π½Π° нСкомпрСсиранитС Π΄Π°Π½Π½ΠΈ:

  • Π² ΠΊΡ€Π°ΠΉΠ½Π° смСтка трябва Π΄Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ цСлостта Π½Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ β€” Π΅Ρ‚ΠΎ ΠΊΠ°ΠΊ я провСрявамС Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ (ΠΏΡ€ΠΈ Ρ‚ΠΎΠ²Π° Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΈ ΠΈ възмоТни Π³Ρ€Π΅ΡˆΠΊΠΈ Π² рСализацията Π½Π° компрСсията/дСкомацията, ΠΏΠΎΠ²Ρ€Π΅Π΄ΠΈ, ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅Π½ΠΈ ΠΎΡ‚ Π΄Π΅Ρ„Π΅ΠΊΡ‚Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΈ Ρ‚.Π½.);
  • Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌΡŠΡ‚ deflate Π² zlib ΠΈΠΌΠ° Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ зряла рСализация ΠΈ Π½Π΅ трябва Π΄Π° сС сринС ΠΏΡ€ΠΈ "Π½Π΅ΠΊΠΎΡ€Π΅ΠΊΡ‚Π½ΠΈ" Π²Ρ…ΠΎΠ΄Π½ΠΈ Π΄Π°Π½Π½ΠΈ, освСн Ρ‚ΠΎΠ²Π°, чСсто Ρ‚ΠΎΠΉ ΠΌΠΎΠΆΠ΅ сам Π΄Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ΅ Π³Ρ€Π΅ΡˆΠΊΠΈ във входния ΠΏΠΎΡ‚ΠΎΠΊ, намалявайки ΠΎΠ±Ρ‰Π°Ρ‚Π° вСроятност Π·Π° Π½Π΅ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ°Π²Π°Π½Π΅ Π½Π° Π³Ρ€Π΅ΡˆΠΊΠ° (ΠΏΡ€ΠΎΠ²Π΅Π΄ΠΎΡ… тСст с ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ‡Π΅Π½ Π±ΠΈΡ‚ Π² ΠΊΡ€Π°Ρ‚ΠΊΠΎ запис, zlib ΠΎΡ‚ΠΊΡ€ΠΈ Π³Ρ€Π΅ΡˆΠΊΠ° Π² ΠΎΠΊΠΎΠ»ΠΎ Π΅Π΄Π½Π° Ρ‚Ρ€Π΅Ρ‚Π° ΠΎΡ‚ случаитС).

АргумСнти "ΠΏΡ€ΠΎΡ‚ΠΈΠ²" изчисляванСто Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° сума Π½Π° нСкомпрСсиранитС Π΄Π°Π½Π½ΠΈ:

  • CRC Π΅ "ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€Π°Π½" ΠΈΠΌΠ΅Π½Π½ΠΎ Π·Π° ΠΌΠ°Π»ΠΊΠΎΡ‚ΠΎ Π±ΠΈΡ‚ΠΎΠ²ΠΈ Π³Ρ€Π΅ΡˆΠΊΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ са Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΠΈ Π·Π° Ρ„Π»Π°Ρˆ ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° (Π±ΠΈΡ‚ΠΎΠ²Π° Π³Ρ€Π΅ΡˆΠΊΠ° Π² компрСсирания ΠΏΠΎΡ‚ΠΎΠΊ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ масово ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π½Π° изходния ΠΏΠΎΡ‚ΠΎΠΊ, ΠΏΡ€ΠΈ ΠΊΠΎΠ΅Ρ‚ΠΎ, Π² чисто Ρ‚Π΅ΠΎΡ€Π΅Ρ‚ΠΈΡ‡Π΅Π½ ΠΏΠ»Π°Π½, ΠΌΠΎΠΆΠ΅ Π΄Π° "Π·Π°Π»ΠΎΠ²ΠΈΠΌ" колизия);
  • Π½Π΅ ΠΌΠΈ харСсва идСята Π΄Π° ΠΏΡ€Π΅Π΄Π°Π²Π°ΠΌ Π½Π° дСкомпрСсора ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»Π½ΠΎ ΠΏΠΎΠ²Ρ€Π΅Π΄Π΅Π½ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΉ Π·Π½Π°Π΅, ΠΊΠ°ΠΊ Ρ‚ΠΎΠΉ Ρ‰Π΅ Ρ€Π΅Π°Π³ΠΈΡ€Π°.

Π’ Ρ‚ΠΎΠ·ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Ρ€Π΅ΡˆΠΈΡ… Π΄Π° сС ΠΎΡ‚ΠΊΠ°ΠΆΠ° ΠΎΡ‚ ΠΎΠ±Ρ‰ΠΎΠΏΡ€ΠΈΠ΅Ρ‚Π°Ρ‚Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° сума Π½Π° нСкомпрСсиранитС Π΄Π°Π½Π½ΠΈ.

РСзюмС: ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ CRC-32C, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° сумата сС изчислява ΠΎΡ‚ Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π² ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ, Π² ΠΊΠΎΠ΅Ρ‚ΠΎ сС записват във Ρ„Π»Π°Ρˆ (слСд компрСсия).

Излишък

Π˜Π·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° излишно ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅ Π½Π΅ ΠΌΠΎΠΆΠ΅, Ρ€Π°Π·Π±ΠΈΡ€Π° сС, Π΄Π° ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈ Π·Π°Π³ΡƒΠ±Π°Ρ‚Π° Π½Π° Π΄Π°Π½Π½ΠΈ, Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ (чСсто с ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡ€ΡΠ΄ΡŠΠΊΠ°) Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈ вСроятността ΠΎΡ‚ Π½Π΅ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠΌΠ° Π·Π°Π³ΡƒΠ±Π° Π½Π° Π΄Π°Π½Π½ΠΈ.

МоТСм Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π²ΠΈΠ΄ΠΎΠ²Π΅ ΠΈΠ·Π»ΠΈΡˆΠ½ΠΎΡΡ‚, Π·Π° Π΄Π° ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°ΠΌΠ΅ Π³Ρ€Π΅ΡˆΠΊΠΈ.
ΠšΠΎΠ΄ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° Π₯amming ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Ρ‚ Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½ΠΈ Π±ΠΈΡ‚ΠΎΠ²ΠΈ Π³Ρ€Π΅ΡˆΠΊΠΈ, ΠΊΠΎΠ΄ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° Reed-Solomon символни, няколко копия Π½Π° Π΄Π°Π½Π½ΠΈ Π² комбинация с ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½ΠΈΡ‚Π΅ суми ΠΈΠ»ΠΈ ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅ ΠΊΠ°Ρ‚ΠΎ RAID-6 ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΏΠΎΠΌΠΎΠ³Π½Π°Ρ‚ Π·Π° Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π΄ΠΎΡ€ΠΈ ΠΏΡ€ΠΈ масивни ΠΏΠΎΠ²Ρ€Π΅Π΄ΠΈ.
ΠŸΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ бях Ρ€Π΅ΡˆΠ΅Π½ Π½Π° ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅ с устойчивост Π½Π° смущСния, Π½ΠΎ послС Ρ€Π°Π·Π±Ρ€Π°Ρ…, Ρ‡Π΅ ΠΏΡŠΡ€Π²ΠΎ трябва Π΄Π° ΠΈΠΌΠ°ΠΌΠ΅ прСдстава ΠΎΡ‚ ΠΊΠ°ΠΊΠ²ΠΈ Π³Ρ€Π΅ΡˆΠΊΠΈ искамС Π΄Π° сС Π·Π°Ρ‰ΠΈΡ‚ΠΈΠΌ, Π° слСд Ρ‚ΠΎΠ²Π° Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅ΠΌ ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅.

Π“ΠΎΠ²ΠΎΡ€ΠΈΡ…ΠΌΠ΅ ΠΏΠΎ-Ρ€Π°Π½ΠΎ, Ρ‡Π΅ Π³Ρ€Π΅ΡˆΠΊΠΈΡ‚Π΅ трябва Π΄Π° сС ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Ρ‚ възмоТно Π½Π°ΠΉ-Π±ΡŠΡ€Π·ΠΎ. Π’ ΠΊΠΎΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° сС срСщнСм с Π³Ρ€Π΅ΡˆΠΊΠΈ?

  1. НСсфомирана запис (ΠΏΠΎΡ€Π°Π΄ΠΈ някакви ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° запис Π·Π°Ρ…Ρ€Π°Π½Π²Π°Π½Π΅Ρ‚ΠΎ Π΅ ΠΏΡ€Π΅ΠΊΡŠΡΠ½Π°Ρ‚ΠΎ, Raspberry Π΅ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½, ...)
    Π—Π° съТалСниС, Π² случай Π½Π° Ρ‚Π°ΠΊΠ°Π²Π° Π³Ρ€Π΅ΡˆΠΊΠ° остава само Π΄Π° ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€Π°ΠΌΠ΅ Π½Π΅Π²Π°Π»ΠΈΠ΄Π½ΠΈΡ‚Π΅ записи ΠΈ Π΄Π° считамС Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π·Π° Π·Π°Π³ΡƒΠ±Π΅Π½ΠΈ;
  2. Π“Ρ€Π΅ΡˆΠΊΠΈ ΠΏΡ€ΠΈ запис (ΠΏΠΎΡ€Π°Π΄ΠΈ някакви ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈ Π² Ρ„Π»Π°Ρˆ ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π΅ записано Π½Π΅ Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‚Ρ€ΡΠ±Π²Π°ΡˆΠ΅ Π΄Π° сС запишС)
    Π’Π΅Π·ΠΈ Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΡ‚ΠΊΡ€ΠΈΠ΅ΠΌ Π²Π΅Π΄Π½Π°Π³Π°, Π°ΠΊΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½ΠΎ Ρ‡Π΅Ρ‚Π΅Π½Π΅ нСпосрСдствСно слСд записа;
  3. Π˜Π·ΠΊΡ€ΠΈΠ²ΡΠ²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅;
  4. Π“Ρ€Π΅ΡˆΠΊΠΈ ΠΏΡ€ΠΈ Ρ‡Π΅Ρ‚Π΅Π½Π΅
    Π—Π° ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½Π΅ Π΅ Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ Π² случай Π½Π° Π½Π΅ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π°Ρ‚Π° сума Π΄Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΠΌ Ρ‡Π΅Ρ‚Π΅Π½Π΅Ρ‚ΠΎ няколко ΠΏΡŠΡ‚ΠΈ.

ВоСст само Π³Ρ€Π΅ΡˆΠΊΠΈΡ‚Π΅ ΠΎΡ‚ Ρ‚Ρ€Π΅Ρ‚ΠΈ Ρ‚ΠΈΠΏ (самопроизволно ΠΏΠΎΠ²Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΈ ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅) Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π°Π½ΠΈ Π±Π΅Π· ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅ с устойчивост Π½Π° смущСния. Мисля, Ρ‡Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Π³Ρ€Π΅ΡˆΠΊΠΈ всС ΠΏΠ°ΠΊ са ΠΈΠ·ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΌΠ°Π»ΠΊΠΎ вСроятни.

РСзюмС: бСшС Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π΄Π° сС ΠΎΡ‚ΠΊΠ°ΠΆΠ΅ΠΌ ΠΎΡ‚ ΠΈΠ·Π»ΠΈΡˆΠ½ΠΎΡ‚ΠΎ ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅, Π½ΠΎ Π°ΠΊΠΎ Сксплоатацията ΠΏΠΎΠΊΠ°ΠΆΠ΅ нСправилността Π½Π° Ρ‚ΠΎΠ²Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, Ρ‰Π΅ сС Π²ΡŠΡ€Π½Π΅ΠΌ към Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π²ΡŠΠΏΡ€ΠΎΡΠ° (с Π½Π°Ρ‚Ρ€ΡƒΠΏΠ°Π½Π°Ρ‚Π° статистика Π·Π° ΠΏΠΎΠ²Ρ€Π΅Π΄ΠΈΡ‚Π΅, която Ρ‰Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈ Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅ΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»Π΅Π½ Π²ΠΈΠ΄ ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅).

Π”Ρ€ΡƒΠ³ΠΈ

Π Π°Π·Π±ΠΈΡ€Π° сС, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΡŠΡ‚ Π½Π° статията Π½Π΅ позволява обосноваванС Π½Π° всСки Π±ΠΈΡ‚ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° (ΠΈ Π²Π΅Ρ‡Π΅ сС ΠΈΠ·Ρ‡Π΅Ρ€ΠΏΠ°Ρ…ΠΌΠ΅ ΠΎΡ‚ сили), Π·Π°Ρ‚ΠΎΠ²Π° Ρ‰Π΅ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°ΠΌ Π½Π°ΠΊΡ€Π°Ρ‚ΠΊΠΎ ΠΏΡ€Π΅Π· някои ΠΌΠΎΠΌΠ΅Π½Ρ‚ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ бяха засСгнати ΠΏΠΎ-Ρ€Π°Π½ΠΎ.

  • РСшСно Π΅ Π΄Π° сС направят всички страници Β«Ρ€Π°Π²Π½ΠΎΠΏΡ€Π°Π²Π½ΠΈΒ»
    Π’.Π΅. няма Π΄Π° ΠΈΠΌΠ° спСциални страници с ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½ΠΈ, ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ ΠΈ Ρ‚.Π½., вмСсто Ρ‚ΠΎΠ²Π° Ρ‰Π΅ ΠΈΠΌΠ° Π΅Π΄ΠΈΠ½Π΅Π½ ΠΏΠΎΡ‚ΠΎΠΊ, ΠΊΠΎΠΉΡ‚ΠΎ послСдоватСлно записва всички страници.
    Π’ΠΎΠ²Π° осигурява Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ износванС Π½Π° страницитС, ΠΎΡ‚ΡΡŠΡΡ‚Π²ΠΈΠ΅ Π½Π° Π΅Π΄ΠΈΠ½Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° ΠΏΠΎΠ²Ρ€Π΅Π΄Π°, ΠΈ просто харСсва.
  • НуТно Π΅ Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ Π΄Π° сС ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ΠΈ вСрсия Π½Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°.
    Π€ΠΎΡ€ΠΌΠ°Ρ‚ Π±Π΅Π· Π½ΠΎΠΌΠ΅Ρ€ Π½Π° вСрсия Π² Π·Π°Π³Π»Π°Π²ΠΈΠ΅Ρ‚ΠΎ Π΅ Π·Π»ΠΎ!
    Π”ΠΎΡΡ‚Π°Ρ‚ΡŠΡ‡Π½ΠΎ Π΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ Π² Π·Π°Π³Π»Π°Π²ΠΈΠ΅Ρ‚ΠΎ Π½Π° страницата ΠΏΠΎΠ»Π΅ с някакъв Magic Number (сигнатура), ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‰Π΅ ΡƒΠΊΠ°Π·Π²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π°Ρ‚Π° вСрсия Π½Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°. (Π½Π΅ мисля, Ρ‡Π΅ Π² ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°Ρ‚Π° Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ Π΄ΠΎΡ€ΠΈ дСсСт);
  • Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ Π·Π° записитС (ΠΊΠΎΠΈΡ‚ΠΎ са ΠΌΠ½ΠΎΠ³ΠΎ) Π·Π°Π³Π»Π°Π²ΠΈΠ΅ с ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° дълТина, стрСмСйки сС ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ случаи Π΄Π° Π³ΠΎ Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ с дълТина 1 Π±Π°ΠΉΡ‚.
  • Π—Π° ΠΊΠΎΠ΄ΠΈΡ€Π°Π½Π΅ Π½Π° Π΄ΡŠΠ»ΠΆΠΈΠ½Π°Ρ‚Π° Π½Π° Π·Π°Π³Π»Π°Π²ΠΈΠ΅Ρ‚ΠΎ ΠΈ Π΄ΡŠΠ»ΠΆΠΈΠ½Π°Ρ‚Π° Π½Π° отрязания Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ ΠΎΡ‚ сТатия запис ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ Π±ΠΈΠ½Π°Ρ€Π½ΠΈ ΠΊΠΎΠ΄ΠΎΠ²Π΅ с ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° дълТина.

Много ΠΏΠΎΠΌΠΎΠ³Π½Π° ΠΎΠ½Π»Π°ΠΉΠ½ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π½Π° Π₯ΡŠΡ„ΠΌΡŠΠ½ ΠΊΠΎΠ΄ΠΎΠ²Π΅. Π‘ΡƒΠΊΠ²Π°Π»Π½ΠΎ Π·Π° няколко ΠΌΠΈΠ½ΡƒΡ‚ΠΈ успяхмС Π΄Π° ΠΏΠΎΠ΄Π±Π΅Ρ€Π΅ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈΡ‚Π΅ ΠΊΠΎΠ΄ΠΎΠ²Π΅ с ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° дълТина.

ОписаниС Π½Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π½Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π΄Π°Π½Π½ΠΈ

Π Π΅Π΄ Π½Π° Π±Π°ΠΉΡ‚ΠΎΠ²Π΅Ρ‚Π΅

ΠŸΠΎΠ»Π΅Ρ‚Π° с Ρ€Π°Π·ΠΌΠ΅Ρ€, Π½Π°Π΄Π²ΠΈΡˆΠ°Π²Π°Ρ‰ Π΅Π΄ΠΈΠ½ Π±Π°ΠΉΡ‚, сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Π² big-endian Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ (ΠΌΡ€Π΅ΠΆΠΎΠ² Ρ€Π΅Π΄ Π½Π° Π±Π°ΠΉΡ‚ΠΎΠ²Π΅Ρ‚Π΅), Ρ‚.Π΅. 0x1234 сС записва ΠΊΠ°Ρ‚ΠΎ 0x12, 0x34.

Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° страници

Цялата Ρ„Π»Π°Ρˆ ΠΏΠ°ΠΌΠ΅Ρ‚ Π΅ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π° Π½Π° Ρ€Π°Π²Π½ΠΈ ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ страници.

Π Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° страницата ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π΅ 32Кб, Π½ΠΎ Π½Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΡ‚ 1/4 ΠΎΡ‚ общия Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° ΠΌΠΈΠΊΡ€ΠΎΡ‡ΠΈΠΏΠ° ΠΏΠ°ΠΌΠ΅Ρ‚ (Π·Π° ΠΌΠΈΠΊΡ€ΠΎΡ‡ΠΈΠΏ с ΠΊΠ°ΠΏΠ°Ρ†ΠΈΡ‚Π΅Ρ‚ 4Мб ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚Π΅ 128 страници).

Всяка страница ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Π΄Π°Π½Π½ΠΈ нСзависимо ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅ (Ρ‚.Π΅. Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π½Π° Π΅Π΄Π½Π° страница Π½Π΅ сС ΠΏΠΎΠ·ΠΎΠ²Π°Π²Π°Ρ‚ Π½Π° Π΄Π°Π½Π½ΠΈ Π½Π° Π΄Ρ€ΡƒΠ³Π° страница).

Всички страници са Π½ΠΎΠΌΠ΅Ρ€ΠΈΡ€Π°Π½ΠΈ Π² СстСствСн Ρ€Π΅Π΄ (Π² Ρ€Π΅Π΄ Π½Π° ΡƒΠ²Π΅Π»ΠΈΡ‡Π°Π²Π°Π½Π΅ Π½Π° адрСситС), Π·Π°ΠΏΠΎΡ‡Π²Π°ΠΉΠΊΠΈ ΠΎΡ‚ Π½ΠΎΠΌΠ΅Ρ€ 0 (Π½ΡƒΠ»Π΅Π²Π°Ρ‚Π° страница Π·Π°ΠΏΠΎΡ‡Π²Π° с адрСс 0, ΠΏΡŠΡ€Π²Π°Ρ‚Π° - с 32Кб, Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° - с 64Кб ΠΈ Ρ‚.Π½.)

ΠœΠΈΠΊΡ€ΠΎΡ‡ΠΈΠΏΡŠΡ‚ ΠΏΠ°ΠΌΠ΅Ρ‚ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°Ρ‚ΠΎ Ρ†ΠΈΠΊΠ»ΠΈΡ‡Π΅Π½ Π±ΡƒΡ„Π΅Ρ€ (ring buffer), Ρ‚.Π΅. ΠΏΡŠΡ€Π²ΠΎ Π·Π°ΠΏΠΈΡΡŠΡ‚ ΠΎΡ‚ΠΈΠ²Π° Π² страница с Π½ΠΎΠΌΠ΅Ρ€ 0, слСд Ρ‚ΠΎΠ²Π° Π² страница с Π½ΠΎΠΌΠ΅Ρ€ 1, …, ΠΊΠΎΠ³Π°Ρ‚ΠΎ запълвамС послСдната страница, Π·Π°ΠΏΠΎΡ‡Π²Π° Π½ΠΎΠ² Ρ†ΠΈΠΊΡŠΠ» ΠΈ Π·Π°ΠΏΠΈΡΡŠΡ‚ ΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠ°Π²Π° ΠΎΡ‚ Π½ΡƒΠ»Π΅Π²Π°Ρ‚Π° страница.

Π’ΡŠΡ‚Ρ€Π΅ Π² страницата

ΠœΠΎΡΡ‚Π° рСализация Π½Π° ΠΏΡ€ΡŠΡΡ‚Π΅Π½ΠΎΠ²ΠΈΠ΄Π΅Π½ Π±ΡƒΡ„Π΅Ρ€ Π² NOR flash
Π’ Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π½Π° страницата сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° 4-Π±Π°ΠΉΡ‚ΠΎΠ² Π·Π°Π³Π»Π°Π²Π΅Π½ Π±Π»ΠΎΠΊ, слСд Ρ‚ΠΎΠ²Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π° сума Π½Π° Π·Π°Π³Π»Π°Π²ΠΈΠ΅Ρ‚ΠΎ (CRC-32C), слСд ΠΊΠΎΠ΅Ρ‚ΠΎ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ записи във Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Β«Π·Π°Π³Π»Π°Π²ΠΈΠ΅, Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π° сума».

Π—Π°Π³Π»Π°Π²ΠΈΠ΅Ρ‚ΠΎ Π½Π° страницата (Π½Π° схСмата - Ρ‚ΡŠΠΌΠ½ΠΎΠ·Π΅Π»Π΅Π½ΠΎ) сС ΡΡŠΡΡ‚ΠΎΠΈ ΠΎΡ‚:

  • Π΄Π²ΡƒΠ±Π°ΠΉΡ‚ΠΎΠ²ΠΎ ΠΏΠΎΠ»Π΅ Magic Number (Ρ‚.Π΅. ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ Π½Π° вСрсията Π½Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°)
    Π·Π° Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° вСрсия Π½Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Ρ‚ΠΎΠΉ сС счита Π·Π° 0xed00 βŠ• Π½ΠΎΠΌΠ΅Ρ€ страница;
  • двубайтовият брояч β€žΠ’Π΅Ρ€ΡΠΈΡ Π½Π° ΡΡ‚Ρ€Π°Π½ΠΈΡ†Π°Ρ‚Π°β€œ (Π½ΠΎΠΌΠ΅Ρ€ Ρ†ΠΈΠΊΡŠΠ» Π½Π° прСзапис Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°).

ЗаписитС Π½Π° страницата сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ Π² компрСсиран Π²ΠΈΠ΄ (ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° сС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΡŠΠΌΡŠΡ‚ deflate). Всички записи Π½Π° Π΅Π΄Π½Π° страница сС компрСсират Π² Π΅Π΄ΠΈΠ½ ΠΏΠΎΡ‚ΠΎΠΊ (ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° сС ΠΎΠ±Ρ‰ Ρ€Π΅Ρ‡Π½ΠΈΠΊ), Π° Π½Π° всяка Π½ΠΎΠ²Π° страница компрСсиранСто Π·Π°ΠΏΠΎΡ‡Π²Π° ΠΎΡ‚Π½ΠΎΠ²ΠΎ. ВоСст Π·Π° дСкомпрСсия Π½Π° всСки запис са Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ всички ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈ записи ΠΎΡ‚ Ρ‚Π°Π·ΠΈ страница (ΠΈ само ΠΎΡ‚ нСя).

ВсСки запис Ρ‰Π΅ бъдС компрСсиран с Ρ„Π»Π°Π³Π° Z_SYNC_FLUSH, ΠΊΠ°Ρ‚ΠΎ Π² края Π½Π° компрСсирания ΠΏΠΎΡ‚ΠΎΠΊ остават 4 Π±Π°ΠΉΡ‚Π° 0x00, 0x00, 0xff, 0xff, ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²Π°Π½ΠΈ, ΠΌΠΎΠΆΠ΅ Π±ΠΈ, ΠΎΡ‚ ΠΎΡ‰Π΅ Π΅Π΄ΠΈΠ½ ΠΈΠ»ΠΈ Π΄Π²Π° Π½ΡƒΠ»Π΅Π²ΠΈ Π±Π°ΠΉΡ‚Π°.
Π’Π°Π·ΠΈ послСдоватСлност (с дълТина 4, 5 ΠΈΠ»ΠΈ 6 Π±Π°ΠΉΡ‚Π°) ΠΎΡ‚Ρ…Π²ΡŠΡ€Π»ΡΠΌΠ΅ ΠΏΡ€ΠΈ записа във Ρ„Π»Π°Ρˆ ΠΏΠ°ΠΌΠ΅Ρ‚.

Π—Π°Π³Π»Π°Π²ΠΈΠ΅Ρ‚ΠΎ Π½Π° записа прСдставлява 1, 2 ΠΈΠ»ΠΈ 3 Π±Π°ΠΉΡ‚Π°, ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‰ΠΈ:

  • Π΅Π΄ΠΈΠ½ Π±ΠΈΡ‚ (T), ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°Ρ‰ Ρ‚ΠΈΠΏΠ° Π½Π° записа: 0 β€” контСкст, 1 β€” ΠΆΡƒΡ€Π½Π°Π»;
  • ΠΏΠΎΠ»Π΅ с ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° дълТина (S) ΠΎΡ‚ 1 Π΄ΠΎ 7 Π±ΠΈΡ‚Π°, опрСдСлящо Π΄ΡŠΠ»ΠΆΠΈΠ½Π°Ρ‚Π° Π½Π° Π·Π°Π³Π»Π°Π²ΠΈΠ΅Ρ‚ΠΎ ΠΈ β€žΠΎΠΏΠ°ΡˆΠΊΠ°Ρ‚Π°β€œ, която трябва Π΄Π° бъдС Π΄ΠΎΠ±Π°Π²Π΅Π½Π° към записа Π·Π° Ρ€Π°Π·ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ€Π°Π½Π΅;
  • дълТина Π½Π° записа (L).

Π’Π°Π±Π»ΠΈΡ†Π° с стойности S:

S
Π”ΡŠΠ»ΠΆΠΈΠ½Π° Π½Π° Π·Π°Π³Π»Π°Π²ΠΈΠ΅Ρ‚ΠΎ, Π±Π°ΠΉΡ‚Π°
ΠžΡ‚Ρ…Π²ΡŠΡ€Π»Ρ сС ΠΏΡ€ΠΈ записа, Π±Π°ΠΉΡ‚Π°

0
1
5 (00 00 00 ff ff)

10
1
6 (00 00 00 00 ff ff)

110
2
4 (00 00 ff ff)

1110
2
5 (00 00 00 ff ff)

11110
2
6 (00 00 00 00 ff ff)

1111100
3
4 (00 00 ff ff)

1111101
3
5 (00 00 00 ff ff)

1111110
3
6 (00 00 00 00 ff ff)

ΠžΠΏΠΈΡ‚Π°Ρ… сС Π΄Π° ΠΈΠ»ΡŽΡΡ‚Ρ€ΠΈΡ€Π°ΠΌ, Π½Π΅ Π·Π½Π°ΠΌ Π΄ΠΎΠΊΠΎΠ»ΠΊΠΎ успях:
ΠœΠΎΡΡ‚Π° рСализация Π½Π° ΠΏΡ€ΡŠΡΡ‚Π΅Π½ΠΎΠ²ΠΈΠ΄Π΅Π½ Π±ΡƒΡ„Π΅Ρ€ Π² NOR flash
Π–ΡŠΠ»Ρ‚ΠΎΡ‚ΠΎ Ρ‚ΡƒΠΊ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° ΠΏΠΎΠ»Π΅Ρ‚ΠΎ T, бялото β€” ΠΏΠΎΠ»Π΅Ρ‚ΠΎ S, Π·Π΅Π»Π΅Π½ΠΎΡ‚ΠΎ L (Π΄ΡŠΠ»ΠΆΠΈΠ½Π°Ρ‚Π° Π½Π° компрСсиранитС Π΄Π°Π½Π½ΠΈ Π² Π±Π°ΠΉΡ‚ΠΎΠ²Π΅), ΡΠΈΠ½ΡŒΠΎΡ‚ΠΎ β€” компрСсиранитС Π΄Π°Π½Π½ΠΈ, Ρ‡Π΅Ρ€Π²Π΅Π½ΠΎΡ‚ΠΎ β€” ΠΊΡ€Π°ΠΉΠ½ΠΈΡ‚Π΅ Π±Π°ΠΉΡ‚ΠΎΠ²Π΅ Π½Π° компрСсиранитС Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ сС записват във Ρ„Π»Π°Ρˆ ΠΏΠ°ΠΌΠ΅Ρ‚.

По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ заглавията Π½Π° записитС с Π½Π°ΠΉ-разпространСната дълТина (Π΄ΠΎ 63+5 Π±Π°ΠΉΡ‚Π° Π² компрСсиран Π²ΠΈΠ΄) ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° запишСм с Π΅Π΄ΠΈΠ½ Π±Π°ΠΉΡ‚.

Π‘Π»Π΅Π΄ всСки запис сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° сума CRC-32C, ΠΏΡ€ΠΈ която ΠΊΠ°Ρ‚ΠΎ Π½Π°Ρ‡Π°Π»Π΅Π½ индСкс (init) сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°Π½ΠΎΡ‚ΠΎ стойност Π½Π° ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½Π°Ρ‚Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° сума.

CRC ΠΏΡ€ΠΈΡ‚Π΅ΠΆΠ°Π²Π° свойството Π½Π° β€žΠΏΡ€ΠΎΠ΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎΡΡ‚β€œ, дСйствува (плюс-минус ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° Π±ΠΈΡ‚ΠΎΠ²Π΅Ρ‚Π΅ Π² процСса) Ρ‚Π°ΠΊΠ°Π²Π° Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°: ΠœΠΎΡΡ‚Π° рСализация Π½Π° ΠΏΡ€ΡŠΡΡ‚Π΅Π½ΠΎΠ²ΠΈΠ΄Π΅Π½ Π±ΡƒΡ„Π΅Ρ€ Π² NOR flash.
ВоСст фактичСски изчислявамС CRC Π½Π° всички ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½ΠΈ Π±Π°ΠΉΡ‚ΠΎΠ²Π΅ Π½Π° заглавията ΠΈ Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π½Π° Ρ‚Π°Π·ΠΈ страница.

НСпосрСдствСно слСд ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π°Ρ‚Π° сума Π»Π΅ΠΆΠΈ Π·Π°Π³Π»Π°Π²ΠΈΠ΅Ρ‚ΠΎ Π½Π° слСдващия запис.

Π—Π°Π³Π»Π°Π²ΠΈΠ΅Ρ‚ΠΎ Π΅ конструирано ΠΏΠΎ Ρ‚Π°ΠΊΡŠΠ² Π½Π°Ρ‡ΠΈΠ½, Ρ‡Π΅ ΠΏΡŠΡ€Π²ΠΈΡΡ‚ ΠΌΡƒ Π±Π°ΠΉΡ‚ Π²ΠΈΠ½Π°Π³ΠΈ Π΄Π° Π΅ Ρ€Π°Π·Π»ΠΈΡ‡Π΅Π½ ΠΎΡ‚ 0x00 ΠΈ 0xff (Π°ΠΊΠΎ вмСсто ΠΏΡŠΡ€Π²ΠΈΡ Π±Π°ΠΉΡ‚ Π½Π° Π·Π°Π³Π»Π°Π²ΠΈΠ΅Ρ‚ΠΎ срСщнСм 0xff, Π·Π½Π°Ρ‡ΠΈ Ρ‚ΠΎΠ²Π° Π΅ нСиспользвана област; 0x00 сигнализира Π·Π° Π³Ρ€Π΅ΡˆΠΊΠ°).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΈ

Π§Π΅Ρ‚Π΅Π½Π΅ ΠΎΡ‚ Ρ„Π»Π°Ρˆ ΠΏΠ°ΠΌΠ΅Ρ‚

Всяко Ρ‡Π΅Ρ‚Π΅Π½Π΅ Π²ΡŠΡ€Π²ΠΈ с ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½Π° сума.
Ако ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½ΠΎΡ‚ΠΎ число Π½Π΅ съвпада, Ρ‡Π΅Ρ‚Π΅Π½Π΅Ρ‚ΠΎ сС повтаря няколко ΠΏΡŠΡ‚ΠΈ Π² Π½Π°Π΄Π΅ΠΆΠ΄Π° Π΄Π° сС ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π°Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ.

(Ρ‚ΠΎΠ²Π° Π΅ Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ, Linux Π½Π΅ ΠΊΠ΅ΡˆΠΈΡ€Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅Ρ‚ΠΎ ΠΎΡ‚ NOR Flash, ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ)

Запис Π² Ρ„Π»Π°Ρˆ ΠΏΠ°ΠΌΠ΅Ρ‚

ЗаписвамС Π΄Π°Π½Π½ΠΈΡ‚Π΅.
Π§Π΅Ρ‚Π΅ΠΌ Π³ΠΈ.

Ако ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Π½ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ Π½Π΅ ΡΡŠΠ²ΠΏΠ°Π΄Π°Ρ‚ с записанитС, запълвамС областта с Π½ΡƒΠ»ΠΈ ΠΈ сигнализирамС Π·Π° Π³Ρ€Π΅ΡˆΠΊΠ°.

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° Π½Π° Π½ΠΎΠ² Ρ‡ΠΈΠΏ Π·Π° Ρ€Π°Π±ΠΎΡ‚Π°

Π—Π° инициализация, Π² ΠΏΡŠΡ€Π²Π°Ρ‚Π° (ΠΏΠΎ-Ρ‚ΠΎΡ‡Π½ΠΎ Π½ΡƒΠ»Π΅Π²Π°) страница сС записва Π·Π°Π³Π»Π°Π²ΠΈΠ΅ с вСрсия 1.
Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Π² Ρ‚Π°Π·ΠΈ страница сС записва Π½Π°Ρ‡Π°Π»Π΅Π½ контСкст (ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° UUID Π½Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π° ΠΈ настройки ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅).

Всичко, Ρ„Π»Π°Ρˆ ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° Π΅ Π³ΠΎΡ‚ΠΎΠ²Π° Π·Π° Ρ€Π°Π±ΠΎΡ‚Π°.

Π—Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚Π°

ΠŸΡ€ΠΈ Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ сС Ρ‡Π΅Ρ‚Π°Ρ‚ ΠΏΡŠΡ€Π²ΠΈΡ‚Π΅ 8 Π±Π°ΠΉΡ‚Π° ΠΎΡ‚ всяка страница (Π·Π°Π³Π»Π°Π²ΠΈΠ΅ + CRC), страницитС с Π½Π΅ΠΏΠΎΠ·Π½Π°Ρ‚ Magic Number ΠΈΠ»ΠΈ Π½Π΅Π²Π΅Ρ€Π΅Π½ CRC сС ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€Π°Ρ‚.
ΠžΡ‚ β€žΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΈΡ‚Π΅β€œ страници сС ΠΈΠ·Π±ΠΈΡ€Π°Ρ‚ страницитС с максимална вСрсия, ΠΎΡ‚ тях сС Π²Π·Π΅ΠΌΠ° страницата с Π½Π°ΠΉ-висок Π½ΠΎΠΌΠ΅Ρ€.
Π‘Ρ‡ΠΈΡ‚Ρ‹Π²Π° сС ΠΏΡŠΡ€Π²ΠΈΡΡ‚ запис, провСрява сС корСктността Π½Π° CRC, Π½Π°Π»ΠΈΡ‡ΠΈΠ΅Ρ‚ΠΎ Π½Π° Ρ„Π»Π°Π³Π° β€žΠΊΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚β€œ. Ако всичко Π΅ Π½Π°Ρ€Π΅Π΄, Ρ‚Π°Π·ΠΈ страница сС счита Π·Π° Ρ‚Π΅ΠΊΡƒΡ‰Π°. Ако Π½Π΅ Π΅, сС Π²Ρ€ΡŠΡ‰Π°ΠΌΠ΅ Π½Π° ΠΏΡ€Π΅Π΄ΠΈΡˆΠ½Π°Ρ‚Π°, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Π½Π°ΠΌΠ΅Ρ€ΠΈΠΌ β€žΠΆΠΈΠ²Π°Ρ‚Π°β€œ страница.
ΠžΡ‚ Π½Π°ΠΌΠ΅Ρ€Π΅Π½Π°Ρ‚Π° страница Ρ‡Π΅Ρ‚Π΅ΠΌ всички записи, Ρ‚Π΅Π·ΠΈ с Ρ„Π»Π°Π³Π° β€žΠΊΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚β€œ ΠΏΡ€ΠΈΠ»Π°Π³Π°ΠΌΠ΅.
Π—Π°ΠΏΠ°Π·Π²Π°ΠΌΠ΅ zlib Ρ€Π΅Ρ‡Π½ΠΈΠΊΠ° (Ρ‰Π΅ Π΅ Π½ΡƒΠΆΠ΅Π½ Π·Π° Π΄ΠΎ записванС Π² Ρ‚Π°Π·ΠΈ страница).

Всичко, Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠΊΠ»ΡŽΡ‡ΠΈ, ΠΊΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ΡŠΡ‚ Π΅ Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²Π΅Π½, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Ρ€Π°Π±ΠΎΡ‚ΠΈΠΌ.

ДобавянС Π½Π° запис Π² ΠΆΡƒΡ€Π½Π°Π»Π°

БтискамС записа с правилния Ρ€Π΅Ρ‡Π½ΠΈΠΊ, ΡƒΠΊΠ°Π·Π²Π°ΠΉΠΊΠΈ Z_SYNC_FLUSH. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ²Π°ΠΌΠ΅ Π΄Π°Π»ΠΈ компрСсираният запис сС ΠΏΠΎΠ±ΠΈΡ€Π° Π² Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° страница.
Ако Π½Π΅ сС ΠΏΠΎΠ±ΠΈΡ€Π° (ΠΈΠ»ΠΈ Π΅ ΠΈΠΌΠ°Π»ΠΎ Π³Ρ€Π΅ΡˆΠΊΠΈ CRC Π½Π° страницата) - Π·Π°ΠΏΠΎΡ‡Π²Π°ΠΌΠ΅ Π½ΠΎΠ²Π° страница (Π²ΠΈΠΆΠ΄Π°Ρ‚Π΅ ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ).
ЗаписвамС записа ΠΈ CRC. Ако сС Π΅ случила Π³Ρ€Π΅ΡˆΠΊΠ°, Π·Π°ΠΏΠΎΡ‡Π²Π°ΠΌΠ΅ Π½ΠΎΠ²Π° страница.

Нова страница

Π˜Π·Π±ΠΈΡ€Π°ΠΌΠ΅ свободна страница с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π΅Π½ Π½ΠΎΠΌΠ΅Ρ€ (свободна считамС страницата с Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π½ΠΎ число Π² Π·Π°Π³Π»Π°Π²ΠΈΠ΅Ρ‚ΠΎ ΠΈΠ»ΠΈ с вСрсия ΠΏΠΎ-ниска ΠΎΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π°). Ако няма Ρ‚Π°ΠΊΠΈΠ²Π° страници, ΠΈΠ·Π±ΠΈΡ€Π°ΠΌΠ΅ страница с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π΅Π½ Π½ΠΎΠΌΠ΅Ρ€ ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠΌΠ°Ρ‚ вСрсия, Ρ€Π°Π²Π½Π° Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π°.
ΠŸΡ€Π°Π²ΠΈΠΌ ΠΈΠ·Π±Ρ€Π°Π½Π°Ρ‚Π° страница erase. БравнявамС ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ с 0xff. Ако Π½Π΅Ρ‰ΠΎ Π½Π΅ Π΅ Π½Π°Ρ€Π΅Π΄, Π²Π·ΠΈΠΌΠ°ΠΌΠ΅ слСдващата свободна страница ΠΈ Ρ‚.Π½.
На ΠΈΠ·Ρ‚Ρ€ΠΈΡ‚Π°Ρ‚Π° страница записвамС Π·Π°Π³Π»Π°Π²ΠΈΠ΅, ΠΏΡŠΡ€Π²ΠΈΡΡ‚ запис Π΅ Ρ‚Π΅ΠΊΡƒΡ‰ΠΎΡ‚ΠΎ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ Π½Π° контСкста, слСдващият - нСзаписаният запис ΠΎΡ‚ ΠΆΡƒΡ€Π½Π°Π»Π° (Π°ΠΊΠΎ ΠΈΠΌΠ° Ρ‚Π°ΠΊΡŠΠ²).

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠΈΠΌΠΎΡΡ‚ Π½Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°

Π‘ΠΏΠΎΡ€Π΅Π΄ ΠΌΠ΅Π½, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΡŠΡ‚ прСдставлява Π΄ΠΎΠ±Ρ€ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° всякакви ΠΏΠΎ-скоро сТимаСми ΠΏΠΎΡ‚ΠΎΡ†ΠΈ информация (ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ тСкст, JSON, MessagePack, CBOR, възмоТно ΠΈ protobuf) Π² NOR Flash.

Π Π°Π·Π±ΠΈΡ€Π° сС, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΡŠΡ‚ Π΅ β€žΠ½Π°ΠΏΡ€Π°Π²Π΅Π½β€œ спСциално Π·Π° SLC NOR Flash.

НС трябва Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° с носитСли с висок BER, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ NAND ΠΈΠ»ΠΈ MLC NOR. (ΠΈΠΌΠ° Π»ΠΈ Ρ‚Π°ΠΊΠΎΠ²Π° ΠΏΠ°ΠΌΠ΅Ρ‚ Π² ΠΏΡ€ΠΎΠ΄Π°ΠΆΠ±Π°? Π‘Ρ€Π΅Ρ‰Π°Π» съм спомСнавания само Π² Ρ€Π°Π±ΠΎΡ‚ΠΈ Π·Π° ΠΊΠΎΡ€Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΈ ΠΊΠΎΠ΄ΠΎΠ²Π΅.).

ΠžΡ‰Π΅ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€Π΅, Π½Π΅ трябва Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° с устройства, ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠΌΠ°Ρ‚ свой FTL: USB Ρ„Π»Π°Ρˆ, SD, MicroSD ΠΈ Π΄Ρ€. (Π·Π° Ρ‚Π°ΠΊΠ°Π²Π° ΠΏΠ°ΠΌΠ΅Ρ‚ ΡΡŠΠ·Π΄Π°Π΄ΠΎΡ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ с Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° страница ΠΎΡ‚ 512 Π±Π°ΠΉΡ‚Π°, сигнатура Π² Π½Π°Ρ‡Π°Π»ΠΎΡ‚ΠΎ Π½Π° всяка страница ΠΈ ΡƒΠ½ΠΈΠΊΠ°Π»Π½ΠΈ Π½ΠΎΠΌΠ΅Ρ€Π° Π½Π° записи β€” понякога успявах Π΄Π° Π²ΡŠΠ·ΡΡ‚Π°Π½ΠΎΠ²Ρ всички Π΄Π°Π½Π½ΠΈ Ρ‡Ρ€Π΅Π· просто послСдоватСлно Ρ‡Π΅Ρ‚Π΅Π½Π΅ ΠΎΡ‚ β€žΠ³Π»ΡŽΠΊΠ½Π°Π»Π°β€œ Ρ„Π»Π°ΡˆΠΊΠ°.).

Π’ зависимост ΠΎΡ‚ Π·Π°Π΄Π°Ρ‡ΠΈΡ‚Π΅, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΡŠΡ‚ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π±Π΅Π· промяна Π½Π° Ρ„Π»Π°ΡˆΠΊΠΈ ΠΎΡ‚ 128 ΠšΠ±ΠΈΡ‚ (16 Кб) Π΄ΠΎ 1 Π“Π±ΠΈΡ‚ (128 Мб). ΠŸΡ€ΠΈ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅, ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈ Π½Π° Ρ‡ΠΈΠΏΠΎΠ²Π΅ с ΠΏΠΎ-голям ΠΎΠ±Π΅ΠΌ, само Ρ‡Π΅ вСроятно трябва Π΄Π° сС ΠΊΠΎΡ€ΠΈΠ³ΠΈΡ€Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ΡŠΡ‚ Π½Π° страницата. (Но Ρ‚ΡƒΠΊ Π²Π΅Ρ‡Π΅ ΠΈΠ΄Π²Π° Π²ΡŠΠΏΡ€ΠΎΡΡŠΡ‚ Π·Π° икономичСската Ρ†Π΅Π»Π΅ΡΡŠΠΎΠ±Ρ€Π°Π·Π½ΠΎΡΡ‚, Ρ†Π΅Π½Π°Ρ‚Π° Π½Π° NOR Flash с голям ΠΎΠ±Π΅ΠΌ Π½Π΅ Π΅ радостна.).

Ако Π½Π° някого Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΡŠΡ‚ ΠΌΡƒ сС Π΅ сторил интСрСсСн, ΠΈ иска Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΠΎΡ‚ΠΊΡ€ΠΈΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ β€” ΠΏΠΈΡˆΠ΅Ρ‚Π΅, Ρ‰Π΅ сС постарая Π΄Π° намСря Π²Ρ€Π΅ΠΌΠ΅, Π΄Π° причСсам ΠΊΠΎΠ΄Π° ΠΈ Π΄Π° Π³ΠΎ ΠΊΠ°Ρ‡Π° Π² github.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠšΠ°ΠΊΡ‚ΠΎ Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΡŠΡ‚ Π² ΠΊΡ€Π°ΠΉΠ½Π° смСтка сС ΠΎΠΊΠ°Π·Π° прост. ΠΈ Π΄ΠΎΡ€ΠΈ скучСн..

Π’ статията Π΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ Π΄Π° сС ΠΎΡ‚Ρ€Π°Π·ΠΈ Π΅Π²ΠΎΠ»ΡŽΡ†ΠΈΡΡ‚Π° Π½Π° моята Ρ‚ΠΎΡ‡ΠΊΠ° Π½Π° Π³Π»Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ°, Π½ΠΎ повярвайтС: ΠΏΡŠΡ€Π²ΠΎΠ½Π°Ρ‡Π°Π»Π½ΠΎ ΠΌΠΈ сС искашС Π΄Π° създам Π½Π΅Ρ‰ΠΎ слоТно, Π½Π΅ΡƒΠ±ΠΈΠ²Π°Π΅ΠΌΠΎ, способно Π΄Π° ΠΎΡ†Π΅Π»Π΅Π΅ Π΄ΠΎΡ€ΠΈ слСд ядрСна Сксплозия Π² нСпосрСдствСна близост. Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π°, Ρ€Π°Π·ΡƒΠΌΡŠΡ‚ (надявам сС) всС ΠΏΠ°ΠΊ ΠΏΠΎΠ±Π΅Π΄ΠΈ ΠΈ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΈΡ‚Π΅ постСпСнно сС прСнасочиха към простота ΠΈ компактност.

МоТС Π»ΠΈ Π΄Π° сС ΠΎΠΊΠ°ΠΆΠ΅, Ρ‡Π΅ съм сС Π·Π°Π±Π»ΡƒΠ΄ΠΈΠ»? Π”Π°, Ρ€Π°Π·Π±ΠΈΡ€Π° сС. МоТС Π΄Π° сС ΠΎΠΊΠ°ΠΆΠ΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ρ‡Π΅ смС Π·Π°ΠΊΡƒΠΏΠΈΠ»ΠΈ ΠΏΠ°Ρ€Ρ‚ΠΈΠ΄Π° нСкачСствСни Ρ‡ΠΈΠΏΠΎΠ²Π΅. Или ΠΏΠΎ Π΄Ρ€ΡƒΠ³Π° ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π° ΠΎΠ±ΠΎΡ€ΡƒΠ΄Π²Π°Π½Π΅Ρ‚ΠΎ Π΄Π° Π½Π΅ ΠΎΠΏΡ€Π°Π²Π΄Π°Π΅ очакванията Π·Π° надСТдност.

Имам Π»ΠΈ ΠΏΠ»Π°Π½ Π·Π° Ρ‚ΠΎΠ·ΠΈ случай? Мисля, Ρ‡Π΅ слСд ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Π΅Ρ‚ΠΎ Π½Π° статията Π½Π΅ сС ΡΡŠΠΌΠ½ΡΠ²Π°Ρ‚Π΅, Ρ‡Π΅ ΠΏΠ»Π°Π½ ΠΈΠΌΠ°. И Π΄ΠΎΡ€ΠΈ Π½Π΅ Π΅Π΄ΠΈΠ½.

Ако бъдСм ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-сСриозни, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΡŠΡ‚ Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π΅Π½ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈ ΠΊΠ°Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅Π½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΠΈ ΠΊΠ°Ρ‚ΠΎ β€žΠΏΡ€ΠΎΠ±Π΅Π½ Ρ‚ΠΎΠΏβ€œ.

Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° всичко Π½Π° Π±ΡŽΡ€ΠΎΡ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½ΠΎΡ€ΠΌΠ°Π»Π½ΠΎ, Π±ΡƒΠΊΠ²Π°Π»Π½ΠΎ слСд няколко Π΄Π½ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Ρ‰Π΅ бъдС Ρ€Π°Π·Π²Ρ‘Ρ€Π½Π°Ρ‚ΠΎ. (ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»Π½ΠΎ) Π½Π° стотици устройства, Ρ‰Π΅ Π²ΠΈΠ΄ΠΈΠΌ ΠΊΠ°ΠΊΠ²ΠΎ Ρ‰Π΅ станС Π² "Π±ΠΎΠΉΠ½Π°" Сксплоатация (слава Π±ΠΎΠ³Ρƒ, сС надявам, Ρ‡Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° позволява Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎ ΠΎΡ‚ΠΊΡ€ΠΈΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ²Ρ€Π΅Π΄ΠΈ; Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Ρ‰Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΡΡŠΠ±Π΅Ρ€Π΅ пълна статистика). Π‘Π»Π΅Π΄ няколко мСсСца Ρ‰Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ ΠΈΠ·Π²ΠΎΠ΄ΠΈ (Π° Π°ΠΊΠΎ Π½Π΅ Π½ΠΈ ΠΏΡ€ΠΎΠ²ΡŠΡ€Π²ΠΈ β€” ΠΈ ΠΏΠΎ-Ρ€Π°Π½ΠΎ).

Ако Π² края Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ сС установят сСриозни ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ ΠΈ са Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΈ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ Ρ‰Π΅ пиша Π·Π° Ρ‚ΠΎΠ²Π°.

Π›ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π°

НС бях искал Π΄Π° ΡΡŠΡΡ‚Π°Π²ΡΠΌ дълъг скучСн списък с ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Ρ€Π°Π±ΠΎΡ‚ΠΈ, накрая всСки ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΠΎΠ»Π·Π²Π° Google.

Π’ΡƒΠΊ Ρ€Π΅ΡˆΠΈΡ… Π΄Π° оставя списък с Π½Π°Ρ…ΠΎΠ΄ΠΊΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΈ сС струваха особСно интСрСсни, Π½ΠΎ постСпСнно Ρ‚Π΅ ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Ρ…Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ Π² тСкста Π½Π° статията, Π° Π² списъка остана само Π΅Π΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ°:

  1. Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° infgen ΠΎΡ‚ Π°Π²Ρ‚ΠΎΡ€Π° zlib. Π£ΠΌΠ΅Π΅ Π΄Π° ΠΏΠΎΠΊΠ°Π·Π²Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π°Ρ€Ρ…ΠΈΠ²ΠΈ Π² deflate/zlib/gzip Π² Ρ€Π°Π·Π±ΠΈΡ€Π°Π΅ΠΌ Π²ΠΈΠ΄. Ако сС Π½Π°Π»ΠΎΠΆΠΈ Π΄Π° Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚Π΅ Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½Π°Ρ‚Π° структура Π½Π° Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° deflate (ΠΈΠ»ΠΈ gzip) β€” настоятСлно ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°ΠΌ.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster