RU2632416C2 - Method (options) of object transfer from first process to second process, machine-readable media (options) and data processing system - Google Patents

Method (options) of object transfer from first process to second process, machine-readable media (options) and data processing system Download PDF

Info

Publication number
RU2632416C2
RU2632416C2 RU2015117932A RU2015117932A RU2632416C2 RU 2632416 C2 RU2632416 C2 RU 2632416C2 RU 2015117932 A RU2015117932 A RU 2015117932A RU 2015117932 A RU2015117932 A RU 2015117932A RU 2632416 C2 RU2632416 C2 RU 2632416C2
Authority
RU
Russia
Prior art keywords
specified
memory
copy
address space
computer device
Prior art date
Application number
RU2015117932A
Other languages
Russian (ru)
Other versions
RU2015117932A (en
Inventor
Григорий Викторович ДЕМЧЕНКО
Original Assignee
Общество С Ограниченной Ответственностью "Яндекс"
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Общество С Ограниченной Ответственностью "Яндекс" filed Critical Общество С Ограниченной Ответственностью "Яндекс"
Priority to RU2015117932A priority Critical patent/RU2632416C2/en
Priority to PCT/IB2015/057320 priority patent/WO2016181200A1/en
Publication of RU2015117932A publication Critical patent/RU2015117932A/en
Application granted granted Critical
Publication of RU2632416C2 publication Critical patent/RU2632416C2/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Abstract

FIELD: information technology.
SUBSTANCE: first process has the first memory address space, and the second process has the second memory address space. A copy of the first object is presented to the first adjacent area of the first memory address space and the second copy of the object is introduced into the second adjacent area of the first memory address space. Corresponding stored values are compared in each location of the first and the second copy of the object in the relative locations within the first copy and the second copy of the object. A location indicator is created in the first copy and the second copy of the object where the corresponding values in the appropriate locations do not match. A copy of the object and a location indicator are provided for transmission to the second process, so that the second process can use the location indicator to adjust the locations in the copy of the object for the second memory address space.
EFFECT: increased transmission rate of program objects between the processes.
24 cl, 4 dwg

Description

Область техники, к которой относится изобретениеFIELD OF THE INVENTION

Настоящее решение раскрывает способ предоставления промежуточных данных, созданных в течение выполнения компьютерной программы от первого процесса до второго.The present solution discloses a method for providing intermediate data generated during the execution of a computer program from the first process to the second.

Уровень техникиState of the art

Существует много ситуаций, когда желательно передать промежуточные данные, инкапсулированные в программном объекте, с одного компьютера на другой. Например, может быть желательным переместить обработку данных с одного компьютера на другой, чтобы распределить нагрузку по группе или кластеру компьютеров. Альтернативно, при обработке запроса клиента по сети серверу, например, серверу баз данных может быть необходимо переместить программный объект обратно клиенту, чтобы предоставить клиенту возможность продолжать обработку программного объекта.There are many situations where it is desirable to transfer intermediate data encapsulated in a program object from one computer to another. For example, it may be desirable to move data processing from one computer to another in order to distribute the load across a group or cluster of computers. Alternatively, when processing a client request over a network to a server, for example, a database server, it may be necessary to move the program object back to the client in order to enable the client to continue processing the program object.

Программные объекты могут содержать комбинацию исполнимого кода, а также данных, и, таким образом, могут осуществлять их обработку и/или предоставлять данные другому программному объекту для обработки. Например, программный объект, такой как функция или подпроцедура, может быть инстанцирован (т.е. может быть создан экземпляр программного объекта) родительским объектом или основной программой, чтобы осуществлять определенные процессы для вызывающего родительского объекта или основной программы. Данные объекта могут включать в себя множество типов, например: элементарные типы данных, такие как целые, вещественные, булевы, символы; и структурные или абстрактные типы данных, такие как массивы или списки и типы данных, определенные пользователем, причем каждый включает в себя примеры данных или комбинаций типов данных. Программные данные могут быть сохранены напрямую в области памяти программного объекта или проиндексированы указателями, которые содержат адреса других программных объектов или данных. Передача программных объектов, включая указатели, может вызвать затруднения, в частности, при попытке переместить программный объект из программы или процесса, запущенного в одном адресном пространстве памяти в компьютере в другую программу или процесс, который потенциально использует другое адресное пространство памяти.Software objects may comprise a combination of executable code, as well as data, and thus may process them and / or provide data to another program object for processing. For example, a program object, such as a function or subprocedure, can be instantiated (i.e., an instance of the program object can be created) by the parent object or the main program to implement certain processes for the calling parent object or main program. Object data can include many types, for example: elementary data types, such as integer, real, Boolean, characters; and structural or abstract data types, such as arrays or lists and user-defined data types, each of which includes examples of data or combinations of data types. The program data can be stored directly in the memory area of the program object or indexed with pointers that contain the addresses of other program objects or data. Transferring program objects, including pointers, can be difficult, in particular, when trying to move a program object from a program or process running in one memory address space on a computer to another program or process that potentially uses a different memory address space.

D.M. Dhamdhere приводит в книге "Operating Systems: A Concept-based Approach" ("Операционные системы: концептуальный подход"), ISBN: 0070611947, 2006 общий подход к распределению памяти на уровне операционной системы (ОС) компьютера. Известны решения смены абсолютной адресации данных на относительную адресацию, чтобы избежать проблем при передаче данных с первого компьютера (или процесса) на другой компьютер (или процесс). Однако такие решения могут потребовать инструментов управления памятью, которые могут анализировать содержимое и связывать его с процессом. Этот анализ может быть особенно обременительным, если нет априорного знания о природе обрабатываемого объекта.D.M. Dhamdhere cites in his book Operating Systems: A Concept-based Approach, ISBN: 0070611947, 2006, a general approach to memory allocation at the computer operating system (OS) level. There are known solutions for changing the absolute addressing of data to relative addressing in order to avoid problems when transferring data from the first computer (or process) to another computer (or process). However, such solutions may require memory management tools that can analyze the content and associate it with the process. This analysis can be especially burdensome if there is no a priori knowledge about the nature of the processed object.

В патенте США US8566536 (22 октября 2013), приводится описание разделения с прямым доступом физической памяти между процессами. Адресное пространство памяти связывается с каждым процессом с помощью заполнения первой записи в таблице высокоуровневых виртуальных адресов для каждого процесса. Каждое адресное пространство создается и связывается с данным процессом, главное ядро инициирует создание основного списка записи в таблице высокоуровневых виртуальных адресов каждого адресного пространства для каждого процесса. Таким образом, адресное пространство каждого процесса взаимно связано с каждым процессом с помощью заполнения одной или нескольких последовательных записей в таблице высокоуровневых виртуальных адресов первой записью в таблице высокоуровневых виртуальных адресов других процессов. Это решение, однако, зависит от функциональности, предоставленной ядром процессора.In US patent US8566536 (October 22, 2013), describes the separation of direct access physical memory between processes. The memory address space is associated with each process by populating the first entry in the high-level virtual address table for each process. Each address space is created and associated with this process, the main core initiates the creation of a main list of entries in the table of high-level virtual addresses of each address space for each process. Thus, the address space of each process is mutually connected with each process by filling in one or more consecutive entries in the table of high-level virtual addresses with the first entry in the table of high-level virtual addresses of other processes. This solution, however, depends on the functionality provided by the processor core.

Задачей настоящего решения является предоставления более легко применяемого механизма передачи программных объектов между процессами.The objective of this solution is to provide a more easily applicable mechanism for transferring software objects between processes.

РАСКРЫТИЕ ИЗОБРЕТЕНИЯSUMMARY OF THE INVENTION

Первым объектом настоящего решения является способ обработки данных для передачи объекта с первого процесса на второй процесс, причем у первого процесса имеется первое адресное пространство, а у второго процесса имеется второе адресное пространство. Способ выполняется процессором компьютерного устройства, выполняющего первый процесс, способ содержит предоставление первой копии объекта в первую смежную область первого адресного пространства памяти; и предоставление второй копии объекта во вторую смежную область первого адресного пространства памяти. Для каждого местоположения первой и второй копии объекта в соответствующих местоположениях в первой копии объекта и второй копии объекта сравниваются сохраненные соответствующие значения. Создается индекс местоположения в первой копии объекта и второй копии объекта, в которых соответствующие значения в соответствующих местоположениях не совпали. Предоставляется копия объекта и индекса местоположений для передачи на второй процесс, чтобы второй процесс мог использовать индекс местоположений для корректировки местоположений в копии объекта для второго адресного пространства памяти.The first object of this solution is a data processing method for transferring an object from a first process to a second process, wherein the first process has a first address space and the second process has a second address space. The method is performed by a processor of a computer device performing the first process, the method comprises providing a first copy of an object to a first adjacent area of a first memory address space; and providing a second copy of the object to a second adjacent area of the first memory address space. For each location of the first and second copies of the object at the respective locations in the first copy of the object and the second copy of the object, the stored corresponding values are compared. A location index is created in the first copy of the object and the second copy of the object, in which the corresponding values at the respective locations did not match. A copy of the object and the location index is provided for transmission to the second process so that the second process can use the location index to adjust the locations in the copy of the object for the second memory address space.

В некоторых вариантах осуществления способ также содержит получение указателя указанного объекта для передачи; а также замену распределителя памяти по умолчанию на пользовательский распределитель памяти, причем пользовательский распределитель памяти выполнен с возможностью распределять память в смежной области памяти. В этом случае предоставление указанной первой копии содержит в себе указанный объект для передачи в указанную первую смежную область памяти, распределенную указанным пользовательским распределителем памяти; и предоставление указанной второй копии содержит копирование указанного объекта для передачи в указанную вторую смежную область памяти, распределенную указанным пользовательским распределителем памяти. Альтернативно способ также содержит: получение указателя указанного объекта для передачи, причем указанный объект занимает первую смежную область памяти, распределенную пользовательским распределителем памяти. В этом случает предоставление указанной второй копии содержит копирование указанного объекта для передачи в указанную вторую смежную область памяти, распределенную указанным пользовательским распределителем памяти.In some embodiments, the method also comprises obtaining a pointer to the specified object for transmission; and also replacing the default memory allocator with a user memory allocator, wherein the user memory allocator is configured to allocate memory in an adjacent memory area. In this case, providing said first copy comprises said object for transmission to said first adjacent memory area allocated by said user memory allocator; and providing said second copy comprises copying said object for transmission to said second adjacent memory area allocated by said user memory allocator. Alternatively, the method also comprises: obtaining a pointer to the specified object for transmission, the specified object occupying the first adjacent memory area allocated by the user memory allocator. In this case, providing said second copy comprises copying said object for transmission to said second adjacent memory area allocated by said user memory allocator.

В некоторых вариантах осуществления предоставление копии указанного объекта содержит копирование либо указанной первой копии указанного объекта, либо указанной второй копии указанного объекта в буфер.In some embodiments, providing a copy of said object comprises copying either said first copy of said object or said second copy of said object to a buffer.

В некоторых вариантах осуществления указанная скопированная первая или вторая копия указанного объекта располагается в базовом адресе в указанном первом адресном пространстве памяти, и указанный способ дополнительно содержит извлечение указанного базового адреса из значений указанной копии указанного объекта в указанный буфер в каждом местоположении в указанном индексе местоположений.In some embodiments, said copied first or second copy of said object is located at a base address in said first memory address space, and said method further comprises extracting said base address from values of said copy of said object to said buffer at each location in said location index.

В некоторых вариантах осуществления скопированная первая или вторая копия указанного объекта располагается в базовом адресе в указанном первом адресном пространстве памяти, и способ дополнительно содержит извлечение указанного базового адреса из значений скопированной первой или второй копии объекта в каждом местоположении в указанном индексе местоположений перед копированием в указанный буфер.In some embodiments, the copied first or second copy of the specified object is located at the base address in the specified first memory address space, and the method further comprises extracting the specified base address from the values of the copied first or second copy of the object at each location in the specified location index before copying to the specified buffer .

Некоторые варианты осуществления содержат предоставление размера указанного объекта с указанной копией указанного объекта и указанный индекс местоположений для передачи указанному второму процессу.Some embodiments comprise providing a size of said object with said copy of said object and said location index for transmission to said second process.

Некоторые варианты осуществления выполнены с функцией сериализации, осуществляющей указанные этапы способа в ответ на вызов родительского объекта для передачи указанного объекта.Some embodiments are implemented with a serialization function that performs the indicated steps of the method in response to a call to the parent to transmit the specified object.

В некоторых случаях указанный первый процесс инстанцируется на первом компьютерном устройстве, а второй процесс инстанцируется на втором, ином компьютерном устройстве.In some cases, said first process is instantiated on a first computer device, and a second process is instantiated on a second, different computer device.

Альтернативно указанный первый процесс инстанцируется на первом компьютерном устройстве, а второй процесс инстанцируется на первом компьютерном устройстве позже. В некоторых вариантах осуществления предоставление указанной копии указанного объекта и указанного индекса местоположений для передачи содержит запись указанной копии указанного объекта и указанного индекса местоположений в персистентную память. В этом случае персистентная память может содержать в себе либо память компьютера, либо энергонезависимую память, доступную и указанному первому, и указанному второму процессу.Alternatively, said first process is instantiated on a first computer device, and a second process is instantiated on a first computer device later. In some embodiments, providing said copy of said object and said location index for transmission comprises storing said copy of said object and said location index in persistent memory. In this case, persistent memory can contain either computer memory or non-volatile memory available to both the first and the second process.

Альтернативно предоставление указанной копии указанного объекта и указанного индекса местоположений для передачи содержит передачу указанной копии указанного объекта и указанного индекса местоположений компьютерному устройству по сетевой линии.Alternatively, providing said copy of said object and said location index for transmission comprises transmitting said copy of said object and said location index to a computer device over a network line.

В некоторых вариантах осуществления первый процесс является компилируемой программой на С, а указанный пользовательский распределитель памяти выполнен с возможностью осуществления перегруженной функции распределения памяти (malloc()). В других вариантах осуществления настоящей технологии первый процесс является компилируемой программой на С++, а указанный пользовательский распределитель памяти выполнен с возможностью осуществления перегруженной функции new().In some embodiments, the first process is a C compiled program, and said user memory allocator is configured to implement an overloaded memory allocation function (malloc ()). In other embodiments of the present technology, the first process is a C ++ compiled program, and said user memory allocator is configured to implement the overloaded new () function.

И указанное первое, и второе адресное пространство памяти может быть виртуальным адресным пространством памяти.Both said first and second memory address space may be a virtual memory address space.

Вторым объектом настоящего решения является способ обработки данных для передачи объекта с первого процесса на второй процесс, причем у первого процесса имеется первое адресное пространство, а у второго процесса имеется второе адресное пространство. Способ выполняется процессором компьютерного устройства, выполняющего второй процесс, способ содержит в себе получение копии объекта и индекса местоположения в копии объекта, указывающего на указатель местоположений в копии объекта. Объект копируется в смежную область второго адресного пространства памяти, причем область имеет базовый адрес. Значение базового адреса добавляется к значениям объекта в смежной области второго адресного пространства памяти в каждом местоположении в индексе местоположений.The second object of this solution is a data processing method for transferring an object from a first process to a second process, the first process having a first address space, and the second process having a second address space. The method is performed by a processor of a computer device performing the second process, the method includes obtaining a copy of the object and a location index in the copy of the object, pointing to a location indicator in the copy of the object. The object is copied to an adjacent area of the second address space of the memory, and the area has a base address. The base address value is added to the object values in the adjacent area of the second memory address space at each location in the location index.

Некоторые варианты осуществления дополнительно содержат в себе получение базового адреса для указанного объекта в указанном первом адресном пространстве памяти и извлечение указанного базового адреса из указанного объекта в указанном первом адресном пространстве памяти из значений указанного объекта в указанной смежной области указанного второго адресного пространства памяти в каждом местоположении в указанном индексе местоположений.Some embodiments further comprise obtaining a base address for the specified object in the indicated first memory address space and extracting the specified base address from the specified object in the specified first memory address space from the values of the specified object in the specified adjacent region of the specified second memory address space at each location in specified location index.

Некоторые варианты осуществления содержат в себе получение размера указанного объекта и распределение смежной области памяти по меньшей мере указанного размера в указанном втором адресном пространстве памяти.Some embodiments include obtaining the size of the specified object and allocating an adjacent memory area of at least the specified size in the specified second memory address space.

Некоторые варианты осуществления выполнены с функцией десериализации, осуществляющей указанные этапы способа в ответ на вызов родительского объекта для получения указанного объекта.Some embodiments are implemented with a deserialization function that performs the indicated steps of the method in response to a call to the parent object to obtain the specified object.

Еще одним объектом является компьютерный программно-аппаратный продукт, включающий в себя выполняемые инструкции, которые хранятся на машиночитаемом носителе, и при выполнении которых компьютерное устройство настраивается для выполнения вышеуказанных способов.Another object is a computer software and hardware product, which includes executable instructions that are stored on a computer-readable medium, and when executed, the computer device is configured to perform the above methods.

Дополнительным объектом является система обработки данных, содержащая первое компьютерное устройство, соединенное со вторым компьютерным устройством, причем каждое настроено для выполнения вышеуказанных способов.An additional object is a data processing system comprising a first computer device connected to a second computer device, each configured to perform the above methods.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙBRIEF DESCRIPTION OF THE DRAWINGS

Далее будут описаны различные примеры вариантов осуществления решения со ссылками на соответствующие чертежи, где:Next will be described various examples of embodiments of the solution with reference to the relevant drawings, where:

на Фиг. 1 схематично изображена система для предоставления промежуточных данных, созданных во время осуществления решения, с первого процесса на второй процесс, причем система выполнена в соответствии с не ограничивающими вариантами осуществления настоящего решения;in FIG. 1 schematically depicts a system for providing intermediate data created during the implementation of a solution from a first process to a second process, the system being made in accordance with non-limiting embodiments of the present solution;

На Фиг. 2 изображен способ сериализации, выполнимый в системе на Фиг. 1.In FIG. 2 shows a serialization method executable in the system of FIG. one.

На Фиг. 3 изображен способ десериализации, выполнимый в системе на Фиг. 1.In FIG. 3 shows a deserialization method executable in the system of FIG. one.

На Фиг. 4 изображен пример сериализации и десериализации объектов, используемых в способах, проиллюстрированных на Фиг. 2 и 3.In FIG. 4 shows an example of serialization and deserialization of objects used in the methods illustrated in FIG. 2 and 3.

ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯDETAILED DESCRIPTION OF THE INVENTION

На Фиг. 1 изображена схема системы 100, включающая в себя компьютерные устройство 20 и 21. Важно иметь в виду, что сервер ранжирования 100 является только одним из вариантов осуществления настоящего решения. Таким образом, все последующее описание представлено только как описание показательного примера. Это описание не предназначено для определения объема или установления границ настоящего решения. Некоторые полезные примеры модификаций системы 100 также могут быть охвачены нижеследующим описанием.In FIG. 1 is a diagram of a system 100 including computer devices 20 and 21. It is important to keep in mind that ranking server 100 is only one embodiment of the present solution. Thus, the entire following description is presented only as a description of a representative example. This description is not intended to determine the scope or scope of this decision. Some useful examples of modifications to the system 100 may also be covered by the following description.

Целью этого является также исключительно помощь в понимании, а не определение объема и границ настоящего решения. Эти модификации не представляют собой исчерпывающий список, и специалистам в данной области техники будет понятно, что возможны и другие модификации. Кроме того, это не должно интерпретироваться так, что там, где это еще не было сделано, т.е. там, где не были изложены примеры модификаций, никакие модификации невозможны, и/или что то, что описано, является единственным вариантом осуществления этого элемента. Как будет понятно специалисту в данной области техники, это, скорее всего, не так. Кроме того, следует иметь в виду, что система 100 представляет собой в некоторых конкретных проявлениях достаточно простой вариант осуществления, и в подобном случае представлен здесь с целью облегчения понимания. Как будет понятно специалисту в данной области техники, многие варианты осуществления настоящего решения будут обладать гораздо большей сложностью. В первом варианте осуществления настоящего решения компьютерное устройство 20 функционально соединено с устройством 30 хранения данных, которое хранит программный код 10. Устройство 30 хранения данных может являться таким устройством памяти как жесткий диск, встроенный в компьютерное устройство 20, или устройство 30 хранения данных может быть соединено с компьютерным устройством 20 по сети (не показана) или по любому подходящему проводному или беспроводному соединению. В контексте настоящего описания, если конкретно не указано иное, "компьютерное устройство" подразумевает под собой аппаратное устройство, способное работать с программным обеспечением, подходящим к решению соответствующей задачи. Таким образом, некоторыми примерами электронных устройств (среди прочего) могут служить универсальные персональные компьютеры (настольные компьютеры, ноутбуки, нетбуки и т.п.), мобильные компьютерные устройства, смартфоны, планшеты, а также сетевое оборудование, такое как маршрутизаторы, коммутаторы и шлюзы. Следует иметь в виду, что устройство, ведущее себя как компьютерное устройство в настоящем контексте, может вести себя как сервер по отношению к другим электронным устройствам. Использование выражения «компьютерное устройство» не исключает возможности использования множества электронных устройств для получения/отправки, выполнения или инициирования выполнения любой задачи или запроса, или же последствий любой задачи или запроса, или же этапов любого вышеописанного способа.The purpose of this is also exclusively to help in understanding, and not to determine the scope and boundaries of this decision. These modifications are not an exhaustive list, and it will be understood by those skilled in the art that other modifications are possible. In addition, this should not be interpreted so that where it has not yet been done, i.e. where examples of modifications have not been set forth, no modifications are possible, and / or that which is described is the only embodiment of this element. As will be clear to a person skilled in the art, this is most likely not the case. In addition, it should be borne in mind that the system 100 is, in some specific manifestations, a fairly simple embodiment, and in such a case is presented here in order to facilitate understanding. As will be clear to a person skilled in the art, many embodiments of the present solution will have much greater complexity. In a first embodiment of the present solution, the computer device 20 is operatively connected to a data storage device 30 that stores program code 10. The data storage device 30 may be a memory device such as a hard disk drive integrated in the computer device 20, or the data storage device 30 may be connected with a computer device 20 over a network (not shown) or through any suitable wired or wireless connection. In the context of the present description, unless specifically indicated otherwise, “computer device” means a hardware device capable of working with software suitable for solving the corresponding problem. Thus, some examples of electronic devices (among other things) include universal personal computers (desktop computers, laptops, netbooks, etc.), mobile computer devices, smartphones, tablets, and network equipment such as routers, switches, and gateways . It should be borne in mind that a device behaving like a computer device in the present context can behave like a server in relation to other electronic devices. The use of the expression “computer device” does not exclude the possibility of using multiple electronic devices to receive / send, execute or initiate the execution of any task or request, or the consequences of any task or request, or the steps of any of the above methods.

Экземпляр 101 программы 10 загружен в адресное пространство памяти 16 компьютерного устройства 20. Память 16 может содержать в себе систему виртуальной памяти с физической памятью, отдельной от адресного пространства, но с целью упрощения память показана на Фиг. 1 как простой блок 16.The instance 101 of the program 10 is loaded into the address space of the memory 16 of the computer device 20. The memory 16 may comprise a virtual memory system with physical memory separate from the address space, but for the sake of simplicity, the memory is shown in FIG. 1 as a simple block 16.

Экземпляр 101 программы конкретно выполнен, в свою очередь, для инстанцирования ряда программных объектов от 121 до 123. Как было описано выше программные объекты могут содержать в себе примеры функций, созданных в течение выполнения экземпляра 101 программы или простых или структурированных объектов данных, некоторые из которых могут содержать значения указателей, которые указывают на другие функции или данные. Программные объекты обычно расположены в иерархическом порядке, причем с родительские объекты вызывают инстанцирование одного или нескольких дочерних объектов. На Фиг. 1 изображены только два уровня дочерних объектов, причем объекты от 121 до 123 были инстанцированы экземпляром 101 программы и показаны как имеющие один или несколько инстанцированных дочерних объектов. Таким образом, программный объект 121 имеет инстанцированный объект 1211, а программный объект 122 имеет инстанцированные объекты 1221…1222, а программный объект 123 имеет инстанцированный объект 1231. Однако, будет понятно, что даже в программе средней сложности иерархия объектов может содержать множество уровней объектов.The program instance 101 is specifically made, in turn, for instantiating a number of program objects from 121 to 123. As described above, program objects may contain examples of functions created during the execution of program instance 101 or simple or structured data objects, some of which may contain pointer values that point to other functions or data. Software objects are usually arranged in a hierarchical order, with the parent objects invoking the instantiation of one or more child objects. In FIG. 1 shows only two levels of child objects, with objects from 121 to 123 being instantiated by instance 101 of the program and shown as having one or more instantiated child objects. Thus, the program object 121 has the instantiated object 1211, and the program object 122 has the instantiated objects 1221 ... 1222, and the program object 123 has the instantiated object 1231. However, it will be clear that even in a medium-complexity program, the hierarchy of objects can contain many levels of objects.

Для родительского объекта программы 10, такого как главная программа или программный объект, может являться желательной передача дочернего объекта с данными на промежуточном этапе обработки другому экземпляру программы, где может быть осуществлена дальнейшая обработка объекта или обработка объектом. Для этого варианты настоящего решения описывают функцию сериализации и соответствующую функцию десериализации.For the parent object of program 10, such as the main program or program object, it may be desirable to transfer the child object with the data at an intermediate stage of processing to another instance of the program, where further processing of the object or processing by the object can be performed. To this end, embodiments of the present solution describe a serialization function and a corresponding deserialization function.

Функция сериализации предоставляет возможность родительскому объекту (и главной программе 10 или дочерним объектам, или дочерним объектам низших уровней в первом экземпляре 101 программы) указывать их дочерний объект, который должен быть передан функции сериализации, причем функция сериализации далее записывает информацию об объекте в буфер 60, которая затем может быть либо сохранена в постоянной памяти, такой как устройство 30 хранения данных, либо передана по сетевому соединению 40 для последующего использования другим экземпляром 102 программы. Указание, предоставленное функции сериализации, может включать вызывающий родительский объект, передающий объект для дальнейшей передачи, либо напрямую, т.е. передавая весь объект, либо посредством ссылки, т.е. используя указатель на объект. Другой экземпляр программы может быть вторым экземпляром 102 программы 10, запущенной на другом компьютерном устройстве 21; экземпляр может быть более поздним экземпляром программы 10, запущенной на том же компьютерном устройстве 20, спустя какое-то время после того, как первый экземпляр 101 программы закончил обработку; или вторым экземпляром может быть экземпляр иной программы, отличной от программы 10. На Фиг. 1 другой экземпляр 102 программы для простоты показан как отдельная программа, запущенная на втором компьютерном устройстве 21, соединенном с первым компьютерным устройством 20.The serialization function allows the parent object (and the main program 10 or subsidiaries or children of lower levels in the first instance 101 of the program) to indicate their child object, which must be passed to the serialization function, and the serialization function then writes information about the object to buffer 60, which can then either be stored in read-only memory, such as a data storage device 30, or transmitted over a network connection 40 for later use by another instance 102 of Ranma. The instruction provided to the serialization function may include the calling parent object, passing the object for further transmission, or directly, i.e. passing the entire object, either by reference, i.e. using a pointer to an object. Another instance of the program may be a second instance 102 of the program 10 running on another computer device 21; the instance may be a later instance of the program 10 running on the same computer device 20, some time after the first instance 101 of the program has finished processing; or the second instance may be an instance of another program other than program 10. FIG. 1, another instance of a program 102 is shown for simplicity as a separate program running on a second computer device 21 connected to a first computer device 20.

Функция десериализации дает возможность родительскому объекту, в этом примере объекту 120 во втором экземпляре 102 программы указывать сериализированный набор значений в буфере 60, либо извлеченный из устройства 30 хранения данных, либо полученный по сетевому соединению 40, и для получения из этих значений экземпляр программного объекта в частности имеет значения указателей, которые корректно связываются с адресным пространством в памяти 17, в которой инстанцирован второй экземпляр 102 программы. В любом случае, сериализованная информация, извлеченная функцией десериализации описывается как полученная из буфера 60 - это не подразумевает, что информация хранилась в энергостойкой памяти, такой как устройство 30 хранения данных, буфер может с тем же успехом содержать промежуточный принимающий буфер в сетевой принимающей стороне компьютерного устройства 21.The deserialization function enables the parent object, in this example, the object 120 in the second instance of the program 102 to indicate a serialized set of values in the buffer 60, either retrieved from the storage device 30, or received through the network connection 40, and to obtain an instance of the program object from these values In particular, it has the meaning of pointers that are correctly associated with the address space in the memory 17 in which the second instance of the program 102 is instantiated. In any case, the serialized information retrieved by the deserialization function is described as being obtained from buffer 60 - this does not imply that the information was stored in an energy-resistant memory such as data storage device 30, the buffer might as well contain an intermediate receiving buffer in the network receiving side of the computer device 21.

На Фиг. 2 изображены этапы, включающие в себя сериализацию объектов в соответствии с вариантами осуществления настоящей технологии.In FIG. 2 illustrates steps involving serializing objects in accordance with embodiments of the present technology.

На первом этапе 200, осуществляемом родительским объектом, подготавливается объект, который должен быть сериализован. Это включает в себя упомянутый программный код (машиночитаемый код) в экземпляре 101 программы, обрабатывающий данные до состояния, требуемого перед тем, как они будут отправлены другой программе для дальнейшей обработки. Так, например, когда экземпляр 101 программы является программой баз данных, это приготовление может содержать в себе ответ родительским объектом (который с большой вероятностью может оказаться дочерним объектом других объектов) на запрос от клиентской программы, осуществление запроса SQL (Structured Query Language - язык структурированных запросов) в базе данных и затем создание объекта, имеющего отношение к базе данных, включая результаты запроса, с целью передачи имеющего отношение к базе данных объекта обратно запрашивающему клиенту. В других примерах родительскому объекту может быть необходимо передать объект, содержащий комбинацию программного кода и данных другому экземпляру программы для дальнейшей обработки.In a first step 200 carried out by the parent, an object is prepared to be serialized. This includes said program code (machine-readable code) in the program instance 101, which processes the data to the state required before it is sent to another program for further processing. So, for example, when the instance 101 of the program is a database program, this preparation may contain the answer of the parent object (which with high probability can turn out to be the child of other objects) to the request from the client program, the implementation of the SQL query (Structured Query Language - structured language queries) in the database and then creating an object related to the database, including the results of the request, in order to transfer the object related to the database back to the requesting client. In other examples, the parent may need to pass an object containing a combination of program code and data to another instance of the program for further processing.

Следующий этап 202 может быть осуществлен либо родительским объектом, либо в рамках запрошенного экземпляра функции сериализации, которая должна сериализировать программный объект и которая была передана либо программному объекту (напрямую), либо указателю на программный объект (посредством ссылки), который должен быть сериализирован. На этом этапе достаточно памяти из памяти 16 распределяется для обеспечения требуемого осуществления задачи функцией сериализации. Как будет описано, экземплярам функции сериализации необходимо создать либо одну, либо две копии объекта для сериализации и, таким образом, необходимо доступное достаточное количество памяти для этого процесса.The next step 202 can be carried out either by the parent object, or within the framework of the requested instance of the serialization function, which should serialize the program object and which was passed either to the program object (directly) or to a pointer to the program object (by reference), which should be serialized. At this point, enough memory from memory 16 is allocated to provide the required task with the serialization function. As will be described, instances of the serialization function need to create either one or two copies of the object for serialization, and thus, sufficient available memory is needed for this process.

Как будет понятно, программный объект может быть сохранен либо в динамической памяти (heap), либо в программном стеке (stack). Динамическая память - это область памяти компьютера, чье распределение не управляется автоматически операционной системой, хранящей программу. Это свободная область памяти, обычно, больше, чем стек. Для распределения памяти переменных в динамической памяти в программе на языке С, используются встроенные функции С распределения памяти malloc() или calloc(). На С++ эквивалентными являются функции new() и delete(), на других языках используются сходные функции.As will be understood, a program object can be stored either in dynamic memory (heap) or in the software stack (stack). Dynamic memory is a memory area of a computer whose distribution is not automatically controlled by the operating system that stores the program. This free space is usually larger than the stack. To allocate the memory of variables in dynamic memory in a C program, the built-in C memory allocation functions malloc () or calloc () are used. In C ++, the new () and delete () functions are equivalent; in other languages, similar functions are used.

Для переменных, распределенных в динамической памяти, можно использовать функцию С free() или функцию С++ delete() для перераспределения этой памяти, если эта память больше не является необходимой. Невозможность проделать это приводит к потере доступа к памяти (при выполнении программы), когда динамическая память все еще является выделенной и недоступной для иных процессов.For variables allocated in dynamic memory, you can use the C free () function or the C ++ delete () function to redistribute this memory if this memory is no longer necessary. Failure to do this leads to loss of access to memory (during program execution), when dynamic memory is still allocated and inaccessible to other processes.

Из-за возможных многих распределений и перераспределений динамической памяти во время работы программы в системах виртуальной памяти переменные динамической памяти могут быть сохранены в несмежных областях виртуальной памяти, а также физической памяти.Due to the many possible distributions and redistributions of dynamic memory during program execution in virtual memory systems, dynamic memory variables can be stored in non-contiguous areas of virtual memory as well as physical memory.

Таким образом, если вызов родительского объекта не предусмотрел иное, функция сериализации не может заключить, что программный объект, который она передавала (либо напрямую, либо посредством ссылки) сохранился в смежной области памяти.Thus, unless the call to the parent object has provided otherwise, the serialization function cannot conclude that the program object that it transmitted (either directly or by reference) was stored in an adjacent memory area.

В вариантах осуществления настоящего решения, если это не было осуществлено вызывающей программой или родительским объектом, функция сериализации обеспечивает сохранение копий программного объекта, который надо сериализовать, в смежной области памяти. На этапе 204 это включает в себя замещение глобального распределителя памяти по умолчанию пользовательским распределителем памяти. Пользовательский распределитель памяти обеспечивает распределение копий объекта для сериализации в соответствующих смежных областях памяти, которая была выделена для функции на этапе 202.In embodiments of the present solution, if it has not been implemented by the calling program or parent, the serialization function ensures that copies of the program object to be serialized are stored in an adjacent memory area. At 204, this includes replacing the default global memory allocator with a custom memory allocator. A user memory allocator provides distribution of copies of an object for serialization in respective adjacent memory areas that was allocated to the function in step 202.

Для программ, написанных на С или С++, управление распределением динамической памяти программы может быть достигнуто перегрузкой функций malloc(), calloc() и new() таким образом, что по мере того, как новые переменные заявляются и распределяются во время выполнения программы, они записываются в смежные области памяти вместо того, чтобы распределяться по несмежным местоположениям памяти - виртуальной или физической. Эквивалентные процедуры могут применяться для программ, написанных на других языках; или же могут применяться другие процедуры для достижения тех же самых результатов в соответствии со средой операционной системы программы.For programs written in C or C ++, control over the allocation of program dynamic memory can be achieved by overloading the malloc (), calloc (), and new () functions in such a way that as new variables are declared and allocated during program execution , they are written to adjacent memory areas instead of being allocated to non-adjacent memory locations - virtual or physical. Equivalent procedures can be applied to programs written in other languages; or other procedures may be applied to achieve the same results in accordance with the program operating system environment.

Если функции сериализации было необходимо переместить распределитель памяти по умолчанию, то на этапах 206 и 208 функция сериализации создает две копии объекта для сериализации в пространстве памяти, выделенном на этапе 202.If the serialization function needed to move the default memory allocator, then at steps 206 and 208, the serialization function creates two copies of the object for serialization in the memory space allocated at step 202.

В распределителе памяти распределение объектов в смежные области памяти используется по умолчанию в экземпляре 101 программы, затем копия объекта передается функции сериализации (либо напрямую, либо посредством ссылки), она может быть использована как первая копия, и таким образом функции сериализации необходимо копировать объект только один раз, чтобы предоставить две копии объекта, каждая из которых хранится в соответствующей смежной области памяти, для анализа.In the memory allocator, the distribution of objects in adjacent memory areas is used by default in the instance 101 of the program, then a copy of the object is transferred to the serialization function (either directly or by reference), it can be used as the first copy, and so only one object needs to be copied to the serialization function times to provide two copies of the object, each of which is stored in the corresponding adjacent memory area, for analysis.

В любом случае после этапов 206 и 208 две копии оригинального объекта занимают соответствующие смежные области памяти, которые доступны функции сериализации.In any case, after steps 206 and 208, two copies of the original object occupy the corresponding adjacent memory areas that are available for serialization.

Так как любая форма объекта может быть передана функции сериализации, функция сериализации не делает никаких заключений о природе объекта или его структуре. Функция сериализации будет знать только размер объекта и то, что в объекте будет находиться комбинация указателей и данных.Since any form of an object can be passed to the serialization function, the serialization function does not make any conclusions about the nature of the object or its structure. The serialization function will only know the size of the object and that the object will contain a combination of pointers and data.

У двух копий объекта одинаковый размер и данные. Одинаковый в контексте одинакового количества памяти и того, что информация в них одинакова. Однако, значения указателей будут отличаться, т.к. они указывают на различные экземпляры данных в соответствующих местоположениях памяти для первой и второй копий объекта. На этапе 210 функция сериализации сравнивает две копии объекта, адрес за адресом, и создает список различий между двумя экземплярами объекта, хранящегося в соответствующих смежных областях памяти. Это достигается простым путем - настройкой указателя на базовый адрес первой копии объекта и базовый адрес второй копии объекта и сравнением значений, сохраненных по каждому адресу перед продвижением каждого указателя один за другим к следующим адресам для сравнения и повторением этой процедуры для каждого адреса по всему объему объекта. Может также быть использована любая эквивалентная процедура.Two copies of the object have the same size and data. The same in the context of the same amount of memory and that the information in them is the same. However, the values of the pointers will differ, because they point to different data instances at the corresponding memory locations for the first and second copies of the object. At step 210, the serialization function compares two copies of the object, address by address, and creates a list of differences between two copies of the object stored in the corresponding adjacent memory areas. This is achieved in a simple way - by setting the pointer to the base address of the first copy of the object and the base address of the second copy of the object and comparing the values stored at each address before moving each pointer one by one to the following addresses for comparison and repeating this procedure for each address throughout the entire volume of the object . Any equivalent procedure may also be used.

В каждом случае, когда существует различие между содержимым адресов в первой копии объекта и соответствующем адресе во второй копии объекта, объем различий будет одинаков и будет иметь отношение к различию между базовым адресов первой копии объекта и базовым адресом второй копии объекта.In each case, when there is a difference between the contents of the addresses in the first copy of the object and the corresponding address in the second copy of the object, the scope of the differences will be the same and will relate to the difference between the base addresses of the first copy of the object and the base address of the second copy of the object.

На Фиг. 4, после этапа 208 на Фиг. 2, первый экземпляр объекта, копия 1 данного размера хранится в смежной области памяти, начиная с базового адреса (1). Второй экземпляр, копия 2, такого же размера, хранится в смежной области памяти, начиная с базового адреса (2). Для простоты на Фиг. 4 показан единственный адрес в каждом экземпляре объекта, содержащего указатель, причем указатель указывает на часть данных, расположенную в определенном месте в пространстве памяти, занятом экземпляром объекта. В копии 1 значение указателя, расположенное по адресу базовый адрес (1) плюс смещение указателя (PtrOffset) содержит базовый адрес (1) плюс смещение данных (DataOffset), а в копии 2 значение указателя, расположенное по адресу базовый адрес (2) плюс смещение указателя (PtrOffset) содержит базовый адрес (2) плюс смещение данных (DataOffset). Таким образом, различие в значении для каждого экземпляра указателя в объекте для сериализации будет являться базовый адрес (2) минус базовый адрес (1).In FIG. 4, after step 208 in FIG. 2, the first instance of the object, copy 1 of this size is stored in an adjacent memory area, starting from the base address (1). The second instance, copy 2, of the same size, is stored in an adjacent memory area, starting at base address (2). For simplicity, FIG. 4 shows a single address in each instance of an object containing a pointer, the pointer pointing to a piece of data located in a specific place in the memory space occupied by the instance of the object. In copy 1, the pointer value located at the address base address (1) plus the pointer offset (PtrOffset) contains the base address (1) plus the data offset (DataOffset), and in copy 2 the pointer value located at the address base address (2) plus the offset The pointer (PtrOffset) contains the base address (2) plus the data offset (DataOffset). Thus, the difference in value for each instance of the pointer in the object for serialization will be the base address (2) minus the base address (1).

Таким образом, на этапе 210 функция сериализации идентифицирует каждое местоположение указателя PtrOffset в копии объекта, а также адрес базовый адрес плюс DataOffset, хранящийся в местоположении указателя.Thus, in step 210, the serialization function identifies each location of the PtrOffset pointer in the copy of the object, as well as the address of the base address plus DataOffset stored in the location of the pointer.

На этапе 212 копия объекта и информация, созданная на этапе 210, записана в буфер и либо сохранена в буфере 60, либо передана другому устройству 21 обработки по сетевому соединению 40. Либо первая копия (копия 1), либо вторая копия (копия 2) могут быть использованы как источники для предоставления копии объекта в буфер.At step 212, a copy of the object and the information created at step 210 are written to the buffer and either stored in the buffer 60 or transferred to another processing device 21 via a network connection 40. Either the first copy (copy 1) or the second copy (copy 2) can be used as sources to provide a copy of the object to the buffer.

Один способ кодирования информации на этапе 212 содержит перемещение значений на местоположения, идентифицированные как содержащие указатели с относительными адресами, и затем простое сохранение списка смещений, PtrOffset, для каждого местоположение указателя в копии объекта для передачи. Таким образом, в примере Фиг. 4, где копия 1 используется как источник, значение базовый адрес (1) плюс DataOffset сначала сохраненное в указанном местоположении указателя, будет замещено скорректированным относительным значением указателя DataOffset в буфере 60, а адрес PtrOffset будет храниться в виде записи в списке (или массиве) PtrIndex, который записан в буфер 60 вместе со скорректированной копией объекта, включая относительный адрес указателя в каждом местоположении указателя. В завершение, указатель размера объекта также записывается в буфер 60.One way of encoding the information in step 212 comprises moving values to locations identified as containing pointers with relative addresses, and then simply storing the offset list, PtrOffset, for each location of the pointer in a copy of the object to be transmitted. Thus, in the example of FIG. 4, where copy 1 is used as the source, the base address value (1) plus the DataOffset first stored in the specified pointer location will be replaced by the adjusted relative value of the DataOffset pointer in buffer 60, and the PtrOffset address will be stored as an entry in the list (or array) of PtrIndex , which is written to buffer 60 along with the adjusted copy of the object, including the relative address of the pointer at each location of the pointer. Finally, an object size indicator is also written to buffer 60.

Будет очевидно, что корректировка адресов указателей может быть либо осуществлена на оригинальной копии объекта перед тем, как он будет записан в буфер; или корректировка может быть осуществлена на соответствующих значениях уже в буфере.It will be obvious that the adjustment of pointer addresses can either be done on the original copy of the object before it is written to the buffer; or adjustment can be made on the corresponding values already in the buffer.

В первом случае копия 2 может быть использована как источник, так как эта копия может быть убрана из памяти, как только завершится сериализация, что дает возможность копии 1 оставаться доступной для использования в экземпляре 101 программы. Сохранение или несохранение копии 1 экземпляром 101 программы зависит от того, будет ли впоследствии использован объект экземпляром 101 программы. Например, может быть желательно предоставить обеим экземплярам 101 и 102 программы параллельную обработку переданного программного объекта, и в этом случае оригинальный объект должен быть сохранен, и таким образом его значение местоположения указателя не должно быть скорректировано.In the first case, copy 2 can be used as a source, since this copy can be removed from memory as soon as serialization is completed, which allows copy 1 to remain available for use in instance 101 of the program. Saving or not saving copy 1 with instance 101 of the program depends on whether the object will subsequently be used by instance 101 of the program. For example, it may be desirable to provide both instances 101 and 102 of the program with parallel processing of the transferred program object, in which case the original object must be stored, and thus its pointer location value should not be adjusted.

Теперь будет описана Фиг. 3 и функция десериализации, которая дает возможность считывать сериализованный объект памяти. Как уже было описано, десериализация может происходить на другом компьютерном устройстве 21, на которое отправляется сериализованная копия объекта, или же это может быть то же самое компьютерное устройство 20 с тем же устройством памяти или с иным устройством памяти.Now, FIG. 3 and a deserialization function that makes it possible to read a serialized memory object. As already described, deserialization can occur on another computer device 21 to which a serialized copy of the object is sent, or it can be the same computer device 20 with the same memory device or with a different memory device.

Функция десериализации вызывается родительским объектом, например, объектом 120, которому нужно продолжить обработку сериализованного объекта. Вызывающий родительский объект не обязательно должен быть тем же объектом, что и родительский объект, который изначально сериализовал объект в буфере 60, а также, как описано выше, экземпляр 102 программы не должен быть тем же самим экземпляром, что и экземпляр 101 программы.The deserialization function is called by the parent object, for example, object 120, which needs to continue processing the serialized object. The calling parent does not have to be the same as the parent that originally serialized the object in buffer 60, and also, as described above, the program instance 102 does not have to be the same instance as the program instance 101.

Функция десериализации может быть передана либо копии буфера, в котором был записан сериализованный объект, либо ссылке на местоположение буфера на этапе 300. Как показано на Фиг. 4, буфер 60 будет содержать копию объекта, где указатели были замещены соответствующими адресами; индекс указателя (смещается в копии объекта); PtrIndex, и, в этом примере, указание размера объекта. Знание размера объекта в буфере 60 дает возможность функции десериализации определить границу 62 между информацией объекта, хранящейся в буфере 60 и информацией PtrIndex, хранящейся в буфере 60.The deserialization function may be transferred either to a copy of the buffer in which the serialized object was recorded, or to a reference to the location of the buffer in step 300. As shown in FIG. 4, buffer 60 will contain a copy of the object where the pointers were replaced with the corresponding addresses; index of the pointer (offset in the copy of the object); PtrIndex, and, in this example, an indication of the size of the object. Knowing the size of the object in the buffer 60 enables the deserialization function to determine the boundary 62 between the object information stored in the buffer 60 and the PtrIndex information stored in the buffer 60.

На этапе 302 функция десериализации распределяет достаточное количество памяти для создания объекта из буферной информации с использованием информации о размере, полученной из буфера 60. В примере на Фиг. 4 выделенная область начинается за базовым адресом (3).At step 302, the deserialization function allocates enough memory to create an object from the buffer information using the size information obtained from the buffer 60. In the example of FIG. 4, the selected area begins behind the base address (3).

На этапе 304 функция десериализации затем создает объект с помощью копирования информации об объекте в буфере в область памяти, выделенную для объекта на этапе 302.At step 304, the deserialization function then creates the object by copying information about the object in the buffer to the memory area allocated for the object at step 302.

На этапе 306 информация о PtrIndex, сохраненная в буфере 60 после границы 62, дает возможность функции десериализации определить местоположение каждого адреса указателя в области выделенной памяти и добавить базовый адрес (3) соответствующему значению указателя, сохраненному по этому адресу, для преобразования относительного значения указателя в абсолютное значение указателя, корректно указывая на корректный адрес данных в области памяти 17.At step 306, the PtrIndex information stored in the buffer 60 after the boundary 62 enables the deserialization function to determine the location of each pointer address in the allocated memory area and add the base address (3) to the corresponding pointer value stored at this address to convert the relative value of the pointer to the absolute value of the pointer, correctly indicating the correct data address in the memory area 17.

На этапе 308 функция десериализации может возвращать десериализованный объект вызывающей функции, которая затем продолжит обработку с использованием объекта. Другой простой пример с пояснением: пусть первая копия объекта занимает смежную область памяти, а значения в каждом местоположении памяти для объекта следующие: First=4178[3]2654[5]78.At step 308, the deserialization function may return the deserialized object of the calling function, which then continues processing using the object. Another simple example with an explanation: let the first copy of the object occupy an adjacent memory area, and the values at each memory location for the object are as follows: First = 4178 [3] 2654 [5] 78.

Значения, показанные в скобках, указывают адреса указателей, хотя функция сериализации никак не может отличить эти значения от значений данных, сохраненных по другим адресам для объекта в памяти. Однако в этом примере, когда вторая копия объекта копируется в смежный участок памяти, значения каждого местоположения в памяти могут выглядеть следующим образом:The values shown in parentheses indicate the addresses of the pointers, although the serialization function cannot distinguish these values from the data values stored at other addresses for the object in memory. However, in this example, when a second copy of an object is copied to an adjacent piece of memory, the values of each location in memory may look like this:

Second=4178[4]2654[6]78.Second = 4178 [4] 2654 [6] 78.

Особое внимание обращается на то, что выделение значения указателей изменилось при переходе от одной копии объекта к следующей, а также на то, что разница между значениями постоянна.Particular attention is drawn to the fact that the allocation of the value of pointers changed during the transition from one copy of the object to the next, as well as the fact that the difference between the values is constant.

Функция сериализации последовательно сравнивает две копии объекта для обнаружения адресов, представляющих различия в значении, происходящие из копии.The serialization function sequentially compares two copies of an object to find addresses representing differences in value originating from the copy.

Как видно, начиная с индекса [0], такие различия возникают в местоположениях [4] и [9], выделенных выше. Эти смещения сохраняются, и информация в этих местоположениях корректируется.As can be seen, starting from the index [0], such differences arise in the locations [4] and [9] highlighted above. These offsets are stored, and information at these locations is adjusted.

Пусть базовый адрес первой копии объекта будет 2. В этом случае это значение извлекается из значений в местоположениях [4] и [9] в первой копии для создания относительных адресов в этих местоположениях. Значения, записанные в буфер 60 для этого объекта будут, следовательно, такими:Let the base address of the first copy of the object be 2. In this case, this value is extracted from the values at locations [4] and [9] in the first copy to create relative addresses at these locations. The values written to buffer 60 for this object will therefore be:

Buffer=4178[1]2654[3]78,[4],[9],12.Buffer = 4178 [1] 2654 [3] 78, [4], [9], 12.

В этом случае также скобки и пунктуация предоставлены для ясности - в буфере 60 нет нужды в подобных разграничениях.In this case, brackets and punctuation are also provided for clarity - there is no need for such delimitations in buffer 60.

Последняя запись в буфере указывает, что информация об объекте занимает первые 12 местоположений в памяти в буфере. Значения, следующие за информацией об объекте и предшествующие информации о размере указывают, что значения в индексе [4] и [9] необходимо скорректировать для пространства 17 памяти процесса-приемника.The last buffer entry indicates that the object information occupies the first 12 locations in memory in the buffer. The values following the object information and the previous size information indicate that the values in the index [4] and [9] need to be adjusted for the memory space 17 of the receiver process.

Будет понятно, что 12 адресов информации объекта, 2 индекса и информация о размере могут быть записаны в буфер 60 в любом подходящем порядке, что позволяет принимающей стороне определить размер программного объекта, который был сериализован и местоположения в программном объекте, которые необходимо скорректировать для пространства 17 памяти процесса-приемника.It will be understood that 12 addresses of object information, 2 indexes and size information can be written to buffer 60 in any suitable order, which allows the receiving side to determine the size of the program object that has been serialized and the locations in the program object that need to be adjusted for space 17 memory of the receiver process.

Продолжая этот пример, если базовый адрес для объекта в пространстве 17 памяти процесса-приемника был, например, 5, это значение должно быть добавлено в местоположения [4] и [9] для создания десериализованного объекта в памяти следующим образом:Continuing this example, if the base address for the object in the memory space 17 of the destination process was, for example, 5, this value should be added to the locations [4] and [9] to create a deserialized object in memory as follows:

Сору: 4178[6]2654[8]78Soru: 4178 [6] 2654 [8] 78

Этот десериализованный объект может быть передан обратно любому вызывающему родительскому объекту 120 для обработки в обычном порядке, включая, например, ресериализацию объекта для дальнейшей обработки другим компьютерным устройством.This deserialized object can be passed back to any calling parent 120 for processing in the usual manner, including, for example, reserializing the object for further processing by another computer device.

Очевидно, что возможны многие альтернативные варианты осуществления решения.Obviously, many alternative solutions are possible.

Например, значения указателя в сериализованной копии объекта в буфере 60 не обязательно должны быть скорректированы перед передачей объекта. В этом случае, базовый адрес исходной копии объекта в памяти 16 может быть записан в буфер 60. Затем исходное значение указателя, исходный базовый адрес из буфера и базовый адрес, например, базовый адрес (3) для десериализованной версии объекта в памяти 17 компьютерного устройства 21 могут быть использованы при десериализации объекта для корректировки для пространства 17 памяти процесса-приемника. Таким образом, вне зависимости от того, был ли объект скорректирован перед передачей принимающему процессу, как описано в отношении Фиг. 2-4; или базовый адрес исходного объекта передается с сериализованным объектом таким образом, что он может быть скорректирован принимающей стороной, объект передается с достаточной информацией, чтобы сделать его независимым от базового адреса для исходного объекта и таким образом предоставить возможность принимающей стороне делать корректировки для пространства 17 памяти процесса-приемника.For example, pointer values in a serialized copy of an object in buffer 60 need not be adjusted before passing the object. In this case, the base address of the original copy of the object in memory 16 can be written to buffer 60. Then, the initial value of the pointer, the initial base address from the buffer and the base address, for example, the base address (3) for the deserialized version of the object in the memory 17 of the computer device 21 can be used when deserializing the object to adjust for the memory space 17 of the process-receiver. Thus, regardless of whether the object has been adjusted before being transferred to the receiving process, as described in relation to FIG. 2-4; or the base address of the source object is transmitted with the serialized object in such a way that it can be adjusted by the receiving side, the object is transmitted with sufficient information to make it independent of the base address for the source object and thus allow the receiving side to make adjustments for the process memory space 17 -receiver.

А также из-за того, что PtrIndex будет отличаться по длине в соответствии с числом указателей в объекте, указатель размера объекта записывается в буфер для предоставления возможности функции десериализации различать данные объекта и PtrIndex. Однако, если PtrIndex была выделена конкретная зона, например, размера объекта, тогда, хотя это окажется менее эффективным, не будет строго необходимо записывать размер объекта в буфер 60.And also because PtrIndex will differ in length according to the number of pointers in the object, the size indicator of the object is written to the buffer to enable the deserialization function to distinguish between the object and PtrIndex data. However, if a specific area, such as the size of an object, was allocated to PtrIndex, then, although this would be less efficient, it would not be strictly necessary to write the size of the object to buffer 60.

Сходным образом, в предоставленных примерах PtrIndex безусловно идентифицирует местоположения в копии объекта, соответствующего указателям в объекте. В этом случае также, хотя это в большое вероятностью будет менее эффективно из-за того, что будет ожидаться меньше указателей, чем других значений в объекте, эта информация может также быть передана негативно, причем PtrIndex (или эквивалент) включает в себя указания на местоположения в объекте, которые не являются указателями. Это укажет функции десериализации, какие адреса не должны быть скорректированы для пространства 17 памяти процесса-приемника, оставляя другие адреса, например, адреса указателей, на корректировку.Similarly, in the examples provided, PtrIndex unconditionally identifies the locations in the copy of the object corresponding to the pointers in the object. In this case, also, although it is more likely to be less efficient due to the fact that fewer pointers will be expected than other values in the object, this information can also be transmitted negatively, with PtrIndex (or equivalent) including directions to locations in an object that are not pointers. This will indicate to the deserialization function which addresses should not be adjusted for the memory space 17 of the destination process, leaving other addresses, such as pointer addresses, to be adjusted.

В контексте настоящего описания, если конкретно не указано иное, термин «данные» включает в себя любую информацию, которая может храниться, например, в базе данных, или может быть передана в электронной форме, например, потоком. Таким образом, данные включают в себя, среди прочего, аудиовизуальные произведения (изображения, видео, звукозаписи, презентации и т.д.), данные о местоположении, цифровые данные и т.д., текст (мнения, комментарии, вопросы, сообщения и т.д.), документы, таблицы и т.д.In the context of the present description, unless specifically indicated otherwise, the term "data" includes any information that may be stored, for example, in a database, or may be transmitted in electronic form, for example, by stream. Thus, data includes, but is not limited to, audiovisual works (images, videos, sound recordings, presentations, etc.), location data, digital data, etc., text (opinions, comments, questions, messages and etc.), documents, tables, etc.

В контексте настоящего описания, если конкретно не указано иное, термин «база данных» подразумевает под собой любой структурированный набор данных, не зависящий от конкретной структуры, программного обеспечения по управлению базой данных, аппаратного обеспечения компьютера, на котором данные хранятся, используются или иным образом оказываются доступны для использования. База данных может находиться на том же оборудовании, выполняющем процесс, который сохраняет или использует информацию, хранящуюся в базе данных, или же она может находиться на отдельном оборудовании, например, выделенном сервере или множестве серверов.In the context of the present description, unless specifically indicated otherwise, the term "database" means any structured data set that is independent of the specific structure, database management software, hardware of the computer on which data is stored, used, or otherwise are available for use. The database may reside on the same hardware that runs the process that stores or uses the information stored in the database, or it may reside on separate hardware, such as a dedicated server or multiple servers.

Будет понятно, что, хотя указанный выше способ был описан с целью примера с конкретной последовательностью этапов, различные этапы могут быть размещены в ином порядке, где это возможно, чтобы достичь того же результата.It will be understood that although the above method has been described for the purpose of an example with a specific sequence of steps, the various steps may be arranged in a different order, where possible, to achieve the same result.

Варианты осуществления настоящего решения находят конкретное применение, например, в распределении программных объектов между устройствами; обеспечении обработки на виртуальных машинах, где, например, обработки и/или принятие решений могут быть перемещены между удаленным сервером и локальными процессорами; системах резервного копирования/виртуализации; и в компиляторах и приложениях, выполняющих код.Embodiments of the present solution find particular application, for example, in the distribution of software objects between devices; providing processing on virtual machines, where, for example, processing and / or decision making can be moved between the remote server and local processors; backup / virtualization systems; and in compilers and code execution applications.

В контексте настоящего описания, если конкретно не указано иное, «сервер» подразумевает под собой компьютерную программу, работающую на соответствующем оборудовании, которая способна получать запросы (например, от компьютерных устройств) по сети и выполнять эти запросы или инициировать выполнение этих запросов. Оборудование может представлять собой один физический компьютер или одну физическую компьютерную систему, но ни то, ни другое не является обязательным. В контексте настоящего описания использование выражения «сервер» не означает, что каждая задача (например, полученные команды или запросы) или какая-либо конкретная задача будет получена, выполнена или инициирована к выполнению одним и тем же сервером (то есть одним и тем же программным обеспечением и/или аппаратным обеспечением); это означает, что любое количество элементов программного обеспечения или аппаратных устройств может быть вовлечено в прием/передачу, выполнение или инициирование выполнения любого запроса или последствия любого запроса, связанного с клиентским устройством, и все это программное и аппаратное обеспечение может быть одним сервером или несколькими серверами, оба варианта включены в выражение «по меньшей мере один сервер».In the context of the present description, unless specifically indicated otherwise, “server” means a computer program running on appropriate equipment that is able to receive requests (for example, from computer devices) over the network and to fulfill these requests or initiate the execution of these requests. The equipment may be a single physical computer or a single physical computer system, but neither is required. In the context of the present description, the use of the expression “server” does not mean that every task (for example, received commands or requests) or any specific task will be received, executed or initiated to be executed by the same server (that is, by the same software software and / or hardware); this means that any number of software elements or hardware devices can be involved in receiving / transmitting, executing or initiating the execution of any request or the consequences of any request associated with the client device, and all this software and hardware can be one server or several servers , both options are included in the expression “at least one server”.

В контексте настоящего описания, если конкретно не указано иное, термин «используемый компьютером носитель компьютерной информации» подразумевает под собой носитель абсолютно любого типа и характера, включая ОЗУ, ПЗУ, диски (компакт диски, DVD-диски, дискеты, жесткие диски и т.д.), USB флеш-накопители, твердотельные накопители, накопители на магнитной ленте и т.д.In the context of the present description, unless specifically indicated otherwise, the term “computer-supported computer information medium” means a medium of absolutely any type and nature, including RAM, ROM, disks (CDs, DVDs, diskettes, hard drives, etc.). e.), USB flash drives, solid state drives, tape drives, etc.

В контексте настоящего описания, если конкретно не указано иное, слова «первый», «второй», «третий» и т.д. используются в виде прилагательных исключительно для того, чтобы отличать существительные, к которым они относятся, друг от друга, а не для целей описания какой-либо конкретной связи между этими существительными. Так, например, следует иметь в виду, что использование терминов "первое устройство" и "третье устройство" не подразумевает какого-либо порядка, отнесения к определенному типу, хронологии, иерархии или ранжирования (например) устройств/между устройств, равно как и их использование (само по себе) не предполагает, что некое "второе устройство" обязательно должно существовать в той или иной ситуации. В дальнейшем, как указано здесь в других контекстах, упоминание "первого" элемента и "второго" элемента не исключает возможности того, что это один и тот же фактический реальный элемент. Так, например, в некоторых случаях, "первое" устройство и "второе" устройство могут являться одним и тем же программным и/или аппаратным обеспечением, а в других случаях они могут являться разным программным и/или аппаратным обеспечением.In the context of the present description, unless specifically indicated otherwise, the words "first", "second", "third", etc. used in the form of adjectives solely to distinguish the nouns to which they relate from each other, and not for the purpose of describing any specific relationship between these nouns. So, for example, it should be borne in mind that the use of the terms “first device” and “third device” does not imply any ordering, chronology, hierarchy or ranking (for example) of devices / between devices, as well as their use (in itself) does not imply that a certain “second device” must exist in a given situation. Hereinafter, as indicated here in other contexts, reference to the “first” element and the “second” element does not exclude the possibility that it is one and the same actual real element. So, for example, in some cases, the “first” device and the “second” device can be the same software and / or hardware, and in other cases they can be different software and / or hardware.

Каждый вариант осуществления преследует по меньшей мере одну из вышеупомянутых целей и/или объектов. Следует иметь в виду, что некоторые объекты данного решения, полученные в результате попыток достичь вышеупомянутой цели, могут удовлетворять другим целям, отдельно не указанным здесь.Each embodiment pursues at least one of the aforementioned objectives and / or objects. It should be borne in mind that some of the objects of this decision, obtained as a result of attempts to achieve the aforementioned goal, may satisfy other goals not specifically indicated here.

Таким образом, варианты осуществления настоящего решения можно изложить следующим образом, структурированно, пронумерованными пунктами.Thus, embodiments of the present solution can be summarized as follows, in a structured, numbered paragraphs.

1. *Способ передачи объекта (12) от первого процесса (10') на второй процесс (10''), причем у первого процесса имеется первое адресное пространство (16) памяти, а у второго процесса имеется второе адресное пространство памяти (16'); способ выполняется процессором компьютерного устройства (20), выполняя указанный первый процесс; способ содержит:1. * A method for transferring an object (12) from the first process (10 ') to the second process (10''), the first process having a first memory address space (16), and the second process having a second memory address space (16'); the method is performed by a processor of a computer device (20), performing said first process; the method contains:

предоставление (206) первой копии указанного объекта в первой смежной области указанного первого адресного пространства памяти;providing (206) a first copy of the specified object in the first adjacent area of the specified first memory address space;

предоставление (208) второй копии указанного объекта во второй смежной области указанного первого адресного пространства памяти;providing (208) a second copy of said object in a second adjacent area of said first memory address space;

для каждого местоположения указанных первой и второй копии указанного объекта сравнение (210) соответствующих значений, сохраненных в соответствующих местоположениях в рамках указанной первой копии указанного объекта и указанной второй копии указанного объекта;for each location of the specified first and second copies of the specified object, a comparison (210) of the corresponding values stored in the respective locations within the specified first copy of the specified object and the specified second copy of the specified object;

создание индекса местоположения в указанной первой и второй копий указанного объекта, в которых указанные соответствующие значения в соответствующих местоположениях не совпали;creating a location index in the specified first and second copies of the specified object, in which the indicated corresponding values in the respective locations did not match;

предоставление (212) копии указанного объекта и указанного индекса местоположений для передачи на указанный второй процесс, чтобы указанный второй процесс мог использовать указанный индекс местоположений для корректировки указанных местоположений в указанной копии указанного объекта для указанного второго адресного пространства памяти.providing (212) a copy of said object and said location index for transmission to said second process so that said second process can use said location index to adjust said locations in said copy of said object for said second memory address space.

CLAUSE 1. Способ в соответствии с п. 1, в котором указанный способ дополнительно содержит:CLAUSE 1. The method according to claim 1, wherein said method further comprises:

получение (200) указателя указанного объекта для передачи;receiving (200) a pointer to the specified object for transmission;

замену (204) распределителя памяти по умолчанию на пользовательский распределитель памяти, причем пользовательский распределитель памяти выполнен с возможностью распределять память в смежной области памяти;replacing (204) the default memory allocator with a user memory allocator, wherein the user memory allocator is configured to allocate memory in an adjacent memory area;

где предоставление указанной первой копии содержит копирование (206) указанного объекта для передачи в указанную первую смежную область памяти, распределенную указанным пользовательским распределителем памяти; иwhere the provision of the specified first copy contains a copy (206) of the specified object for transmission to the specified first adjacent memory area allocated by the specified user memory allocator; and

предоставление указанной второй копии (208) содержит копирование указанного объекта для передачи в указанную вторую смежную область памяти, распределенную указанным пользовательским распределителем памяти; иproviding said second copy (208) comprises copying said object for transmission to said second adjacent memory area allocated by said user memory allocator; and

CLAUSE 2. Способ в соответствии с п. 1, в котором указанный способ дополнительно содержит:CLAUSE 2. The method according to claim 1, wherein said method further comprises:

получение указателя указанного объекта для передачи, причем указанный объект занимает первую смежную область памяти, распределенной пользовательским распределителем памяти; иobtaining a pointer to the specified object for transmission, and the specified object occupies the first adjacent area of memory allocated by the user memory allocator; and

предоставление указанной второй копии содержит копирование указанного объекта для передачи в указанную вторую смежную область памяти, распределенную указанным пользовательским распределителем памяти.providing said second copy comprises copying said object for transmission to said second adjacent memory area allocated by said user memory allocator.

CLAUSE 3. Способ по п. 1, в котором предоставление копии указанного объекта содержит копирование либо указанной первой копии указанного объекта, либо указанной второй копии указанного объекта в буфер (60).CLAUSE 3. The method according to claim 1, wherein providing a copy of the specified object comprises copying either the specified first copy of the specified object or the specified second copy of the specified object to the buffer (60).

CLAUSE 4. Способ по п. 1, в котором указанная скопированная первая или вторая копия указанного объекта располагается в базовом адресе в указанном первом адресном пространстве памяти и в котором указанный способ дополнительно содержит извлечение указанного базового адреса из значений указанной копии указанного объекта в указанный буфер в каждом местоположении в указанном индексе местоположений.CLAUSE 4. The method of claim 1, wherein said copied first or second copy of said object is located at a base address in said first memory address space and wherein said method further comprises extracting said base address from values of said copy of said object into said buffer in each location in the specified location index.

CLAUSE 5. Способ по п. 1, в котором указанная скопированная первая или вторая копия указанного объекта располагается в базовом адресе в указанном первом адресном пространстве памяти, и в котором указанный способ дополнительно содержит извлечение указанного базового адреса из значений скопированной первой или второй копии объекта в каждом местоположении в указанном индексе местоположений перед копированием в указанный буфер.CLAUSE 5. The method of claim 1, wherein said copied first or second copy of said object is located at a base address in said first memory address space, and wherein said method further comprises extracting said base address from values of the copied first or second copy of the object in each location in the specified location index before copying to the specified buffer.

CLAUSE 6. Способ по п. 1, в котором способ дополнительно содержат предоставление размера указанного объекта с указанной копией указанного объекта и указанный индекс местоположений для передачи указанному второму процессу.CLAUSE 6. The method according to claim 1, wherein the method further comprises providing the size of the specified object with the specified copy of the specified object and the specified location index for transmission to the specified second process.

CLAUSE 7. Способ по п. 1, в котором способ включает в себя функцию сериализации, выполняющую указанные шаги в ответ на вызов родительского объекта для передачи указанного объекта.CLAUSE 7. The method of claim 1, wherein the method includes a serialization function that performs the steps in response to a call to the parent to transmit the specified object.

CLAUSE 8. Способ по п. 1, в котором указанный первый процесс инстанцируется на первом компьютерном устройстве (20), а второй процесс инстанцируется на втором, ином компьютерном устройстве (20').CLAUSE 8. The method according to claim 1, wherein said first process is instantiated on a first computer device (20) and a second process is instantiated on a second, different computer device (20 ').

CLAUSE 9. Способ передачи объекта от первого процесса на второй процесс, причем у первого процесса имеется первое адресное пространство памяти, а у второго процесса имеется второе адресное пространство памяти; способ выполняется процессором компьютерного устройства, выполняя указанный второй процесс; способ содержит:CLAUSE 9. A method of transferring an object from a first process to a second process, the first process having a first memory address space, and the second process having a second memory address space; the method is performed by a processor of a computer device by performing said second process; the method contains:

получение (300) копии указанного объекта и индекса месторасположений в указанной копии объекта, указывающие на указатели местоположений в указанной копии указанного объекта;obtaining (300) a copy of the specified object and the location index in the specified copy of the object, indicating location pointers in the specified copy of the specified object;

копирование (304) указанного объекта в смежную область указанного второго адресного пространства памяти, причем указанная область имеет базовый адрес; и добавление (306) указанного значения базового адреса к значениям указанного объекта в указанной смежной области указанного второго адресного пространства памяти в каждом местоположении в указанном индексе местоположений.copying (304) the specified object into the adjacent area of the specified second address space of memory, and the specified area has a base address; and adding (306) the specified base address value to the values of the specified object in the specified adjacent area of the specified second memory address space at each location in the specified location index.

CLAUSE 10. Способ по п. 10, способ дополнительно содержит в себе получение базового адреса для указанного объекта в указанном первом адресном пространстве памяти и извлечение указанного базового адреса из указанного объекта в указанном первом адресном пространстве памяти из значений указанного объекта в указанной смежной области указанного второго адресного пространства памяти в каждом местоположении в указанном индексе местоположений.CLAUSE 10. The method of claim 10, the method further comprises obtaining a base address for the specified object in the specified first memory address space and extracting the specified base address from the specified object in the specified first memory address space from the values of the specified object in the specified adjacent area of the specified second memory address space at each location in the specified location index.

CLAUSE 11. Способ по п. 10, способ дополнительно содержит в себе получение размера указанного объекта и распределение (302) смежной области памяти по меньшей мере указанного размера в указанном втором адресном пространстве памяти.CLAUSE 11. The method of claim 10, the method further comprises obtaining a size of said object and allocating (302) an adjacent memory region of at least said size in said second memory address space.

CLAUSE 12. Способ по п. 10, в котором способ включает в себя функцию десериализации, выполняющую указанные шаги в ответ на вызов родительского объекта для получения указанного объекта.CLAUSE 12. The method of claim 10, wherein the method includes a deserialization function that performs the steps in response to a call to the parent to obtain the specified object.

CLAUSE 13. Компьютерный программный продукт, включающий в себя выполняемые инструкции, которые хранятся на машиночитаемом носителе, и при выполнении которых компьютерный аппарат настраивается для выполнения способа по любому из пп. 1-13.CLAUSE 13. A computer software product that includes executable instructions that are stored on a computer-readable medium, and during which the computer device is configured to perform the method according to any one of paragraphs. 1-13.

CLAUSE 14. Система обработки данных, содержащая в себе первое компьютерное устройство, соединенное со вторым компьютерным устройством, причем указанное первое компьютерное устройство выполнено с возможностью выполнять этапы пункта 1, а второе компьютерное устройство выполнено с возможностью выполнять этапы пункта 10.CLAUSE 14. A data processing system comprising a first computer device connected to a second computer device, said first computer device being configured to perform steps 1, and a second computer device configured to perform steps 10.

Дополнительные и/или альтернативные характеристики, аспекты и преимущества вариантов осуществления настоящей технологии станут очевидными из последующего описания, прилагаемых чертежей и прилагаемой формулы изобретения.Additional and / or alternative characteristics, aspects and advantages of embodiments of the present technology will become apparent from the following description, the attached drawings and the attached claims.

Специалисты в данной области техники поймут, что в настоящем описании выражение "получение данных" от пользователя подразумевает получение компьютерным устройством данных от пользователя в виде электронного (или другого) сигнала. Кроме того, специалисты в данной области техники поймут, что отображение данных пользователю через графический интерфейс пользователя (например, экран компьютерного устройства и тому подобное) может включать в себя передачу сигнала графическому интерфейсу пользователя, этот сигнал содержит данные, которые могут быть обработаны, и по меньшей мере часть этих данных может отображаться пользователю через графический интерфейс пользователя.Those skilled in the art will understand that in the present description, the expression “receiving data” from a user means receiving by the computer device data from the user in the form of an electronic (or other) signal. In addition, those skilled in the art will understand that displaying data to a user through a graphical user interface (for example, a screen of a computer device and the like) may include transmitting a signal to the graphical user interface, this signal contains data that can be processed, and at least a portion of this data may be displayed to the user via a graphical user interface.

Некоторые из этих этапов, а также передача-получение сигнала хорошо известны в данной области техники и поэтому для упрощения были опущены в конкретных частях данного описания. Сигналы могут быть переданы - получены с помощью оптических средств (например, оптического соединения), электронных средств (например, проводного или беспроводного соединения) и механических средств (например, на основе давления, температуры или другого подходящего параметра). Модификации и улучшения вышеописанных вариантов осуществления настоящей технологии будут ясны специалистам в данной области техники. Предшествующее описание представлено только в качестве примера и не несет никаких ограничений. Таким образом, объем настоящей технологии ограничен только объемом прилагаемой формулы изобретения.Some of these steps, as well as signal transmission-reception, are well known in the art and, therefore, have been omitted in specific parts of this description for simplicity. Signals can be transmitted — received using optical means (for example, optical connection), electronic means (for example, wired or wireless connection) and mechanical means (for example, based on pressure, temperature or another suitable parameter). Modifications and improvements to the above-described embodiments of the present technology will be apparent to those skilled in the art. The preceding description is provided as an example only and is not subject to any restrictions. Thus, the scope of the present technology is limited only by the scope of the attached claims.

Claims (38)

1. Способ передачи объекта от первого процесса на второй процесс, причем первый процесс имеет первое адресное пространство памяти, а второй процесс имеет второе адресное пространство памяти; выполняемый процессором компьютерного устройства, выполняющим указанный первый процесс; и включающий:1. A method of transferring an object from a first process to a second process, the first process having a first memory address space, and the second process having a second memory address space; performed by a processor of a computer device executing said first process; and including: предоставление первой копии указанного объекта в первой смежной области указанного первого адресного пространства памяти;providing a first copy of said object in a first adjacent area of said first memory address space; предоставление второй копии указанного объекта во второй смежной области указанного первого адресного пространства памяти;providing a second copy of the specified object in the second adjacent area of the specified first address memory space; сравнение для каждого местоположения указанных первой и второй копий указанного объекта соответствующих значений, сохраненных в соответствующих местоположениях в рамках указанной первой копии указанного объекта и указанной второй копии указанного объекта;comparing for each location of the indicated first and second copies of the specified object the corresponding values stored in the respective locations within the specified first copy of the specified object and the specified second copy of the specified object; формирование индекса местоположения в указанных первой и второй копиях указанного объекта, в которых указанные соответствующие значения в соответствующих местоположениях различаются;the formation of a location index in the specified first and second copies of the specified object, in which the indicated corresponding values at the respective locations differ; предоставление копии указанного объекта и указанного индекса местоположений для передачи на указанный второй процесс для использования в корректировке указанных местоположений в указанной копии указанного объекта для указанного второго адресного пространства памяти.providing a copy of the specified object and the specified location index for transmission to the specified second process for use in adjusting the specified locations in the specified copy of the specified object for the specified second memory address space. 2. Способ по п. 1, в котором2. The method according to p. 1, in which получают указатель указанного объекта для передачи;receive a pointer to the specified object for transmission; заменяют распределитель памяти по умолчанию на заданный пользователем распределитель памяти, выполненный с возможностью распределения памяти в смежной области памяти;replacing the default memory allocator with a user-defined memory allocator configured to allocate memory in an adjacent memory region; при этом предоставление указанной первой копии содержит копирование указанного объекта для передачи в указанную первую смежную область памяти, распределенную указанным заданным пользователем распределителем памяти; иwherein the provision of said first copy comprises copying said object for transmission to said first adjacent memory region allocated by said memory allocator specified by a user; and предоставление указанной второй копии содержит копирование указанного объекта для передачи в указанную вторую смежную область памяти, распределенную указанным заданным пользователем распределителем памяти.providing said second copy comprises copying said object for transmission to said second adjacent memory area allocated by said user-specified memory allocator. 3. Способ по п. 1, в котором3. The method according to p. 1, in which получают указатель указанного объекта для передачи, причем указанный объект занимает первую смежную область памяти, распределенную заданным пользователем распределителем памяти; иget a pointer to the specified object for transmission, and the specified object occupies the first adjacent memory area allocated by a user-specified memory allocator; and предоставление указанной второй копии содержит копирование указанного объекта для передачи в указанную вторую смежную область памяти, распределенную указанным заданным пользователем распределителем памяти.providing said second copy comprises copying said object for transmission to said second adjacent memory area allocated by said user-specified memory allocator. 4. Способ по п. 1, в котором предоставление копии указанного объекта содержит копирование указанной первой копии указанного объекта или указанной второй копии указанного объекта в буфер.4. The method of claim 1, wherein providing a copy of said object comprises copying said first copy of said object or said second copy of said object to a buffer. 5. Способ по п. 1, в котором указанную скопированную первую или вторую копию указанного объекта располагают в базовом адресе в указанном первом адресном пространстве памяти и извлекают указанный базовый адрес из значений указанной копии указанного объекта в указанный буфер в каждом местоположении в указанном индексе местоположений.5. The method according to claim 1, in which the specified copied first or second copy of the specified object is located in the base address in the specified first memory address space and the specified base address is extracted from the values of the specified copy of the specified object to the specified buffer at each location in the specified location index. 6. Способ по п. 1, в котором указанную скопированную первую или вторую копию указанного объекта располагают в базовом адресе в указанном первом адресном пространстве памяти и извлекают указанный базовый адрес из значений скопированной первой или второй копии объекта в каждом местоположении в указанном индексе местоположений перед копированием в указанный буфер.6. The method according to claim 1, in which the specified copied first or second copy of the specified object is located in the base address in the specified first memory address space and the specified base address is extracted from the values of the copied first or second copy of the object at each location in the specified location index before copying to the specified buffer. 7. Способ по п. 1, в котором сообщают о размере указанного объекта с указанной копией указанного объекта и указанный индекс местоположений для передачи указанному второму процессу.7. The method according to claim 1, in which they report the size of the specified object with the specified copy of the specified object and the specified location index for transmission to the specified second process. 8. Способ по п. 1, в котором используют функцию сериализации, выполняющую указанные шаги при вызове родительского объекта для передачи указанного объекта.8. The method according to p. 1, in which use the serialization function that performs these steps when calling the parent object to transfer the specified object. 9. Способ по п. 1, в котором указанный первый процесс инстанцируют на первом компьютерном устройстве, а второй процесс инстанцируют на втором отличном компьютерном устройстве.9. The method of claim 1, wherein said first process is instantiated on a first computer device, and a second process is instantiated on a second excellent computer device. 10. Способ по п. 1, в котором указанный первый процесс инстанцируют на первом компьютерном устройстве, а после инстанцируют второй процесс на первом компьютерном устройстве.10. The method according to claim 1, wherein said first process is instantiated on a first computer device, and then a second process is instantiated on a first computer device. 11. Способ по п. 1, в котором указанное предоставление указанной копии указанного объекта и указанного индекса местоположений для передачи содержит запись указанной копии указанного объекта и указанного индекса местоположений в персистентную память.11. The method according to claim 1, wherein said providing a specified copy of the specified object and the specified location index for transmission comprises recording a specified copy of the specified object and the specified location index in persistent memory. 12. Способ по п. 11, в котором персистентная память содержит в себе память компьютера или энергонезависимую память, доступную указанному первому и указанному второму процессу.12. The method of claim 11, wherein the persistent memory comprises computer memory or non-volatile memory available to said first and said second process. 13. Способ по п. 1, в котором указанное предоставление указанной копии указанного объекта и указанного индекса местоположений для передачи включает передачу указанной копии указанного объекта и указанного индекса местоположений на компьютерное устройство по сетевой линии.13. The method according to claim 1, wherein said providing a specified copy of the specified object and the specified location index for transmission includes transmitting the specified copy of the specified object and the specified location index to the computer device via a network line. 14. Способ по п. 2, в котором указанный первый процесс выполняют в виде компилируемой программы на С, а указанный заданный пользователем распределитель памяти выполняют с возможностью осуществления перегруженной функции распределения памяти.14. The method of claim 2, wherein said first process is executed as a compiled C program, and said user-specified memory allocator is configured to perform an overloaded memory allocation function. 15. Способ по п. 2, в котором указанный первый процесс выполняют в виде компилируемой программы на С++, а указанный заданный пользователем распределитель памяти выполняют с возможностью осуществления перегруженной функции.15. The method of claim 2, wherein said first process is executed as a compiled C ++ program, and said user-specified memory allocator is configured to perform an overloaded function. 16. Способ по п. 1, в котором указанное первое и указанное второе адресное пространство памяти выполняют в виде виртуального пространства адресной памяти.16. The method of claim 1, wherein said first and said second address memory space is implemented as a virtual address memory space. 17. Машиночитаемый носитель, включающий в себя выполняемые машиночитаемые коды, при выполнении которых компьютерное устройство осуществляет способ по п. 1.17. Machine-readable medium, including executable computer-readable codes, the execution of which the computer device implements the method according to claim 1. 18. Способ передачи объекта от первого процесса на второй процесс, причем первый процесс имеет первое адресное пространство памяти, а второй процесс имеет второе адресное пространство памяти; выполняемый процессором компьютерного устройства, выполняющим указанный второй процесс, и включающий:18. A method of transferring an object from a first process to a second process, the first process having a first memory address space, and the second process having a second memory address space; performed by the processor of the computer device that performs the specified second process, and including: получение копии указанного объекта и индекса месторасположений в указанной копии объекта, указывающие на указатели местоположений в указанной копии указанного объекта;obtaining a copy of the specified object and the location index in the specified copy of the object, indicating location pointers in the specified copy of the specified object; копирование указанного объекта в смежную область указанного второго адресного пространства памяти, причем указанная область имеет базовый адрес; иcopying said object to an adjacent region of said second address memory space, said region having a base address; and добавление указанного значения базового адреса к значениям указанного объекта в указанной смежной области указанного второго адресного пространства памяти в каждом местоположении в указанном индексе местоположений.adding the specified base address value to the values of the specified object in the specified adjacent area of the specified second memory address space at each location in the specified location index. 19. Способ по п. 18, в котором получают базовый адрес для указанного объекта в указанном первом адресном пространстве памяти и извлекают указанный базовый адрес из указанного объекта в указанном первом адресном пространстве памяти из значений указанного объекта в указанной смежной области указанного второго адресного пространства памяти в каждом местоположении в указанном индексе местоположений.19. The method according to p. 18, which obtains the base address for the specified object in the specified first memory address space and extracts the specified base address from the specified object in the specified first memory address space from the values of the specified object in the specified adjacent area of the specified second memory address space in each location in the specified location index. 20. Способ по п. 18, в котором получают данные о размере указанного объекта и распределяют смежную область памяти по меньшей мере указанного размера в указанном втором адресном пространстве памяти.20. The method according to p. 18, in which data is obtained on the size of the specified object and allocate an adjacent memory region of at least the specified size in the specified second memory address space. 21. Способ по п. 18, в котором используют функцию десериализации, выполняющую указанные шаги при вызове родительского объекта для получения указанного объекта.21. The method according to p. 18, in which use the function of deserialization that performs these steps when calling the parent object to obtain the specified object. 22. Машиночитаемый носитель, включающий машиночитаемые коды, при выполнении которых компьютерное устройство осуществляет способ по п. 18.22. Machine-readable medium, including computer-readable codes, the execution of which the computer device implements the method according to p. 18. 23. Система обработки данных, включающая первое компьютерное устройство, связанное со вторым компьютерным устройством, причем указанное первое компьютерное устройство выполнено с возможностью осуществления способа по п. 1, а второе компьютерное устройство выполнено с возможностью осуществления способа по п. 18.23. A data processing system including a first computer device associated with a second computer device, wherein said first computer device is configured to implement the method of claim 1, and the second computer device is configured to implement the method of claim 18. 24. Система по п. 23, в которой указанные первый и второй компьютерные устройства представляют собой различные устройства.24. The system of claim 23, wherein said first and second computer devices are various devices.
RU2015117932A 2015-05-14 2015-05-14 Method (options) of object transfer from first process to second process, machine-readable media (options) and data processing system RU2632416C2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
RU2015117932A RU2632416C2 (en) 2015-05-14 2015-05-14 Method (options) of object transfer from first process to second process, machine-readable media (options) and data processing system
PCT/IB2015/057320 WO2016181200A1 (en) 2015-05-14 2015-09-23 A data processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
RU2015117932A RU2632416C2 (en) 2015-05-14 2015-05-14 Method (options) of object transfer from first process to second process, machine-readable media (options) and data processing system

Publications (2)

Publication Number Publication Date
RU2015117932A RU2015117932A (en) 2016-12-10
RU2632416C2 true RU2632416C2 (en) 2017-10-04

Family

ID=57249148

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2015117932A RU2632416C2 (en) 2015-05-14 2015-05-14 Method (options) of object transfer from first process to second process, machine-readable media (options) and data processing system

Country Status (2)

Country Link
RU (1) RU2632416C2 (en)
WO (1) WO2016181200A1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11070621B1 (en) * 2020-07-21 2021-07-20 Cisco Technology, Inc. Reuse of execution environments while guaranteeing isolation in serverless computing

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6453403B1 (en) * 2000-05-19 2002-09-17 Sun Microsystems, Inc. System and method for memory management using contiguous fixed-size blocks
US20050086658A1 (en) * 2003-10-15 2005-04-21 Wilding Mark F. Heap and stack layout for multithreaded processes in a processing system
US20080091912A1 (en) * 2005-04-15 2008-04-17 Fleming Matthew D System and Method of Allocating Contiguous Memory in a Data Processing System
US20110145545A1 (en) * 2009-12-10 2011-06-16 International Business Machines Corporation Computer-implemented method of processing resource management
RU2550558C2 (en) * 2012-06-15 2015-05-10 Интернэшнл Бизнес Машинз Корпорейшн Comparing and replacing dynamic address translation table entry

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5403639A (en) * 1992-09-02 1995-04-04 Storage Technology Corporation File server having snapshot application data groups
US5617537A (en) * 1993-10-05 1997-04-01 Nippon Telegraph And Telephone Corporation Message passing system for distributed shared memory multiprocessor system and message passing method using the same
US6119208A (en) * 1997-04-18 2000-09-12 Storage Technology Corporation MVS device backup system for a data processor using a data storage subsystem snapshot copy capability
US6539464B1 (en) * 2000-04-08 2003-03-25 Radoslav Nenkov Getov Memory allocator for multithread environment
US7558264B1 (en) * 2001-09-28 2009-07-07 Emc Corporation Packet classification in a storage system
US8959054B1 (en) * 2010-03-25 2015-02-17 Emc Corporation Methods and apparatus for optimal journaling for continuous data replication
US9009726B2 (en) * 2010-12-10 2015-04-14 Microsoft Technology Licensing, Llc Deterministic sharing of data among concurrent tasks using pre-defined deterministic conflict resolution policies
US9081839B2 (en) * 2011-01-28 2015-07-14 Oracle International Corporation Push replication for use with a distributed data grid

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6453403B1 (en) * 2000-05-19 2002-09-17 Sun Microsystems, Inc. System and method for memory management using contiguous fixed-size blocks
US20050086658A1 (en) * 2003-10-15 2005-04-21 Wilding Mark F. Heap and stack layout for multithreaded processes in a processing system
US20080091912A1 (en) * 2005-04-15 2008-04-17 Fleming Matthew D System and Method of Allocating Contiguous Memory in a Data Processing System
US20110145545A1 (en) * 2009-12-10 2011-06-16 International Business Machines Corporation Computer-implemented method of processing resource management
RU2550558C2 (en) * 2012-06-15 2015-05-10 Интернэшнл Бизнес Машинз Корпорейшн Comparing and replacing dynamic address translation table entry

Also Published As

Publication number Publication date
WO2016181200A1 (en) 2016-11-17
RU2015117932A (en) 2016-12-10

Similar Documents

Publication Publication Date Title
JP5276218B2 (en) Convert LUNs to files or files to LUNs in real time
US20120159116A1 (en) Apparatus for processing remote page fault and method thereof
US9996597B2 (en) Unified mapreduce framework for large-scale data processing
US20150032690A1 (en) Virtual synchronization with on-demand data delivery
US20100180093A1 (en) Rapid defragmentation of storage volumes
US10776378B2 (en) System and method for use of immutable accessors with dynamic byte arrays
JP2009540466A (en) Application program interface for managing media files
US20140282392A1 (en) Programming model for performant computing in documentoriented storage services
US11556468B2 (en) Multi-ring shared, traversable, and dynamic advanced database
US9639340B2 (en) System and method of loading virtual machines
KR20160002109A (en) Method and apparatus of journaling by block group unit for ordered mode journaling file system
US10719362B2 (en) Managing multiple isolated execution contexts in a single process
US20140379739A1 (en) System and method for marshaling massive database data from native layer to java using linear array
US20210349918A1 (en) Methods and apparatus to partition a database
US11169993B2 (en) Datastore mechanism for managing out-of-memory data
RU2632416C2 (en) Method (options) of object transfer from first process to second process, machine-readable media (options) and data processing system
RU2666334C2 (en) Method of data processing
WO2016038858A1 (en) Data management system, data management device, data management method, and program
EP3436990B1 (en) Systems and methods for enabling modifications of multiple data objects within a file system volume
US11467777B1 (en) Method and system for storing data in portable storage devices
WO2014085289A2 (en) Data expanse viewer for database systems
US9547656B2 (en) Method and system for implementing a multilevel file system in a virtualized environment
US10599617B2 (en) Methods and apparatus to modify a binary file for scalable dependency loading on distributed computing systems
US11960721B2 (en) Dynamic storage in key value solid state drive
CN107102898B (en) Memory management and data structure construction method and device based on NUMA (non Uniform memory Access) architecture