СПОСОБ СОХРАНЕНИЯ ПАКЕТОВ ДАННЫХ С ИСПОЛЬЗОВАНИЕМ ТЕХНОЛОГИИ УКАЗАТЕЛЯ
METHOD OF STORING DATA PACKETS USING POINTER TECHNIQUE

Область техники, к которой относится изобретение
Изобретение относится к области сетевых технологий, более конкретно - к способу сохранения пакетов данных.
Уровень техники
С 90-х гг. прошлого столетия сетевые технологии получили быстрое развитие. Стандартные системы, используемые в сетях, постепенно улучшались. Применение новой технологии постоянно снижает цену продуктов. Сетевая технология приводит к повышению уровня жизни людей благодаря построению национальной базовой информационной сети и становится новым элементом потребления, помимо расходов на услуги связи.
Технология связи от точки к точке используется в обычной телефонной сети, в которой один канал связи полностью занимает пользователь монопольным образом, без учета того, разговаривает ли пользователь по телефону. Поэтому такая связь имеет низкую эффективность, и система связи имеет большую сложность, недостаточную гибкость и высокую стоимость. В сетевых технологиях для передачи данных используют режим пакетной передачи данных, в котором все пользователи совместно используют всю сеть передачи данных, и другие пользователи могут использовать канал передачи данных, если кто-то из пользователей его не использует. Таким образом можно построить высокоэффективные простые системы передачи данных с использованием сетевой технологии. В результате продукты сетевой технологии быстро развиваются.
Основу сетевого продукта составляет обмен пакетами данных. Процесс обмена пакетами данных включает в себя следующее: вначале пакет данных сохраняют; затем пакеты данных обрабатывают, используя служебные байты; выполняют поиск маршрута, и после определения направления маршрута их извлекают; и затем пакеты данных передают. Для сохранения принимаемых пакетов данных в продукте требуется большой модуль буфера. Способ обработки пакетов данных с использованием сетевой технологии имеет следующие характеристики. Во-первых, требуется обеспечить быструю обработку операции сохранения и считывания, поскольку необходимо обеспечить обмен массой пакетов данных в течение короткого времени. Во-вторых, выполняют обмен разными типами пакетов данных, поэтому их требуется вначале классифицировать до того, как будет возможно последующее сохранение. Кроме того, длина каждого пакета данных является случайной, что требует выполнять ее определение, поскольку минимальная длина может составлять 64 байта и максимальная длина может составлять 9600 байт.
Как правило, используют следующие обычные способы сохранения пакетов данных.
Один из способов предшествующего уровня техники состоит в том, что данные пакета данных постоянно сохраняют в виде непрерывных модулей адреса.
Другой способ предшествующего уровня техники состоит в том, что пакеты данных сохраняют, используя простую технологию указателя, в которой пакеты данных сохраняют в соответствии со значением указателя.
Еще один способ предшествующего уровня техники состоит в том, что для сохранения пакетов используют комбинацию технологии указателя и непрерывного сохранения.
Однако ряд недостатков указанных выше способов являются трудно разрешимыми. Пакеты данных имеют существенно переменную длину. Обычно требуется назначать пространство для хранения в соответствии с максимальной длиной, при непрерывном сохранении пакета данных по той причине, что длина пакета данных неизвестна. Поэтому при использовании способа предшествующего уровня техники происходит существенная потеря пространства хранения, если назначенное адекватное пространство используют для сохранения малых пакетов. В способе в соответствии с предшествующим уровнем техники существует другая ситуация, которая также приводит к существенной потере пространства памяти. Пакеты данных могут направляться в разные направления после их поступления в порт, при этом пакеты данных, принятые через порт, также могут быть переданы в разные направления. Пакеты данных требуется заранее классифицировать в соответствии с разными направлениями передачи пакетов данных и дополнительно классифицировать в соответствии с типами пакетов данных перед их сохранением. Для исключения смешивания из-за использования различных типов пакетов данных все пространство хранения должно быть разделено на множество подобластей, предназначенных для сохранения различных типов пакетов данных передаваемых в разные направления. Чем больше портов предусмотрено, тем большее количество вспомогательных областей выделяют. Однако пространство для каждой выделенной вспомогательной области назначают в соответствии с наибольшим количеством пакетов данных в буфере. Таким образом, обширное пространство в подобластях невозможно эффективно использовать, если количество пакетов данных в подобластях намного меньше. Часто возникает повреждение отдельных битов данных в момент возникновения неожиданной помехи, такой как удар молнии, излучение и изменение температуры и так далее, во время работы схемы. В результате система может прекратить свою работу из-за отказа операции сохранения, если ошибка бита данных произойдет при обработке значений указателя, поскольку система, в результате, не сможет найти другие данные.
Сущность изобретения
Цель настоящего изобретения состоит в создании способа сохранения пакетов данных, используя технологию указателя, для преодоления недостатков, состоящих в низкой эффективности при сохранении пакетов данных, плохой доступности сохраняемого пакета, отрицательном влиянии на систему ошибки в содержании пакета данных, плохой надежности всей операции модуля (блока) сохранения и влиянии на эффективность сохранения количества и типов пакетов данных.
Способ сохранения пакетов данных, в котором используется технология указателя, содержит: разделение пространства сохранения на рабочую область и резервную область, каждая из которых используется для сохранения пакетов данных с применением технологии указателя; выполнение операций в отношении пакетов данных в рабочей области, которая включает в себя операцию сохранения и операцию считывания для пакетов данных, выполнение только операций считывания для пакетов данных в резервной области, в которой операция сохранения пакетов данных не будет выполнена; и переключение между рабочей областью и резервной областью, когда пространства в рабочей области недостаточно или, если свободное пространство не доступно в рабочей области.
Предпочтительно, указанный этап разделения пространства сохранения на рабочую область и резервную область, каждую из которых используют для сохранения пакетов данных с применением технологии указателя, дополнительно содержит: разделение рабочей области и резервной области на множество малых модулей сохранения, соответственно; и соединение малых модулей сохранения в рабочей области и в резервной области, используя указатель, соответственно.
Предпочтительно, указанный этап выполнения операций относительно пакета данных в рабочей области дополнительно содержит: определение, является ли текущая операция, выполняемая для пакета данных, операцией сохранения или операцией считывания пакета данных. Если указанная операция представляет собой операцию сохранения пакета данных, тогда выполняют следующие этапы: определения, существует ли какое-либо свободное пространство в рабочей области; если да, сохраняют пакет данных в одном или больше модулей сохранения в указанной свободной области, используя технологию указателя, и устанавливая указатель так, чтобы он указывал на заголовок пакета для указанного пакета данных; если нет, выполняют переключение между указанной рабочей областью и указанной резервной областью, что преобразует прежнюю рабочую область в новую резервную область и прежнюю резервную область в новую рабочую область, и сохранения пакета данных после завершения указанного переключения (новая рабочая область становится совершенно пустой, и в ней можно сохранять пакеты данных). Если указанная операция представляет собой операцию считывания пакета данных, выполняют следующие этапы: последовательно считывают указанный пакет данных из одного или больше модулей сохранения в соответствии с указателем, указывающим на заголовок пакета для указанного пакета данных, проверяют, является ли правильным значение указателя в указанном модуле сохранения, который указывает на следующий модуль сохранения, или нет; если да, выводят содержание в указанный модуль сохранения, восстанавливая пространство сохранения, и продолжают считывать следующий модуль сохранения до тех пор, пока все содержание указанного пакета данных не будет выведено; в противном случае прекращают операцию считывания, отказываясь от указанного пакета данных, а также от пространства, занимаемого указанными модулями сохранения.
Предпочтительно, указанный этап сохранения пакета данных в одном или больше модулей сохранения в свободном пространстве, в котором используется технология указателя, дополнительно содержит: генерирование проверочного бита в соответствии со значением указателя в указанных одном или больше модулях сохранения, указывающего на следующий модуль сохранения; и сохранение указанного проверочного бита вместе с соответствующим значением указателя и пакетом данных.
Предпочтительно, указанный этап проверки, является ли правильным или нет значение указателя, который указывает на следующий модуль сохранения, во время операции считывания пакета данных дополнительно содержит: генерирование проверочного бита в соответствии со значением указателя в указанном модуле сохранения; получение проверочного бита, сохраненного вместе с указанным пакетом данных в указанном модуле сохранения; сравнение указанного сгенерированного проверочного бита с указанным полученным проверочным битом; определение, что значение указателя является правильным, если указанные два проверочных бита являются идентичными, в противном случае определение, что значение указателя является неправильным.
Предпочтительно, указанный каждый малый модуль сохранения в указанной рабочей области и в указанной резервной области содержит пространство, используемое для сохранения указанного значения указателя, проверочного бита и пакета данных, соответственно. Для генерирования проверочного бита в отношении значения указателя на указанном этапе генерирования проверочного бита используют способ проверки на четность, способ проверки циклическим избыточным кодом (ЦИК, CRC) или тому подобное.
Предпочтительно, указанный этап переключения между рабочей областью и резервной областью дополнительно содержит: (1) удаление всех пакетов данных, сохраненных в указанной резервной области, и преобразование всех модулей сохранения в резервной области в свободные модули сохранения; (2) инициирование указанной резервной области, соединение всех свободных модулей сохранения в резервной области, используя указатели, и использование свободного указателя из очереди для указания на заголовок указанных соединенных свободных модулей сохранения; (3) переключение между резервной областью и рабочей областью и переключение между резервной областью с преобразованием ее в новую рабочую область, при этом новая резервная область предназначена только для чтения; (4) сохранение нового пакета данных в указанной новой рабочей области. Порядок выполнения этапа (1) - этапа (3) может быть изменен: вначале выполняют переключение между рабочей областью и резервной областью, затем выполняют очистку и инициирование новой рабочей области, причем результаты этой операции являются полностью теми же.
Предпочтительно, пространство рабочей области считается недостаточным, если величина свободной области сохранения (свободных блоков сохранения) в рабочей области меньше, чем заданное пороговое значение.
Способ сохранения пакетов данных с использованием технологии указателя в соответствии с настоящим изобретением можно применять для эффективного сохранения пакета данных, независимо от размера пакетов данных, что улучшает доступность модулей сохранения данных и уменьшает возможность влияния на процесс сохранения размера пакетов данных. Способ в соответствии с настоящим изобретением позволяет предотвращать отказ системы сохранения в результате ошибки, благодаря определению, является значение указателя правильным или нет. При этом устраняется влияние на операцию сохранения, и содержание указателя с ошибкой непосредственно удаляется. Кроме того, способ в соответствии с настоящим изобретением также позволяет улучшить надежность операции сохранения путем инициирования прежнего модуля сохранения для исключения эффекта накопления указателя, предназначенного для сохранения.
Краткое описание чертежей
На фиг.1 показана блок-схема последовательности выполнения операций способа сохранения пакета данных с использованием методики указателя в соответствии с настоящим изобретением;
На фиг.2 показана блок-схема модуля сохранения в пространстве сохранения;
На фиг.3 показана блок-схема, изображающая результат сохранения пакетов данных, сохраненных в пространстве сохранения в соответствии с предшествующим уровнем техники;
На фиг.4 показана схема, представляющая структуру значения указателя, значения проверочного бита и пакета данных в модуле сохранения;
На фиг.5 показана схема, изображающая структуру пакетов данных, сохраненных в модуле сохранения в защищенном режиме;
На фиг.6 показана схема, представляющая процесс переключения областей сохранения пакетов данных;
На фиг.7 показана схема, представляющая структуру сохранения пакета данных после переключения между рабочей областью и резервной областью.
Подробное описание изобретения
Способ сохранения пакетов данных с использованием технологии указателя, в соответствии с настоящим изобретением, будет подробно описан ниже со ссылкой на прилагаемые чертежи.
На фиг.1 показана блок-схема последовательности операций способа в соответствии с настоящим изобретением, в котором используется технология указателя для сохранения пакетов данных. Вначале, на этапе 101, пространство сохранения разделяют на две области: рабочую область и резервную область. Затем на этапе 102 эти две области инициируют, и обе области разделяют на множество малых модулей сохранения. Такие множества малых модулей сохранения соединяют через указатели; в результате чего формируется свободное пространство сохранения. Затем начинают обработку пакетов данных: вначале, на этапе 103 определяют, является ли текущая операция операцией сохранения пакета данных или операцией считывания пакета данных.
Если текущая операция представляет собой сохранение пакета данных, тогда на этапе 104 определяют, существует ли свободное пространство в рабочей области; если да, пакет данных непосредственно сохраняют в свободном пространстве; в противном случае выполняют переключение между рабочей областью и резервной областью. Два процесса переключения, процессы 106 и 107 переключения, с разным порядком операций представлены на фиг.1. Процесс 106 переключения включает в себя: на этапе 1061 удаляют пакеты данных, расчищая резервную область; на этапе 1062 инициируют резервную область; на этапе 1063 выполняют переключение между рабочей областью и резервной областью. Процесс 107 переключения включает в себя: на этапе 1071 переключение между рабочей областью и резервной областью; на этапе 1072 удаляют пакеты данных, расчищая рабочую область; на этапе 1073 инициируют рабочую область. Этапы операций в процессах 106 и 107 переключения являются одинаковыми, но порядок выполнения этих этапов разный, что означает, что указанные этапы могут быть расположены в порядке процесса 106 переключения, или в порядке процесса 107, переключения, или других порядках. При применении на практике может быть выбран только один из процесса 106 и процесса 107 переключения. Объект операции представляет собой резервную область, если вначале выполняют операции по удалению пакетов данных с расчисткой и инициированием резервной области (затем выполняют переключение между рабочей областью и резервной областью); если вначале выполняют переключение между рабочей областью и резервной областью, тогда объект операции, состоящей в удалении пакетов данных и расчистке и инициировании, представляет собой новую рабочую область, а именно прежнюю резервную область; поэтому результат операций будет совершенно один и тот же.
Затем на этапе 110 начинают сохранять пакеты данных, после чего операция записи пакетов данных заканчивается.
Если требуется считать пакеты данных при выполнении текущей операции, тогда на этапе 111 непосредственно считывают соответствующие пакеты данных. Затем на этапе 112, определяют, дала ли правильный результат проверка пакета данных или нет. Если проверка дала правильный результат, тогда на этапе 113 определяют, требуется ли восстанавливать новый свободный блок сохранения после считывания или нет; если да, на этапе 114 выполняют восстановление указанного нового свободного блока сохранения; в противном случае его непосредственно отбрасывают. Затем на этапе 115 выводят пакеты считанных данных и заканчивают операцию считывания пакета данных. Кроме того, если происходит ошибка проверки для считываемого пакета данных, выполняют возврат на этап 116, указанный пакет данных непосредственно отбрасывают без восстановления генерируемого нового свободного блока сохранения и заканчивают операцию считывания пакета данных.
На фиг.2 показана структурная блок-схема модулей сохранения в пространстве сохранения.
Когда технологию указателя используют для сохранения пакетов данных, пространство сохранения разделяют на множество модулей сохранения, в которых сохраняют пакеты данных. Множество модулей сохранения может потребоваться для сохранения одного пакета данных. Физический адрес этих модулей сохранения может не быть непрерывным, и для соединения этих модулей сохранения используют указатели.
На фиг.3 показана блок-схема, представляющая результат сохранения пакетов данных, сохраненных в пространстве сохранения, в соответствии с предшествующим уровнем техники.
Причину, по которой генерируют результат сохранения, определяют по характеристикам пакета данных. Основу сетевого продукта представляет обмен пакетами данных, при котором требуется определять характеристики разных пакетов данных, направление передачи пакета данных и передавать их в соответствующем направлении. Поскольку количество пакетов данных в процессе обмена пакетами данных велико, а процесс обработки является сложным, для обработки этих пакетов данных требуется определенное время. Поэтому перед определением направления передачи пакетов данных и их передачей пакеты данных должны быть вначале размещены в буфере и затем переданы после определения направления (маршрута) передачи. Поскольку пакеты данных передают с высокой скоростью, и их длина является неопределенной, для полного приема одного пакета данных может потребоваться множество сегментов времени. Кроме того, одновременно может существовать большое количество разных направлений приема и отправления передачи, поэтому может случиться, что пакеты данных, принятые из разных направлений, будут переданы в том же направлении, или разные типы пакетов данных будут приняты в режиме разделения времени из одного направления. Следовательно, режим сохранения пакетов данных является очень важным.
Для адаптации вариации пакетов данных весь буфер может быть разделен на множество малых модулей сохранения. Каждый пакет данных сохраняют в этих модулях сохранения, в которых большие пакеты данных занимают больше модулей сохранения, в то время как малые пакеты данных занимают меньшее количество модулей сохранения, что позволяет адаптировать вариацию размера пакетов данных. Для достижения цели, состоящей в обеспечении возможности одновременного приема множества пакетов данных, прием других пакетов данных может начаться до полного приема одного пакета данных, в то время как режим непрерывного сохранения не используется при сохранении, то есть физическое пространство модуля сохранения, занимаемое одним пакетом данных, может не быть непрерывным, в результате чего другие пакеты данных могут быть сохранены до того, как один пакет данных будет полностью принят. Для того чтобы знать место сохранения всех данных в пакетах данных, физически не являющихся непрерывными, пакеты данных требуется соединить, что означает необходимость использования технологии указателя. Используют технологию указателя, в которой один указатель установлен в каждом модуле сохранения для обозначения положения следующего модуля сохранения, в результате чего обеспечивается сохранение целого пакета данных. Кроме того, также должно быть сохранено положение заголовка всех пакетов данных для формирования группы указателя очереди, в которой каждый указатель указывает на положение сохранения соответствующего заголовка пакета данных. Очередь указателей управляет всеми сохраненными пакетами данных, и при сохранении пакета данных указатель указывает на положение нового заголовка пакета данных, который будет вставлен в конец очереди. Следующие этапы используют при считывании пакета данных: считывание положения указателя заголовка пакета данных из заголовка очереди указателей; считывание данных пакета данных из этого положения; установка в очередь байта указателя модуля сохранения для определения положения следующего модуля сохранения после окончания считывании одного модуля указателя; и считывание следующего модуля сохранения, в результате чего обеспечивается сохранение целого пакета данных. Кроме того, также должно быть сохранено положение заголовка всех пакетов данных для формирования группы указателя очереди, в которой каждый указатель указывает на положение сохранения соответствующего заголовка пакета данных. Очередь указателей управляет всеми сохраненными пакетами данных, и при сохранении пакета данных указатель указывает на положение нового заголовка пакета данных, который будет вставлен в конец очереди. Следующие этапы используют при считывании пакета данных: считывание положения указателя заголовка пакета данных из заголовка очереди указателей; считывание данных пакета данных из этого положения; установка в очередь байта указателя модуля сохранения для определения положения следующего модуля сохранения после окончания считывании одного модуля указателя; и считывание следующего модуля сохранения, пока все данные пакета данных не будут считаны. Кроме того, после окончания считывания пакета данных указатель, указывающий на пакет данных в очереди, очищают, и следующий пакет данных в очереди становится первым пакетом данных, и одновременно пространство сохранения прежнего пакета данных восстанавливают, и оно становится новым свободным модулем сохранения, который используют для сохранения новых пакетов данных. При сохранении пакета данных данные этого пакета данных сохраняют в свободном модуле сохранения, и адрес модуля сохранения записывают в положение байта указателя предыдущего модуля сохранения, и новый модуль сохранения соединяют с предыдущим модулем сохранения, обеспечивая, таким образом, соединение всех модулей сохранения пакета данных. Кроме того, все свободные модули сохранения в буфере также соединяют, используя указатель, в котором свободный указатель заголовка очереди указывает на первый свободный модуль сохранения.
Способ сохранения пакетов данных с использованием технологии указателя в предшествующем уровне техники можно адаптировать для различного размера пакета данных, достаточного использования пространства буфера и обеспечения непрерывного сохранения пакета данных, с тем, чтобы удовлетворить требованиям одновременного приема множества пакетов данных. Однако в режиме использования указателя также существуют недостатки, возникающие по той причине, что указатель используют для поиска среди модулей сохранения, в результате чего получают уникальную совместную зависимость и низкую устойчивость к помехам. В случае возникновения помех, таких как электронная помеха, аномалии напряжения и изменение температуры и так далее, во время работы схемы следующий адрес модуля сохранения, который должен быть считан, будет считан неправильно, если что-то неправильное произойдет со значением работающего указателя. И считывание пакета данных из неправильного положения приведет к тому, что весь пакет данных будет совершенно неправильным, что также разрушит другие правильные пакеты данных. Если значение указателя заголовка свободного модуля сохранения будет неправильным, станет невозможно найти правильный свободный модуль сохранения, в результате чего свободный модуль сохранения станет недоступным во всем буфере, что приведет к остановке работы буфера и прекращению работы системы. Если что-то неправильное произойдет со значением указателя некоторого модуля сохранения в схеме в результате внешней помехи, такие модули сохранения требуется удалить с тем, чтобы исключить возникновение более серьезной ошибки, и удаленные модули сохранения больше нельзя использовать. Если система работает в таком режиме в течение длительного времени, удаленные свободные модули сохранения будут накапливаться аналогично этому, в результате чего размер буфера постепенно будет уменьшаться до тех пор, пока больше не останется доступных свободных модулей сохранения.
На фиг.4 показана схема, представляющая структуру значения указателя, значения проверочного бита и пакета данных в модуле сохранения.
Проверочный байт, который установлен в модуле сохранения, используют для проверки, является ли значение указателя модуля сохранения правильным или нет. В соответствии с надежностью системы схемы может быть принята простая проверка на четность, проверка с помощью ЦИК (циклического избыточного кода) или другие способы проверки. Когда значение указателя записано в модуле сохранения, проверочный бит будет сгенерирован в соответствии со значением указателя. Проверочный бит, который записан в модуле сохранения вместе со значением указателя, используют для проверки, является ли содержание указателя правильным или нет.
При считывании пакета данных значение указателя и проверочного бита считывают вместе. Проверочный бит рассчитывают в соответствии со значением указателя, который затем сравнивают со считанным проверочным битом проверки. Если эти два проверочных бита идентичны, что обозначает, что значение указателя правильное, тогда значение указателя можно использовать для поиска положения следующего модуля сохранения; если два проверочных бита отличаются друг от друга, это означает, что возникла ошибка в модуле сохранения (значение указателя проверочного бита), то есть что значение считываемого указателя является ненадежным, тогда значение указателя нельзя использовать для поиска следующего места сохранения, с тем, чтобы избежать более серьезных ошибок. В случае появления модуля сохранения с ошибкой операция считывания для текущего пакета данных прекращается, и пакет данных вместе с его пространством сохранения отбрасывают. Пространство сохранения, данные в котором были отброшены, не будет исправлено и больше не будет повторно использовано. Диагностику правильности пространства сохранения пакета данных можно проводить с использованием способа проверки. Пакет данных и его соответствующее пространство сохранения отбрасывают, если что-то будет происходить неправильно с пространством сохранения, при этом отброшен только один пакет данных, и неправильные значения указателя не будут использоваться в схеме, что, таким образом, исключает неправильную работу буфера в результате использования неправильного значения указателя. Режим проверки используют для проверки, является ли значение указателя правильным или нет и, таким образом, для того, чтобы исключить применение неправильного значения указателя, в котором требуется проверять только содержание указателя, в то время как пространство сохранения (включая содержание данных) проверять не требуется. Если что-то неправильное произойдет с содержанием пакета данных, произойдет только ошибка пакета данных, и это не повлияет на нормальную работу буфера. На фиг.5 показана блок-схема, представляющая структуру пакетов данных, сохраненных в модуле сохранения в защищенном режиме.
Пространство буфера разделено на две области: рабочую область и резервную область.
Когда режим указателя используют для сохранения пакета данных, пакет данных и его пространство сохранения непосредственно отбрасывают, если какая-либо ошибка произойдет в модуле сохранения, в результате чего уменьшается количество модулей сохранения в буфере. Процесс уменьшения пространства сохранения, таким образом, накапливается, то есть пространство буфера будет постоянно уменьшаться до тех пор, пока существует неправильный модуль данных. Поэтому даже если схема имеет высокую надежность, накопление ошибок фрагментов приводит к серьезному эффекту в последующем, в результате чего пространство для сохранения становится существенно недостаточным, что приводит к остановке работы системы. Когда используют режим указателя для сохранения пакетов данных, его также используют для соединения неиспользуемых модулей сохранения (свободных модулей сохранения), которые используют для сохранения данных, записываемых в буфер. В случае возникновения ошибки указателя в первом свободном модуле из свободных модулей сохранения становится невозможным определить положение последующих свободных модулей сохранения, в результате чего пространство сохранения (свободные модули сохранения) становится недоступным, что приводит к остановке системы. Способ сохранения пакета данных, в котором используется технология указателя, в соответствии с настоящим изобретением позволяет эффективно решить эту проблему.
В настоящем изобретении для свободных модулей сохранения в рабочей области также используют проверочный бит указателя для определения, является ли указатель правильным или нет. Когда система работает нормально, все пакеты данных работают в рабочей области, и буфер рабочей области является точно таким же, как и буфер до разделения, только пространство сохранения сокращено наполовину. Все операции в отношении пакетов данных выполняют в рабочей области, что включает в себя сохранение пакета данных в рабочей области и считывание пакета данных из рабочей области. Кроме того, свободные модули сохранения также находятся в рабочей области, также соединены с использованием режима указателя и также таким образом, что используется проверка указателя для определения, является ли указатель на следующий свободный модуль сохранения правильным или нет. Переключение области сохранения между рабочей областью и резервной областью инициируют, когда пространство буфера в рабочей области недостаточно из-за того, что слишком большое количество плохих модулей сохранения появляется в рабочей области, или когда невозможно найти свободный модуль сохранения из-за ошибки указателя первого свободного модуля сохранения.
На фиг.6 показана схема, представляющая процесс переключения областей сохранения пакета данных.
Во время переключения областей сохранения требуется выполнить три операции: (1) удаление пакетов данных с очисткой бывшей резервной области; (2) инициирование резервной области; (3) взаимную замену рабочей области и резервной области. Можно использовать другой порядок выполнения этих трех этапов операции, но пакеты данных в бывшей резервной области (а именно в новой рабочей области после переключения) будут удалены, и блок сохранения в бывшей резервной области будет инициирован независимо от того, какой порядок используется. При очистке бывшей резервной области выполняют непосредственную отбраковку пакетов данных, которые указывают на бывшую резервную область. В примере, показанном на фиг.6, пакет 1 данных, пакет 2 данных и пакет 3 данных в очереди данных сохраняют в бывшей резервной области, в результате чего эти три пакета данных должны быть отброшены, и данные считывают непосредственно из четвертого пакета данных. После окончания операции отбрасывания в бывшей резервной области больше не остается пакетов данных. Затем бывшую резервную область инициируют, и все модули сохранения соединяют, используя указатель, таким образом, все модули сохранения становятся свободными модулями сохранения, то есть вся бывшая резервная область становится пустой, и ее можно использовать для сохранения пакетов данных. После окончания операции инициирования выполняют переключение так, что бывшая рабочая область становится новой резервной областью, и бывшая резервная область становится новой рабочей областью. Новая рабочая область представляет собой бывшую резервную область, в которой все модули сохранения представляют собой свободные модули сохранения и которые можно использовать для сохранения пакетов данных; и новая резервная область представляет собой бывшую рабочую область, которая работает в режиме только для чтения, то есть пакеты данных могут быть только считаны из новой резервной области и в новой резервной области невозможно сохранять данные, а также свободный модуль сохранения, сгенерированный в новой резервной области, после считывания не будет восстановлен. Таким образом, пакеты данных, сохраненные в новой резервной области, будут постепенно считаны до следующей операции переключения. Пакеты данных непосредственно отбрасывают, если они не будут считаны до момента следующего переключения.
После переключения бывшая рабочая область становится новой резервной областью, и бывшая резервная область становится новой рабочей областью, и все модули сохранения в новой рабочей области представляют собой свободные модули сохранения и их можно использовать для сохранения множества пакетов данных, в результате чего можно предотвратить отказ системы из-за недостатка свободных модулей сохранения.
На фиг.7 показана схема, представляющая структуру сохранения пакетов данных после переключения рабочей области и резервной области. Как показано на фиг.5, после переключения рабочей области и резервной области статус сохранения пакетов данных будет тем же, что и до переключения; единственное различие состоит в том, что положения рабочей области и резервной области взаимно заменяются. Режим работы для сохранения и считывания пакетов данных остается неизменным, то есть пакеты данных могут быть сохранены в новой рабочей области и считаны из нее. Новая резервная область предназначена только для считывания, то есть пакеты данных могут быть только считаны из новой резервной области, но не могут быть сохранены в ней, и все свободные модули сохранения в новой резервной области больше не будут использоваться.