Главная > Статьи > Периодические тормоза ОС WM 5-почему?
Периодические тормоза ОС WM 5-почему?12 сентября 2006. Разместил: Buc |
Я не смогу ответить на вопросы о более крупных проблемах, но, по крайней мере, постараюсь подробнее рассказать о вышеописанных. Эта статья подразумевает, что вы знаете различия между RAM и ROM, а также терминами «NOR» и «NAND». Если нет, то для начала вам следует ознакомиться с предыдущими статьями с разъяснениями по этим вопросам. Вы также должны представлять себе, что такое технология постоянного хранения данных (Persistent Storage).
И даже если длительная процедура удаления не является для вас достаточным мотивом проводить ее как можно реже, есть еще одна серьезная причина для этого. Дело в том, что флэш-память способна выдержать лишь ограниченное количество циклов записи-стирания, поэтому имеет смысл позаботиться о том, чтобы их было как можно меньше. Вот наш способ справиться с этими проблемами. Если требуется произвести изменения в блоке флэш-памяти, мы переносим его в RAM, вносим изменения и затем записываем его в новый блок флэш-памяти. Старый блок при этом помечается как недоступный для записи и чтения (ошибочный). Это позволяет достичь сразу нескольких результатов. Во-первых, процесс записи происходит гораздо быстрее, так как нет необходимости ждать около двух секунд, пока произойдет удаление старых данных блока перед записью новых. Во-вторых, это приводит к тому, что данные записываются нелинейно, а за этим следует нелинейное стирание блоков. При таком подходе, вместо того, чтобы десять раз стирать один блок, мы один раз стираем десять блоков. Этот принцип, позволяющий уменьшить число циклов стирания-записи блоков, называется выравниванием износа Flash-памяти (wear leveling). Удаление ненужных данных Зато мы можем написать программный код, который будет следить за количеством доступной памяти и состоянием системы. И тогда, если количество "ошибочных" секторов во флэш-памяти становится недопустимо большим, а система находится в пассивном режиме, он вступает в действие, дефрагментируя память. Если большая часть секторов блока не годна к записи, тогда свободные секторы переносятся в другую часть памяти, а блок стирается целиком. Блоки, целиком заполненные "ошибочными" секторами стираются без дополнительных процедур. Код, который выполняет эти операции и называется Compaction Thread. Он является неотъемлемой частью файла filesys.exe. А последний, в свою очередь, неотъемлемая часть операционной системы Windows CE (проще говоря – является частью файловой системы). Задача этого механизма – постоянное поддержание необходимого количество свободных блоков для проведения всех операций записи таким образом, чтобы пользователь даже не замечал этого. Именно поэтому Compaction Thread запускается в моменты, когда нагрузка на систему минимальна, то есть владелец КПК не использует программы, требующие значительных ресурсов процессора. Но если что-то идет не так… Тревога! Из-за аппаратных особенностей, во время стирания блока, данные из флэш-памяти нельзя ни считывать, ни записывать. Поэтому, вне зависимости от причины, по которой запускается Compaction Thread, производительность системы значительно падает во время стирания блоков. И помните, что NOR RAM требует до двух секунд на эту операцию. Можно ли на это влиять? Вернуться назад |