Компьютер на флешке. Работающие Windows, Linux, Офис и 150 самых полезных программ у вас в кармане | страница 5
Файловая система флеш-памяти (Flash File System, FFS) состоит из модулей управления пространством, «сборкой мусора», износом и интерфейсом, а также блока инициализации. Общение ОС с флеш-накопителем начинается с вызова дискового прерывания (IRQ14), которое активизирует накопитель. Если запрашивается чтение сектора данных, то происходит преобразование его координат в адрес физического блока памяти. Затем происходит выборка соответствующего кристалла, собственно считывание данных и их передача в буфер ОС [1].
При записи координаты сектора преобразуются в собственную систему флеш-накопителя. Происходит проверка на наличие свободных блоков чтения/записи. При наличии таковых для соответствующего кристалла устанавливается режим записи и происходит запоминание данных в его ячейках.
Если же блоков недостаточно или размер свободного пространства меньше требуемого, активизируется «сборка мусора», которая совместно с механизмом управления износом подбирает область стирания и проверяет, не содержит ли она действительных блоков чтения/записи. При обнаружении последних происходит их перемещение в резервное пространство. Выбранная область стирания очищается, затем из ее состава выбирается свободный блок записи.
Управление пространством осуществляется с помощью трансляции логических секторов дисковой модели ОС в физические блоки флеш-памяти (Flash Translation Layer, FTL). При этом происходит учет дефектных и недействительных блоков. Доступный объем виртуального накопителя описывается в управляющих таблицах, выполняющих роль таблиц размещения файлов (FAT) дисковой ОС.
Процесс удаления записанных, но более не используемых (недействительных) блоков памяти носит название «сборки мусора» (Garbage Collection).
На заре развития флеш-памяти для этого использовался простой механизм. Блоки, содержащие полезные данные, перемещались в свободную область, после чего запускался механизм очистки недействительных. Так как «сборка мусора» запускается нечасто, этот процесс потребляет ничтожно мало энергии и не снижает производительность памяти. Однако его нельзя признать достаточно оптимальным. Поэтому сегодня эта процедура запускается в те моменты, когда нет обращений системы к виртуальному диску [1].
Перед выполнением «сборки мусора» необходимо выполнить поиск соответствующих фрагментов памяти, учесть количество недействительных блоков чтения/записи и число предшествующих циклов стирания, а также выявить области, в которых информация обновляется чаще, чем в других (в таких случаях особую важность приобретает проблема физического износа ячеек памяти).