Если другой ответ слишком сложен для чтения, потому что в нем много технических терминов, я предлагаю свой ответ.
Файл хранится на жестком диске или твердом диске. Что за файл вы спрашиваете? Я отвечаю, куча единиц и нулей, расположенных в определенном порядке, который выглядит как файл снаружи. Что такое исполняемая программа *.exe
? Это исполняемый код машинного кода, а также набор из 1 и 0. Он также хранится на вашем диске. Когда вы щелкаете по исполняемому файлу сжатия файлов, алгоритм инструкций кода загружается из *.exe
на диске в ОЗУ. Только тогда он сможет бежать. ЦП компьютера запускает программы и читает / записывает данные. Он не может получить что-либо непосредственно с диска. Сначала он должен загрузить все в оперативную память, которая действует как посредник между процессором и диском, на котором хранятся все ваши данные.
Теперь программа сжатия файлов запускается процессором в оперативной памяти. Что инструкции кода говорят процессору делать? Они говорят ему загрузить сам файл с диска в оперативную память, чтобы программа могла с ним работать. Итак, теперь у нас есть две вещи в оперативной памяти: сама программа и файл.
Вы говорите этой программе сжатия файлов, чтобы сжать файл. Однако он не может волшебным образом сделать это. Чтобы быть сжатым, файл должен быть расположен в определенном порядке, максимально плотно. Возможно, до сжатия файл был несколько неорганизованным, как ваш картотека. Программа сжатия файлов должна организовать файл максимально аккуратно и плотно. Для этого ему необходимо временно перевести файл в еще более неорганизованное состояние, чтобы найти все фрагменты, к которым все относится.
Подумайте, как бы вы сжали свои документы. Сначала вы разложите их по всему столу, чтобы вы могли их видеть, а они упорядочили их по категориям и начали складывать бумаги в папки.
Итак, теперь у нас есть три вещи в оперативной памяти:1. Сама инструкция программы.
2. Исходный файл, который был загружен с диска.
3. Временная копия исходного файла, которая находится в состоянии, когда ее разбирают и собирают обратно.
Может быть, в оперативной памяти сделано несколько временных копий всего файла или даже его частей, чтобы упростить для программы организацию и сжатие этого файла. Теперь вы видите, как программы сжатия файлов могут занимать гораздо больше оперативной памяти, когда они работают, по сравнению с размером исходного файла на диске?
Количество ОЗУ, использованное во время этого процесса, зависит от умения программиста, разработавшего приложение. Есть умные и эффективные способы написания кода, чтобы минимизировать потребление оперативной памяти. Кроме того, есть способы грубой силы для решения той же задачи, но она работает медленнее и занимает больше оперативной памяти. ОЗУ может быть даже потрачено впустую, если в программе есть утечка памяти. Представьте, что утечка памяти делает несколько копий одних и тех же данных, но затем оставляет их на столе и даже не удосуживается почистить себя.
В конце концов, хотя все временные копии будут сжаты в сжатую версию файла. Тем не менее, он все еще находится в оперативной памяти, поэтому сжатую версию файла необходимо отправить обратно на жесткий диск, где он будет сохранен на постоянной основе.
Основная идея заключается в том, что для достижения состояния с низкой энтропией вы должны временно пройти состояние с высокой энтропией. Это, конечно, написано в самых общих чертах.