СИСТЕМА И СПОСОБ АНТИБЛОКИРОВКИ ДОСТУПА К ДИСКУ
SYSTEM AND METHOD FOR ANTI-BLOCKING OF ACCESS TO DISC

Область техники
Настоящее изобретение относится к планированию доступа к устройству хранения и более конкретно к предотвращению монополизации доступа к запоминающему устройству (диску) программой, которая обычно выполняется на компьютере в фоновом режиме.
Уровень техники
Управление аппаратными ресурсами является важной проблемой в развитии современных информационных технологий. Обычно операционная система отвечает за планирование и распределение различных аппаратных ресурсов настольного компьютера или сервера. Например, операционная система планирует использование центрального процессора (CPU) между различными процессами и потоками, выполняемыми в данное время. Таким планированием может быть, например, распределение каждому потоку равного отрезка времени использования CPU или такое планирование может иметь более сложный приоритетный механизм, когда некоторым процессам/потокам назначается высокая процентная доля времени CPU, пока другие принимают низкую процентную долю.
Распределение памяти является областью, где операционная система определяет параметры распределения ресурсов. Операционная система распределяет физическую и виртуальную память для различных процессов, в том числе и в зависимости от их приоритета.
Одна из проблемных задач в распределении ресурсов относится к распределению приоритета доступа различных приложений к системам хранения данных, таких как жесткие диски, в частности, те приложения, которые предназначены для работы в фоновом режиме, такие как система резервного копирования, система защиты, антивирусная система, система архивации, система сжатия и т.д. Хорошим примером такого приложения является антивирусное приложение, которое последовательно проверяет все файлы на жестком диске на наличие вирусов. Сегодня множество настольных компьютеров имеют жесткие диски с тысячами файлов. Множество из них относительно малы в размере, например временные файлы в папке браузера, таких как файлы изображений (GIF, JPEG), сохраненных веб-страниц и т.д. Если пользователь регулярно не удаляет подобные файлы, то количество файлов, которых антивирус должен просмотреть и проверить на присутствие вирусов, может легко достигать 200000-400000 или даже больше.
Однако из-за особенностей аппаратной части только одно приложение в любое определенное время может отправлять запрос на доступ к жесткому диску. Поэтому, даже если антивирусное приложение само может расходовать соответственно малую долю времени CPU и малую долю доступной памяти, длительные запросы доступа к диску от антивирусного приложения означают, что все другие процессы по существу замедляются. Такие продолжительные запросы к диску от антивирусного приложения обусловлены большим количеством файлов, в том числе и временных, и множество пользователей находят это неприятным и раздражающим и часто останавливают антивирусное приложение, предпочитая взамен работать с "полезными" приложениями, такими как Microsoft Word, веб-браузер и т.п.
Соответственно техническим результатом заявленного изобретения является предоставление системы, способа и машиночитаемого носителя, которые разрешают доступ приложениям, интенсивно использующим жесткий диск в фоновом режиме, без задержки функционирования других приложений на компьютере.
Сущность изобретения
Соответственно настоящее изобретение относится к системе, способу и машиночитаемому носителю для предотвращения монополизации доступа к диску процессами с низким приоритетом или фоновыми процессами, которые устраняют один или более недостатков соответствующего уровня техники.
Согласно способу управления доступом к запоминающему устройству: (а) классифицируют процессы, которые имеют доступ к запоминающему устройству, как высокоприоритетные и низкоприоритетные процессы; (b) с использованием счетчика отслеживают наличие доступа высокоприоритетных процессов к запоминающему устройству, при этом в случае наличия запроса к запоминающему устройству от высокоприоритетного приложения, состояние счетчика увеличивается, а при наличии ответа от запоминающего устройства к высокоприоритетному приложению состояние счетчика уменьшается; и (с) управляют доступом низкоприоритетных процессов на основе информации об активности доступа высокоприоритетных процессов, при этом для низкоприоритетных процессов предоставляют доступ к запоминающему устройству, когда состояние счетчика равно нулю.
В частном варианте осуществления низкоприоритетные процессы включают в себя любой процесс резервного копирования, процесс защиты системы, антивирусный процесс, процесс архивации, процесс сжатия и контролирование доступа к запоминающему устройству.
В другом частном варианте, если активность доступа высокоприоритетных процессов является высокой, низкоприоритетные процессы получают доступ к другому запоминающему устройству.
Еще в одном частном варианте, если активность доступа высокоприоритетных процессов является высокой, доступ низкоприоритетных процессов приостанавливается до того, как активность высокоприоритетных процессов станет низкой.
В другом частном варианте при контроле активности перехватывают запросы доступа к запоминающему устройству от высокоприоритетных процессов, используя перехватчик системных вызовов.
В другом частном варианте на этапе контроля активности дополнительно отслеживают активность доступа высокоприоритетных процессов за промежуток времени, а на этапе управления активностью управляют доступом низкоприоритетных процессов на основе периода времени, во время которого высокоприоритетные процессы используют запоминающее устройство.
Система для управления доступом к запоминающему устройству, содержащая средство для классифицирования процессов, которые имеют доступ к запоминающему устройству, как высокоприоритетные и низкоприоритетные процессы; средство контроля активности запоминающего устройства, которое отслеживает запросы доступа высокоприоритетных процессов к запоминающему устройству, при этом средство контроля активности содержит счетчик, причем в случае наличия запроса доступа к запоминающему устройству от высокоприоритетного приложения состояние счетчика увеличивается, а при наличии ответа от запоминающего устройства к высокоприоритетному приложению состояние счетчика уменьшается; и средство для приостановки доступа низкоприоритетным процессам к запоминающему устройству на основе активности доступа к запоминающему устройству высокоприоритетных процессов.
В частном варианте низкоприоритетные процессы включают в себя любые процессы резервного копирования, процессы защиты системы, антивирусные процессы, процессы архивирования, процессы сжатия и контроля доступа к запоминающему устройству.
В другом частном варианте, если активность доступа к запоминающему устройству высокоприоритетными процессами является высокой, низкоприоритетные процессы получают доступ к другому запоминающему устройству.
Еще в одном частном варианте, если активность доступа к запоминающему устройству высокоприоритетными процессами является высокой, активность доступа к запоминающему устройству низкоприоритетных процессов приостанавливается.
Еще в одном частном варианте система дополнительно содержит перехватчик системных вызовов, который перехватывает запросы доступа к запоминающему устройству высокоприоритетных процессов.
Еще в одном частном варианте средство контроля активности отслеживает активность доступа к запоминающему устройству высокоприоритетных процессов за период времени и управляет активностью доступа к запоминающему устройству низкоприоритетных процессов на основе периода времени, в который высокоприоритетные процессы используют запоминающее устройство.
Способ управления доступом к запоминающему устройству содержит этапы, на которых: (а) классифицируют процессы, которые имеют доступ к запоминающему устройству, как высокоприоритетные и низкоприоритетные процессы; (b) с использованием счетчика отслеживают использование запоминающего устройства высокоприоритетными приложениями, при этом в случае наличия запроса к запоминающему устройству от высокоприоритетного приложения состояние счетчика увеличивается, а при наличии ответа от запоминающего устройства к высокоприоритетному приложению состояние счетчика уменьшается; (с) вычисляют период времени, в который высокоприоритетные приложения имеют доступ к запоминающему устройству, а низкоприоритетные приложения не имеют доступа к запоминающему устройству; (d) управляют доступом низкоприоритетного приложения к запоминающему устройству на основе вычисленного периода времени, при этом для низкоприоритетных процессов предоставляют доступ к запоминающему устройству, когда состояние счетчика равно нулю и когда высокоприоритетные приложения не требуют доступа к запоминающему устройству.
В частном варианте низкоприоритетный процесс включает в себя любой процесс резервного копирования, процесс защиты системы, антивирусный процесс, процесс архивации, процесс сжатия и приложение, которое контролирует доступ к запоминающему устройству.
Машиночитаемый носитель для управления доступом к запоминающему устройству, на котором сохранена компьютерная программа, при выполнении которой на компьютере выполняются следующие этапы: (а) классифицируют процессы, которые имеют доступ к запоминающему устройству, как высокоприоритетные и низкоприоритетные процессы; (b) с использованием счетчика отслеживают активность доступа высокоприоритетных процессов к запоминающему устройству, при этом в случае наличия запроса к запоминающему устройству от высокоприоритетного приложения состояние счетчика увеличивается, а при наличии ответа от запоминающего устройства к высокоприоритетному приложению состояние счетчика уменьшается; и (с) управляют активностью доступа низкоприоритетных процессов на основе активности доступа высокоприоритетных процессов, при этом для низкоприоритетных процессов предоставляют доступ к запоминающему устройству, когда состояние счетчика равно нулю.
Дополнительные признаки и преимущества изобретения будут установлены из описания, которое прилагается, частично будут очевидны из описания или могут быть получены при использовании изобретения. Преимущества изобретения будут реализовываться и достигаться посредством структуры, конкретно подчеркнутой в написанном описании и формулах, а также прилагаемых чертежах.
Понятно, что предшествующее общее описание и последующее подробное описание являются примерными и объясняющими и предназначены для обеспечения дополнительного объяснения заявленного изобретения.
Краткое описание прилагаемых чертежей
Сопровождающие чертежи, которые включены для обеспечения дополнительного понимания изобретения, составляют часть этого описания, показывающего варианты осуществления изобретения, и совместно с описанием служат для объяснения принципов изобретения.
Фиг.1 показывает пример компьютерной системы, в которой может быть воплощено изобретение.
Фиг.2 показывает временную диаграмму того, как различные потоки и процессы, выполняемые на компьютере, могут использовать запоминающее устройство.
Фиг.3 показывает алгоритм того, как низкоприоритетное приложение решает приостановить свои операции.
Фиг.4А и 4Б показывают расположение средства контроля активности диска в полной схеме доступа к диску.
Фиг.5 показывает вариант осуществления алгоритма работы средства контроля активности диска.
Фиг.6 показывает альтернативный вариант осуществления средства контроля дисковой активности настоящего изобретения.
Подробное описание предпочтительных вариантов осуществления
Теперь будут сделаны ссылки на подробные предпочтительные варианты осуществления настоящего изобретения, примеры которого показаны на сопровождающих чертежах.
На фиг.1 показана примерная компьютерная система 102, в которой настоящее изобретение может быть воплощено. Компьютерная система 102 включает в себя один или более процессоров, таких как процессор 101. Процессор 101 соединяется с коммуникационной инфраструктурой 106, такой как шина или сеть. Различные программные реализации описываются в терминах этой примерной компьютерной системы. После прочтения этого описания специалисту в уровне техники будет очевидно осуществить изобретение, используя другие компьютерные системы и/или компьютерные архитектуры.
Компьютерная система 102 включает в себя основную память 108, предпочтительно память со случайным доступом (RAM), и может также включать в себя вторичную память 110. Вторичная память 110 может включать в себя, например, внутренний диск или хранилище данных 112 (например, жесткий или оптический диск) и/или съемное запоминающее устройство 114 (устройство хранения данных на магнитной ленте, оптический привод и т.д.). Съемное устройство хранения данных 114 считывает с и/или записывает на съемное хранилище данных 116 хорошо известным способом. Съемный запоминающий блок 116 представляет собой магнитную ленту, оптический диск или другие запоминающие носители, считываемые или записываемые с помощью съемного запоминающего устройства 114. Как можно видеть, съемный запоминающий блок 116 может включать в себя машиночитаемый запоминающий носитель, имеющий сохраняемые на нем компьютерное программное обеспечение и/или данные.
В альтернативном варианте осуществления вторичная память 110 включает в себя другие средства для загрузки компьютерных программ или других команд в компьютерную систему 102. Она включает в себя, например, съемный запоминающий блок 122 и интерфейс 120. Она может включать в себя съемный чип памяти (такой как EPROM или PROM) и связанный с ним разъем или другие съемные запоминающие устройства 122 и интерфейсы 120, которые позволяют передавать программное обеспечение и данные со съемных хранилищ данных 122 на компьютерную систему 102.
Компьютерная система 102 также включает в себя один или более интерфейсов соединения, таких как сетевой интерфейс 124. Сетевой интерфейс 124 позволяет передавать данные между компьютерной системой 102 и внешними устройствами. Например, сетевой интерфейс 124 включает в себя модем, сетевой интерфейс (например, карту Ethernet), порт соединения, PCMCIA слот и карту и т.д. Программное обеспечение и данные, передаваемые по сетевому интерфейсу 124, выполняются в форме сигналов 128, электронных, электромагнитных, оптических и других типов, которые могут быть приняты посредством сетевого интерфейса 124. Сигналы 128 выдаются сетевым интерфейсом 124 через канал связи 126 (например, тракт). Этот канал 126 передает сигналы 128 и выполняется проводным или кабельным, оптоволоконным, РЧ каналом и другими каналами связи. В варианте осуществления изобретения сигналы 128 содержат пакеты данных, отправленные процессору 101. Информация, представляющая обрабатываемые пакеты, может отправляться в форме сигналов 128 от процессора 101 через канал связи 126.
Термином «машиночитаемый программный носитель» или «машиночитаемый носитель» обычно называют носитель, такой как съемные хранилища данных 116 и 122, жесткий диск, установленный в виде встроенного жесткого диска 112, и сигналы 128, которые обеспечивают передачу программного обеспечения в компьютерную систему 102.
Компьютерные программы хранятся в основной памяти 108 и/или вторичной памяти. Компьютерные программы могут быть также получены через сетевой интерфейс 124. При исполнении компьютерные программы позволяют компьютерной системе 102 осуществлять настоящее изобретение, как обсуждается здесь. В частности, компьютерные программы при исполнении позволяют процессору 101 осуществлять настоящее изобретение. Когда изобретение осуществлено с использованием программного обеспечения, то программное обеспечение может быть сохранено в компьютерном программном продукте и загружено в компьютерную систему 102, используя съемное устройство хранения данных 114, жесткий диск 112 или интерфейс 124 связи.
Фиг.2 показывает временной график различных потоков и процессов, выполняемых на компьютере с жестким диском. Как показано на фиг.2, есть два типа потоков: "полезные" (высокоприоритетные) потоки, обозначенные поток А - поток X, и различные низкоприоритетные потоки, такие как потоки, относящиеся к антивирусному продукту, обозначенные «GUI», «ядро» и «поток Y». Временем занятости (ТВ) является время, когда жесткий диск используется высокоприоритетными потоками; если любой из полезных потоков имеет доступ к жесткому диску в определенное время, тогда жесткий диск считается занятым. Отметим, что низкоприоритетные потоки не влияют на Время занятости жесткого диска.
Фиг.2 показывает как выбрать поток и процесс, использующие жесткий диск, которые учитываются для целей вычисления нагрузки жесткого диска и учитываются для целей определения, может ли низкоприоритетное приложение получить доступ к дисковому запоминающему устройству в этот момент.
На фиг.2 величиной разбиения времени является интервал Δk (т.е. время между двумя системными вызовами к жесткому диску или более широко, к любому хранилищу данных), ST (Время начала отсчета) является временем запуска средства контроля, ТВ (Время занятости) является временем ожидания ответа дисковой системы на запросы от высокоприоритетных потоков. С учетом первых десяти блоков времени, начиная с нуля, видно, что Время занятости (ТВ) равно семи Δk блокам из десяти. Нагрузка вычисляется посредством сравнения итогового времени ТТ и Времени занятости ТВ. Например, на фиг.2, когда ТТ равно 20, ТВ равно 15, другими словами ТВ/ТТ=75%. Нагрузка может вычисляться для любого произвольного периода, например, от 8 до 20, где ТТ=12, ТВ=9, и нагрузка равна 9/12=75%.
На основе динамических характеристик и тенденции или на заранее определенных параметрах низкоприоритетное приложение может определить, низкое ли значение нагрузки диска для получения доступа к диску. Коэффициент нагрузки может использоваться для сравнения с пороговым значением для планирования работы низкоприоритетного приложения. Например, если порог равен 85 и пример, данный выше, дает 75, тогда низкоприоритетное приложение может получить доступ к жесткому диску.
Следует помнить, что время начала отсчета может постоянно переустанавливаться или сдвигаться вперед, иначе значение ТВ/ТТ теряет свою актуальность во времени. Например, если ТВ/ТТ вычисляется начиная с Т=0 на фиг.2 и заканчивается при Т=12, тогда ТВ/ТТ равно 8/12=2/3. Если актуальный период времени начинается при Т=5, тогда ТВ/ТТ=4/7. Правильный выбор периода времени для вычисления ТВ/ТТ может быть определен эмпирически, как, например, требованиями антивирусного приложения.
Фиг.3 показывает алгоритм, как низкоприоритетное приложение (например, антивирусное приложение) решает, приостанавливать ли свои дисковые операции. Как показано на фиг.3, после этапа запуска 302 антивирусное приложение анализирует активность контролируемых пользователем приложений с тем, как они соотносятся с жестким диском, отслеживая по меньшей мере два параметра, значение Итогового времени (ТТ) и значение Времени занятости (ТВ), как обсуждалось выше со ссылкой на фиг.2. На этапе 310 антивирусное приложение корректирует свои входные параметры в зависимости от установок, например, могут рассматриваться только последние 10 единиц времени, последние 20 и т.д. На этапе 312 антивирусное приложение выполняет свои задачи. На этапе 314, если антивирусное приложение закончило анализировать все необходимые файлы, тогда алгоритм завершается на этапе 316. Иначе, если имеются файлы, остающиеся для анализа на вирусное заражение, алгоритм возвращается на этап 308.
Фиг.4А-4Б показывает средства контроля дисковой активности, расположенные на полной схеме доступа к диску. Как показано на фиг.4А, приложение 402, которое может быть или приложением пользователя, или антивирусным приложением, выдает запрос к дисковой системе 404 и принимает ответ от дисковой системы 404. Другими словами, основное приложение выдает запросы на чтение и запись и получает ответы от жесткого диска, был ли запрос на чтение файла или указание на завершение записи. На фиг.4Б средства слежения за дисковой системой 406-408 вставлены между основным приложением 402 и дисковой системой 404. Средство слежения 406 перехватывает запрос от общего приложения 402 к дисковой системе 404 и средство слежения 408 перехватывает ответы от дисковой системы 404 к приложению 402. Отметим, что оба средства слежения могут использоваться для оценки параметра Времени занятости (ТВ).
Фиг.5 показывает возможный вариант осуществления алгоритма контроля дисковой активности. Как показано на фиг.5, алгоритм начинается на этапе 502, на этапе 504 инициализируются различные параметры, такие как время занятости (ТВ) и итоговое время (ТТ). На этапе 506 Т1 устанавливается равным текущему времени. На этапе 508 алгоритм проверяет, есть ли запрос к средству слежения за дисковой системой от антивируса. При наличии такого запроса антивирусу выдаются текущие величины ТВ и ТТ на этапе 510. После этого на этапе 512 Т2 устанавливается в текущее время и вычисляется интервал Δk, равный разности Т2 и Т1. На следующем этапе 514 проверяется, есть ли запросы к дисковой системе от высокоприоритетных приложений. При наличии подобных запросов время занятости ТВ увеличивается на интервал Δk на этапе 516. На этапе 518 также увеличивается на интервал Δk и итоговое время ТТ, а Т1 приравнивается к Т2. На этапе 520, если алгоритм заканчивается, тогда процесс прекращается на этапе 522. Иначе алгоритм возвращается к этапу 508.
Фиг.6 показывает альтернативный вариант осуществления средства контроля загрузки диска настоящего изобретения. Как показано на фиг.6, как только алгоритм начинает работу на этапе 602, инициализируются и запускаются перехватчики 406 и 408 запросов доступа к диску (этап 604). На этапе 606 параметры алгоритма устанавливаются в нули, например, Время занятости (ТВ) устанавливается в нуль, время первого запроса доступа устанавливается в нуль и время между первым запросом и последующим запросом и состояние счетчика N запросов доступа к диску также устанавливаются в нули. На этапе 608 алгоритм проверяет, есть ли доступ для чтения или записи. Если нет, тогда алгоритм переходит к этапу 626. На этапе 626, если выполняется прерывание запроса доступа диска, алгоритм заканчивается на этапе 628. Иначе алгоритм возвращается назад к этапу 608.
На этапе 608, если есть запрос доступа на считывание или запись, тогда на этапе 610 алгоритм проверяет, есть ли контролируемый запрос доступа, т.е., есть ли запрос доступа от высокоприоритетного приложения. Если запрос не контролируется, тогда алгоритм переходит на этап 626. Если регистрируется контролируемый запрос, тогда алгоритм переходит к этапу 612, где проверяется направление потока данных. Если он является ответом от жесткого диска, тогда на этапе 616 уменьшается состояние счетчика N. На этапе 620 алгоритм проверяет, не равно ли N нулю. Если N не равно нулю, тогда алгоритм переходит к этапу 626. В противном случае на этапе 624 ΔТВ устанавливается в текущее время минус TBstart, и ТВ увеличивается на ΔТВ. Затем алгоритм переходит к этапу 626. На этапе 612, если есть запрос к драйверу диска, тогда состояние счетчика увеличивается на этапе 614. На этапе 618 алгоритм проверяет, равно ли состояние счетчика 1. Если N≠1, алгоритм переходит к этапу 626. Если N=1, время первого запроса чтения начала TBstart устанавливается в текущее время Т(сейчас) на этапе 622. Алгоритм затем переходит к этапу 626.
Фиг.6 представляет более развернутую версию фиг.5, где система анализирует нагрузку жесткого диска посредством просмотра запросов к диску и ответов от диска. Запрос чтения или записи к жесткому диску добавляет «1» у счетчика N, а ответ вычитает «1» у счетчика N. Таким образом, по мере того как запросы к запоминающему устройству добавляются в очередь, так и состояние счетчика N увеличивается (и также ТВ), и как запоминающее устройство отвечает, так состояние счетчика уменьшается до тех пор, пока N в итоге не установится в нуль, когда обслужатся все запросы, и низкоприоритетные фоновые процессы смогут получить доступ к диску.
Будет понятно, что подход, описанный здесь может применяться для любых запоминающих устройств, а не только для жестких дисков. Также можно управлять множеством запоминающих устройств таким же способом, необязательно со счетчиком для каждого из них или, альтернативно, имея одинаковую схему управления для нескольких таких устройств. Каждый процесс может иметь собственный счетчик или несколько процессов могут иметь единственный счетчик, назначенный для них.
Хотя обсужденное выше относится к контексту антивирусного программного обеспечения, которое требует интенсивного использования диска, это изобретение не ограничивается этим конкретным приложением, но оно также применимо для любой другой ситуации, где приложение, которое работает в фоновом режиме, требует интенсивного доступа к диску. Примеры этих приложений включают в себя системы резервного копирования, системы защиты, системы архивации данных, системы сжатия и т.д.
Имея описанные предпочтительные варианты осуществления изобретения специалисту в уровне техники станет очевидным, что достигнуты определенные преимущества описанного способа и устройства. Также будет понятно, что различные модификации, адаптации и альтернативы вариантов осуществления могут быть сделаны в объеме и сущности настоящего изобретения. Кроме того, изобретение определяется следующей формулой.