Компьютерная дублирующая система, действующая с открытыми файлами

 

Изобретение относится к способу работы компьютерной системы и к дублирующей системе. Техническим результатом является осуществление защиты от повреждений запоминающего устройства или порчи, потери или заражения данных компьютерным вирусом. Дублирующая программа для компьютерной системы с жестким диском поддерживает запись изменений, произведенных в данные в дублируемом файле. Во время дублирования обе части исходного и корректируемого файла или записи сохраняются и дублирующая программа считывает исходные данные в то время, как другие приложения считывают скорректированные данные. Для распознавания, инициирована ли операция считывания дублирующей программой или другим приложением, система определяет, используя стек, источник запроса считывания, она опрашивает пользователя, идентификаторы задачи или процесса. Доступ к файлу дублирующей программой гарантируется обработкой системной таблицы файлов. Обеспечивается, что файл находится в "хорошем" состоянии задержкой начала дублирующей операции в течение заранее определенного периода. 8 с. и 8 з.п.ф-лы, 5 ил.

Изобретение относится к способу работы компьютерной системы и, в частности, к способу обеспечения дублирующих копий данных, хранимых в запоминающем устройстве для защиты от повреждения запоминающего устройства или порчи, потери или заражения данных компьютерным вирусом. Изобретение, главным образом, имеет отношение к обеспечению дублирований для персональных компьютеров (ПК).

Традиционно в простой однопользовательской компьютерной системе, содержащей запоминающее средство, как например, жест кий или несъемный диск, только одна прикладная программа имеет доступ к запоминающему средству в любое данное время. Задача дублирования данных, хранимых запоминающим средством, выполняется прикладной программой, которая будет иметь исключительное использование запоминающего средства при выполнении операции дублирования, поскольку в такой среде никакое другое приложение не может работать до тех пор пока не завершится приложение дублирования.

С введением многозадачных сред, которые позволяют нескольким приложениям работать одновременно, и сетевых систем, которые позволяют нескольким пользователям разделять одни и те же ресурсы, может возникнуть ситуация, где более чем одно приложение имеет одновременный доступ к одному и тому же запоминающему средству. Когда эта ситуация возникает, существует возможность конфликта между приложениями. Например, одно приложение может модифицировать или удалить файл, в текущее время используемый другим приложением. Это привело бы к путанице и потенциально к порче запоминающего средства и, в результате, к потере данных.

Способы, известные как "блокировка файла" или "блокировка записи" введены в операционные системы для избежания в случае блокировки файла того, чтобы более чем одно приложение записывало в файл и в случае блокировки записи того, чтобы два приложения модифицировали одну и ту же область данного файла. Эти способы достаточно сложны для большинства приложений, особенно если каждое приложение производит только относительно незначительные изменения в файлы, которые являются совместно используемыми, и поэтому не задерживает существенно другие приложения, желающие иметь доступ к файлу или записи, которая заблокирована. Однако приложение для периодического дублирования данных в компьютерной системе, где запоминающее средство является совместно используемым, представляет особый случай.

Минимальной единицей данных, которая может быть дублирована, является единый файл, поскольку ни дублирующее приложение, ни операционная система не имеют осведомленности о внутренней структуре файла, так как он может быть связан с любой прикладной программой.

Кроме того, дублирующая копия файла должна быть точным образом оригинала в конкретный момент времени. Однако копирование файла является не мгновенным процессом и время, требуемое для копирования, будет зависеть от размера файла и скорости операции копирования. Это приводит к проблеме до тех пор, пока дублирующее приложение не может быть уверено, что никакое другое приложение не может модифицировать файл во время процесса копирования.

Для копирования файла дублирующее приложение назначает область памяти с произвольной выборкой (ЗУПВ) в качестве передаточного буфера и продолжает чередующимся считыванием блоков исходного файла в буфер, а затем выполнением контрольного считывания содержимого буфера во вторичное запоминающее средство. Если файл не очень маленький, передаточный буфер будет заполняться несколько раз и процесс копирования потребует нескольких операций считывания и записи для выполнения полного копирования файла.

Потенциальная проблема, вызванная возможностью модификации файла во время процесса копирования, может быть проиллюстрирована рассмотрением примера файла, который копируется как последовательность 10-ти блоков. Если файл был бы модифицирован входным сообщением, которое требовало изменения в файл, которые соответствуют блокам 3 и 8 после того, как блоки с 1 по 8 уже скопированы, процесс копирования в результате скопировал бы изменение в блок 8, но не скопировал бы изменение в блок 3, поскольку этот блок уже был скопирован до появления входного сообщения. Поэтому дублирующая копия будет содержать только частичное входное сообщение, которое может сделать дублирующую копию полностью бесполезной, так как приложение, которое "владеет" ей, вероятно будет считать файл испорченным.

Патент США N 5086502, принадлежащий настоящему заявителю, раскрывает способ дублирования каждой операции записи, когда она сделана, выполнением дублирующей операции записи во вторичное запоминающее средство. В дополнение к этому методу существуют два других способа дублирования файлов на компьютерной системе, имеющей совместно используемое запоминающее средство: I) Блокировать файл во время копирования. Это препятствует модификации файла другими пользователями посредством отказа им в доступе записи. Если другой пользователь уже имеет доступ записи, дублирующее приложение должно либо пропустить этот файл, либо ждать до тех пор, пока может быть получен исключительный доступ записи.

II) Обнаружить модификации в файл. После копирования файла дублирующее приложение может использовать операционную систему для того, чтобы проверить были ли сделаны какие-либо модификации во время операции копирования. Если модификации были сделаны, тогда копирование должно быть повторено или этот файл пропущен.

Ни один из последних двух способов не обеспечивает адекватного решения, поскольку многие файлы (особенно файлы базы данных) находятся постоянно в использовании. Более того, эти два способа требуют, чтобы пользователи были эффективно заблокированы, пока происходит дублирование. Кроме того, немногие комбинации вспомогательных запоминающих устройств и операционных систем допускают непрерывные скорости передачи данных более чем 15 мегабайт (Мбайт) в минуту и поэтому время, требуемое для копирования большого файла является значительным.

Несколько прикладных программ действительно, обращаются к этой проблеме посредством надежного дублирования их собственных файлов в совместно используемой среде, но процедура для каждой является различной. Для того, чтобы дублировать все запоминающее средство, дублирующая прикладная система должна знать как работает каждая различная встроенная процедура или должна полагаться на ручное вмешательство в подходящий момент.

Таким образом, поскольку дублирующая прикладная система должна дублировать весь файл и поскольку этот файл не должен быть модифицирован другой прикладной программой во время процесса дублирования, использование предыдущих способов дублирования будет вносить задержки в компьютерную систему, имеющую совместно используемое запоминающее средство. Это особенно верно, когда дублируются большие файлы.

Патент США N 5163148, выданный на имя Уоллса (Walls) описывает дублирующую систему, в которой перед тем, как начинается дублирование файла, файл приводится в постоянное состояние, например, если требуется множество операций в связи с входным сообщением, тогда все эти операции завершаются. Если часть файла, подлежащего дублированию требует корректировки, эта часть исходного файла копируется в отдельную часть диска перед тем, как происходит дублирование. Дублирующая программа дублирует файл посредством замены тех частей, которые скорректированы исходными частями, которые скопированы и сохранены где-нибудь в другом месте на диске. Карта распределения областей памяти на диске, которая обычно содержит список дорожек и секторов на диске, занятых этим файлом, расширяется для включения конкорданса (указателя), устанавливающего соотношение размещений дорожки и сектора скопированных исходных частей файла к размещениям дорожки и сектора скорректированных частей, которые занимают области, из которых они были скопированы.

Международная заявка на патент N PCT/GB 94/01581, опубликованная 20 июля 1995 г. под номером публикации N W 095/ 19559 и принадлежащая настоящему заявителю, описывает способ работы компьютера, имеющего запоминающее устройство, разделенное между несколькими прикладными программами, который также содержит дублирующий процесс, включающий процесс для поддержки записи изменений, произведенных в данных на запоминающем устройстве во время выполнения дублирующего процесса. Запись используется для гарантирования того, что данные, видимые дублирующим процессом, не изменяются, когда он выполняется, в то же время позволяя другим процессам продолжать обычно корректировать запоминающее устройство, таким образом избегая задержек, связанных с методами блокировки файла. Дополнительные операции выполняются на уровне интерфейса операционной системы микрокомпьютера таким образом, что не затрагивается нормальное использование компьютера. В этом способе дублирующий процесс является действующим для выдачи сигнала начала и сигнала окончания и для выполнения по меньшей мере одной дублирующей операции считывания для считывания исходных данных из запоминающего средства, например, жесткого диска. Центральный процессор выполняет по меньшей мере одну обычную операцию записи для записи данных периодически в первичную область запоминающего средства и по меньшей мере одну обычную операцию считывания для считывания данных из запоминающего средства.

После получения этого сигнала начала выполняется операция перехвата для перехвата операции записи и для записи данных в область вторичной памяти запоминающего средства, с тем, чтобы сохранить исходные данные, которые иначе были бы переписаны операцией записи. Запись частей файла, записанных во вторичную область поддерживается и после выполнения одной из дублирующих и обычных операций считывания запись запрашивается для считывания данных из одной из первичных и вторичных областей памяти, соответствующих записи. Таким образом, обеспечивается дублирующий процесс с сохраненными исходными данными в том состоянии, в котором они были непосредственно перед тем, как был выдан сигнал начала. Однако в этот момент запись определяет части файла в терминах записей файла, а не в терминах размещений дорожки и сектора на диске. Это исключает проблемы, которые могут возникнуть, если запись хранится в терминах размещения диска, т.е. дорожки и сектора и обеспечивает определенные преимущества.

Запись предпочтительно, содержит дельта-область, в которой сохраняются первичные данные и соответствующая ссылка между фактическим местоположением первичных данных и их предназначенным местоположением. Альтернативно вторичные данные могут быть записаны в дельта области и другие приложения могут продолжать записывать в предназначенное местоположение на запоминающем устройстве.

Дельта-область предпочтительно, является другой областью того же запоминающего устройства, например, жесткого диска. Дополнительно требуемые операции преимущественно хранятся и выполняются на уровне интерфейса операционной системы компьютерной системы. Если программное обеспечение хранится на уровне операционной системы, его можно сделать прозрачным для пользователя, с тем, чтобы не влиять на прикладное программное обеспечение.

Эта дублирующая запись может быть сохранена на ряде запоминающих средств, например, накопителе на магнитной ленте, оптическом диске или в другой области основной запоминающей среды. Если дублирование выполнено, оно может быть восстановлено традиционным образом.

Сущность изобретения Настоящее изобретение обеспечивает усовершенствования, которые применимы к упомянутым выше способам. Прежде всего, это требование, чтобы система могла отличать запросы чтения, которые происходят из дублирующей программы от запросов чтения, которые происходят из других приложений, которые могут выполняться.

В первом аспекте настоящее изобретение обеспечивает способ работы основанной на микропроцессоре компьютерной системы, включающей командную память, центральный процессор и запоминающее средство, согласно которому (способу) обеспечивают дублирующий процесс, выполняющийся на компьютерной системе, который является действующим для выдачи сигнала начала и сигнала окончания и для выдачи по меньшей мере одной команды дублирующего считывания для считывания исходных данных из запоминающего средства, обеспечивают первые команды, хранимые в памяти, в центральном процессоре для того, чтобы заставить центральный процессор выполнить по меньшей мере одну обычную операцию считывания для считывания данных из запоминающего средства, причем дублирующий процесс способен работать с файлами, которые открыты для доступа командами, поддерживают запись данных, записанных в запоминающем средстве для того, чтобы установить связь между соответствующими областями в первичной области памяти запоминающего средства, определяют после получения сигнала начала и после получения команды считывания, относится ли команда считывания к операции дублирующего считывания или к обычной операции считывания, и после выполнения одной из операций дублирующего и обычного считывания запрашивают запись для считывания данных из одной из первичной и вторичной областей памяти, соответствующих упомянутой записи, и после выполнения другой из операций дублирующего и обычного считывания, считывают данные, из первичной области памяти, отличающийся (способ) тем, что при определении того, относится ли команда считывания к операции дублирующего считывания или к обычной операции считывания, просматривают область памяти, из которой происходит команда считывания, для определения идентичности программы, которая инициировала команду считывания.

Во втором альтернативном аспекте изобретения обеспечивается способ работы основанной на микропроцессоре компьютерной системы, включающей командную память, центральный процессор и запоминающее средство в. компьютерной сети, согласно которому (способу) обеспечивают дублирующий процесс, выполняющийся на компьютерной системе, который является действующим для выдачи сигнала начала и сигнала окончания и для выдачи по меньшей мере одной команды дублирующего считывания для считывания исходных данных из запоминающего средства, обеспечивают первые команды, хранимые в памяти, в центральном процессоре для того, чтобы заставить центральный процессор выполнить по меньшей мере одну обычную операцию считывания для считывания данных из запоминающего средства, поддерживают запись данных, записанных в запоминающем средстве, для того, чтобы установить связь между соответствующими областями в первичной области памяти запоминающего средства и вторичной областью памяти запоминающего средства, и определяют после получения сигнала начала и после получения команды считывания, относится ли команда считывания к операции дублирующего считывания или к обычной операции считывания, и после выполнения одной из операций дублирующего и обычного считывания запрашивают запись для считывания данных из одной из первичной и вспомогательной областей памяти, соответствующих записи, и после выполнения другой из операций дублирующего и обычного считывания, считывают данные из первичной области памяти, отличающийся (способ) тем, что назначают в дублирующий процесс пользователя идентификацию или процесса, или задачи, а при определении того, относится ли команда считывания к операции дублирующего считывания или к обычной операции считывания, определяют, запрашивается ли операция считывания пользователем или программой с указанным пользователем идентификацией процесса или задачи.

Потенциальной проблемой, связанной со способом упомянутого ранее приложения является то, что оно может быть не способно обеспечить требуемую дублирующую команду на данном файле, т.к. этот файл открыт для другого приложения, так что доступ к файлу дублирующим процессом запрещается операционной системой.

В третьем аспекте изобретения, который предпочтительно, используется в сочетании с упомянутыми ранее аспектами изобретения, обеспечивается способ работы основанной на микропроцессоре компьютерной системы, включающей командную память, центральный процессор и запоминающее средство, согласно которому обеспечивают дублирующий процесс, выполняющийся на компьютерной системе, который является действующим для выдачи сигнала начала и сигнала окончания и для выполнения по меньшей мере одной команды дублирующего считывания для считывания исходных данных из запоминающего средства, и обеспечивают команды, хранимые в памяти, в центральном процессоре для того, чтобы заставить центральный процессор выполнить по меньшей мере одну обычную операцию считывания для считывания данных из запоминающего средства, обеспечивают средство открытия файла для открытия файла, считываемого обычной операцией считывания и отказа доступа к файлу другими операциями считывания, отличающийся (способ) тем, что обеспечивают средство, связанное с дублирующим процессом, которое блокирует функцию отказа средства открытия файла для разрешения одновременного доступа считывания к файлу дублирующей операцией считывания и обычной операцией считывания.

Наконец, несмотря на то, что способ дублирования упомянутого ранее приложения может справиться с изменениями, сделанными в дублируемый файл, когда действует дублирование, изобретатель принял во внимание, что возникнет проблема, если файл находится в процессе записи, когда операция дублирования фактически начинается.

В четвертом аспекте изобретение обеспечивает способ работы основанной на микропроцессоре компьютерной системы, включающей командную память, центральный процессор и запоминающее средство, согласно которому обеспечивают дублирующий процесс, выполняющийся на компьютерной системе, который является действующим для выдачи сигнала начала и сигнала окончания и для выдачи по меньшей мере одной команды дублирующего считывания для считывания исходных данных из запоминающего средства, обеспечивают команды, хранимые в памяти, в центральном процессоре для того, чтобы заставить центральный процессор выполнить по меньшей мере одну обычную операцию записи для записи данных в запоминающее средство, причем дублирующий процесс способен работать с файлами, которые являются открытыми для доступа командами, отличающийся (способ) тем, что задерживают выдачу сигнала начала до тех пор, пока не завершат ряд операций записи в дублируемый файл.

В пятом аспекте изобретение обеспечивает дублирующую систему для основанной на микропроцессоре компьютерной системы, включающую командруню память (14), центральный процессор (12) и запоминающее средство (16), содержащую дублирующую программу для выполнения на компьютерной системе, которая является действующей для выдачи сигнала начала и сигнала окончания и для выдачи по меньшей мере одной команды дублицирующего считывания для считывания исходных данных из запоминающего средства, средство (38, 40) для обеспечения первых команд, хранимых в памяти, в центральный процессор для того, чтобы заставить центральный процессор выполнить по меньшей мере одну обычную операцию считывания для считывания данных из запоминающего средства, средство (34) для поддержки записи данных, записанных в запоминающее средством для того, чтобы установить связь между соответствующими областями в первичной области памяти запоминающего средства и вторичной областью памяти запоминающего средства, и средство (42, 60) для определения после получения сигнала начала и после получения команды считывания, относится ли команда считывания к операции дублирующего считывания или к обычной операции считывания, и после выполнения одной из операций дублирующего и обычного считывания запроса записи для считывания данных из одной из первичной и вторичной областей памяти, соответствующих записи, и после выполнения других операций дублирующего и обычного считывания, считывания данных из первичной области памяти, отличающуюся (систему) тем, что средство (42, 60) для определения, относится ли команда считывания к операции дублирующего считывания или к обычной операции считывания содержит средство для просмотра области памяти, из которой происходит команда считывания, для определения идентичности программы, которая инициировала команду считывания.

В дублирующей системе по пятому аспекту средство просмотра содержит средство для опроса стека для определения адресов ячеек памяти, хранимых в стеке и опроса по указанным адресам.

Средство просмотра содержит средство для сравнения кода около адреса ячеек памяти с кодом, ожидаемым из дублирующей программы.

Средство просмотра содержит средство для определения префикса сегмента программы и строки среды, связанной с программой в адресах ячеек памяти и определения имени программы с использованием строки среды.

Шестым аспектом изобретения является основанная на микропроцессоре компьютерная система для использования в компьютерной сети и включающая командную память (14) центральный процессор (12) и запоминающее средство (16), причем основанная на микропроцессоре компьютерная система содержит дублирующую программу для выполнения на компьютерной системе, которая является действующей для выдачи сигнала начала и сигнала окончания и для выдачи по меньшей мере одной команды дублирующего считывания для считывания исходных данных из запоминающего средства, средство (38, 40) для обеспечения первых команд, хранимых в памяти, в центральный процессор для того, чтобы заставить центральный процессор выполнить по меньшей мере одну обычную операцию считывания для считывания данных из запоминающего средства, средство (34) для поддержки записи данных, записанных в запоминающее средство, для того, чтобы установить связь между соответствующими областями в первичной области памяти запоминающего средства и вторичной областью памяти запоминающего средства, и
средство (42, 60) для определения после получения сигнала начала и после получения команды считывания, относится ли команда считывания к операции дублирующего считывания или к обычной операции считывания, и после выполнения одной из операций дублирующего и обычного считывания запроса записи для считывания данных из одной из первичной и вторичной областей памяти, соответствующих записи, и после выполнения других операций дублирующего и обычного считывания, считывания данных из первичной области памяти.

Основанная на микропроцессоре компьютерная система отличается тем, что содержит средство для назначения в дублирующую программу пользователя идентификации процесса или задачи, а средство (42, 60) для определения, относится ли команда считывания к операции дублирующего считывания или к обычной операции считывания содержит средство для определения, запрашивается ли операция считывания пользователем или программой с указанным пользователем идентификацией процесса или задачи.

Седьмым аспектом изобретения является дублирующая система для основанной на микропроцессоре компьютерной системы, включающей командную память (14), центральный процессор (12) и запоминающее средство (16), причем дублирующая система содержит
дублирующую программу для выполнения на компьютерной системе, которая является действующей для выдачи сигнала начала и сигнала окончания и для выдачи по меньшей мере одной команды дублирующего считывания для считывания исходных данных из запоминающего средства, и
средство (38, 40) для обеспечения команд, хранимых в памяти, в центральный процессор для того, чтобы заставить центральный процессор выполнить по меньшей мере одну обычную операцию считывания для считывания данных из запоминающего средства, и
средство открытия файла для открытия файла, считываемого обычной операцией считывания и отказа доступа к файлу другими операциями считывания,
Дублирующая система по седьмому аспекту отличается тем, что содержит средство, связанное с дублирующей программой для блокирования функции отказа средства открытия файла для разрешения одновременного доступа считывания к файлу операцией дублирующего считывания и обычной операцией считывания.

Восьмым аспектом изобретения является дублирующая система для основанной на микропроцессоре компьютерной системы, включающей командную память (14), центральный процессор (12) и запоминающее средство (16), причем дублирующая система содержит
дублирующую программу для выполнения на компьютерной системе, которая является действующей для выдачи сигнала начала и сигнала окончания и для выдачи по меньшей мере одной команды дублирующего считывания для считывания исходных данных из запоминающего средства, и
средство (22) для обеспечения команд, хранимых в памяти, в центральный процессор для того, чтобы заставить центральный процессор выполнить по меньшей мере одну обычную операцию записи для записи данных в запоминающее средство, и
в которой дублирующая программа способна работать с файлами, которые открыты для доступа командами; и
Дублирующая система по восьмому аспекту отличается тем, что содержит средство для задержки выдачи сигнала начала до тех пор, пока не завершится ряд операций записи в дублируемый файл.

Изобретение будет описано ниже со ссылкой на сопроводительные чертежи.

Краткое описание чертежей
Фиг. 1 представляет блок-схему персонального компьютера и кассетного запоминающего устройства на магнитной ленте.

Фиг. 2A и 2B представляют схемы, иллюстрирующие схему распределения системной памяти на уровне операционной системы традиционного персонального компьютера и компьютера, модифицированного для работы в соответствии со способом изобретения, соответственно.

Фиг. 3 представляет блок-схему способа для записи данных в дублирующей операции.

Фиг. 4 представляет блок-схему второго воплощения способа фиг. 3; и
Фиг. 5 представляет блок-схему, иллюстрирующую усовершенствования в воплощении, описанные со ссылкой на фиг. 3 и 4.

Описание предпочтительных воплощений изобретения
Ссылаясь на фиг. 1 чертежей, персональный компьютер 10 обычно содержит центральный процессор 12, командную память (память с произвольной выборкой) 14 и запоминающее средство (несъемное запоминающее устройство в виде накопителя на жестких магнитных дисках) 16. В этом примере для цели обеспечения дублирующего запоминающего средства накопитель на магнитной ленте 18 соединен с компьютером 10.

Часть дублирующего программного приложения сформирована как записывающий процесс, который работает для перехвата обычных операций считывания и записи из и в накопитель на диске 16 соответственно, для того, чтобы управлять потоком данных между накопителем на диске 16 и другими частями компьютера 10.

Перед тем, как начать создавать дублирующую копию файла, записывающий процесс активизируется дублирующим приложением для того, чтобы переориентировать все дисковые средства записи в другую область диска 16, известную как "дельта" область. Таблица соответствия дельта области памяти поддерживается для обеспечения записи всех дисковых операций записи, которые переориентированы в дельта область. Эта таблица поддерживает соответствие между предназначенным местом назначения на диске 16 данных, связанных с каждой дисковой операцией записи, и их фактическим расположением в памяти в дельта-области. Если последующая операция записи происходит в область, которая уже является объектом компоненты в таблице, допускается, чтобы старые данные в дельта-области были перезаписаны новыми данными. Таким образом данные в главной части диска не изменяются, когда создается дублирующая копия, поскольку все изменения переориентируются в дельта-область.

Когда дисковая операция считывания запрашивается дублирующим приложением, она пропускается неизменной, так что данные, возвращенные в дублирующее приложение приходят из исходной области данных в главной части диска. Однако, когда дисковая операция считывания запрашивается другим приложением, записывающий процесс сначала работает для того, чтобы проверить таблицу, чтобы увидеть произошла ли запись на диск в эту область, с тех пор как процесс начал перехватывать операции записи, и если так, операция считывания переориентируется в соответствующую позицию в дельта- области. Если не произошла операция записи, т.е. эта порция данных не изменилась, с тех пор как начался перехват операции записи, тогда операция считывания пропускается неизменной.

Таким образом, изменения в данных, хранимых на диске 16 видятся обычно всеми приложениями, отличными от дублирующего приложения. Дублирующее приложение видит данные, которые не изменятся до тех пор, пока не будет выдана команда остановить записывающий процесс, перехватывающий операции считывания и записи.

Когда операция дублирующего копирования заканчивается, записывающий процесс активизируется для возвращения компьютера к обычной работе. Эта восстановительная фаза достигается применением изменений, сохраненных в дельта-области к соответствующим исходным областям данных в главной части диска 16 с использованием соответствий, хранимых в таблице. В то время как применяются изменения дельта-области, дисковые операции записи продолжают перехватываться, как описано выше. Когда больше нет операций записи, которые не применены к исходной области данных, перехват операций записи останавливается и система работает традиционно.

В качестве дальнейшего усовершенствования, если запись сохранена из непрерывной области памяти, к которой продвинулся дублирующий копирующий процесс, программное обеспечение может разрешить операции записи в главную часть диска 16 для пропускания неизмененными после того, как эта часть диска задублирована, поскольку больше не будет иметь значения, если данные изменятся. Это уменьшает размер таблицы соответствия дельта-области. Также, если область в главной части диска, к которой направлена эта операция, была уже объектом компоненты в таблице соответствия, эта компонента затем может быть удалена, таким образом уменьшая время, требуемое в фазе восстановления.

Изобретение особенно применимо к IBM - совместимым персональным компьютерам, т. е большинству персональных компьютеров, использующих в качестве их центрального процессора процессорные микросхемы 8086, 8088, 80286, 80386, 80486, и Pentium, производимых фирмой Intel, и подобным основанным на микропроцессоре системам. В таких компьютерах всякий раз, когда программа желает получить доступ к файлу, она вызывает стандартную подпрограмму, которая записывает данные на диск. Эта подпрограмма, которая в случае операционной системы DOS известна как Interrupt 21 hex (INT 21h), является неотъемлемой частью операционной системы. Действие, выполняемое подпрограммой, известной как подпрограмма обработки прерывания, зависит от параметров, переданных в подпрограмму после ввода. Эта подпрограмма показана на фиг.2A как составляющая часть операционной системы в схеме распределения системной памяти, причем место ввода INT 21h показано стрелкой. Для выполнения предпочтительного способа в соответствии с изобретением добавляется дополнительный программный код на уровне интерфейса операционной системы, как показано на фиг. 2B. На практике в среде DOS это может быть загружено в компьютер как драйвер устройства, используя файл CONFIG.SYS.

Дополнительное программное обеспечение имеет действие команды для записи данных, замещаемой альтернативным набором команд. Аналогичный способ может быть использован для перехвата команды для считывания данных с диска и для замещения ее также альтернативным набором команд.

Соответствующая последовательность операций, обеспечиваемая альтернативным набором команд, показана на блок-схеме фиг. 3. После получения вызова INT 21h, программа сначала проверяет для того, чтобы определить является ли вызов вызовом записи. Если да, то программа проверяет на шаге 20 для выяснения подразумевается ли, что это является перехваченными вызовами записи. Если нет, данные записываются (шаг 22) в исходную область данных 24.

Если вызовы являются перехваченными, тогда программа проверяет таблицу соответствия дельта-области (шаг 26) для выяснения, сделана ли предварительно запись в эту область исходного файла 24, определенную в терминах указанных записей или частей в файле. Если (шаг 28) запись предварительно сделана, тогда эта часть дельта-области 30, предварительно соответствовавшая этой части исходного файла 24 в таблице соответствия дельта области, перезаписывается с новыми данными (шаг 32).

Если вызовы записи являются перехваченными, но запись не была предварительно сделана в эту часть исходного файла 24, тогда запись добавляется в таблицу и новая область дельта-области назначается для этой порции данных (шаг 34). Данные затем записываются в новую дельта-область (шаг 36).

Если вызов является вызовом считывания, программа проверяет на шаге 38, подразумевается ли, что это является перехваченными вызовами считывания. Если нет, тогда данные считываются из исходного файла 24 (шаг 40).

Если программа перехватывает вызовы считывания, тогда она сначала проверяет на шаге 42 для выяснения, пришел ли вызов из дублирующей прикладной программы. Если вызов действительно пришел из дублирующего приложения, программа переходит к шагу 40 и данные считываются из исходного файла 24.

Если вызов считывания не пришел из дублирующего приложения, программа проверяет таблицу соответствия дельта-области для выяснения, переориентирована ли запись в область исходного файла 24, соответствующую области вызова считывания, в дельта-область (шаг 44). Если она не переориентирована (шаг 46), программа переходит назад к шагу 40 и данные считываются из исходного файла 24. Если считывание переориентировано, данные считываются из соответствующей части дельта-области 30 (шаг 48).

Если вызов INT 21h не является ни вызовом записи, ни вызовом считывания, тогда он возвращается в обычную обрабатывающую подпрограмму INT 21h.

Во втором воплощении изобретения, когда команды считывания и записи перехватываются во время записывающего процесса, вместо запоминания измененных данных в дельта-области, когда выполняется первая запись в конкретную область файла, исходные данные сохраняются в дельта-области и разрешается изменять исходный файл. Выполняется ввод в таблицу соответствия, которая указывает на исходное содержание этой области исходного файла, который теперь хранится в дельта-области. Любая последующая запись в ту же область файла затем игнорируется записывающим процессом. Запросы считывания из дублирующего приложения затем переориентируются в дельта-область, если таблица соответствия показывает, что эта область исходного файла перезаписана.

На фиг. 4 представлено второе воплощение в блок-схеме. Схема аналогична схеме фиг. 3, причем шаги, имеющие одинаковую ссылочную цифру, обозначают аналогичные действия.

Различиями между фиг. 3 и фиг. 4 является следующее.

На шаге 60, если перехват считывания является активным (шаг 38) и считывание является не из дублирующего приложения, данные считываются из исходной области данных. Это противоположно шагу 42 на фиг. 3. Дополнительный шаг 62 вставлен после шага 28, который считывает данные из исходной области данных, перед тем, как она перезаписывается в первый раз.

Шаг 36 фиг.3 видоизменен для образования нового шага 64, который содержит дополнительную запись в дельта-область данных, считанных на шаге 62.

Шаг 32 видоизменен для образования нового шага 66, который больше не переориентирует данные для перезаписывания дельта-области, а вместо этого, записывает данные поверх исходной области данных.

Этот второй способ медленнее, чем первый, поскольку каждый запрос записи файла становится считыванием и двумя записями, как противоположный единственной переориентированной записи первого способа. Однако, второй способ не требует, чтобы изменения, сохраненные в дельта-области были применены к исходному файлу, как только завершено дублирование. Таблица соответствия дельта-области и данные, хранимые в дельта- области могут просто быть отброшены. Кроме того, из-за этой разницы не требуется принимать меры предосторожности для восстановления от фатального состояния (как, например, отказ питания), происходящего, когда изменения дельта-области не полностью применены к исходным данным.

В случае, где способ, описанный выше образует часть дублирующего приложения, перехват операций считывания может происходить внутри дублирующего приложения и не требует вовлечения использования подпрограммы операционной системы.

Детальное применение системы, как описано со ссылкой на фиг.3 и фиг. 4, находится в компетенции специалиста в данной области и нет необходимости его полного описания. Если применяется в MS DOS, читатель отсылается к Техническому справочному руководству IBM DOS для объяснения материала, если требуется.

Изобретение предпочтительно применяется как часть самой операционной системы, или являясь неотъемлемой частью исходного кода операционной системы, или образуя расширение к нему в виде драйвера устройства. В случае Intel 80386 (и более высоких) центральных процессоров изобретение обычно работало бы на самом высоком уровне привилегии, известном как "кольцо О", где доступ ко всем элементам в системе является неограниченным.

Однако изобретение не полагается на какую-либо конкретную архитектуру центрального процессора для того, чтобы работать. Оно может быть легко применено на других системах, например, на компьютерах Macintosh, которые используют серии центральных процессоров 68000 и PowerPC.

Изобретение может быть использовано в многопользовательской среде. В этом случае предпочтительно, чтобы изобретение использовалось в среде с управлением доступом к файлам. Изобретение будет гарантировать, что сделана неискаженная дублирующая копия, в то время как остальная система полностью эффективно работает, также как она работала бы, если бы не присутствовало изобретение. При отсутствии управления доступом к файлам имеется опасность искажения файла, независимо от того, используется ли изобретение или нет.

Изобретение особенно применимо к файлам, создаваемым базами данных, такой как dBase, например, которые могут быть большими и разделяются на записи. Записи, которые корректируются, записываются в таблице, и обе версии, скорректированная и исходная, поддерживаются до тех пор, пока не завершится дублирование. Таблица может содержать, например, начальную точку в файле, в которой начинаются корректируемые данные, и значение длины, соответствующее количеству данных, которые корректируются. Альтернативно таблица может содержать идентификацию в терминах опознавания корректируемых записей.

В многопользовательской или сетевой ситуации, когда среда компьютера позволяет идентификацию конкретного пользователя, который желает выполнить дублирование, способ может также включать шаги распознавания пользователя и дублирует только файлы этого пользователя таким образом, как описано выше. Таким образом, нет необходимости перехватывать все входные сообщения данных, а только те, относящиеся к этому пользователю.

Идентификация источника запроса
Способы дублирования, описанные выше, которые способны работать на файлах, которые открыты, полагаются на способность различать запросы считывания, происходящие из дублирующего приложения и запросы, происходящие из других источников, т. е. обычных приложений. Это возникает на шаге 42 на фиг.3 или шаге 60 на фиг. 4.

При условии открытого файла способ обеспечивается как неотъемлемая часть дублирующего приложения, источник запросов считывания может быть легко определен, поскольку дублирующее приложение "знает" какие запросы он выдает. Однако проблема возникает, если дублирующее приложение уже существует, например, в виде стандартного готового пакета или иного, в виде, в котором он не может быть изменен для приспосабливания способа открытого файла, который вместо этого должен быть применен путем дополнительного кода.

В соответствии с первым усовершенствованием запроса из дублирующего приложения различаются от других запросов отслеживанием цепочки событий (т. е. просмотром назад или "вверх") для идентификации области кода, который иниицировал запрос считывания. В следующем примере такого способа опять будет использована операционная система MS DOS в качестве иллюстрации, однако подобные методы могут быть применены к другим средам операционной системы. Запрос считывания инициируется вызовом INT 21h, который обычно шел бы прямо в подпрограмму обработки прерывания. Подпрограмма обработки прерывания обычно не имеет сведений о вызывающей программе. Ей только сообщается выполнить определенную функцию и затем возвратиться в вызывающую программу. В центральных процессорах Intel, упомянутых выше, которые используются в средах DOS, центральный процессор автоматически помещает адрес возврата вызывающей программы в стек и переходит к первой команде подпрограммы прерывания. Когда функция выполнена, обработчик прерывания выдает команду возврата прерывания, которая заставляет центральный процессор отыскивать адрес возврата из стека и продолжать выполнение в адресе возврата. Следовательно, обработчику прерывания не требуется иметь, и действительно, он не имеет сведений о вызывающей программе.

В системе, описанной выше со ссылкой на фиг. 3 и фиг. 4, подпрограмма прерывания INT 21h замещается альтернативным набором команд. В дополнение к функциям, описанным в предшествующем, эти команды могут быть приспособлены для того, чтобы дополнительно определять источник запроса, как описывается далее.

В этом усовершенствовании обработчик прерывания исследует стек для определения адреса возврата. В случае центральных процессоров Intel серий 80Х86 сдвиг кода и сегмент вызывающей программы будут запомнены как первое и второе слово наверху стека, т.е. в SS:[SP] и SS:[SP +2] соответственно. Схема шагов, включенных в MS DOS -применение этого усовершенствования дана как приложение к этому описанию.

Подпрограмма может затем проверить источник запроса, как задано стеком, и определить программу, которая сделала вызов, рядом возможных путей, из которых следующие являются примерами.

I) Поскольку код в каждой версии готовой к использованию программы один и тот же, могут быть исследованы различные характеристики кода около адреса возврата для того, чтобы определить, является ли вызывающая программа известной дублирующей программой. Код около адреса возврата сравнивается с кодом ожидаемым из дублирующей программы, которая используется, для того, чтобы определить, имеется ли соответствие, указывающее, что вызов сделан дублирующей программой.

II) Альтернативно может быть установлено имя программы путем ссылки в префикс сегмента программы (PSP) и строку среды, связанных с каждой загруженной программой. Из стека сегмент известен и префикс сегмента программы может быть считан. Это позволит определить местоположение строки среды и, следовательно имя программы. Этот метод полностью описан в учебнике "Недокументированная DOS", Эндрю Шулман и др., изд. Эддисон-Уэсли, 2-ая ред. , 1993, ISBN 0-201-63287-Х, см. главу 7, особенно стр. 356-359.

В случае операционной системы, отличной от MS DOS идентичность вызывающей программы может быть определена из других параметров стека, включая номера связей, номера идентичных задач, номера процессов и тому подобных. В определенных операционных системах глобальные переменные могут также быть использованы для установления имени процесса.

Способ полагается на распознавание некоторых известных характеристик вызывающей программы, таких как имя программы, имя процесса (или связи) или распознавание некоторой "сигнатуры" в коде программы, которая может быть известной последовательностью байтов, просмотром назад в вызывающей программе через стек.

В соответствии со вторым усовершенствованием, которое может быть использовано в среде сервера сети, идентичность вызывающих программ определяется резервированием имени конкретного пользователя только для целей дублирования. Вместо установления идентичности программы распознается имя пользователя (уникальная идентификация пользователя), и предполагается, что все запросы от зарезервированного пользователя поступают из дублирующей программы.

Поскольку от каждого пользователя требуется войти в сервер перед тем, как предоставляется доступ к файлам, это является эффективным способом, конечно, при условии, что имя пользователя всегда используется для дублирования, а не для какой-либо другой цели. Этот способ не требует предварительных сведений о конкретной дублирующей программе. Аналогичным образом может быть запрошена идентификация процесса или задачи, специфическая для дублирующего процесса, для определения, является ли это дублирующим процессом или другим приложением, которое запрашивает считывание. Две задачи с одинаковой идентификацией (id) никогда не существуют в одно и то же время, таким образом, они однозначно идентифицируют процессы в любой момент (несмотря на то, что номера задач используются повторно).

Предшествующее описано применительно к запросам считывания, но также возможно применить ту же процедуру к запросам записи. В случае, если дублирующая программа выдает запрос записи, тогда должны быть предприняты соответствующие действия, которые обычно будут включать некоторую подпрограмму ошибок, так как дублирующее приложение не должно обычно выдавать запросы записи в обработчик прерывания.

Как описано выше, дополнительные команды сначала просматривают для выяснения, является ли вызов прерывания запросом считывания (или записи) и, если является, просматривают для выяснения, был ли выдан запрос дублирующей программой или другим приложением. В принципе порядок этих двух операций мог бы быть, тем не менее, обратным и источник вызова мог бы определяться сначала перед тем, как исследуется тип вызова.

Гарантированный доступ к файлу
Способ дублирования открытого файла, описанный со ссылкой на фиг. 3 и фиг. 4, предполагает, что доступ считывания к файлам может всегда быть получен дублирующим приложением. На практике это может быть не всегда верно, поскольку файл может быть уже открыт для исключительного считывания/записи, используемого другими приложениями и, следовательно, доступ может быть отказан дублирующему приложению.

Настоящий изобретатель принял во внимание, что поскольку дублирующее приложение не должно никогда записывать в файлы, которые оно дублирует и поскольку способ открытых файлов, описанный выше, будет гарантировать, что копия файла, полученная дублирующим приложением не изменится во время ее дублирования, действительно полностью безопасно для дублирующего приложения иметь доступ считывания к файлу.

Доступ для целей дублирования может быть обеспечен следующим образом.

Операционная система обычно поддерживает таблицу всех открытых файлов, которая включает такую информацию, как идентификаторы оперирования с файлами, текущие указатели сдвига файла и права доступа, сохраненные для каждого открытого файла.

В случае операционной системы MS DOS файлы открываются с использованием функции INT 21h. Таким образом, запросы открытия файла могут быть идентифицированы добавлением к тому же альтернативному набору команд, как описано выше. Посредством использования методов идентификации источника запроса, описанных в предыдущем разделе, или непосредственной командой из дублирующей программы, может быть установлено, что запрос открытия файла был сделан дублирующим приложением и, если так, таблица открытых файлов может временно обрабатываться для гарантирования того, что доступ к файлу предоставляется, даже, если он обычно не разрешен. Когда доступ предоставлен, но перед возвратами обработчика прерывания, таблица восстанавливается к ее предыдущему состоянию, так, что последующим запросам из других приложений будет отказан доступ как обычный. Запросы считывания из дублирующего приложения будут затем удовлетворены, даже если исходное приложение полагает, что оно имеет исключительное использование файла.

В MS DOS таблица открытых файлов известна как системная таблица файлов. Системная таблица файлов является таблицей, содержащей компоненту для каждого открытого файла. Каждая компонента содержит способ доступа, предоставленный для доступа к файлу. Дополнительные команды, которые необходимы, модифицируют системную таблицу файлов, когда дублирующее приложение требует доступ к открытому файлу, путем временного изменения соответствующей компоненты системной таблицы файлов для создания впечатления, что права доступа, которые обычно не допускали бы доступ дублирующим приложением, еще не предоставлены. Перед возвращением в вызывающую программу права доступа в системной таблице файлов возвращаются к их исходному состоянию.

Системная таблица файлов полностью описана в учебнике "Недокументированная DOS", на который дана ссылка выше, см. главу 8, стр. 465-469 и 490-494. Конкретно, в случае операционной системы DOS, шаги, требуемые в обработчике прерывания INT 21h для того, чтобы гарантировать доступ дублирующему приложению, показаны на фиг. 5.

Ссылаясь на фиг. 5, после получения команды открытия файла, как вызова INT 21h, на шаге 70 производится определение относительно источника запроса с использованием одного из способов, описанных в предыдущем разделе. Если это так, затем производится определение на шаге 72 относительно того, открыт ли уже файл, к которому требуется доступ. Если ответом на любой из этих вопросов является "нет", тогда программа возвращается в обычную подпрограмму обработчик INT 21h, шаг 74. Если ответом на оба вопроса является "да", тогда выполняется специальный код, описанный на фиг. 5.

Это происходит следующим образом. Каждая компонента в системной таблице файлов содержит способ доступа, предоставленный запрашивающему процессу ("атрибут способа доступа"). На шаге 76 текущий или исходный атрибут способа доступа соответствующей компоненты в системной таблице файлов сохраняется. На шаге 78 атрибут способа доступа затем изменяется на состояние "никому не отказывать", так что в результате системная таблица файлов приводится в недействующее состояние, в котором она не останавливает множественный доступ к открытому файлу. Теперь обычный обработчик прерываний INT 21h может быть вызван на шаге 80 для того, чтобы открыть файл для дублирующей программы обычным образом. Когда дублирующая программа закончила с файлом, исходный, ранее сохраненный атрибут способа доступа, возвращается в системную таблицу файлов (шаг 82). Наконец, выполнение возвращается в вызывающую программу с использованием команды IRET, которая считывает стек (шаг 84).

Шаги, данные в Приложении предполагают, что используется это усовершенствование, обеспечивающее гарантированный доступ к файлу.

Определенный способ, которым изменяется системная таблица файлов неважен и могли бы быть использованы различные способы. Предпочтительный способ манипулирует полями совместного использования "share_prev_sft" и "share_net_ machine" (см. недокументированную DOS, стр. 478). С помощью манипулирования этими полями, например, с помощью изменения значения "отказать считыванию" на "никому не отказывать" может быть вызван доступ для предоставлямой дублирующей программы. Альтернативно, части утилиты SHARE, которая является частью MS DOS, могли бы быть изменены так, что доступ предоставляется (см. цитированный учебник, стр. 490-494).

Аналогичный способ мог бы быть использован в другой среде операционной системы, например, Novell NetWare.

Установление "хорошего" состояния
Способ открытых файлов, описанный выше со ссылкой на фиг. 3 и фиг. 4, гарантирует, что файл, открытый для дублирования не изменяется во время выполнения дублирования. Однако он не устанавливает, что файл находится в "хорошем" состоянии в момент начала дублирования. Например, другое приложение могло бы записывать входное сообщение, которое включает ряд операций записи, некоторые из которых выполнены, а некоторые из которых не выполнены. Поскольку дублирующий способ работает на открытых файлах, поэтому возможно для дублирующего приложения получать копию файла, содержащего частичное входное сообщение.

Изобретатель принял во внимание, что с помощью задержки запроса открытия файла из дублирующего приложения до такого времени, когда можно определить, что входное сообщение не выполняется, может быть обеспечено "хорошее состояние" дублирующей копии файла. Так как большинство сетевых операционных систем являются по своей сущности многосвязными, то есть сконструированы для выполнения более чем по одному процессу и способность задерживать один процесс, пока другой завершается, является общим средством таких операционных систем, это может быть легко достигнуто. Обычно не имеет значения, если дублирующая операция задерживается на короткое время, так как пользователи обычно не зависят от ее завершения, особенно если файлы могут дублироваться, пока открыты. Задержка в запросе открытия файла соответствует задержке сигнала начала, который начинает выполнение подпрограмм, описанных со ссылкой на фиг. 3 и фиг. 4.

Второй способ применим, где отсутствует неотъемлемое средство для поддержания целостности входных сообщений. Тогда может быть использован альтернативный способ установления целостности входных сообщений. Входные сообщения обычно происходят в течение относительно короткого периода времени с более длинными временными интервалами, происходящими между входными сообщениями. Прикладная программа будет обычно доводить до конца все операции записи, требуемые для одного входного сообщения в быстрой последовательности, т. к. иначе существует опасность, что отказ питания или подобная фатальная проблема станет причиной того, что данные диска будут содержать частичное входное сообщение, которое при повторном запуске системы будет обнаружено как испорченный файл. Очевидно, чем короче период, в течение которого входное сообщение записывается на диск, тем менее вероятно, что несвязанная фатальная проблема (как например, отказ питания) случится во время этого входного сообщения. С помощью измерения периода времени между последовательными операциями записи возможно составить оценочное мнение, относительно состояния входных сообщений файла. Например, если не произошло записей, скажем, в последнюю минуту, очень невероятно, что приложение находится на части пути в течение записи одного входного сообщения. С помощью эмпирической подстройки периода времени бездеятельности к характеристикам приложений может быть установлен очень надежный показатель целостности входных сообщений.

Таким образом, описаны различные усовершенствования в способы, проиллюстрированные со ссылкой на фиг. 3 и фиг. 4, а именно, различные способы для идентификации источника запроса, способ для обеспечения гарантированного доступа к файлу и способы для обеспечения того, что файл, подлежащий дублированию, находится в "хорошем" состоянии перед тем, как происходит дублирование. Эти различные усовершенствования предпочтительно используются в сочетании. Однако они могут быть использованы выборочно и независимо, и нет необходимости, чтобы они были применены одновременно в одном и том же приложении.

Изобретение описано главным образом в терминах операционной системы DOS, более конкретно MS DOS. Однако изобретение не полагается на какую-либо конкретную архитектуру центрального процессора для того, чтобы работать. В частности, оно не ограничивается операционной системой DOS и могло бы быть применено в Novell NetWare, OS/2 или UNIX и на компьютерах Macintosh, которые используют центральные процессоры серий 6800 и PowerPC.


Формула изобретения

1. Способ работы основанной на микропроцессоре компьютерной системы, включающей командную память, центральный процессор и запоминающее средство, согласно которому обеспечивают дублирующий процесс, выполняющийся на компьютерной системе, который является действующим для выдачи сигнала начала и сигнала окончания и для выдачи, по меньшей мере, одной команды дублирующего считывания для считывания исходных данных из запоминающего средства, обеспечивают первые команды, хранимые в памяти, в центральном процессоре для того, чтобы заставить центральный процессор выполнить, по меньшей мере, одну обычную операцию считывания для считывания данных из запоминающего средства, причем дублирующий процессор способен работать с файлами, которые открыты для доступа командами, поддерживают запись данных, записанных в запоминающем средстве, для того, чтобы установить связь между соответствующими областями в первичной области памяти запоминающего средства и вторичной областью памяти запоминающего средства, определяют после получения сигнала начала и после получения команды считывания, относится ли команда считывания к операции дублирующего считывания или к обычной операции считывания, и после выполнения одной из операций дублирующего и обычного считывания запрашивают запись для считывания данных из одной из первичной и вторичной областей памяти, соответствующих записи, и после выполнения другой из операций дублирующего и обычного считывания считывают данные из первичной области памяти, отличающийся тем, что при определении того, относится ли команда считывания к операции дублирующего считывания или к обычной операции считывания, просматривают область памяти, из которой происходит команда считывания, для определения идентичности программы, которая инициировала команду считывания.

2. Способ по п.1, отличающийся тем, что при просмотре области памяти опрашивают стек для определения адресов ячеек памяти, хранимых в стенке, и опрашивают по указанным адресам ячейки памяти.

3. Способ по п. 2, отличающийся тем, что при просмотре области памяти сравнивают код около адреса ячейки памяти с кодом, ожидаемым из дублирующей программы.

4. Способ по п.2, отличающийся тем, что при просмотре в области памяти определяют префикс сегмента программы и строку среды, связанную с программой в указанных адресах ячеек памяти, и определяют имя программы, используя указанную строку среды.

5. Способ работы основанный на микропроцессоре компьютерной системы, включающей командную память, центральный процессор и запоминающее средство, в компьютерной сети, согласно которому обеспечивают дублирующий процесс, выполняющийся на компьютерной системе, который является действующим для выдачи сигнала начала и сигнала окончания и для выдачи, по меньшей мере, одной команды дублирующего считывания для считывания исходных данных из запоминающего средства, обеспечивают первые команды, хранимые в памяти, в центральном процессоре для того, чтобы заставить центральный процессор выполнить, по меньшей мере, одну обычную операцию считывания для считывания данных из запоминающего средства, поддерживают запись данных, записанных в запоминающем средстве, для того, чтобы установить связь между соответствующими областями в первичной области памяти запоминающего средства и вторичной областью памяти запоминающего средства, и определяют после получения сигнала начала получения команды считывания, относится ли команда считывания к операции дублирующего считывания или к обычной операции считывания, и после выполнения одной из операций дублирующего и обычного считывания запрашивают запись для считывания данных из одной из первичной и вторичной областей памяти, соответствующих записи, и после выполнения другой из операций дублирующего и обычного считывания считывают данные из первичной области памяти, отличающийся тем, что назначают в дублирующий процесс пользователя идентификацию процесса или задачи, а при определении того, относится ли команда считывания к операции дублирующего считывания или к обычной операции считывания, определяют, запрашивается ли операция считывания пользователем или программой с указанным пользователем, идентификацией процесса или задачи.

6. Способ работы основанной на микропроцессоре компьютерной системы, включающей командную память, центральный процессор и запоминающее средство, согласно которому обеспечивают дублирующий процесс, выполняющийся на компьютерной системе, который является действующим для выдачи сигнала начала и сигнала окончания и для выдачи, по меньшей мере, одной команды дублирующего считывания для считывания исходных данных из запоминающего средства, и обеспечивают команды, хранимые в памяти, в центральном процессоре для того, чтобы заставить центральный процессор выполнить, по меньшей мере, одну обычную операцию считывания для считывания данных из запоминающего средства, и обеспечивают средство открытия файла для открытия файла, считываемого обычной операцией считывания, и отказа доступа к файлу другими операциями считывания, отличающийся тем, что обеспечивают средство, связанное с дублирующим процессом, которое блокирует функцию отказа средства открытия файла для разрешения одновременного доступа считывания к файлу дублирующей операцией считывания и обычной операцией считывания.

7. Способ по п.6, отличающийся тем, что компьютерной системой поддерживают таблицу открытых файлов, а функцию отказа блокируют временным обратимым изменением таблицы.

8. Способ работы основанной на микропроцессоре компьютерной системы, включающей командную память, центральный процессор и запоминающее средство, согласно которому обеспечивают дублирующий процесс, выполняющийся на компьютерной системе, который является действующим для выдачи сигнала начала и сигнала окончания и для выдачи, по меньшей мере, одной команды дублирующего считывания для считывания исходных данных из запоминающего средства, обеспечивают команды, хранимые в памяти, в центральном процессоре для того, чтобы заставить центральный процессор выполнить, по меньшей мере, одну обычную операцию записи для записи данных в запоминающее средство, причем дублирующий процесс способен работать с файлами, которые открыты для доступа командами, отличающийся тем, что задерживают выдачу сигнала начала до тех пор, пока не завершат ряд операций записи в дублируемый файл.

9. Дублирующая система для основанной на микропроцессоре компьютерной системы, включающая командную память (14), центральный процессор (12) и запоминающее средство (16), содержащая дублирующую программу для выполнения на компьютерной системе, которая является действующей для выдачи сигнала начала и сигнала окончания и для выдачи, по меньшей мере, одной команды дублирующего считывания для считывания исходных данных из запоминающего средства, средство (38, 40) для обеспечения первых команд, хранимых в памяти, в центральный процессор для того, чтобы заставить центральный процессор выполнить, по меньшей мере, одну обычную операцию считывания для считывания данных из запоминающего средства, средство (34) для поддержки записи данных, записанных в запоминающее средство, для того, чтобы установить связь между соответствующими областями в первичной области памяти запоминающего средства и вторичной областью памяти запоминающего средства, и средство (42, 60) для определения после получения сигнала начала и после получения команды считывания, относится ли команда считывания к операции дублирующего считывания или к обычной операции считывания, и после выполнения одной из операций дублирующего и обычного считывания запроса записи для считывания данных из одной из первичной и вторичной областей памяти, соответствующих записи, и после выполнения другой из операций дублирующего и обычного считывания, считывания данных из первичной области памяти, отличающаяся тем, что средство (42, 60) для определения, относится ли команда считывания к операции дублирующего считывания или к обычной операции считывания, содержит средство для просмотра области памяти, из которой происходит команда считывания, для определения идентичности программы, которая инициировала команду считывания.

10. Система по п.9, отличающаяся тем, что средство просмотра содержит средство для опроса стека для определения адресов ячеек памяти, хранимых в стеке, и опроса по указанным адресам ячеек памяти.

11. Система по п.10, отличающаяся тем, что средство просмотра содержит средство для сравнения кода около адресов ячеек памяти с кодом, ожидаемым из дублирующей программы.

12. Система по п.10, отличающаяся тем, что средство просмотра содержит средство для определения префикса сегмента программы и строки среды, связанной с программой, в указанных адресах ячеек памяти и определения имени программы с использованием строки среды.

13. Основанная на микропроцессоре компьютерная система для использования в компьютерной сети и включающая командную память (14), центральный процессор (12) и запоминающее средство (16), причем основанная на микропроцессоре компьютерная система содержит дублирующую программу для выполнения на компьютерной системе, которая является действующей для выдачи сигнала начала и сигнала окончания и для выдачи, по меньшей мере, одной команды дублирующего считывания для считывания исходных данных из запоминающего средства; средство (38, 40) для обеспечения первых команд, хранимых в памяти, в центральный процессор для того, чтобы заставить центральный процессор выполнить, по меньшей мере, одну обычную операцию считывания для считывания данных из запоминающего средства, средство (34) для поддержки записи данных, записанных в запоминающее средство, для того, чтобы установить связь между соответствующими областями в первичной области памяти запоминающего средства и вторичной областью памяти запоминающего средства, и средство (42, 60) для определения после получения сигнала начала и после получения сигнала начала и после получения команды считывания, относится ли команда считывания к операции дублирующего считывания или к обычной операции считывания, и после выполнения одной из операций дублирующего и обычного считывания запроса записи для считывания данных из одной из первичной и вторичной областей памяти, соответствующих записи, и после выполнения другой из операций дублирующего и обычного считывания, считывания данных из первичной области памяти, отличающаяся тем, что содержит средство для назначения в дублирующую программу пользователя идентификации процесса или задачи, а средство (42, 60) для определения, относится ли команда считывания к операции дублирующего считывания или к обычной операции считывания, содержит средство для определения, запрашивается ли операция считывания пользователем или программой с указанным пользователем, идентификацией процесса или задачи.

14. Дублирующая система для основанной на микропроцессоре компьютерной системы, включающей командную память (14), центральный процессор (12) и запоминающее средство (16), причем дублирующая система содержит дублирующую программу для выполнения на компьютерной системе, которая является действующей для выдачи сигнала начала и сигнала окончания и для выдачи, по меньшей мере, одной команды дублирующего считывания для считывания исходных данных из запоминающего средства, и средства (38, 40) для обеспечения команд, хранимых в памяти, в центральный процессор для того, чтобы заставить центральный процессор выполнить, по меньшей мере, одну обычную операцию считывания для считывания данных из запоминающего средства, и средство открытия файла для открытия файла, считываемого обычной операцией считывания и отказа доступа к файлу другими операциями считывания, отличающаяся тем, что содержит средство, связанное с дублирующей программой для блокирования функции отказа средства открытия файла для разрешения одновременного доступа считывания к файлу операцией дублирующего считывания и обычной операцией считывания.

15. Система по п.14, отличающаяся тем, что компьютерная система поддерживает таблицу открытых файлов и в которой функция отказа блокируется временным обратимым изменением таблицы.

16. Дублирующая система для основанной на микропроцессоре компьютерной системы, включающей командную память (14), центральный процессор (12) и запоминающее средство (16), причем дублирующая система содержит дублирующую программу для выполнения на компьютерной системе, которая является действующей для выдачи начала и сигнала окончания и для выдачи, по меньшей мере, одной команды дублирующего считывания для считывания исходных данных из запоминающего средства, и средство (22) для обеспечения команд, хранимых в памяти, в центральный процессор для того, чтобы заставить центральный процессор выполнить, по меньшей мере, одну обычную операцию записи для записи данных в запоминающее средство, и в которой дублирующая программа способна работать с файлами, которые открыты для доступа командами, отличающаяся тем, что содержит средство для задержки выдачи сигнала до тех пор, пока не завершится ряд операций записи в дублируемый файл.

РИСУНКИ

Рисунок 1, Рисунок 2, Рисунок 3, Рисунок 4, Рисунок 5, Рисунок 6, Рисунок 7



 

Похожие патенты:

Изобретение относится к области компьютерных системных шин, а именно к инициализации средств в системе шин

Изобретение относится к отвечающей системе, то есть способной к работе в реальном масштабе времени и толерантной к ошибкам системе для обработки сигналов, с множеством блоков обработки данных, которые соединены друг с другом через блоки передачи данных

Изобретение относится к вычислительной технике, а именно к сетям связи, реализуемым на компьютерах любых типов, и может быть использовано для защиты информационных ресурсов корпоративных сетей связи

Изобретение относится к вычислительной технике, в частности к вычислительным системам, использующим управление вычислениями от потока данных

Изобретение относится к системам информационного обмена с портативными блоками обработки данных

Изобретение относится к вычислительной технике и предназначено для сбора информации от внешних источников и последующей ее обработки для выработки сигналов управления различным корабельным оборудованием, в частности корабельным оружием

Изобретение относится к вычислительной технике, а именно к информационным вычислительным системам, реализуемым на компьютерах любых типов, и может быть использовано для защиты информационных ресурсов как рабочих станций, так и серверов

Изобретение относится к АТМ системам, которые используют перекрестную АТМ связь для обеспечения виртуальных соединений

Изобретение относится к системе обработки данных реализуемых библиотек, а именно к созданию и обслуживанию многочисленных версий документов в пределах системы обработки данных реализуемой библиотеки

Изобретение относится к вычислительной технике и может быть использовано для осуществления мультиплексирования/демультиплексирования данных межпроцессорного обмена

Изобретение относится к вычислительной технике и может быть использовано для повышения надежности комбинационных дискретных устройств

Изобретение относится к вычислительной технике и может быть использовано вТспециализированных вычислительных системах и информационно-измерительных комплексах

Изобретение относится к контрольно-измерительной технике и может быть использовано в устройствах самодиагностики измерительных систем и средств автоматизированного контроля

Изобретение относится к вычислительной технике и может быть использовано при построении цифровых вычислительных машин повышенной надежности

Изобретение относится к автоматике и вычислительной технике и используется для поиска неисправностей в логических блоках

Изобретение относится к автоматизированным системам управления и может быть использовано при создании адаптивных систем управления технологическими процессами

Изобретение относится к вычислительной технике и может быть использовано в устройствах для контроля и поиска неисправностей

Изобретение относится к автоматике и вычислительной технике и предназначено для обнаружения и локализации неисправностей в блоках управления

Изобретение относится к вычислительной технике и автоматике и может быть использовано в автоматизированных системах контроля для автоматической проверки качества электрического монтажа с управлением от ЭВМ

Изобретение относится к автоматическому контролю и управлению смежными техническими объектами с дискретным характером технологического цикла и может быть использовано для распознавания критических ситуаций, связанных с неадекватной динамикой контролируемых процессов

Изобретение относится к вычислительной технике и может быть использовано для построения высокопроизводительных вычислительных систем для реализации алгоритмов, допускающих распараллеливание на уровне команд
Наверх