Жмых
9 января 2004
Рубрика: Технологии.
Автор: Юрий Решетов.
pic

Эта статья скорее кратенький экскурс по информатике в области алгоритмов сжатия и архивирования данных. Подобные алгоритмы встречаются в информационных технологиях если не везде, то во многих реализациях, даже если мы про них и не догадываемся. Другое дело — различные казусы, которые при этом происходят и о которых мы также частенько не можем догадаться.

Возьмем простейший пример. Наверняка многим из нас приходилось, а некоторым систематически приходится разговаривать по сотовым телефонам. Честно говоря, качество такой передачи звука неважное. Еще хуже, если мы соединим абонентов сотовых телефонов через IP-телефонию, и тут слово неважное уже можно будет заменить на слово невозможное, т.е. практически оба не могут разобрать слов друг друга. В чем дело? Дело в сжатии информации, а в данном случае оцифрованного звука, который передается по коммуникационным каналам. Возникает противоречие, что если бы сжатия не было, то было бы высокое качество, но соответственно — высокая цена и низкая пропускная способность, так как объем информации возрос в несколько раз. Только благодаря сжатию информации возникает возможность общаться друг с другом, будь то сотовый телефон, Интернет или иное коммуникационное средство. Ведь информация не нужна как таковая для того, чтобы ее где-либо накапливать, а нужна, чтобы ею можно было с кем-нибудь поделиться, например со шпионом. Хотя опять же следует учесть, что и накопление информации производится не на резиновые носители, а на имеющие фиксированные объемы. Потому и хранение ее тоже во многих случаях не обходится без того же самого сжатия.
Под термином архивация у нас возникают ассоциации о программах ARJ, RAR или PK(UN)ZIP, которые еще чаще имеют приставку Win. То есть эдакие утилитки с оконным или текстовым интерфейсом, способные в 2 — 3 раза уменьшить объемы некотор(ых)ого файл(ов)а. На самом деле термин архивация в обывательском смысле не совсем точный. Пользователи Unix прекрасно понимают, что архивацию следует производить с помощью утилиты TAR, а сжатие — с помощью утилиток GZIP или BZIP. То есть по сути это два разных процесса, так как архивация — это сбор каталогов, подкаталогов и находящихся в этих (под) каталогах файлов в один файл, а сжатие или компрессия — это уже уменьшение объема этого самого файла. В операционных системах, более рассчитанных на «кухарок» — таких, как DOS или Windows, оба эти процесса объединили в один и получился своего рода гаджет, то есть архиватор и компрессор в одном флаконе, который именуется уже одним термином архиватор.
Впрочем, это не столь важно, как и что называть, а важно, что свои функции данные утилиты выполняют. Нас интересует другой вопрос, а именно: можно ли увеличить сжатие еще больше, нежели оно возможно на данный момент, ну, например, до нуля?

pic

Можно и до нуля. Но вот только кому этот нуль нужен, из которого уже, кроме нуля, ничего не выйдет? То есть принцип действия такой утилиты прост, так как она должна будет всего лишь удалять информацию, чтобы получить этот самый нуль.
На самом деле существуют определенные пределы сжатия информации. Когда только информационные технологии появились (середина прошлого века), встал вопрос: а какую же единицу измерения избрать для информации. Ведь сама по себе информация нематериальна (акциденциальна), так как ее можно копировать в любом объеме. Материальны (субстанциональны) носители информации и коммуникационные каналы, так как их фиксированные объемы и нерезиновая пропускная способность являются единственными ограничителями для копирования. Поэтому ясно, что измерять информацию ведрами, пудами и аршинами никак не получится, хотя такая затея вполне проходит для физически материальных величин. Тут и подвернулся математик Клод Шеннон, который и стал Отцом информатики, предложив свою формулу максимального объема информации — энтропию, т.е. предел между информацией и дезинформацией. Первое, что было предложено и не только им, так это считать минимальным объемом информации один бит (англ. — кусочек). Бит может принимать всего два состояния: истинно или ложно, намагничено или размагничено, есть электричество или его нет. Почему всего два, а не три или не 548,578909?..
Потому, что два состояния очень легко и безошибочно отличить друг от друга, нежели иные уровни дискретизации. Например, если, придя домой и попытавшись включить телевизор, вы обнаружите, что он не работает, то останется только проверить, есть ли электроэнергия вообще, попытавшись включить освещение, после чего выглянуть в подъезд и убедиться в том, что электрический счетчик еще никто не унес, останется поспрошать соседей на предмет того, что данное несчастье не является вашей прерогативой. В противном случае, следует посмотреть предохранитель в телевизоре на предмет перегорания, или если и это не поможет, то вызвать мастера или скупщика старья. То есть тем самым вы действуете в бинарном дереве состояний, как выразился бы математик, хотя при этом никакой математики знать и не нужно. Впрочем, бинарность — это не изобретение К. Шеннона, а основа логики вездесущего Аристотеля, от которой пытаются избавиться в течение тысячелетий, но никак не могут, ведь он предусмотрел многие вещи так, чтобы их не пришлось пересматривать впоследствии. С помощью бинарного кода мы также избавляемся от вакханалии, которая была присуща первым вычислительным машинам, отличавшимся друг от друга разрядностью регистров, что создавало лишь проблемы несовместимости. Нынче же, кого ни спроси, так всякий, даже проснувшись среди ночи и после бурного похмелья, тем не менее, хотя и неразборчиво, но уверенно заявит, что информацию следует измерять битами, байтами, а также кило -, мега -, гига -, терра — и т.д. байтами, а двоичная тысяча равна в точности 1024, поскольку 1000 не бинарна (т.е. нельзя разложить на степени двойки). На самом деле существует множество различных систем счисления, например троичная, десятичная — по числу пальцев на двух конечностях, шестидесятиричная — для времени и угловой меры, а также еще и различные степени золотых рядов Фибоначчи, которые натуральными числами вообще не измеряются. Так вот из всех этих систем бинарная является не только самой различимой и понятной, но и самой компактной.
Вернемся к энтропии К. Шеннона. В чем ее суть? Можно было бы, конечно, написать сразу формулу, и если читатель знаком с математикой, то к чему вообще писать эту статью? Можно было бы просто опубликовать эту самую формулу, лишившись при этом гонорара, так как она еще и чужая. Но попробуем разобраться, что называется, на пальцах. Предположим, что у нас есть некая автотрасса, по которой проезжают только «Запорожцы» и «Мерседесы». Понятное дело, что в этом случае будут систематически происходить дорожно-транспортные происшествия. Почему? Потому что «Запорожцы» непременно покалечат иномарки. Нет, не со злобы и зависти, а по той простой причине, что технические характеристики у этих авто разные, а следовательно, они будут мешать друг другу, и пропускная способность резко упадет. Если сюда добавить еще и общественный транспорт, гужевой, а также ротозеев без транспорта, то возникнут форсмажоры и в конечном итоге — пробки. Так вот идея Шеннона состояла в том, чтобы разделить информацию в зависимости от ее статистических особенностей. То есть, например, «Запорожцы» пустить по одной полосе, а иномарки по другой, а ротозеев без транспорта — в подземный переход. В результате они не будут мешать друг другу и тем самым количество ДТП сведется к минимуму. Но это еще не все. На самом деле подобный подход был предложен еще до Шеннона неким Р. Хартли. Шеннон предложил помимо этого также выделить для каждого вида информации (или в нашем примере транспорта) не просто отдельную полосу, а сделать полосы неравными. То есть статистически вычислить, какие виды информации бывают чаще, а какие реже, и тем, которые почаще, выделить пространства поболее, за счет урезания пространства у тех, которые пореже. Советую обратить внимание на то, что непросто взять и расширить полосу, а именно за счет умаления неиспользуемых альтернативных возможностей. В результате информационный (или транспортный) канал остался прежней ширины, количество автотранспорта тоже, а пропускная способность возросла.
На этом принципе К. Шенноном совместно с Р. Фано был сформулирован первый сжимающий информацию алгоритм, принцип действия которого состоял в том, что наиболее часто встречаемым значениям байтов выделять длину поболее за счет урезания длины у менее частых.
Позже этот алгоритм был модифицирован, но суть осталась той же. Первая модификация, именуемая динамической, состояла в том, что не всегда удавалось собрать статистику с информации. Представьте себе, что вам необходимо позвонить по сотовому телефону, а для этого сначала нужно выяснить заранее, чего вы там говорить собираетесь, чтобы вычислить точную статистику и уже, основываясь на ней, сжать ваше голосовое сообщение. Абсурд! На самом деле статистику можно вычислять сразу же по ходу дела, т.е. по мере того, как байты поступают, приняв для начала, что их значения равны между собой. А впоследствии лишь гибко подстраиваться по ситуации. Если брать аналогию с автотранспортом, то это была бы гибкая разделительная полоса между медленными и более шустрыми видами, ширину которой все время менял бы некий регулировщик, просто смотря на дорогу и определяя, каких автомашин больше, а каких меньше. Если для транспорта — это абсурд, то для информации вполне приемлемое решение.
С пропускной способностью разобрались. Теперь перейдем к качеству. Мы уже знаем, что количество информации можно уменьшить за счет распределения ресурсов по статистике. А что будет с качеством? Опять возьмем для примера автотрассу. Если мы натискаем на нее транспорта впритык, то исчезнут дистанции между различными транспортными средствами и возникнут опять же ДТП. То есть чем больше дистанция, тем меньше проблем, чем она меньше, тем хуже качество. Большая дистанция именуется избыточностью, нулевая — отсутствием таковой. То же самое и с информацией: если байты напихать в информационный канал под завязку, то они наползут друг на друга, как «Запорожцы» на «Мерседесы», и здесь без автогена и пол-литры уже не разобрать, где какая машина или какое значение байта имело место. Все сливается воедино. Поэтому энтропия и является границей между информацией и дезинформацией, утверждая, что информацию можно максимально уплотнить только до того предела, где все однозначно отличимо друг от друга. Отсюда же следует вывод, что на самом деле никакого сжатия не происходит, т.е. ни автомобили, ни байты не могут быть сжаты, так как объем информации или груз, перевозимый автомобилем, нельзя уменьшать более чем на величину прогиба бампера. А это значит, что на самом деле нет сжатия, а есть устранение избыточности, т.е. излишков дистанции, которая позволяет один объект отличать от другого. На самом деле оказывается, что даже термин «сжатие» неточен, хотя его употребляют в профессиональной среде, а более правильным было бы назвать «уплотнение», или устранение излишков.
Но и это еще не все. На самом деле многие алгоритмы сжатия мультимедийных данных не являются уплотняющими, а являются сжимающими. В них одна информация наползает на другую. Возникает некоторая дезинформация. Но здесь не столь все плачевно, как кажется. На самом деле алгоритмов, выходящих за предел энтропии, достаточно много и они относятся к наиболее употребимым. Это, как правило, различные *peg, т.е. JPEG, MPEG и т.д., основанные на быстром преобразовании Фурье (спектральный анализ). Быстрое-то оно шустрое, но вот однозначно разделить информацию на составляющие, из которых она была собрана, уже не удается. Да не всегда и нужно. Например, если смотреть на JPEG-картинку издали, то можно отличить на ней, скажем, корову от собаки. MP3-звуки также вполне подходят для прослушивания попсы или RAP, так как исполнители подобных произведений не обладают ни слухом, ни голосом и, скорее, даже только за счет того, что искажения скрывают эти недостатки, подобные «произведения» еще можно слушать. MP4 — это, конечно же, по качеству не DVD, но все же для просмотра голливудских поделок — вполне подходящий вариант. Ведь самое главное здесь не столь качество, сколь объемы. Одна CD-болванка позволяет разместить на ее поверхности целый видеофильм или несколько видеоклипов, или несколько звуковых альбомов одной музыкальной группы или столько картинок, что их просмотр утомит кого угодно. Конечно же, классику с таким качеством смотреть и слушать врагу не пожелаю, да и никакие технологии никогда не заменят живого исполнения произведений, т.е. компьютер или домашний кинотеатр, не говоря уже о плейере, не воспроизведут концертную обстановку.
Осталось выяснить один-единственный вопрос, а именно, возможно ли сжатие мультимедиа без потерь качества, т.е. ниже предела энтропии? Для того, чтобы выяснить это, необходимо знать, каким образом функционируют алгоритмы без потерь качества. По сути, что с потерями, что без потерь, любой современный алгоритм состоит из двух частей. Первая часть подготавливает данные таким образом, чтобы байты с различными значениями имели различные вероятности появления. Вторая часть, как вы догадались, — это энтропийный кодер, работающий по принципу Шеннона-Фано, т.е. одноименный или более быстрый, но менее качественный алгоритм Наффмана или же арифметический кодер, который позволяет информацию записывать даже в долях бита. Точнее, в долях битов (бит — это неделимая часть), записать ее невозможно, но за счет того, что длину кода можно варьировать, то среднеарифметически получается точность вплоть до долей бита.
Про первую подготовительную (ее еще именуют преобразовательной) часть можно сказать, что в ней никакого сжатия не происходит (за исключением разве алгоритма LZ), а во многих случаях даже наоборот, объем данных немного увеличивается или даже увеличивается вдвое, если применять WaveLets-преобразования. Каков принцип действия этой самой первой подготовительно-преобразовательной части? Хотя алгоритмы вроде бы различные, но принципов у них всего два, а именно:

1. Закодировать наиболее длинные повторяющиеся последовательности байтов в более короткую последовательность, состоящую опять же из байтов. Это алгоритмы серии LZ по именам разработчиков: Лемпеля и Зива. LZ-компрессоры наиболее распространенные, поскольку у них очень высокая скорость и простота реализации даже на аппаратном уровне. Плюс ко всему результат LZ-алгоритма — это уже уменьшение объема информации. Например, если мы собираемся сжимать текстовую информацию, то в русском языке очень часто можно встретить последовательности «про…», а в английском «the…». Если мы имеем дело с обычным ASCII-текстом, то данные последовательности будут занимать не менее трех байт, а в Unicod — шесть байт. LZ-преобразователь способен закодировать их одним-единственным байтом. То есть если какая-то информация была уже ранее передана, то ее не надо повторять, а лишь указать местонахождение.
2. Закодировать следующий байт. Тут может возникнуть вопрос: а как это делать, ведь если бы мы телепатически знали, какой байт придет следующим, то зачем вообще сжатие нужно, не говоря о коммуникации? На самом деле для этого собирается статистика из наиболее часто встречаемых ранее последовательностей байтов, а также статистика тех байтов, которые наиболее часто встречаются после этих самых последовательностей. Например, если мы имеем последовательность «хорош», то вполне очевидно, что после нее могут идти гласные символы, в то время как согласные практически не встречаются. Осталось только наиболее частый символ закодировать как 0, следующий наиболее вероятный — как 1, следующий — 2 и т.д. И мы тем самым получим преобразованный код, в котором наиболее частыми будут байты с меньшими значениями и наименее частыми — со значениями 255. Что энтропийному кодеру и нужно. Алгоритмы угадывания последующих символов имеют несколько разновидностей, среди которых наиболее часто встречается PPM (prediction by partial matching).

Все это касается лишь преобразователей с возможностью восстановления информации без потерь качества, так как если мы применим обратный алгоритм, то получим те же самые байты, что и были до кодирования. Что касается сжатия мультимедийных файлов, то есть оцифрованного звука или изображения, то здесь не все так хорошо, как нам хотелось бы. А именно, если мы произносим некоторое слово, а потом повторяем его, то в оцифрованном виде это будут две разные последовательности байт. Потому что абсолютно точно практически невозможно воспроизвести последовательность звуков. Добавьте сюда еще и искажения звуковой аппаратуры. То же самое и с изображениями. Можно взять два соседних кадра из видеофильма, то даже один и тот же объект на них будет иметь хоть и незначительные, но все же отличия, не говоря уже о различных искажениях как видеопленки, так и аппаратуры, а тем более что съемку неподвижных объектов в фильмах нет смысла производить. Поэтому здесь сложно обнаружить одинаковые последовательности байтов, а следовательно, и закодировать их. Значит, LZ-вариант отпадает. Ну, а если попробовать угадать значение следующего байта? Байт имеет одно из значений в диапазоне от 0 до 255. Фактически угадать такое значение — все равно, что получить денежный приз, играя в лохотроне. Т.е. на каждую «удачную» попытку мы будем иметь 254 впросак. Если вернуться к нашей модели с автотрассой, то примерно получится такая картина. Предположим, что мы пытаемся угадать, чего будет больше: иномарок или «Запорожцев», и на основании этого «прогноза» выделяем каждому виду определенную ширину полосы дороги. Если наш прогноз показал, что должны появиться 99 «Запорожцев» и всего один «Мерседес» и мы следуем этим данным, то ситуация получится таковой, что на узкой полоске, рассчитанной для одного авто, образуется пробка из 99 иномарок, в то время как по широкой полосе мимо них, злорадно ухмыляясь, проползет один «горбатый». Ведь законы энтропии позволяют экономить не за счет резинового расширения, а только за счет умаления альтернативных ресурсов. А мы получаем обратное — вместо пропускной способности для 100 авто пропускную способность на два порядка меньше и еще в 99 из 100 случаев. Итого наша пропускная способность упадет примерно в 10000 раз. Таковы законы энтропии, которые не позволяют использовать данные, взятые с потолков или высосанные из пальцев, и прочую отсебятину, а основаны только на статистике. А следовательно, если прогнозирование невозможно, то лучше всего взять и всем раздать поровну, иначе результат будет только плачевным. Поэтому сжатие мультимедийной информации без потерь качества практически не применяется. Точнее, есть такой формат, как GIF для изображений, но он имеет 8-битное ограничение на пиксель картинки, то есть если мы возьмем изображение с 24- или 32-битной кодировкой и потеряем на них качество, то выиграем на цветовой гамме, так как GIF позволит закодировать только 256 оттенков, в то время как JPEG уже предусматривает 16 миллионов и выше. Когда мы имеем дело с динамической мультимедиа, т.е. кодированием звуко- и видеоряда, то здесь уже необходимо, чтобы скорость сжатия и разжатия была гораздо больше, чем воспроизведения, точнее, чтобы занимала времени столько, чтобы еще и на воспроизведение осталось. Иначе нам придется устроить перекур, чтобы дождаться, когда распакуется следующий кадр просматриваемого фильма. Потом еще перекур и еще, и в конце концов, зритель станет зеленым от злости и никотина и предпочтет пойти в кинотеатр. То же самое и со звуком. Ведь общаться с заикой никакого терпения не хватит, а если по сотовому телефону с посекундной тарификацией, тогда еще и денег.

pic

Как я уже выше сообщал, основой алгоритмов сжатия с потерей качества является спектральный анализ. Если, например, это звуковой файл, то спектр его будет состоять из отдельных нот — гармоник. С помощью косинусных преобразований Фурье можно выделить отдельные гармоники, а также выяснить их характеристики, такие как громкость — амплитуда и время — фаза. Все гармоники в этом случае выяснять не нужно, а только всего лишь несколько первых (за счет этого и происходят незначительные потери качества, так как информация не полная, а берется лишь наиболее существенная ее часть). Причем гармоники берутся не с одного байта, а сразу с нескольких соседних, а результат усредняется. Если мы имеем дело с изображением, то здесь уже гармоники — это цветовая составляющая. Также берутся значения не для отдельного пикселя, а для квадратика, например 64 Х 64, и усредняются. Выуженные таким макаром цифры остается лишь уплотнить энтропийным кодером.
Вот мы и выяснили, почему в аппаратуре что-либо может неразборчиво хрюкать или покрываться пятнами. Было бы даже удивительно, если бы оно там не хрюкало и не покрывалось. Впрочем, всегда есть альтернатива — использовать аналоговые хранители информации или таскать с собой разматываемую по пути бобину с оптоволоконным кабелем для более качественной мобильной связи. Или же подождать несколько лет, когда на аппаратном уровне скорость работы алгоритмов сжатия станет значительно выше и появится возможность воспроизведения динамической информации в реальном времени.

pic

Вот и все, что хотелось рассказать про компрессию информации. Но стоит добавить, что есть и другая сторона медали, это внесение дополнительной избыточности в информацию и тем самым увеличение ее объема. А это еще для чего? Поскольку информация с устраненной избыточностью подвержена помехам, то чтобы от этих помех избавиться, используют внесение дополнительной избыточности. Например, когда мы связываемся с Интернетом по модему, то в таком соединении перед началом передачи оба модема договариваются друг с другом о том, какой алгоритм сжатия, какой алгоритм внесения избыточности будет применяться в данном сеансе связи. Внесенная избыточность позволяет исправлять отдельные ошибки, что называется, на лету — в процессе приема искаженной информации. Чаще всего это несколько бит, то есть менее байта. В противном случае объем кода с избыточностью, позволяющей исправлять большее количество ошибок, был бы значительным по объему, что неприемлемо для средств коммуникации. Более эффективным средством коррекции ошибок при передаче является передача информации пакетами размером от 256 байт до нескольких килобайт с дополнением к каждому пакету 2- или 4-байтной контрольной суммы, то есть математической суммы всех байтов в пакете, включая циклические сдвиги. Если пакет будет подвержен помехам, то контрольная сумма, подсчитанная передающей стороной, не совпадет с контрольной суммой на приемной стороне, а следовательно, такие данные уже непригодны. В этом случае приемная сторона, если контрольная сумма совпала, уведомляет передающую сторону об успешности приема пакета и запрашивает следующий пакет, либо запрашивает повтор передачи данных (в протоколе TCP/IP-повтор даже не запрашивает, а передающая сторона, не дождавшись уведомления, за определенный промежуток времени обязана передать пакет повторно). Протоколы, предназначенные для модемной (и не только) связи, еще и варьируют размеры пакетов. Зачем? Например, если в коммуникационной линии появились помехи, то вероятность того, что они повредят длинный пакет, очень высока, в то время как маленькие пакетики могут проскочить между двумя помехами, не повредившись. Поэтому, заметив несовпадение контрольных сумм, передающая сторона уменьшает размеры пакетов, а если помех не наблюдается, увеличивает. Тем самым снижается количество повторов и достигаются гибкость и независимость от помех.
Дополнительная избыточность данных вносится не только при коммуникациях, но и является обязательной для записи на носители информации. Все дело в том, что физически невозможно выпустить современный носитель информации так, чтобы его поверхность не имела никаких повреждений. То есть приобретая флоппи, ZIP-диск, CD, DVD или жесткий диск, мы приобретаем вместе с ним еще и так называемые bad (англ. — плохой, поврежденный) сектора. Фактически объем диска гораздо больше того номинала, который на нем указан. Физически он содержит не только badы, но еще и пустые сектора, которые не используются. C badами все понятно, но зачем же производители продают еще и пустые сектора? На самом деле это резерв. Например, геометрия современного жесткого диска, которая указана на его этикетке, не совпадает с реальной геометрией. Ну это и понятно, ведь секторов-то больше. На аппаратном уровне запись и считывание информации происходят так:

• железо принимает информацию от компьютера и временно кэширует ее в своем ОЗУ
• из таблицы, прописанной во флеш, выбираются свободные сектора, куда следует записать информацию из кэш
• когда поверхность диска подведет нужный сектор к головке, делается попытка записи в нужный сектор
• делается попытка чтения записанной на предыдущем этапе информации и сверка ее с информацией, еще пока хранящейся в кэше
• если попытка успешна или ошибки приходятся только на единичные биты, которые можно на лету исправить, то место в кэше высвобождается для новых данных и переход к пп. 1
• если запись данных была произведена в заведомо неисправный сектор, то его следует пометить во флэш-таблице как bad, взять резервный сектор и пометить его как свободный. Перейти к пп. 2.

С одной стороны, это вроде бы удобно, так как весь этот процесс происходит на лету и незаметно. Но если брать конечного пользователя, приобретающего такой носитель информации, то получается своего рода обман, так как носитель информации уже начал сыпаться, но пользователь об этом еще не знает. Он узнает об этом только тогда, когда все резервные сектора закончатся и информация о наличии bad-секторов будет передаваться в компьютер, чтобы известить операционную систему. То есть плохие вести откладываются на потом, но когда они становятся явью, то бывает уже слишком поздно, поскольку можно не успеть предпринять что-либо для резервного копирования данных. Тогда в лучшем случае какой-либо мастер по винчестерам вам просто перепишет новую геометрию во флэш, урезав объем диска примерно вдвое и закрыв все bad-сектора в один прием (при этом вся информация на диске будет уничтожена). Но это уже не решение, если диск начал сыпаться, то он будет сыпаться далее. По моему мнению, гораздо честнее производители жестких дисков поступали раньше, наклеивая на банку диска таблицу неисправностей. Можно было бы предусмотреть возможность вывода информации о состоянии диска в компьютер, чтобы заранее уведомить пользователя о том, что данные надо срочно резервировать.
Поэтому не стоит удивляться, если жесткий диск, проработав в течение года в идеальных условиях, ни с того ни с сего начал вдруг сыпать bad-кластеры. Это лишь означает, что сыпаться он начал еще на заводе, где его произвели, а в данном случае лишь произошло переполнение таблицы резервных и неисправных секторов. Вот и весь фокус.

pic

Что еще можно добавить к вышесказанному? Только то, что я в данный момент разрабатываю алгоритм мультимедийного компрессора без потерь качества. Сейчас уже можно сказать, что он уступает по возможностям сжатия распространенным алгоритмам, основанным на спектральном анализе, примерно на 20% и имеет очень низкую скорость, он практически непригоден для воспроизведения звукового или видеоряда в реальном времени. Но это не беда, так как в области производительности еще есть неиспользованные резервы, да и аппаратная производительность вычислительной техники все время растет. Так что, если сегодня можно будет уменьшить объем неподвижной картинки без потерь качества и ограничений цветовой дискретности, то завтра уже можно будет слушать звуковые файлы, а послезавтра смотреть видеофильмы.

Orphus system
Подписывайтесь на канал infoCOM.UZ в Telegram, чтобы первыми узнавать об ИКТ новостях Узбекистана
В Telegram
В WhatsApp
В Одноклассники
ВКонтакте