Система и способ выполнения запросов процессов операционной системы к файловой системе
SYSTEM AND METHOD OF EXECUTING OPERATING SYSTEM PROCESS REQUESTS TO FILE SYSTEM

Область техники
Изобретение относится к решениям в области оптимизации работы файловой системы, а более конкретно к системам и способам выполнения запросов процессов операционной системы к файловой системе при проверке файловой системы антивирусным приложением.
Уровень техники
Бурное развитие компьютерных и информационных технологий в последнее десятилетие привело к их массовому использованию как на пользовательском, так и на корпоративном рынке. Стало обычным явлением повсеместное внедрение электронного документооборота, электронной коммерции, облачных хранилищ и т.д.
В настоящее время огромное число людей хранит свою личную и конфиденциальную информацию на компьютерах, а подавляющее большинство предприятий ведет свою финансовую и коммерческую деятельность с использованием электронных устройств и сервисов.
Массовое использование информационных технологий стало причиной роста мошенничества с использованием данных технологий - появилось огромное количество вредоносных программ, значительно возросло количество кибернетических атак на компьютерные системы.
Для защиты компьютерных систем от вредоносного программного обеспечения (далее ПО) в настоящий момент используется много разнообразных средств - это антивирусные продукты, сетевые экраны и т.д., позволяющие как обнаруживать известные и неизвестные вредоносные программы, так и устранять их.
Постоянный рост количества вредоносных программ и усложнение их структуры и поведения требует постоянного совершенствования средств борьбы с ними. Увеличение объемов антивирусных баз, усложнение эвристических и проактивных алгоритмов обнаружения вредоносных программ - все это негативно сказывается на производительности антивирусных решений. Для улучшения производительности антивирусных приложений применяются разнообразные алгоритмы оптимизации проверки компьютерных систем, устранения последствий заражений и т.д.
Например, в публикации US 8161557 B2 описана технология проверки файловой системы с целью поиска вредоносных файлов. Используя метаданные файлов, такие как тип файла, имя файла, размер и т.д., организуется система кэширования файлов, что позволяет более оптимально расходовать системные ресурсы на их проверку. Описанный подход позволяет решать задачи проверки большого объема файлов при небольших ресурсных затратах за счет использования оптимальных методов выбора того, какие файлы и в каком порядке необходимо проверять. Тем не менее, он не решает проблему многократной проверки одних и тех же файлов, а также "лишних" проверок - ситуации, когда проверка должна быть прервана, поскольку результаты проверки никогда не будут использоваться антивирусным приложением или пользователем (например, проверяемый файл удаляется и т.д.).
Хотя описанный выше способ работы хорошо справляются с задачами кэширования проверяемых файлов и оптимальной настройки проверки файлов, они зачастую не помогают при "лишних проверках" и рассинхронизации данных, проверяемых с одной стороны антивирусным приложением, и модифицируемых с другой стороны другими приложениями.
Настоящее изобретение позволяет решать задачу выполнения запросов процессов операционной системы к файловой системе при проверке файловой системы антивирусным приложением.
Раскрытие изобретения
Изобретение предназначено для выполнения запросов процессов к файловой системе.
Технический результат настоящего изобретения заключается в оптимизации работы файловой системы с запросами процессов, заключающейся в упорядочивании выполнения файловой системой запросов процессов. Настоящий результат достигается с помощью системы выполнения запросов процессов операционной системы (далее - запросы) к файловой системе, где запросы представляют собой вызовы API-функции.
Данный результат достигается с помощью использования системы выполнения запросов процессов операционной системы (далее - запросы) к файловой системе, где запросы представляют собой вызовы API-функции, при этом система выполнения запросов которая содержит средство перехвата запросов, предназначенное для перехвата по меньшей мере двух запросов к файловой системе на выполнение по меньшей мере одного действия с по меньшей мере одним файлом, и передачи перехваченных запросов средству кэширования; упомянутое средство кэширования, предназначенное для выделения по меньшей мере одного параметра запроса для каждого полученного запроса, при этом параметр запроса представляет собой по меньшей мере один параметр по меньшей мере одной API-функции, составляющей запрос, определения приоритета выполнения каждого полученного запроса, где приоритет выполнения запроса равен приоритету выполнения запроса, хранящегося в базе данных запросов, в случае, когда указанный приоритет выполнения запроса соответствует запросу, который также хранится в базе данных запросов, и у которого по меньшей мере один параметр запроса равен по меньшей мере одному выделенному параметру полученного средством кэширования запроса, меньше приоритета выполнения запроса, хранящегося в базе данных запросов, в случае, когда указанный приоритет выполнения запросов соответствует запросу, который также хранится в базе данных запросов, и у которого ни один параметр запроса не равен ни одному выделенному параметру полученного средством кэширования запроса, при этом приоритет выполнения запроса характеризует вероятность передачи указанного запроса средством управления доступом файловой системе на выполнение, и добавления в базу данных запросов для каждого полученного запроса непосредственно самого запроса, по меньшей мере одного выделенного параметра запроса, определенного приоритета выполнения запроса; базу данных запросов, предназначенную для хранения по меньшей мере одного запроса, по меньшей мере одного параметра запроса, приоритета выполнения запроса файловой системой; упомянутое средство управления доступом, предназначенное для выборки из базы данных запросов по меньшей мере одного запроса, имеющего приоритет выполнения запроса выше критерия выбора запроса, вычисляемого на основании по меньшей мере одного параметра запроса и приоритета выполнения запроса по меньшей мере одного запроса, выбранного из базы данных запросов ранее и переданного файловой системе для выполнения и передачи выбранного запроса файловой системе для выполнения выбранного запроса.
В другом частном случае реализации системы критерий выбора запроса равен приоритету выполнения запроса, переданного ранее средством управления доступом на выполнение; приоритету выполнения запроса, который соответствует также по меньшей мере еще одному запросу из базы данных запросов, при этом количество таких запросов больше количества запросов, которым соответствует приоритет выполнения запроса, переданного ранее средством управления доступом на выполнение.
Еще в одном частном случае реализации системы средство управления доступом после выборки запроса из базы данных запросов удаляет выбранный запрос из базы данных запросов.
В другом частном случае реализации системы средство управления доступом передает запрос, выбранный из базы данных запросов, средству кэширования для повторного выделения по меньшей мере одного параметра запроса и определения приоритета выполнения запроса на основании данных из базы данных запросов и последующего добавления непосредственно самого запроса, по меньшей мере одного выделенного параметра запроса и определенного приоритета выполнения запроса в базу данных запросов.
Данный результат достигается с помощью использования способа выполнения запросов процессов операционной системы (далее - запросы) к файловой системе, который содержит этапы, которые реализуются с помощью средств из системы выполнения запросов процессов операционной системы и на которых: перехватывают по меньшей мере два запроса к файловой системе на выполнение по меньшей мере одного действия с по меньшей мере одним файлом; выделяют по меньшей мере один параметр запроса для каждого перехваченного запроса, при этом параметр запроса представляет собой по меньшей мере один параметр по меньшей мере одной API-функции, составляющей запрос; определяют приоритет выполнения каждого перехваченного запроса, где приоритет выполнения запроса: равен приоритету выполнения запроса, хранящегося в базе данных запросов, в случае, когда указанный приоритет выполнения запроса соответствует запросу, который также хранится в базе данных запросов и у которого по меньшей мере один параметр запроса равен по меньшей мере одному выделенному параметру полученного средством кэширования запроса; меньше приоритета выполнения запроса, хранящегося в базе данных запросов, в случае, когда указанный приоритет выполнения запросов соответствует запросу, который также хранится в базе данных запросов и у которого ни один параметр запроса не равен ни одному выделенному параметру полученного средством кэширования запроса; при этом приоритет выполнения запроса характеризует вероятность передачи указанного запроса средством управления доступом файловой системе на выполнение; добавляют в базу данных запросов для каждого перехваченного запроса непосредственно сам запрос, по меньшей мере один выделенный на предыдущем этапе параметр запроса, определенный на предыдущем этапе приоритет выполнения запроса; выбирают из базы данных запросов по меньшей мере один запрос, имеющий приоритет выполнения запроса выше критерия выбора запроса, вычисляемого на основании по меньшей мере одного параметра запроса и приоритета выполнения запроса по меньшей мере одного запроса, выбранного из базы данных запросов ранее и переданного файловой системе для выполнения; выполняют выбранный на предыдущем этапе запрос.
В другом частном случае реализации способа критерий выбора запроса равен: приоритету выполнения запроса, переданного ранее средством управления доступом на выполнение; приоритету выполнения запроса, который соответствует также по меньшей мере еще одному запросу из базы данных запросов, при этом количество таких запросов больше количества запросов, которым соответствует приоритет выполнения запроса, переданного ранее средством управления доступом на выполнение.
Еще в одном частном случае реализации способа после выборки запроса из базы данных запросов удаляют выбранный запрос из базы данных запросов.
В другом частном случае реализации способа передают запрос, выбранный из базы данных запросов, средству кэширования для повторного выделения по меньшей мере одного параметра запроса и определения приоритета выполнения запроса на основании данных из базы данных запросов и последующего добавления непосредственно самого запроса, по меньшей мере одного выделенного параметра запроса и определенного приоритета выполнения запроса в базу данных запросов.
Краткое описание чертежей
Фиг. 1 представляет структурную схему системы выполнения запросов процессов операционной системы к файловой системе.
Фиг. 2 представляет структурную схему способа выполнения запросов процессов операционной системы к файловой системе.
Фиг. 3 представляет пример компьютерной системы общего назначения, персональный компьютер или сервер.
Хотя изобретение может иметь различные модификации и альтернативные формы, характерные признаки, показанные в качестве примера на чертежах, будут описаны подробно. Следует понимать, однако, что цель описания заключается не в ограничении изобретения конкретным его воплощением. Наоборот, целью описания является охват всех изменений, модификаций, входящих в рамки данного изобретения, как это определено приложенной формуле.
Описание вариантов осуществления изобретения
Объекты и признаки настоящего изобретения, способы для достижения этих объектов и признаков станут очевидными посредством отсылки к примерным вариантам осуществления. Однако настоящее изобретение не ограничивается примерными вариантами осуществления, раскрытыми ниже, оно может воплощаться в различных видах. Сущность, приведенная в описании, является ничем иным, как конкретными деталями, необходимыми для помощи специалисту в области техники в исчерпывающем понимании изобретения, и настоящее изобретение определяется в объеме приложенной формулы.
Фиг. 1 представляет структурную схему системы выполнения запросов процессов операционной системы к файловой системе.
Структурная схема системы выполнения запросов процессов операционной системы к файловой системе содержит процесс клиента 110, процесс средства проверки 120, средство перехвата запросов 130, средство кэширования 140, базу данных запросов 150, средство управления доступом 160 и файловую систему 170.
Процесс клиента 110 предназначен для передачи запросов к файловой системе 170 на выполнение действий над файлами (таких как создание и удаление файлов, чтение данных из файлов и записи данных в файл, изменение свойств файлов и т.д.) получения результатов этих действий от файловой системы 170.
В качестве клиента могут выступать:
приложения, работающие в операционной системе,
модули операционной системы, такие как файловый менеджер, менеджер памяти и т.д.
c:\document.txt
В качестве запросов к файловой системе 170 могут выступать как вызовы единичных API-функций, так и последовательности вызовов API-функций. Например, в операционной системы семейства Windows для удаления файла "" будет сформирован вызов
c:\windows\infb.log
а для записи 10КБ данных в файл "" будет сформирована последовательность вызовов:
Процесс средства проверки 120 предназначен для передачи высокоприоритетных запросов к файловой системе 170 на выполнение действий над файлами и получения результатов этих действий от файловой системы 170.
В качестве средства проверки 120 могут выступать:
антивирусные приложения,
программы для восстановления работоспособности операционной системы после воздействия на работоспособность операционной системы вредоносными программами.
Например, для эффективной работы антивирусного приложения (т.е. для проверки файлов и поиска вредоносных программ) требуется, чтобы запросы от процессов антивирусного приложения к файловой системе по возможности обрабатывались ранее, чем запросы от остальных процессов (среди которых может быть и вредоносный процесс).
Высокоприоритетный запрос, передаваемый процессом средства проверки 120, представляет собой запрос, выполняемый файловой системой 170 ранее всех переданных процессами клиентов 110 запросов.
Средство перехвата запросов 130 предназначено для:
перехвата запросов от процесса клиента 110, процесса средства проверки 120 к файловой системе 170 на выполнение действий с файлами;
передачи перехваченных запросов средству кэширования 140.
В качестве средства перехвата запросов, передаваемых процессом клиента 110 или процессом средства проверки 120 файловой системе 170, может выступать специально разработанный для этой цели драйвер, работа которого заключается в перенаправлении канала передачи запросов (например, изменения адреса источника, принимающего запросы) с файловой системы 170 на себя. Таким образом, запрос, передаваемый процессом 110 или 120, получается драйвером, а не файловой системой 170.
Средство кэширования 140 предназначено для:
выделения параметров запроса для каждого полученного запроса;
определения приоритета выполнения каждого полученного запроса на основании определения соответствия с по меньшей мере одним приоритетом выполнения запроса, хранящимся в базе данных запросов, где указанный приоритет выполнения запроса соответствует запросу, который также хранится в базе данных запросов и у которого по меньшей мере один параметр запроса равен по меньшей мере одному выделенному параметру полученного запроса, при этом приоритет выполнения запроса характеризует вероятность передачи указанного запроса средством управления доступом 160 файловой системе 170 на выполнение, где вероятность передачи запроса представляет собой шанс успешного выполнения запроса, переданного средством управления 160 файловой системе 170, т.е. шанса того, что выполнение переданного запроса не повлияет на выполнение запросов, переданных средством управления 160 файловой системе 170 ранее и все еще выполняемых на момент передачи упомянутого выше запроса (например, запрос на удаление редко используемого файла имеет высокий приоритет выполнения запроса, поскольку шанс того, что удаление упомянутого файла помешает выполнению другого, переданного ранее, запроса является незначительным);
добавления в базу данных запросов для каждого полученного запроса:
непосредственно самого запроса,
выделенных параметров запроса,
определенного приоритета выполнения запроса.
При этом параметры запроса представляют собой наборы данных, определяющих функциональность запроса, исполняемого файловой системой 170. Например, запрос на чтение из файла данных, переданный файловой системе 170 процессом приложения «Notepad», представляющий собой последовательный вызов WinAPI-функций:
где набор данных, передаваемых в функцию «CreateFile», представляет собой параметр, идентифицирующий файл, с которым будет произведена работа, набор данных, передаваемых в функции «SetFilePointer» и «ReadFile», представляют собой параметр, идентифицирующий тип операции и требуемые данные.
При этом в качестве параметров запроса могут выступать:
идентификатор процесса, передающего запрос на выполнение файловой системе 170, например, описатель процесса (англ. process handle) глобальный уникальный идентификатор процесса (GUID),
тип запроса, характеризующий какие операции над файлом должны быть выполнены (например, удаление или создание файла, чтение данных из файла или запись данных в файл и т.д.),
идентификатор файла (например, полный путь к файлу, глобальный уникальный идентификатор файла (GUID), описатель файла (англ. file handle) и т.д.),
атрибуты файла,
параметры данных, записываемых в файл или считываемых из файла (такие как указатель на данные в памяти, объем данных и т.д.),
политики безопасности работы с файлом.
При этом приоритет выполнения запроса, полученного средством кэширования 140, может быть:
равен приоритету выполнения запроса, хранящегося в базе данных запросов 150, в случае, когда указанный приоритет выполнения запроса соответствует запросу, который также хранится в базе данных запросов 150, и у которого по меньшей мере один параметр запроса равен по меньшей мере одному выделенному параметру полученного средством кэширования 140 запроса;
равен максимально возможному приоритету выполнения запроса, в случае, когда запрос получен от процесса средства проверки 120;
меньше приоритета выполнения запроса, хранящегося в базе данных запросов 150, в случае, когда указанный приоритет выполнения запросов соответствует запросу, который также хранится в базе данных запросов 150, и у которого ни один параметр запроса не равен ни одному выделенному параметру полученного средством кэширования 140 запроса.
«c:\document.exe»
Например, средством кэширования 140 от процесса клиента 110, представляющего собой приложение «Windows Ехр1оrer», был получен запрос на удаление файла :
Из полученного запроса были выделены параметры запроса:
тип операции над файлом: «удаление»,
«c:\document.txt»
идентификатор файла: ,
Из базы данных запросов 150 был выбран запрос, у которого один из параметров запроса - тип операции над файлом, такой же, что и у полученного средством кэширования 140 запроса - «удаление». В результате запросы считаются схожими, поэтому приоритет выполнения запроса, полученного средством кэширования 140, вычисляется как:
dst
src
P=P-1
dst
src
где P - приоритет выполнения запроса, полученного средством кэширования 140, P - приоритет выполнения запроса, выбранного из базы данных запросов 150.
В другом случае, когда параметры полученного средством кэширования 140 запроса и выбранного из базы данных запросов 150 идентичны, например, в случае запросов:
то приоритет выполнения запроса, полученного средством кэширования 140, равен приоритету выполнения запроса, выбранного из базы данных запросов 150.
База данных запросов 150 предназначена для:
хранения:
запросов, полученных от средства кэширования 140, о параметров хранящихся запросов,
приоритетов выполнения хранящихся запросов файловой системой 170;
передачи хранящихся данных по требованию средству управления доступом 160.
В базе данных запросов 150 запросы, параметры запросов и приоритеты выполнения запросов могут быть объединены в блоки данных запросов и храниться в базе данных запросов 150 в виде набора блоков данных запросов, где каждый блок данных запроса включает в себя один запрос, параметры этого запроса и приоритет выполнения этого запроса. Кроме того, блоки данных запросов, включающие в себя одинаковые приоритеты выполнения запроса, также могут быть объединены в наборы блоков данных запросов, включающие в себя приоритет выполнения запросов и блоки данных запросов, в свою очередь включающие в себя запросы и параметры запросов.
Средство управления доступом 160 предназначено для:
выборки из базы данных запросов 150 запросов, параметров выбранных запросов на основании сравнения приоритетов, выполнения запросов из базы данных запросов 150 с приоритетом выполнения запроса, переданного ранее средством управления доступом 160 на выполнение файловой системе 170;
вынесения решения о выполнении выбранных запросов на основании сравнения параметров выбранных запросов с параметрами запроса, переданного ранее на выполнение файловой системе 170;
Отрицательное решение выносится в случае, когда выполнение запроса повлияет на результаты выполнения запросов, переданных на выполнение файловой системе 170 ранее и выполняемых на момент начала выполнения запроса, по которому выносилось упомянутое решение (например, запись в файл может повлиять на результаты считывания из файла, происходящие одновременно с записью в этот же файл).
Положительное решение выносится в случае, когда выполнение запроса не повлияет на результаты выполнения запросов, переданных на выполнение файловой системе 170 ранее и выполняемых на момент начала выполнения запроса, по которому выносилось упомянутое решение (например, чтение из файла не повлияет на результаты считывания из этого же файла).
в зависимости от вынесенного решения передачи выбранных запросов:
средству кэширования 140, в случае отрицательного решения,
файловой системе 170 для выполнения выбранного запроса, в случае положительного решения.
При этом средство управления доступом 160 выбирает из базы данных запросов 150 запросы и параметры выбранных запросов, которым соответствуют:
приоритеты выполнения запросов, меньшие приоритета выполнения запроса, переданного ранее на выполнение;
приоритеты выполнения запросов, которые соответствуют также запросам из базы данных запросов 150, при этом количество таких запросов больше количества запросов, которым соответствует приоритет выполнения запроса, переданного ранее на выполнение.
Например, из базы данных запросов 150 может выбираться:
запрос с самым высоким приоритетом запроса среди всех запросов, хранящихся в базе данных запросов 150;
запросы с одинаковыми приоритетами запроса, при условии, что количество таких запросов выше установленного предела;
запрос с установленным приоритетом запроса (например, 0x00000000 или 0xFFFFFFFF).
При этом выбранные данные могут:
удаляться из базы данных запросов 150,
приоритетам выполнения запросов, выбранных из базы данных запросов 150, выставляться самый низкий из возможных приоритетов (например, 0x00000000).
В одном из вариантов реализации средство управления доступом 160 после выборки запроса из базы данных запросов 150 удаляет выбранный запрос из базы данных запросов.
В одном из вариантов реализации средства управления доступом 160 параметры запроса и приоритет выполнения запроса запоминаются для участия в последующем выборе запросов из базы данных запросов 150.
При этом средство управления доступом 160 выносит:
отрицательное решение о выполнении запросов, выбранных из базы данных запросов 150, в случае, когда каждый параметр выбранных запросов равен одному из параметров запроса, переданного ранее файловой системе 170 на выполнение.
положительное решение о выполнении запросов, выбранных из базы данных запросов 150, в случае, когда ни один параметр выбранных запросов не равен ни одному параметру запроса, переданного ранее файловой системе 170 на выполнение.
При этом в случае, когда запрос, выбранный из базы данных запросов 150, влияет на работу запроса, переданного ранее на выполнение файловой системе 170, но так, что при этом результат этого запроса не будет в последствии использован, запрос, выбранный из базы данных запросов, может быть выполнен. Например, в случае, когда во время выполнения запроса на считывания данных из файла антивирусным приложением для проверки файла на вредоносность приходит запрос от приложения (например, «Windows Explorer») на удаление проверяемого файла, такой запрос может быть выполнен, и файл будет удален еще до того, как антивирусное приложение закончит проверку файла на вредоносность, поскольку результат операции чтения из указанного файла уже ни на что не повлияет, поскольку файла в файловой системе 170 уже не будет существовать.
В другом варианте исполнения средство управления доступом 160 выбирает из базы данных запросов 150 запросы по критериям:
приоритет выполнения выбираемого запроса выше приоритета выполнения запроса переданного ранее средством управления доступом 160 на выполнение файловой системе 170;
количество запросов, хранящихся в базе данных запросов 150 и обладающих приоритетом выполнения запроса равным приоритету выполнения выбираемого запроса, выше количества запросов, хранящихся в базе данных запросов 150 и обладающих приоритетом выполнения запроса равным приоритету выполнения запроса, переданного ранее средством управления доступом 160 на выполнение файловой системе 170.
Рассмотрим работу системы выполнения запросов процессов операционной системы к файловой системе на примере работы файлового архиватора, представляющего собой программу для сжатия данных из файлов, в операционной системе, проверяемой антивирусным приложением.
«c:\documents»
Пользователь с помощью файлового архиватора собирается создать архив файлов из каталога , а сами файлы после успешной архивации удалить. Одновременно с архивацией происходит запущенная по расписанию проверка указанного каталога антивирусным приложением.
«c:\documents\document001.txt»
Процесс файлового архиватора, отвечающий за архивацию файла, представляющий собой процесс клиента 110, обращается к файловой системе 170 с запросом на чтение файла :
c:\documents\docnment001.txt
и с последующим запросом на удаление файла :
«c:\documents\document001.txt»
Одновременно с этим процесс антивирусного приложения, отвечающего за поиск вредоносных приложений, представляющий собой процесс средства проверки 120, обращается к файловой системе 170 с запросом на чтение данных из файла , для последующей проверки на вредоносность:
Средство перехвата запросов 130 перехватывает запрос на чтение данных из файла от процесса средства проверки 120 к файловой системе 170 и передает его средству кэширования 140.
Средство кэширования 140 выделяет параметры запроса из полученного запроса на чтение данных из файла, а именно:
тип операции над файлом: «чтение»,
«c:\documents\document001.txt»
идентификатор файла: ,
параметры операции:
позиция в файле, с которого необходимо считать данные: 0x0000FFFF,
объем считываемых данных: 0x00001000.
Так как запрос является высокоприоритетным, поскольку был получен от процесса средства проверки 120, то приоритет выполнения указанного запроса устанавливается максимальным: 0xFFFFFFFF. Кроме того, в базе данных запросов 150 производится поиск запросов с аналогичными параметрами запросов для того, чтобы можно было объединить найденные запросы в единый набор блоков данных запросов, которой будет присвоен максимальный найденный приоритет, т.е. в данном случае 0xFFFFFFFF. Таким образом, если в базе данных запросов 150 существовал еще один запрос с такими же параметрами, как у полученного от процесса средства проверки 120 запроса, но полученного от процесса клиента 110 (например, приложения «Notepad») и обладающего более низким приоритетом выполнения запроса, равного 0x00000010, то приоритет выполнения указанного запроса будет поднят до 0xFFFFFFFF и запрос будет передан на выполнение файловой системе 170 одновременно с запросом, полученным от процесса средства проверки 120. После того как параметры запроса и приоритет выполнения запроса, полученного процесса средства проверки 120, были определены, они вместе с запросом, объединенные в блок данных запроса, заносятся в базу данных запросов 150, хранящую блоки данных запросов, где каждый блок данных запроса содержит сам запрос, его параметры запроса и приоритет выполнения запроса.
Средство перехвата запросов 130 перехватывает запросы на чтение данных из файла и на удаление файла от процесса клиента 110, представляющего собой файловый архиватор, к файловой системе 170 и передает их средству кэширования 140.
Средство кэширования 140 выделяет параметры из полученных запросов чтения данных из файла и удаления файла, а именно:
для запроса чтения данных из файла:
тип операции над файлом: «чтение»,
«c:\documents\document00
идентификатор файла: 1.txt»,
параметры операции:
позиция в файле, с которого необходимо считать данные: 0x00000000,
объем считываемых данных:<размер файла>.
для запроса удаления файла:
тип операции над файлом: удаление,
«c:\documents\document00
идентификатор файла: 1.txt».
«c:\documents\document001.txt»
«c:\documents\document001.txt»
«c:\documents\document001.txt»
«c:\documents\document001.txt»
«c:\documents\document001.txt»
read#1
read#2
delete#1
После чего средство кэширования 140 производит поиск в базе данных запросов 150 запросов, у которых те же параметры, что и у полученных запросов (тип операции над файлом, идентификатор файла и т.д.). В результате поиска в базе данных запросов 150 был найден запрос от приложения «Notepad» на чтение содержимого файла . После успешного поиска средство кэширования 140 определяет приоритет выполнения запроса чтения из файла . Поскольку в базе данных запросов 150 был найден еще один запрос на чтение, то полученный запрос на чтение получает приоритет выполнения запроса на единицу ниже приоритета выполнения запроса на чтение файла  от «Notepad» (приоритеты выполнения запросов P=217 и P=216 соответственно). Аналогичные действия выполняются для запроса на удаление файла : осуществляется поиск запроса с аналогичными параметрами запроса в базе данных запросов 150. Поскольку в базе данных запросов 150 не было найдено ни одного запроса на удаление файла , то упомянутый запрос получает самый низкий приоритет на выполнения среди всех запросов, хранящихся в базе данных запросов 150 (приоритет выполнения запроса P=7). После того как средством кэширования 140 были получены приоритеты выполнения запроса, полученные запросы и их приоритеты на выполнение заносятся средством кэширования 140 в базу данных запросов 150.
Средство управления доступом 160 осуществляет выборку из базы данных запросов 150 блок данных запроса, содержащей сам запрос, параметры запроса и приоритет выполнения запроса, в которой приоритет выполнения запроса является наивысшим среди всех приоритетов выполнения запросов, хранящихся в базе данных запросов 150. Таким приоритетом выполнения запроса является приоритет выполнения запроса, равный 0xFFFFFFFF, соответствующий запросу, полученному от антивирусного приложения, представляющего собой процесс средства проверки 120. Запрос отправляется на выполнение файловой системе 170, а параметры запроса и приоритет выполнения запроса запоминаются для участия в последующем выборе запросов из базы данных запросов 150.
«c:\documents\document001.txt»
«c:\documents\document001.txt»
Затем средство управления доступом 160 осуществляет выборку из базы данных запросов 150 очередного блока данных запроса. С учетом предыдущего запроса, отправленного на выполнение файловой системе 170, ими оказываются два запроса на чтение файла , полученные от процесса антивирусного приложения и процесса приложения «Notepad». Средство управления доступом 160 проверяет, возможно ли выполнить указанные запросы. С этой целью оно проверяет, не выполняется ли в текущий момент файловой системой 170 над файлом  запрос с более высоким приоритетом выполнения. Оказывается, что запрос от антивирусного приложения, представляющего собой процесс средства проверки 120, все еще выполняется файловой системой 170. В связи с этим средство управления доступом 160 проверяет тип операции запроса у запросов, выбранных из базы данных запросов 150 (запрос, полученный от антивирусного приложения, и запрос, полученный от приложения «Notepad»), и у выполняемого в текущий момент высокоприоритетного запроса. Поскольку в обоих случаях это операция чтения из файла, а значит она никак не повлияет на результат выполняемого в текущий момент высокоприоритетного запроса, то выносится положительное решение на выполнение файловой системой 170 запросов, выбранных из базы данных запросов 150, после чего блоки данных запросов, содержащие указанные запросы удаляются из базы данных запросов 150, а сами запросы передаются файловой системе 170 на выполнение.
«c:\documents\document001.txt»
«c:\documents\document001.txt»
«c:\docnments\docnment001.txt»
Следующий блок данных запроса, выбранная из базы данных запросов 150 средством управления доступом 160, содержит запрос от файлового архиватора, представляющий собой процесс клиента 110, на удаление файла . Средство управления доступом 160 проверяет, возможно ли выполнить указанный запрос. С этой целью оно проверяет, не выполняется ли в текущий момент файловой системой 170 над файлом  запрос с более высоким приоритетом выполнения. Поскольку оказывается, что запрос от антивирусного приложения, представляющего собой процесс средства проверки 120, все еще выполняется файловой системой, а значит операция удаления файла  может помешать его выполнению, то выносится отрицательное решение на выполнение файловой системой 170 запроса, полученного от антивирусного приложения 120, после чего сам запрос передается средству кэширования 140 для повторной обработки, т.е. выделения параметров запроса, определения приоритета выполнения запроса и занесения полученных данных в базу данных запросов 150.
Таким образом:
процессы клиентов 110, передающие запросы файловой системе 170 никак не влияют на работоспособность запросов, передаваемых процессами средств проверки 120,
процессы клиентов 110, передающие запросы файловой системе 170 могут объединяться в наборы блоков данных запросов, в случае одинаковых параметров запросов, и передаваться на выполнение файловой системе 170 одновременно.
Фиг. 2 представляет пример структурной схемы способа выполнения запросов процессов операционной системы к файловой системе.
Структурная схема способа выполнения запросов процессов операционной системы к файловой системе состоит из этапа 201, на котором перехватывают запросы от процесса клиента 110 или процесса средства проверки 120 к файловой системе 170; этапа 202, на котором выделяют из перехваченных запросов параметры запросов; этапа 203, на котором определяют приоритеты выполнения запросов; этапа 204, на котором добавляют данные, включающие в себя сам запрос, параметры запроса и приоритет выполнения запроса, в базу данных запросов 150; этапа 205, на котором выбирают запросы из базы данных запросов 150; этапа 206, на котором выносят решение о выполнении выбранных запросов; этапа 207, на котором передают запросы средству кэширования 140; этапа 208, на котором передают запросы файловой системе 170; этапа 209, на котором выполняют запросы.
На этапе 201 с помощью средства перехвата запросов 130 перехватывают запросы от процесса клиента 110 или процесса средства проверки 120 к файловой системе 170.
В качестве средства перехвата запросов, передаваемых процессом клиента 110 или процессом средства проверки 120 файловой системе 170, может выступать специально разработанный для этой цели драйвер, работа которого заключается в перенаправлении канала передачи запросов (например, изменения адреса источника, принимающего запросы) с файловой системы 170 на себя. Таким образом, запрос, передаваемый процессом 110 или 120, получается драйвером, а не файловой системой 170.
На этапе 202 с помощью средства кэширования 140 выделяют из перехваченных запросов параметры запросов.
При этом параметры запроса представляют собой наборы данных, определяющих функциональность запроса, исполняемого файловой системой 170.
При этом в качестве параметров запроса могут выступать:
идентификатор процесса, передающего запрос на выполнение файловой системе 170, например, описатель процесса (англ. process handle) глобальный уникальный идентификатор процесса (GUID),
тип запроса, характеризующий какие операции над файлом должны быть выполнены (например, удаление или создание файла, чтение данных из файла или запись данных в файл и т.д.),
идентификатор файла (например, полный путь к файлу, глобальный уникальный идентификатор файла (GUID), описатель файла (англ. file handle) и т.д.),
атрибуты файла,
параметры данных, записываемых в файл или считываемых из файла (такие как указатель на данные в памяти, объем данных и т.д.),
политики безопасности работы с файлом.
Например, из запроса на создание файла, переданного файловой системе 170 процессом приложения «MicrosoA Word», представляющего собой вызов WinAPI-функций
будут выделены следующие параметры запроса:
идентификатор процесса: Microsoft Word (PID=0x00006020),
«c:\text.docx»
идентификатор файла: ,
тип операции: «создание файла»,
атрибуты файла: FILE_ATTPJBUTE_NORMAL,
политики безопасности:
разрешена только операция записи для процесса Microsoft Word (PID=0x00006020),
для всех остальных процессов операционной системы запрещены любые операции с указанным файлом.
На этапе 203 определяют приоритеты выполнения запросов. При этом приоритет выполнения запроса может быть:
равен приоритету выполнения запроса, хранящегося в базе данных запросов 150, в случае, когда указанный приоритет выполнения запроса соответствует запросу, который также хранится в базе данных запросов 150 и у которого по меньшей мере один параметр запроса равен по меньшей мере одному выделенному на этапе 202 параметру;
равен максимально возможному приоритету выполнения запроса, в случае, когда запрос, перехваченный на этапе 201, был перехвачен от процесса средства проверки 120;
меньше приоритета выполнения запроса, хранящегося в базе данных запросов 150, в случае, когда указанный приоритет выполнения запросов соответствует запросу, который также хранится в базе данных запросов 150 и у которого ни один параметр запроса не равен ни одному выделенному на этапе 202 параметру.
На этапе 204 с помощью средства кэширования 140 добавляют данные, включающие в себя сам запрос, параметры запроса и приоритет выполнения запроса, в базу данных запросов 150.
Перед добавлением в базу данных запросов 150 запросы, перехваченные на этапе 201, параметры запросов, выделенные на этапе 202, и приоритеты выполнения запросов, вычисленные на этапе 203, могут быть объединены в блоки данных запросов, которые и будут храниться в базе данных запросов 150 в виде набора блоков данных запросов, где каждый блок данных запроса включает в себя один запрос, параметры этого запроса и приоритет выполнения этого запроса. Кроме того, блоки данных запросов, включающие в себя одинаковые приоритеты выполнения запроса, также могут быть объединены в наборы блоков данных запросов, включающие в себя приоритет выполнения запросов и блоки данных запросов, в свою очередь включающие в себя запросы и параметры запросов.
На этапе 205 с помощью средства управления доступом 160 выбирают запросы из базы данных запросов 150.
При этом выбирают из базы данных запросов 150 запросы и параметры выбранных запросов, которым соответствуют:
приоритеты выполнения запросов, меньшие приоритета выполнения запроса, переданного ранее на выполнение;
приоритеты выполнения запросов, которые соответствуют также запросам из базы данных запросов 150, при этом количество таких запросов больше количества запросов, которым соответствует приоритет выполнения запроса, переданного ранее на выполнение.
Например, из базы данных запросов 150 может выбираться:
запрос с самым высоким приоритетом запроса среди всех запросов, хранящихся в базе данных запросов 150;
запросы с одинаковыми приоритетами запроса, при условии, что количество таких запросов выше установленного предела;
запрос с установленным приоритетом запроса (например, 0x00000000 или 0xFFFFFFFF).
При этом выбранные данные могут:
удаляться из базы данных запросов 150,
приоритетам выполнения запросов, выбранных из базы данных запросов 150, выставляться самый низкий из возможных приоритетов (например, 0x00000000).
В другом варианте исполнения этапа 205 средство управления доступом 160 выбирает из базы данных запросов 150 запросы по критериям:
приоритет выполнения выбираемого запроса выше приоритета выполнения запроса переданного ранее средством управления доступом 160 на выполнение файловой системе 170;
количество запросов, хранящихся в базе данных запросов 150 и обладающих приоритетом выполнения запроса равным приоритету выполнения выбираемого запроса, выше количества запросов, хранящихся в базе данных запросов 150 и обладающих приоритетом выполнения запроса равным приоритету выполнения запроса, переданного ранее средством управления доступом 160 на выполнение файловой системе 170.
На этапе 206 с помощью средства управления доступом 160 выносят решение о выполнении выбранных запросов.
При этом отрицательное решение выносится в случае, когда выполнение запроса повлияет на результаты выполнения запросов, переданных на выполнение файловой системе 170 ранее и выполняемых на момент начала выполнения запроса, по которому выносилось упомянутое решение (например, запись в файл может повлиять на результаты считывания из файла, происходящие одновременно с записью в этот же файл). Например, отрицательное решение о выполнении запросов, выбранных из базы данных запросов 150, выносят в случае, когда каждый параметр выбранных на этапе 205 запросов равен одному из параметров запроса, переданного ранее.
При этом положительное решение выносится в случае, когда выполнение запроса не повлияет на результаты выполнения запросов, переданных на выполнение файловой системе 170 ранее и выполняемых на момент начала выполнения запроса, по которому выносилось упомянутое решение (например, чтение из файла не повлияет на результаты считывания из этого же файла). Например, положительное решение о выполнении запросов, выбранных из базы данных запросов 150, выносят в случае, когда ни один параметр выбранных на этапе 205 запросов не равен ни одному параметру запроса, переданного ранее.
На этапе 207 с помощью средства управления доступом 160 в случае вынесения отрицательного решения о выполнении запросов на этапе 206 передают запросы средству кэширования 140.
На этапе 208 с помощью средства управления доступом 160 в случае вынесения положительного решения о выполнении запросов на этапе 206 передают запросы файловой системе 170.
На этапе 209 с помощью файловой системы 170 выполняют запросы.
Фиг. 3 представляет пример компьютерной системы общего назначения, персональный компьютер или сервер 20, содержащий центральный процессор 21, системную память 22 и системную шину 23, которая содержит разные системные компоненты, в том числе память, связанную с центральным процессором 21. Системная шина 23 реализована, как любая известная из уровня техники шинная структура, содержащая в свою очередь память шины или контроллер памяти шины, периферийную шину и локальную шину, которая способна взаимодействовать с любой другой шинной архитектурой. Системная память содержит постоянное запоминающее устройство (ПЗУ) 24, память с произвольным доступом (ОЗУ) 25. Основная система ввода/вывода (BIOS) 26, содержит основные процедуры, которые обеспечивают передачу информации между элементами персонального компьютера 20, например, в момент загрузки операционной системы с использованием ПЗУ 24.
Персональный компьютер 20 в свою очередь содержит жесткий диск 27 для чтения и записи данных, привод магнитных дисков 28 для чтения и записи на сменные магнитные диски 29 и оптический привод 30 для чтения и записи на сменные оптические диски 31, такие как CD-ROM, DVD-ROM и иные оптические носители информации. Жесткий диск 27, привод магнитных дисков 28, оптический привод 30 соединены с системной шиной 23 через интерфейс жесткого диска 32, интерфейс магнитных дисков 33 и интерфейс оптического привода 34 соответственно. Приводы и соответствующие компьютерные носители информации представляют собой энергонезависимые средства хранения компьютерных инструкций, структур данных, программных модулей и прочих данных персонального компьютера 20.
Настоящее описание раскрывает реализацию системы, которая использует жесткий диск 27, сменный магнитный диск 29 и сменный оптический диск 31, но следует понимать, что возможно применение иных типов компьютерных носителей информации 56, которые способны хранить данные в доступной для чтения компьютером форме (твердотельные накопители, флеш карты памяти, цифровые диски, память с произвольным доступом (ОЗУ) и т.п.), которые подключены к системной шине 23 через контроллер 55.
Компьютер 20 имеет файловую систему 36, где хранится записанная операционная система 35, а также дополнительные программные приложения 37, другие программные модули 38 и данные программ 39. Пользователь имеет возможность вводить команды и информацию в персональный компьютер 20 посредством устройств ввода (клавиатуры 40, манипулятора «мышь» 42). Могут использоваться другие устройства ввода (не отображены): микрофон, джойстик, игровая консоль, сканер и т.п. Подобные устройства ввода по своему обычаю подключают к компьютерной системе 20 через последовательный порт 46, который в свою очередь подсоединен к системной шине, но могут быть подключены иным способом, например, при помощи параллельного порта, игрового порта или универсальной последовательной шины (USB). Монитор 47 или иной тип устройства отображения также подсоединен к системной шине 23 через интерфейс, такой как видеоадаптер 48. В дополнение к монитору 47, персональный компьютер может быть оснащен другими периферийными устройствами вывода (не отображены), например, колонками, принтером и т.п.
Персональный компьютер 20 способен работать в сетевом окружении, при этом используется сетевое соединение с другим или несколькими удаленными компьютерами 49. Удаленный компьютер (или компьютеры) 49 являются такими же персональными компьютерами или серверами, которые имеют большинство или все упомянутые элементы, отмеченные ранее при описании существа персонального компьютера 20, представленного на Фиг. 3. В вычислительной сети могут присутствовать также и другие устройства, например, маршрутизаторы, сетевые станции, пиринговые устройства или иные сетевые узлы.
Сетевые соединения могут образовывать локальную вычислительную сеть (LAN) 50 и глобальную вычислительную сеть (WAN). Такие сети применяются в корпоративных компьютерных сетях, внутренних сетях компаний и, как правило, имеют доступ к сети Интернет. В LAN- или WAN-сетях персональный компьютер 20 подключен к локальной сети 50 через сетевой адаптер или сетевой интерфейс 51. При использовании сетей персональный компьютер 20 может использовать модем 54 или иные средства обеспечения связи с глобальной вычислительной сетью, такой как Интернет. Модем 54, который является внутренним или внешним устройством, подключен к системной шине 23 посредством последовательного порта 46. Следует уточнить, что сетевые соединения являются лишь примерными и не обязаны отображать точную конфигурацию сети, т.е. в действительности существуют иные способы установления соединения техническими средствами связи одного компьютера с другим.
В заключение следует отметить, что приведенные в описании сведения являются примерами, которые не ограничивают объем настоящего изобретения, определенного формулой.