81.3.2.3. ВИРТУАЛЬНОЕ КЭШИРОВАНИЕ

























Организация виртуального кэширования требует тесного взаимодействия с операционной системой. Типовые проблемы и задачи возникающие при виртуальном кэшировании. 1) Нерезидентные файлы Некоторые файловые системы не выделяют для небольших файлов (данные которых могут поместиться в свободную часть inode) кластеров. В этом случае драйвер говорит что для файла виртуальное кэширование невозможно. В процессе роста этого файла мы можем дойти до состояния когда его данные не будут уже умещаться в inode, и для него выделят место в кластерах. Тогда драйвер файловой системы должен будет сам перекидать данные из inode в кластера. Возможно и обратная ситуация - файл усеньшили и он может вместиться в резидентную часть. Для той части которая отбрасывается вызвается инвалидация (Virtual_Cache_Invalidate), для части которая попадает вызывается сброс в кластера и затем инвалидация (Virtual_cache_flush_then_Invalidate). 2) Перемещение данных файлов Примерно таже ситуайция возникает в системах типа BSD FFS, где если конец файла не укладывается в полный блок файловой системы, то его пишут в метафайлы каждый из которых хранит остатки в 1,2,3,... итд секторов. То есть такой перенос тоже вызывает инвалидацию. 3) Зануление частей файлов В дисковых секторах лежит как правило мусор, а в тех зонах файлов которые никогда не писали сидят нули по соглашению. Соответственно если у нас ситуация увеличения файла и запись в его конец, мы можем не аллокировать середину файла (по sparse типу), но мы обязаны обнулить зону от начала реально выделенного кластера до TODO: картинко 4) Compressed files Прямой ввод-вывод тоже невозможен Как правило кроме виртуального кэширования система предоставляет API для простого кэширования - которые помогают держать в памяти метаданные.

Index Prev Next