RU2666334C2 - Method of data processing - Google Patents

Method of data processing Download PDF

Info

Publication number
RU2666334C2
RU2666334C2 RU2015125822A RU2015125822A RU2666334C2 RU 2666334 C2 RU2666334 C2 RU 2666334C2 RU 2015125822 A RU2015125822 A RU 2015125822A RU 2015125822 A RU2015125822 A RU 2015125822A RU 2666334 C2 RU2666334 C2 RU 2666334C2
Authority
RU
Russia
Prior art keywords
memory
processing
instance
data set
data
Prior art date
Application number
RU2015125822A
Other languages
Russian (ru)
Other versions
RU2015125822A (en
RU2015125822A3 (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 RU2015125822A priority Critical patent/RU2666334C2/en
Priority to PCT/IB2015/058497 priority patent/WO2017001900A1/en
Publication of RU2015125822A publication Critical patent/RU2015125822A/en
Publication of RU2015125822A3 publication Critical patent/RU2015125822A3/ru
Application granted granted Critical
Publication of RU2666334C2 publication Critical patent/RU2666334C2/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • 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: computer equipment.SUBSTANCE: invention relates to the computer equipment. data processing method for the intermediate data processing created during the computer software execution, which processes the data set, including: allocating space in memory on the computer device to the data set processing completion; data set processing using the computer software first instance; processing interruption until the data set processing completion; determining the allocated memory first area, which contains the changed memory address space, reflecting the data set first part processing, and the second area of allocated memory, which contains the unmodified memory address space, reflecting the unprocessed data set second part; transmitting the second area to the computer software second instance for the second area processing; obtaining the modified memory address space corresponding to the data set second part processing; combining the obtained changed memory address space with the first area for further processing by the computer software first instance.EFFECT: technical result consists in enabling of efficient data processing.19 cl, 3 dwg

Description

ОБЛАСТЬ ТЕХНИКИFIELD OF TECHNOLOGY

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

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

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

Программные объекты могут представлять собой сочетание выполняемого кода и данных, и, следовательно, могут выполнять обработку самостоятельно и/или предоставлять данные для обработки другими программными объектами. Например, программный объект, такой как функция или подпрограмма, может быть создан родительским объектом или даже основной программой для выполнения некоторой обработки от имени вызывающего родительского объекта или основной программы. Данные объекта могут быть различных типов, например: примитивные типы данных, такие как целые числа, вещественные числа, булевы числа, знаки; и структурированные или абстрактные типы данных, такие как, массивы или списки, а также определенные типы данных, каждый из которых включает в себя множество экземпляров данных или комбинаций типов данных. Программные данные могут либо храниться напрямую в памяти программного объекта, либо индексироваться указателями, которые содержат адреса других программных объектов или данных. Передача программных объектов, включая указатели, может быть проблематичной, особенно при попытках переместить программный объект из программы или процесса, выполняемых в пределах одного адресного пространства памяти на компьютере, в другую программу или процесс, которые потенциально выполняются в другом адресном пространстве памяти.Software objects may be a combination of executable code and data, and, therefore, may perform processing on their own and / or provide data for processing by other program objects. For example, a program object, such as a function or subroutine, can be created by the parent object or even the main program to perform some processing on behalf of the calling parent object or main program. Object data can be of various types, for example: primitive data types, such as integers, real numbers, Boolean numbers, signs; and structured or abstract data types, such as arrays or lists, as well as certain data types, each of which includes multiple instances of data or combinations of data types. The program data can either be stored directly in the memory 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 problematic, especially when trying to move a program object from a program or process that runs within the same memory address space on a computer to another program or process that potentially runs in another memory address space.

Д.М. Дамдере в "Операционные системы: Концептуальный подход" (англ. "Operating Systems: A Concept-based Approach"), ISBN: 0070611947, 2006, описывает общий подход к выделению памяти на уровне операционной системы (ОС) компьютера.D.M. Damder in "Operating Systems: A Concept-Based Approach", ISBN: 0070611947, 2006, describes a general approach to allocating memory at the computer operating system (OS) level.

Патентная заявка US 8,458,433 «Управление энергостойкой памятью в многоузловой компьютерной системе (англ. "Management of persistent memory in a multi-node computer system") описывает создание и использование энергостойкой памяти в многоузловой компьютерной системе. Управление энергостойкой памятью подразумевает использование энергостойкой памяти для загрузки приложений с целью безопасного перенесения данных из одного приложения в другое.Patent application US 8,458,433, "Management of persistent memory in a multi-node computer system" describes the creation and use of energy-resistant memory in a multi-node computer system. Managing energy-resistant memory involves using energy-resistant memory to load applications to safely transfer data from one application to another.

Патентная заявка US 5,987,495 описывает восстановление контекста пользовательской программы, включая слово состояния программы (PSW) и содержимое регистра процессора, после асинхронных прерываний.Patent application US 5,987,495 describes restoring the context of a user program, including a program status word (PSW) and processor register contents, after asynchronous interruptions.

Известны решения, включающие в себя переключение абсолютной адресации данных на относительную адресацию для избежания проблем при передаче данных с первого компьютера (или процесса) на другой компьютер (или процесс). Однако такие решения могут потребовать инструментов управления памятью, которые способны анализировать содержимое и связывать его с процессом. Этот анализ может быть особенно обременительным, если нет априорного знания о природе обрабатываемого объекта.Known solutions include switching absolute addressing of data to relative addressing 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 are able to analyze the contents 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.

В заявке США US 8,566,536, приводится описание разделения с прямым доступом физической памяти между процессами. Адресное пространство памяти связывается с каждым процессом путем заполнения первой записи в таблице высокоуровневых виртуальных адресов для каждого процесса. Каждое адресное пространство создается и связывается с данным процессом, главное ядро инициирует создание основного списка записи в таблице высокоуровневых виртуальных адресов каждого адресного пространства для каждого процесса. Таким образом, адресное пространство каждого процесса взаимно связано с каждым процессом с помощью заполнения одной или нескольких последовательных записей в таблице высокоуровневых виртуальных адресов первой записью в таблице высокоуровневых виртуальных адресов других процессов. Эта технология, однако, зависит от функциональности, предоставленной ядром процессора.In US application US 8,566,536, a description is given of the direct access partitioning of 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 technology, however, depends on the functionality provided by the processor core.

Следовательно, все еще существует необходимость в эффективной обработке данных.Therefore, there is still a need for efficient data processing.

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

Первым объектом настоящей технологией является способ обработки данных, который позволяет обрабатывать промежуточные данные, созданные в момент выполнения компьютерной программы. Конкретнее, настоящее описание относится к способу обработки данных для передачи промежуточных данных, созданных в момент выполнения компьютерной программы, от первого процесса или приложения второму процессу или приложению. В контексте настоящего описания процесс может считаться включающим в себя контекст выполнения приложения, так, например, первый процесс представляет собой контекст выполнения первого приложения, а второй процесс представляет собой контекст выполнения второго приложения, которое может работать на том же самом компьютере или другом компьютере.The first object of this technology is a data processing method that allows you to process intermediate data created at the time of execution of a computer program. More specifically, the present description relates to a data processing method for transmitting intermediate data created at the time of execution of a computer program from a first process or application to a second process or application. In the context of the present description, a process can be considered to include the execution context of the application, for example, the first process is the execution context of the first application, and the second process is the execution context of the second application, which can run on the same computer or another computer.

Промежуточные данные могут быть результатом неполной обработки набора данных, которая может возникнуть, например, в следствии приостановки или прекращения работы компьютерной программы до завершения обработки набора данных. До запуска компьютерной программы первым приложением, выделяется область памяти, достаточная для упрощения обработки набора данных. Если выполнение прерывается до завершения обработки, в первой части выделенной области памяти содержатся измененные адреса, которые отражают обработанные данные в пределах выделенной области памяти, а во второй части выделенной области памяти содержатся адреса, оставшиеся без изменений. В соответствии с настоящим описанием, первая часть памяти сохраняется первым приложением и только вторая часть памяти выделяется второму приложению для последующей обработки. После завершения последующей обработки, измененная вторая часть памяти возвращается первому приложению для завершения процесса обработки. Благодаря тому, что только вторая часть памяти передается между первым и вторым приложениями, объем памяти, который необходимо передавать между приложениями, снижается и/или снижается нагрузка на вычислительную мощностью.Intermediate data may be the result of incomplete processing of the data set, which may occur, for example, as a result of the suspension or termination of the computer program before the completion of the processing of the data set. Before starting the computer program with the first application, a sufficient memory area is allocated to simplify the processing of the data set. If execution is interrupted before processing is completed, the first part of the allocated memory contains modified addresses that reflect the processed data within the allocated memory, and the second part of the allocated memory contains addresses that remain unchanged. In accordance with the present description, the first part of the memory is stored by the first application and only the second part of the memory is allocated to the second application for further processing. After completing the subsequent processing, the modified second part of the memory is returned to the first application to complete the processing. Due to the fact that only the second part of the memory is transferred between the first and second applications, the amount of memory that needs to be transferred between applications is reduced and / or the load on computing power is reduced.

Для того чтобы эффективно передавать объект от первого процесса второму, в настоящей технологии описано начальное выделение области памяти в виде смежного блока памяти в рамках первого адресного пространства памяти. После прерывания обработки, смежный блок памяти копируется на постоянную память. Этот блок анализируется и разделяется на измененную и неизмененную области. Первая часть памяти, сохраненная первым приложением, занимает первую смежную область адресного пространства памяти, а копия неизмененной второй части памяти, которая занимает вторую смежную область адресного пространства памяти, передается второму процессу и второму адресу памяти для дальнейшей обработки. После завершения этой обработки, вторая смежная область, которая включает измененную область памяти, возвращается первому процессу для замены неизмененной второй смежной области первого пространства памяти.In order to efficiently transfer an object from the first process to the second, the present technology describes the initial allocation of a memory region in the form of an adjacent memory block within the first memory address space. After processing is interrupted, the adjacent memory block is copied to read-only memory. This block is analyzed and divided into changed and unchanged areas. The first part of the memory stored by the first application occupies the first adjacent region of the memory address space, and a copy of the unchanged second part of the memory, which occupies the second adjacent region of the memory address space, is transferred to the second process and the second memory address for further processing. After completing this processing, the second adjacent region, which includes the changed memory region, is returned to the first process to replace the unchanged second adjacent region of the first memory space.

Поскольку первый процесс обладает первым адресным пространством памяти, а второй процесс обладает вторым адресным пространством памяти, для проверки совместимости, между частью памяти, которая передается от первого процесса второму, для каждой области памяти из первой части и второй части соответствующие значения сохранятся и используются для проверки того, что пространство памяти, которая используется для первого и второго процессов, является совместимым. Этот этап может включать в себя сохранение динамических переменных в динамической памяти программ и с помощью динамических переменных или их проиндексированных версий, для каждого из первого процесса и второго процесса.Since the first process has a first memory address space and the second process has a second memory address space, for compatibility between the part of the memory that is transferred from the first process to the second, for each memory area from the first part and second part, the corresponding values are stored and used to check that the memory space used for the first and second processes is compatible. This step may include storing dynamic variables in the dynamic memory of programs and using dynamic variables or their indexed versions for each of the first process and second process.

Некоторые варианты осуществления настоящей технологии выполнены с функцией сериализации, осуществляющей указанные этапы способа в ответ на вызов родительского объекта для передачи указанной второй части.Some embodiments of the present technology 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 second part.

В некоторых случаях указанный первый процесс инстанцируется на первом компьютерном устройстве, а второй процесс инстанцируется на втором, ином компьютерном устройстве.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.

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

Вторым предметом настоящей технологии является способ обработки данных для передачи объекта с первого процесса на второй процесс, причем первый процесс обладает первым адресным пространством, а второй процесс - вторым адресным пространством. Способ выполняется процессором вычислительного устройства, который выполняет второй процесс, и включает в себя получение копии области неизмененной памяти, включающей в себя данные, которые еще не были обработаны первым процессом, осуществление обработки этих данных таким образом, чтобы поддержать область измененной памяти и вернуть копию смежной области измененной памяти первому процессу.The second subject of this technology 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 computing device that performs the second process, and includes obtaining a copy of the unchanged memory area, including data that has not yet been processed by the first process, processing this data in such a way as to maintain the changed memory area and return the adjacent copy areas of modified memory to the first process.

Некоторые варианты осуществления настоящей технологии содержат в себе получение размера указанного смежной области неизмененной памяти и распределение смежной области памяти по меньшей мере указанного размера в указанном втором адресном пространстве памяти.Some embodiments of the present technology comprise obtaining the size of said adjacent region of unchanged memory and allocating an adjacent region of memory of at least a specified size in said second memory address space.

Некоторые варианты осуществления настоящей технологии выполнены с функцией десериализации, осуществляющей указанные этапы способа в ответ на вызов родительского объекта для получения указанного объекта.Some embodiments of the present technology 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 product that 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.

Соответственно, предлагается способ, который определен в каждом из независимых пунктов формулы изобретения. Также предлагаются система и компьютерный программный продукт. Преимущественные характеристики представлены в независимых пунктах формулы изобретения.Accordingly, a method is provided which is defined in each of the independent claims. A system and computer software product are also offered. Advantageous characteristics are presented in the independent claims.

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

Далее будут описаны различные примеры вариантов осуществления технологии со ссылками на соответствующие чертежи, где: Various examples of technology embodiments will now be described with reference to the relevant drawings, wherein:

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

На Фиг. 2 изображен способ обработки данных, выполнимый в системе на Фиг. 1; иIn FIG. 2 shows a data processing method executable in the system of FIG. one; and

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

ОПИСАНИЕ ТЕХНОЛОГИИ DESCRIPTION OF TECHNOLOGY

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

Целью этого является также исключительно помощь в понимании, а не определение объема и границ настоящей технологии. Эти модификации не представляют собой исчерпывающий список, и специалистам в данной области техники будет понятно, что возможны и другие модификации. Кроме того, это не должно интерпретироваться так, что там, где это еще не было сделано, т.е. там, где не были изложены примеры модификаций, никакие модификации невозможны, и/или что то, что описано, является единственным вариантом осуществления этого экземпляра настоящей технологии. Как будет понятно специалисту в данной области техники, это, скорее всего, не так. Кроме того, следует иметь в виду, что система 100 представляет собой в некоторых конкретных проявлениях достаточно простой вариант осуществления настоящей технологии, и в подобном случае представлен здесь с целью облегчения понимания. Как будет понятно специалисту в данной области техники, многие варианты осуществления настоящей технологии будут обладать гораздо большей сложностью.The purpose of this is also solely assistance in understanding, and not defining the scope and boundaries of this technology. 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 what is described is the only embodiment of this instance of the present technology. 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 of the present technology, 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 technology will have much greater complexity.

В первом варианте осуществления настоящей технологии первое компьютерное устройство 20 функционально соединено с устройством 30 хранения данных, которое хранит программный код 10. Устройство 30 хранения данных может является таким устройством памяти как жесткий диск, встроенный в первое компьютерное устройство 20, или устройство 30 хранения данных может быть соединено с первым компьютерным устройством 20 по сети (не показана) или по любому подходящему проводному или беспроводному соединению. В контексте настоящего описания, если конкретно не указано иное, "компьютерное устройство" подразумевает под собой аппаратное устройство, способное работать с программным обеспечением, подходящим к решению соответствующей задачи. Таким образом, некоторыми примерами электронных устройств (среди прочего) могут служить универсальные персональные компьютеры (настольные компьютеры, ноутбуки, нетбуки и т.п.), мобильные компьютерные устройства, смартфоны, планшеты, а также сетевое оборудование, такое как маршрутизаторы, коммутаторы и шлюзы. Следует иметь в виду, что устройство, ведущее себя как компьютерное устройство в настоящем контексте, может вести себя как сервер по отношению к другим электронным устройствам. Использование выражения «компьютерное устройство» не исключает возможности использования множества электронных устройств для получения/отправки, выполнения или инициирования выполнения любой задачи или запроса, или же последствий любой задачи или запроса, или же этапов любого вышеописанного метода.In a first embodiment of the present technology, the first 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 first computer device 20, or the data storage device 30 may be connected to the first computer device 20 via a network (not shown) or by 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 method described above.

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

Экземпляр 101 программы выполнен с возможностью выделить первую смежную область 12 памяти в памяти 16 для сохранения динамических программных переменных - областей динамической памяти. Экземпляр 101 далее выполнен с возможностью обрабатывать данные из набора данных и сохранять динамические переменные в рамках первой выделенной смежной области памяти, связанной с конкретной программой. Этот экземпляр 101 программы может считаться первым процессом или приложением и, в соответствии с настоящим описанием, предлагается способ, в котором промежуточные данные, являющиеся результатом незавершенной обработки набора данных первым процессом, передаются второму экземпляру 1001 компьютерной программы. Второй экземпляр 1001 может считаться вторым процессом или приложением.The program instance 101 is configured to allocate a first adjacent memory region 12 in the memory 16 for storing dynamic program variables — dynamic memory regions. Instance 101 is further configured to process data from a data set and store dynamic variables within the first allocated contiguous memory region associated with a particular program. This instance 101 of the program can be considered the first process or application and, in accordance with the present description, a method is proposed in which intermediate data resulting from the incomplete processing of the data set by the first process is transferred to the second instance 1001 of the computer program. The second instance 1001 may be considered a second process or application.

Промежуточные данные могут быть результатом неполной обработки набора данных, которая может возникнуть, например, в следствии приостановки или прекращения работы компьютерной программы до завершения обработки набора данных. Как было подробно описано выше, до запуска компьютерной программы первым приложением, выделяется область памяти, достаточная для упрощения обработки набора данных. Если выполнение прерывается до завершения обработки, например, в ответ на то, что первый экземпляр 101 компьютерной программы останавливает обработку данных, настоящая технология описывает передачу необработанных данных второму экземпляру 1001 компьютерной программы.Intermediate data may be the result of incomplete processing of the data set, which may occur, for example, as a result of the suspension or termination of the computer program before the completion of the processing of the data set. As described in detail above, before starting the computer program with the first application, a sufficient memory area is allocated to simplify the processing of the data set. If execution is interrupted before processing is completed, for example, in response to the first instance 101 of a computer program stopping data processing, the present technology describes the transfer of raw data to a second instance 1001 of a computer program.

Для того чтобы эффективно передавать необработанные данные от первого экземпляра 101 второму экземпляру 1001 (от первого процесса второму), в настоящей технологии описано начальное выделение области 12 памяти в виде непрерывного блока памяти в рамках первого адресного пространства памяти. После прерывания обработки, непрерывный блок памяти копируется на постоянную память. Эта энергостойкая память может представлять собой отдельный блок памяти или ту же самую ранее выделенную область памяти. Этот блок памяти анализируется и разделяется на первую часть, которая включает в себя измененную область 12-1 памяти, и вторую часть, которая включает в себя неизмененную область 12-2 памяти. Первая часть 12-1 выделенной области памяти 12 обладает измененными адресами памяти, которые отражают обработанные данные в рамках пространства памяти, а вторая часть 12-2 выделенной области памяти обладает неизмененными адресами памяти, которые отражают тот факт, что эти данные необработанные.In order to efficiently transfer the raw data from the first instance 101 to the second instance 1001 (from the first process to the second), the present technology describes the initial allocation of the memory area 12 as a continuous memory unit within the first memory address space. After interruption of processing, the continuous memory block is copied to the permanent memory. This energy-resistant memory may be a separate memory unit or the same previously allocated memory area. This memory block is analyzed and divided into a first part, which includes a changed memory area 12-1, and a second part, which includes an unchanged memory area 12-2. The first part 12-1 of the allocated memory region 12 has changed memory addresses that reflect processed data within the memory space, and the second part 12-2 of the allocated memory region has unchanged memory addresses that reflect the fact that this data is raw.

В этом случае, первая часть памяти, которая будет сохранена первым приложением, включает в себя измененную часть 12-1, которая занимает первую смежную область первого адресного пространства памяти. Копия второй части включает в себя неизмененную часть 12-2 памяти, которая занимает вторую смежную часть первого адресного пространства памяти, передается второму процессу, который поддерживается вторым экземпляром 1001 и вторым адресом 1201 памяти в рамках второго блока 1601 памяти для последующей обработки.In this case, the first part of the memory to be stored by the first application includes a modified part 12-1, which occupies the first adjacent area of the first address space of the memory. A copy of the second part includes the unchanged memory part 12-2, which occupies the second adjacent part of the first memory address space, is transferred to the second process, which is supported by the second instance 1001 and the second memory address 1201 within the second memory block 1601 for subsequent processing.

После завершения этой обработки, второй адрес 1201 памяти, который также определяет смежный блок памяти, включает в себя блок памяти, определяющий измененное адресное пространство памяти, и копия этой области 1201 возвращается первому экземпляру 101 или первому процессу для замены неизмененной второй смежной области 12-2 первого пространства 12 памяти.After completing this processing, the second memory address 1201, which also defines the adjacent memory block, includes a memory block defining the changed memory address space, and a copy of this region 1201 is returned to the first instance 101 or the first process to replace the unchanged second adjacent region 12-2 the first space 12 of the memory.

В этом случае, как часть обработки промежуточных данных, первая часть 12-1 памяти сохраняется первым экземпляром 101 и только вторая часть 12-2 памяти выделяется второму экземпляру 1001 или второму приложению для последующей обработки. После завершения последующей обработки, измененная вторая часть 1201 памяти возвращается первому приложению для завершения процесса обработки. Благодаря тому, что только вторая часть памяти передается между первым и вторым приложениями, объем памяти, который необходимо передавать между приложениями, снижается и/или снижается нагрузка на вычислительную мощностью.In this case, as part of the intermediate data processing, the first memory part 12-1 is stored by the first instance 101 and only the second memory part 12-2 is allocated to the second instance 1001 or the second application for further processing. After completion of the subsequent processing, the modified second memory part 1201 is returned to the first application to complete the processing. Due to the fact that only the second part of the memory is transferred between the first and second applications, the amount of memory that needs to be transferred between applications is reduced and / or the load on computing power is reduced.

Как часть передачи промежуточных данных между первым и вторым экземплярами программы 10, данные могут быть записаны в буфере 60, которые могут быть либо сохранены на энергонезависимом носителе, например, устройстве 30 хранения данных, или переданы с помощью интернет соединения 30 для последующего использования вторым экземпляром 1001 программы. Обработка может осуществляться путем передачи объекта данных либо напрямую, то есть путем передачи объекта целиком, либо же путем ссылки, то есть с использованием указателя на объект данных.As part of the transfer of intermediate data between the first and second instances of the program 10, the data can be recorded in a buffer 60, which can either be stored on a non-volatile medium, for example, a storage device 30, or transmitted using an Internet connection 30 for later use by the second instance 1001 programs. Processing can be carried out by transferring the data object either directly, that is, by transferring the entire object, or by reference, that is, using a pointer to the data object.

Важно иметь в виду, что другой экземпляр программы может быть вторым экземпляром 1001 программы 10, запущенной на другом компьютерном устройстве 201; экземпляр может быть более поздним экземпляром программы 10, запущенной на том же компьютерном устройстве 20, спустя какое-то время после того, как первый экземпляр 101 программы закончил обработку; или вторым экземпляром может быть экземпляр иной программы, отличной от программы 10. На Фиг. 1 другой экземпляр 1001 программы для простоты показан как отдельная программа, запущенная на втором компьютерном устройстве 201, соединенном с первым компьютерным устройством 20, но это не должно быть воспринято как ограничение настоящей технологии.It is important to keep in mind that another instance of the program may be a second instance 1001 of program 10 running on another computer device 201; 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 program 1001 is shown for simplicity as a separate program running on a second computer device 201 connected to the first computer device 20, but this should not be taken as a limitation of the present technology.

На Фиг. 2 представлены этапы, которые включены в обработку набора данных в соответствии с настоящим описанием. В рамках этого примера, описанная обработка данных является одной из обработок изображения, и промежуточные данные могут быть получены из визуализации обработки набора данных, который определяет изображение, с одновременными применением фильтра «резкости» к изображению в графическом редакторе. Пользователь может запустить первый графический редактор - первый экземпляр 101 компьютерной программы, описанный выше со ссылкой на Фиг. 1-й первое приложение может начать применение фильтра к изображению. Приложение выделяет достаточный для выполнения объем памяти. При выполнении изображения, пользователь может приостановить или прекратить процедуру в момент выполнения, например, в момент времени, когда первое приложение применило фильтр только к половине изображения. В этом случае, набор данных будет обработан только частично.In FIG. 2 shows the steps involved in processing a data set in accordance with the present description. Within the framework of this example, the described data processing is one of the image processing, and intermediate data can be obtained from visualization of the processing of the data set that defines the image, while applying the “sharpness” filter to the image in a graphics editor. The user can start the first graphical editor - the first instance 101 of the computer program described above with reference to FIG. 1st first application can start applying a filter to an image. The application allocates enough memory to execute. When executing the image, the user can pause or stop the procedure at the time of execution, for example, at the time when the first application applied the filter to only half of the image. In this case, the data set will only be partially processed.

В момент выполнения процесса применения фильтра к изображению, первое приложение создает изменения только в половине адресов памяти, относящихся к файлам изображений (первая часть соответствующей памяти). Контекст выполнения может быть перенесен на другой экземпляр 1001 - например, второй редактор (и/или продолжать применение фильтра на другом компьютере), который может получить данные из первого редактора и продолжить выполнение.At the time the filter is applied to the image, the first application creates changes in only half of the memory addresses associated with image files (the first part of the corresponding memory). The execution context can be transferred to another instance 1001 — for example, a second editor (and / or continue applying the filter on another computer), which can receive data from the first editor and continue execution.

Первое приложение на основе пользовательского намерения может разделять память изображения на две части: первую часть с измененными адресами памяти - области памяти с примененным фильтром (не изменяемые на другом устройстве), и вторую часть (изменяемую на другом устройстве) с адресами памяти, которые не обладают изменениями. Следует иметь в виду, что это выделение первой и второй областей памяти может осуществляться после прерывания выполнения программы таким образом, что если прерывания не произошло, эта обработка может не быть необходима. Первое приложение разделяет изображение на основе областей памяти, которые были изменены\не изменены в момент применения фильтра изображения.The first application, based on user intent, can divide the image memory into two parts: the first part with the changed memory addresses - the memory areas with the filter applied (not changeable on another device), and the second part (changeable on the other device) with memory addresses that do not have changes. It should be borne in mind that this allocation of the first and second memory areas can be carried out after interrupting the execution of the program in such a way that if the interruption did not occur, this processing may not be necessary. The first application splits the image based on memory areas that were changed / not changed at the time the image filter was applied.

Несмотря на то, что в данной области техники известно прерывание выполнение программы и передача всего блока памяти, который определяет весь набор данных, другому экземпляру компьютерной программы для выполнения, в соответствии с настоящим описанием только вторая часть памяти передается второму экземпляру, который может находиться на втором компьютере, а первая часть памяти остается на первом компьютере. После получения этой части всей памяти, которая изначально была выделена для обработки набора данных, второй компьютер выполняет программный код для второго приложения, которое в настоящем примере является вторым редактором изображений). Второе приложение использует контекст выполнения первого приложения и применяет фильтр изображения ко второй части адресов памяти. Второе приложение может завершить применение фильтра и отправить контекст выполнения (включая вторые адресные области памяти, которые являются изменениями) первому приложению.Despite the fact that in the art it is known to interrupt the execution of a program and transfer the entire memory block, which determines the entire data set, to another instance of the computer program for execution, in accordance with the present description, only the second part of the memory is transferred to the second instance, which can be located on the second computer, and the first part of the memory remains on the first computer. After receiving this part of all the memory that was originally allocated for processing the data set, the second computer executes the program code for the second application, which in this example is the second image editor). The second application uses the execution context of the first application and applies an image filter to the second part of the memory addresses. The second application may terminate the filter and send the execution context (including the second memory address areas, which are changes) to the first application.

Как будет понятно далее, такая каскадная обработка между экземплярами компьютерной программы может осуществляться с помощью любого числа итераций, например, двух или более, которые используются в обработке одного набора данных, и каждый экземпляр будет обрабатывать только часть данных из первоначального набора данных. В подобных конфигурациях важно учитывать тот факт, что имеются конкретные экземпляры, в которых может выполняться множество последовательных или параллельных этапов обработки, но имеются и другие экземпляры, в которых работа, связанная с восстановлением первоначального выделенного набора данных, потребует больших затрат, что нивелирует пользу, которую можно извлечь из распределенной обработки. Например, можно достичь некоторых преимуществ в том случае, если память разделяется на две части, и каждая из них представляет 50% начального набора данных, который необходимо обработать. С учетом обработки обоих частей, восстановление комбинации обработанных блоков памяти потребует определенного уровня обработки, но приложение по изменению комбинации будет требовать меньше времени, чем обработка любой из этих двух частей. В другом случае память разделяется на 100 частей, каждая из которых представляет собой 1% первоначального набора данных, и восстановление комбинации обработанных частей будет представлять собой сложную и затруднительную задачу, которая нивелирует все преимущества от распределенной обработки.As will be understood further, such cascading processing between instances of a computer program can be carried out using any number of iterations, for example, two or more, which are used in processing a single data set, and each instance will process only part of the data from the original data set. In such configurations, it is important to take into account the fact that there are specific instances in which many sequential or parallel processing steps can be performed, but there are other instances in which the work associated with restoring the original selected data set will be expensive, which eliminates the benefit, which can be extracted from distributed processing. For example, some advantages can be achieved if the memory is divided into two parts, and each of them represents 50% of the initial data set that needs to be processed. Given the processing of both parts, restoring a combination of processed memory blocks will require a certain level of processing, but the application for changing the combination will require less time than processing either of these two parts. In the other case, the memory is divided into 100 parts, each of which represents 1% of the initial data set, and restoring the combination of processed parts will be a complex and difficult task that eliminates all the benefits of distributed processing.

Однако, следует иметь в виду, что возможности распределенной обработки между индивидуальными машинами или элементами обработки могут способствовать наиболее эффективному использованию характеристик индивидуальных машин. Например, если конкретная машина или сервер обработки конкретно подходит для обработки данных путем применения черно-белых фильтров к изображению, а другая машина или сервер способны только обрезать края изображения, тогда процесс в соответствии с настоящим описанием может быть использован для выделения обработки конкретных задач для конкретных машин, которым они подходят. После того, как каждая из машин завершает свою индивидуальную задачу, в соответствии с настоящим описанием может осуществляться восстановление блока памяти всего обработанного набора данных.However, it should be borne in mind that the possibilities of distributed processing between individual machines or processing elements can contribute to the most efficient use of the characteristics of individual machines. For example, if a particular machine or processing server is specifically suitable for processing data by applying black and white filters to an image, and another machine or server can only crop the edges of the image, then the process in accordance with the present description can be used to highlight the processing of specific tasks for specific machines that they fit. After each of the machines completes its individual task, in accordance with the present description, a memory block of the entire processed data set can be restored.

Следует иметь в виду, что, несмотря на то, что способ был описан в виде последовательности этапов обработки, настоящая технология может быть реализована и в виде параллельного осуществления индивидуальной обработки. Параллельное выполнение конкретно подходит для примеров обработки данных, в которых последовательность обработки не является критической в контексте осуществления обработки в целом. Например, если желаемая обработка набора данных об изображении требует применения первого фильтра и, на основе примененного фильтра, последующего изменения цветов, определенных изображением, и последующей обрезки изображения, то распределение трех этапов обработки на три параллельных задачи не поможет достичь желаемого эффекта, и не будет применено.It should be borne in mind that, despite the fact that the method has been described as a sequence of processing steps, the present technology can be implemented in the form of parallel implementation of individual processing. Parallel execution is particularly suitable for data processing examples in which the processing sequence is not critical in the context of the overall processing. For example, if the desired processing of an image data set requires the application of a first filter and, based on the applied filter, the subsequent change in the colors defined by the image and subsequent cropping of the image, then the distribution of the three processing steps into three parallel tasks will not help to achieve the desired effect, and will not applied.

Адреса второй измененной области памяти далее возвращаются первому экземпляру 101 и объединяются с сохраненными адресами первой области памяти, что позволяет первому экземпляру 101 продолжить работу над завершением области файла изображения в памяти 12 компьютерной программы.The addresses of the second modified memory area are then returned to the first instance 101 and combined with the stored addresses of the first memory area, which allows the first instance 101 to continue working on completing the image file area in the computer program memory 12.

На первом этапе 200, который выполняется первым экземпляром 101 приложения, первая смежная область памяти для сохранения динамических программных переменных - области динамической памяти - выделяется для обработки набора данных. Важно иметь в виду, что выделение памяти является обычным этапом выполнения программы и, следовательно, будет осуществляться предварительная обработка до прерывания этапов обработки. Это включает в себя упомянутый программный код в первом экземпляре 101, обрабатывающий данные до необходимого состояния до того, как они будут отправлены другой программе для дальнейшей обработки. Так, например, когда экземпляр 101 программы является программой для наложения фильтров на изображения, эта подготовка может определять доступное пространство в памяти 16 компьютера, в котором выполняется программа, и выделяется часть 12 памяти 16 для этого набора данных.In a first step 200, which is executed by the first instance 101 of the application, a first adjacent memory area for storing dynamic program variables — dynamic memory areas — is allocated for processing the data set. It is important to keep in mind that memory allocation is a normal phase of program execution and, therefore, pre-processing will be performed before interrupting the processing steps. This includes the mentioned program code in the first instance 101, which processes the data to the desired state before being sent to another program for further processing. So, for example, when the program instance 101 is a program for applying filters to images, this preparation can determine the available space in the memory 16 of the computer in which the program is running, and a portion 12 of the memory 16 for this data set is allocated.

Как было описано в описании Фиг. 2, настоящее описание может быть использовано с любым другим из множества различных типов наборов данных. В данном контексте, использование описанных методик не должно быть ограничено обработкой данных изображения. Например, настоящее описание может быть использовано для приложений, которые требуют завершения структур баз данных. В таком приложении, первый экземпляр приложения может инициировать заполнение или наполнение элементами структуры данных, как определено в базе данных. В определенный момент времени после начального заполнения, процесс прерывается или останавливается. В этот момент времени, аналогично тому, что описано со ссылкой на обработку данных об изображении, блок памяти может быть анализирован и разделен на обработанную и необработанную части. Необработанные части могут быть переданы для обработки в виде смежного блока другому экземпляру программы. После завершения этого процесса, обработанная часть возвращается и совмещается с изначально обработанными данными, и процесс завершается. В этом случае, второй экземпляр приложения или процесса может заполнять базу данных с помощью данных, и после этого заполнения, возвращать данные первому экземпляру. Способ заполнения данных может варьироваться. Например, данные в базе данных могут варьироваться или изменятся с помощью различных операций обработки, таких как, изменение строк и столбцов, предоставление расчетов, суммирование чисел из строки «А» с числами из строки «В», импорт данных из других структур данных и т.д.As described in the description of FIG. 2, the present description can be used with any other of many different types of data sets. In this context, the use of the described techniques should not be limited to the processing of image data. For example, the present description may be used for applications that require completion of database structures. In such an application, the first instance of the application may initiate populating or populating with data structure elements as defined in the database. At a certain point in time after the initial filling, the process is interrupted or stopped. At this point in time, similar to what is described with reference to the processing of image data, the memory unit can be analyzed and divided into processed and unprocessed parts. Unprocessed parts can be transferred for processing as an adjacent block to another instance of the program. After completion of this process, the processed part is returned and combined with the initially processed data, and the process ends. In this case, the second instance of the application or process can populate the database with data, and after that, return data to the first instance. The way data is populated may vary. For example, the data in the database can vary or be changed using various processing operations, such as changing rows and columns, providing calculations, summing numbers from row “A” with numbers from row “B”, importing data from other data structures, etc. .d.

В этом случае стоит иметь в виду, что набор данных, которые могут быть, например, данными об изображении, которые ожидают обработки изображения, или структурой данных, которая ожидает заполнения, может считаться программным объектом. Как будет понятно, программный объект может быть сохранен либо в динамической памяти (heap), либо в программном стеке (stack). Динамическая память - это область памяти компьютера, чье распределение не управляется автоматически операционной системой, хранящей программу. Это свободная область памяти, обычно, больше, чем стек. Для распределения памяти переменных в динамической памяти в программе на языке С, используются встроенные функции С распределения памяти malloc() или calloc(). На С++ эквивалентными являются функции new() и delete(), на других языках используются сходные функции.In this case, it should be borne in mind that a set of data, which can be, for example, image data that are awaiting image processing, or a data structure that is awaiting completion, can be considered a software object. 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, the C free () function or the C ++ delete () function can be used to deselect this memory after this amount of memory is no longer required. Failure to complete this procedure may result in a memory leak when dynamic memory is still allocated and inaccessible to other processes.

Поскольку возможны множественные выделения и отмены выделений динамической памяти в момент работы программы в виртуальных системах памяти, переменные динамической памяти могут сохраняться в не смежных областях виртуальной памяти или физической памяти.Since multiple allocations and cancellations of dynamic memory allocations at the time of the program in virtual memory systems are possible, dynamic memory variables can be stored in non-adjacent areas of virtual memory or physical memory.

Таким образом, если не предусмотрено иное, нельзя предполагать, что любой программный объект, после выделения пространства памяти передается (либо напрямую, либо путем ссылки) для хранения в смежной области памяти. Пользовательский распределитель памяти обеспечивает распределение данных для обработки в соответствующих смежных областях памяти, которая была выделена для функции на этапе 200.Thus, unless otherwise provided, it cannot be assumed that any program object, after allocating memory space, is transferred (either directly or by reference) for storage in an adjacent memory area. A user memory allocator provides data distribution for processing in respective adjacent memory areas that has been allocated for the function in step 200.

Для программ, написанных на С или С++, управление распределением динамической памяти программы может быть достигнуто перегрузкой функций 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. Similar techniques can be applied to programs written in other languages; or other techniques may be applied to achieve the same results in accordance with the program operating system environment.

В конкретных случаях, распределитель памяти, который выделяет объектам не смежные области памяти, используется по умолчанию в рамках экземпляра 101 программы таким образом, что использование копий набора данных, находящихся в смежной области, не является обязательным.In specific cases, a memory allocator that allocates nonadjacent memory areas to objects is used by default within program instance 101 such that the use of copies of a data set located in an adjacent area is optional.

Когда память выделена, экземпляр 101 программы инициирует обработку набора данных на этапе 202. В какой-то момент после этого инициирования, программа прерывается на этапе 204. С учетом настоящего описания, это прерывание осуществляется до завершения обработки набора данных. После прерывания память интегрируется (этап 206) для проверки областей, которые касаются обработанных данных, то есть, измененной памяти, или областей, которые относятся к неизмененной памяти, то есть, необработанных данных.When the memory is allocated, the program instance 101 initiates the processing of the data set in step 202. At some point after this initiation, the program is interrupted in step 204. Given the present description, this interruption is performed until the processing of the data set is completed. After the interruption, the memory is integrated (step 206) to check for areas that relate to processed data, i.e., changed memory, or areas that relate to unchanged memory, i.e., raw data.

Неизмененная память или ее копия или указатели на нее передаются в виде смежного блока второму экземпляру 1001 программы на этапе 208.The unmodified memory or its copy or pointers to it are transmitted in the form of an adjacent block to the second instance 1001 of the program at step 208.

В некоторый момент времени после, первый экземпляр 101 получает копию измененной памяти на этапе 210, которая соответствует первоначально предоставленной неизмененной области 12-2. Поскольку возвращенный блок памяти также определяется как смежная область памяти, которая соответствует первоначально предоставленной неизмененной смежной области, первый экземпляр 101 способен заменить первоначальную неизмененную область на измененную версию, таким образом предоставляя завершенный блок памяти, который включает в себя измененные или обработанные данные. Этот набор данных может далее обрабатываться на этапе 212 для завершения действия, которое требуется приложением.At some point in time after, the first instance 101 obtains a copy of the changed memory in step 210, which corresponds to the originally provided unchanged region 12-2. Since the returned memory block is also defined as an adjacent memory region that corresponds to the originally provided unchanged adjacent region, the first instance 101 is able to replace the original unchanged region with a modified version, thereby providing a complete memory block that includes the changed or processed data. This data set may be further processed in step 212 to complete the action required by the application.

На Фиг. 3 представлен пример выполнения процесса с точки зрения второго экземпляра 1001, который отражает обработку результата получения неизмененного блока памяти. На этапе 300 второй экземпляр 1001 получает блок памяти для обработки. Второй экземпляр выделяет смежную область памяти для это обработки - на этапе 302. Данные в этой памяти далее обрабатываются на этапе 302. После завершения, блок смежной памяти возвращается первому экземпляру для последующей обработки на этапе 306.In FIG. 3 shows an example of a process from the point of view of the second instance 1001, which reflects the processing of the result of obtaining an unchanged memory block. At step 300, the second instance 1001 obtains a memory block for processing. The second instance allocates an adjacent memory region for this processing - at step 302. The data in this memory is further processed at step 302. After completion, the block of adjacent memory is returned to the first instance for subsequent processing at step 306.

В контексте настоящего описания, если конкретно не указано иное, термин «данные» включает в себя любую информацию, которая может храниться, например, в базе данных, или может быть передана в электронной форме, например, потоком. Таким образом, данные включают в себя, среди прочего, аудиовизуальные произведения (изображения, видео, звукозаписи, презентации и т.д.), данные о местоположении, цифровые данные и т.д., текст (мнения, комментарии, вопросы, сообщения и т.д.), документы, таблицы и т.д.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 technology find particular application, for example, in the distribution of software objects between devices; providing processing in 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 one physical computer or one physical computer system, but neither one nor the other is mandatory for this technology. In the context of this technology, 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 of the present technology pursues at least one of the aforementioned objectives and / or objects, but all are not required. It should be borne in mind that some objects of this technology, obtained as a result of attempts to achieve the aforementioned goal, may not satisfy this goal and / or may satisfy other goals not specifically indicated here.

Дополнительные и/или альтернативные характеристики, аспекты и преимущества вариантов осуществления настоящей технологии станут очевидными из последующего описания, прилагаемых чертежей и прилагаемой формулы изобретения.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 other 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.

Настоящее описание также может распространяться на характеристики одного или нескольких из следующих пронумерованных пунктов:The present description may also extend to the characteristics of one or more of the following numbered paragraphs:

1. Способ обработки данных для обработки промежуточных данных, созданных в ходе выполнения компьютерной программы, которая обрабатывает набор данных, способ включает в себя:1. A data processing method for processing intermediate data generated during the execution of a computer program that processes a data set, the method includes:

Выделение пространства (12) в памяти на компьютерном устройстве (20) для завершения обработки набора данных;Allocation of space (12) in memory on a computer device (20) to complete processing of the data set;

Обработка набора данных с помощью первого экземпляра (101) компьютерной программы (10);Processing a data set using the first copy (101) of a computer program (10);

Прерывание обработки до завершения обработки набора данных;Interruption of processing until completion of processing the data set;

Определение первой области (12-1) выделенной памяти, которая содержит измененное адресное пространство памяти, отражающее обработку первой части набора данных, и второй области (12-2) выделенной памяти, которая содержит неизмененное адресное пространство памяти, отражающее необработанную вторую часть набора данных;The definition of the first region (12-1) of the allocated memory, which contains the changed memory address space, reflecting the processing of the first part of the data set, and the second region (12-2) of the allocated memory, which contains the unchanged memory address space, which reflects the unprocessed second part of the data set;

Передача второй области (12-2) второму экземпляру (1001) компьютерной программы (10) для обработки второй области;Transferring the second region (12-2) to the second copy (1001) of the computer program (10) for processing the second region;

Получение измененного адресного пространства (1201) памяти, соответствующего обработке второй части набора данных;Getting the changed address space (1201) of the memory corresponding to the processing of the second part of the data set;

Объединение полученного измененного адресного пространства (1201) памяти с первой областью (12-1) для дальнейшей обработки первым экземпляром компьютерной программы.Combining the resulting modified address space (1201) of the memory with the first region (12-1) for further processing by the first copy of the computer program.

2. Способ по п. 1, в котором первая область (12-1) и вторая область (12-2) каждая находятся в смежных областях памяти в рамках выделенной памяти.2. The method according to claim 1, wherein the first region (12-1) and the second region (12-2) are each located in adjacent memory regions within the allocated memory.

3. Способ по п. 1 или 2, в котором выделение пространства памяти включает в себя выделение первой смежной области динамической памяти для хранения динамических переменных.3. The method according to claim 1 or 2, in which the allocation of memory space includes allocating a first adjacent region of dynamic memory for storing dynamic variables.

4. Способ по п. 3, в котором обработка набора данных с помощью первого экземпляра (101) компьютерной программы (10) включает в себя сохранение динамических переменных в динамической памяти.4. The method according to claim 3, in which the processing of the data set using the first instance (101) of the computer program (10) includes storing dynamic variables in dynamic memory.

5. Способ по любому из предыдущих пунктов, включающий в себя в ответ на прерывание обработки до завершения обработки набора данных, копирование первой смежной области (12-1) в энергостойкую память.5. The method according to any one of the preceding paragraphs, including, in response to interruption of processing until the processing of the data set is completed, copying the first adjacent area (12-1) into an energy-resistant memory.

6. Способ по любому из предыдущих пунктов, в котором определение включает в себя блок памяти в энергостойкой памяти для разделения блока на измененную (12-1) и неизмененную (12-2) области.6. The method according to any one of the preceding paragraphs, in which the determination includes a memory block in an energy-resistant memory for dividing the block into a changed (12-1) and unchanged (12-2) area.

7. Способ по п. 6, в котором измененная область отражает обработку первой части набора данных и занимает первую смежную область выделенной памяти, и в котором неизмененная часть отражает необработанную вторую часть набора данных и занимает вторую смежную область выделенной памяти, опционально в котором передача второй области второму экземпляру компьютерной программы для обработки второй области включает в себя передачу копии второй смежной области и, дополнительно, опционально в котором объединение полученного измененного адресного пространства памяти с первой областью для дальнейшей обработки первым экземпляром компьютерной программы включает в себя замену второй смежной области (12-2) полученным измененным адресным пространством (1201).7. The method according to claim 6, in which the changed area reflects the processing of the first part of the data set and occupies the first adjacent area of the allocated memory, and in which the unchanged part reflects the unprocessed second part of the data set and occupies the second adjacent area of the allocated memory, optionally in which the second the area to the second instance of the computer program for processing the second area includes transmitting a copy of the second adjacent area and, optionally, optionally combining the received modified address address The memory space with the first region for further processing by the first copy of the computer program includes replacing the second adjacent region (12-2) with the obtained changed address space (1201).

8. Способ по любому из предыдущих пунктов, который включает в себя сохранение динамических переменных в динамической памяти программ и с помощью динамических переменных или их проиндексированных версий, для обработки каждым из первого экземпляра и второго экземпляра.8. The method according to any one of the preceding paragraphs, which includes storing dynamic variables in the dynamic memory of programs and using dynamic variables or their indexed versions, for processing by each of the first instance and second instance.

9. Способ по любому из предыдущих пунктов, в котором указанный первый экземпляр (101) инстанцируется на первом компьютерном устройстве (20), а второй экземпляр (1001) инстанцируется на втором отличном компьютерном устройстве (201) или в котором указанный первый экземпляр (10) инстанцируется на первом компьютерном устройстве (20), а второй экземпляр (1001) инстанцируется на первом компьютерном устройстве (101) позже.9. A method according to any one of the preceding paragraphs, wherein said first instance (101) is instantiated on a first computer device (20) and the second instance (1001) is instantiated on a second excellent computer device (201) or in which said first instance (10) is instantiated on the first computer device (20), and the second instance (1001) is instantiated on the first computer device (101) later.

10. Способ по любому из предыдущих пунктов, в котором выделенное пространство (12) памяти включает в себя виртуальные адресные пространства памяти.10. The method according to any one of the preceding paragraphs, in which the allocated memory space (12) includes virtual address memory spaces.

11. Способ по п. 7, в котором передача копии второй смежной области (12-2) включает в себя предоставление указанной копии указанной второй смежной области (12-2) и индекса, идентифицирующего местоположения в рамках указанной второй смежной области, которые относятся к указанной первой смежной области и опционально далее включает в себя запись указанной копии и указанного индекса местоположений на энергостойкую память, и опционально в котором память или энергонезависимая память доступна для каждого из указанного первого и второго экземпляра.11. The method of claim 7, wherein transmitting a copy of the second adjacent region (12-2) includes providing said copy of said second adjacent region (12-2) and an index identifying locations within said second adjacent region that relate to the specified first adjacent area and optionally further includes recording the specified copy and the specified location index on energy-resistant memory, and optionally in which a memory or non-volatile memory is available for each of the specified first and second instance.

12. Способ по п. 11, в котором указанное предоставление указанной копии указанной второй смежной области (12-2) и индекса, определяющего местоположения в рамках указанной второй смежной области, которая относится к указанной первой смежной области (12-1) включает в себя передачу указанной копии и указанного индекса местоположений компьютерному устройству по линии (40) передачи данных.12. The method of claim 11, wherein said providing said copy of said second adjacent region (12-2) and an index defining locations within said second adjacent region that relates to said first adjacent region (12-1) includes transmitting the specified copy and the specified location index to the computer device via data line (40).

13. Способ выполняется процессором компьютерного устройства (20, 201), и включает в себя:13. The method is performed by a processor of a computer device (20, 201), and includes:

получение копии смежной области (12-2) неизмененной памяти, которая включает в себя данные, которые еще не обработаны первым процессом (10), данные являются частью набора данных,obtaining a copy of the adjacent region (12-2) of unchanged memory, which includes data that has not yet been processed by the first process (10), the data is part of a data set,

осуществление обработки этих данных, чтобы предоставить смежную область измененной памяти (1201), иthe implementation of the processing of this data to provide an adjacent area of the modified memory (1201), and

Возвращение копии смежной области измененной памяти первому процессу (10).Returning a copy of the adjacent region of modified memory to the first process (10).

14. Способ по п. 13, включающий в себя выделение памяти во втором компьютерном устройстве (201) для копии смежной области неизмененной памяти.14. The method of claim 13, including allocating memory in a second computer device (201) for copying an adjacent region of unchanged memory.

15. Компьютерная программа, которая при выполнении на компьютерном устройстве (20, 201) исполняет способ по любому из пп. 1-14.15. A computer program that, when executed on a computer device (20, 201), executes the method according to any one of paragraphs. 1-14.

16. Система обработки данных, содержащая в себе первое компьютерное устройство (20), соединенное со вторым компьютерным устройством (201), причем указанное первое компьютерное устройство (20) выполнено с возможностью выполнять этапы любого из пунктов 1-12, а второе компьютерное устройство (201) выполнено с возможностью выполнять этапы пункта 14, опционально в которой указанный первый и второй компьютерные устройства представляют собой различные устройства.16. A data processing system comprising a first computer device (20) connected to a second computer device (201), said first computer device (20) being configured to perform steps 1 through 12, and the second computer device ( 201) is configured to perform the steps of paragraph 14, optionally wherein said first and second computer devices are different devices.

Claims (26)

1. Способ обработки данных для обработки промежуточных данных, созданных в ходе выполнения компьютерной программы, которая обрабатывает набор данных, способ включает в себя:1. A data processing method for processing intermediate data generated during the execution of a computer program that processes a data set, the method includes: выделение пространства в памяти на компьютерном устройстве для завершения обработки набора данных;allocating space in memory on a computer device to complete processing of the data set; обработку набора данных с помощью первого экземпляра компьютерной программы;processing a data set using the first instance of a computer program; прерывание обработки до завершения обработки набора данных;interruption of processing until completion of the processing of the data set; определение первой области выделенной памяти, которая содержит измененное адресное пространство памяти, отражающее обработку первой части набора данных, и второй области выделенной памяти, которая содержит неизмененное адресное пространство памяти, отражающее необработанную вторую часть набора данных;determining a first area of allocated memory that contains a changed memory address space reflecting processing of a first part of a data set, and a second area of allocated memory that contains an unmodified memory address space that reflects an unprocessed second part of a data set; передачу второй области второму экземпляру компьютерной программы для обработки второй области;transferring the second region to a second instance of a computer program for processing the second region; получение измененного адресного пространства памяти, соответствующего обработке второй части набора данных;obtaining a modified memory address space corresponding to the processing of the second part of the data set; объединение полученного измененного адресного пространства памяти с первой областью для дальнейшей обработки первым экземпляром компьютерной программы.combining the resulting modified address space of the memory with the first region for further processing by the first instance of a computer program. 2. Способ по п. 1, в котором первая область и вторая область каждая находятся в смежных областях памяти в рамках выделенной памяти.2. The method of claim 1, wherein the first region and the second region are each located in adjacent memory regions within the allocated memory. 3. Способ по п. 1, в котором при выделении пространства памяти выполняют выделение первой смежной области динамической памяти для хранения динамических переменных.3. The method according to p. 1, in which when allocating memory space, perform the allocation of the first adjacent region of dynamic memory to store dynamic variables. 4. Способ по п. 3, в котором при обработке набора данных с помощью первого экземпляра компьютерной программы выполняют сохранение динамических переменных в динамической памяти.4. The method according to p. 3, in which when processing a data set using the first instance of a computer program, dynamic variables are stored in dynamic memory. 5. Способ по п. 4, в котором в ответ на прерывание обработки до завершения обработки набора данных, выполняют копирование первой смежной области в энергостойкую память.5. The method according to claim 4, in which, in response to interruption of processing until the processing of the data set is completed, the first adjacent area is copied to an energy-resistant memory. 6. Способ по п. 1, в котором при определении первой области выделенной памяти выполняют анализ блока памяти в энергостойкой памяти для разделения блока на измененную и неизмененную области.6. The method according to p. 1, in which when determining the first area of the allocated memory, an analysis of the memory block in energy-resistant memory is performed to divide the block into changed and unchanged regions. 7. Способ по п. 6, в котором измененная область отражает обработку первой части набора данных и занимает первую смежную область выделенной памяти.7. The method according to claim 6, in which the changed area reflects the processing of the first part of the data set and occupies the first adjacent area of the allocated memory. 8. Способ по п. 7, в котором неизмененная область отражает необработанную вторую часть набора данных и занимает вторую смежную область выделенной памяти.8. The method according to claim 7, in which the unchanged region reflects the unprocessed second part of the data set and occupies the second adjacent region of the allocated memory. 9. Способ по п. 8, в котором при передаче второй части второму экземпляру компьютерной программы для обработки второй области выполняют передачу копии второй смежной области.9. The method according to p. 8, in which when transmitting the second part to the second copy of the computer program for processing the second area, a copy of the second adjacent area is transmitted. 10. Способ по п. 9, в котором при объединении полученного измененного адресного пространства с первой областью для последующей обработки первым экземпляром компьютерной программы выполняют замену второй смежной области полученным измененным пространством памяти.10. The method according to p. 9, in which when combining the received modified address space with the first region for subsequent processing by the first copy of the computer program, the second adjacent region is replaced with the obtained modified memory space. 11. Способ по п. 1, в котором выполняют сохранение динамических переменных в динамической памяти программ и с помощью динамических переменных или их проиндексированных версий, для обработки каждым из первого экземпляра и второго экземпляра.11. The method according to p. 1, in which the storage of dynamic variables in the dynamic memory of programs and using dynamic variables or their indexed versions, for processing by each of the first instance and the second instance. 12. Способ по п. 1, в котором указанный первый экземпляр инстанцируют на первом компьютерном устройстве, а второй экземпляр инстанцируют на втором, ином компьютерном устройстве.12. The method of claim 1, wherein said first instance is instantiated on a first computer device, and a second instance is instantiated on a second, different computer device. 13. Способ по п. 1, в котором указанный первый экземпляр инстанцируют на первом компьютерном устройстве, а второй экземпляр инстанцируют на первом компьютерном устройстве позже.13. The method of claim 1, wherein said first instance is instantiated on a first computer device, and a second instance is instantiated on a first computer device later. 14. Способ по п. 1, в котором выделенное пространство памяти включает в себя виртуальные адресные пространства памяти.14. The method of claim 1, wherein the allocated memory space includes virtual addressable memory spaces. 15. Способ по п. 9, в котором при передаче копии второй смежной области выполняют предоставление указанной копии указанной второй смежной области и индекса, идентифицирующего местоположения в рамках указанной второй смежной области, относящейся к указанной первой смежной области.15. The method according to p. 9, in which when transmitting a copy of the second adjacent area perform the provision of the specified copy of the specified second adjacent area and an index identifying locations within the specified second adjacent area related to the specified first adjacent area. 16. Способ по п. 15, в котором выполняют запись указанной копии и указанного индекса местоположений на энергостойкой памяти.16. The method according to p. 15, in which record the specified copy and the specified location index on an energy-resistant memory. 17. Способ по п. 16, в котором энергостойкая память включает в себя либо память компьютера, либо энергонезависимую память, доступную и указанному первому, и указанному второму экземплярам.17. The method of claim 16, wherein the energy-resistant memory includes either a computer memory or a non-volatile memory available to both said first and said second instances. 18. Способ по п. 15, в котором при указанном предоставлении указанной копии указанной второй смежной области и индекса, определяющего местоположения в рамках указанной второй смежной области, которая относится к указанной первой смежной области, выполняют передачу указанной копии и указанного индекса местоположений компьютерному устройству по линии передачи данных.18. The method according to p. 15, in which when the specified provision of the specified copy of the specified second adjacent area and the index defining the location within the specified second adjacent area, which refers to the specified first adjacent area, transmit the specified copy and the specified location index to the computer device via data transmission lines. 19. Система обработки данных, включающая в себя компьютерное устройство, выполненное с возможностью выполнять этапы п. 1.19. A data processing system including a computer device configured to perform steps 1.
RU2015125822A 2015-06-30 2015-06-30 Method of data processing RU2666334C2 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
RU2015125822A RU2666334C2 (en) 2015-06-30 2015-06-30 Method of data processing
PCT/IB2015/058497 WO2017001900A1 (en) 2015-06-30 2015-11-03 A data processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
RU2015125822A RU2666334C2 (en) 2015-06-30 2015-06-30 Method of data processing

Publications (3)

Publication Number Publication Date
RU2015125822A RU2015125822A (en) 2017-01-10
RU2015125822A3 RU2015125822A3 (en) 2018-03-05
RU2666334C2 true RU2666334C2 (en) 2018-09-06

Family

ID=57607967

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2015125822A RU2666334C2 (en) 2015-06-30 2015-06-30 Method of data processing

Country Status (2)

Country Link
RU (1) RU2666334C2 (en)
WO (1) WO2017001900A1 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200264970A1 (en) * 2019-02-19 2020-08-20 Nvidia Corporation Memory management system
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
US6021415A (en) * 1997-10-29 2000-02-01 International Business Machines Corporation Storage management system with file aggregation and space reclamation within aggregated files
US20050060512A1 (en) * 2003-09-02 2005-03-17 Underbrink Paul A. Signal processing system control method and apparatus
RU105487U1 (en) * 2011-02-25 2011-06-10 Сергей Валерьевич Погребной ADAPTIVE DATA PROCESSING SYSTEM
US20140164723A1 (en) * 2012-12-10 2014-06-12 Vmware, Inc. Method for restoring virtual machine state from a checkpoint file
US20140214770A1 (en) * 2013-01-31 2014-07-31 Hewlett-Packard Development Company, L.P. Checkpoint generation

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6681306B1 (en) * 1999-11-29 2004-01-20 Sun Microsystems, Inc. Method and apparatus for increasing scavenging garbage collection effectiveness
JP2002351858A (en) * 2001-05-30 2002-12-06 Fujitsu Ltd Processing device
US6832297B2 (en) * 2001-08-09 2004-12-14 International Business Machines Corporation Method and apparatus for managing data in a distributed buffer system
GB0130534D0 (en) * 2001-12-20 2002-02-06 Aspex Technology Ltd Improvements relating to data transfer addressing
US7409570B2 (en) * 2005-05-10 2008-08-05 Sony Computer Entertainment Inc. Multiprocessor system for decrypting and resuming execution of an executing program after transferring the program code between two processors via a shared main memory upon occurrence of predetermined condition
US7831857B2 (en) * 2006-10-31 2010-11-09 Hewlett-Packard Development Company, L.P. Method and system for recovering from operating system crash or failure
JP5454224B2 (en) * 2010-02-25 2014-03-26 ソニー株式会社 Storage device and storage system
JPWO2012090290A1 (en) * 2010-12-27 2014-06-05 富士通株式会社 Information processing apparatus having memory dump function, memory dump method, and memory dump program

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6021415A (en) * 1997-10-29 2000-02-01 International Business Machines Corporation Storage management system with file aggregation and space reclamation within aggregated files
US20050060512A1 (en) * 2003-09-02 2005-03-17 Underbrink Paul A. Signal processing system control method and apparatus
RU105487U1 (en) * 2011-02-25 2011-06-10 Сергей Валерьевич Погребной ADAPTIVE DATA PROCESSING SYSTEM
US20140164723A1 (en) * 2012-12-10 2014-06-12 Vmware, Inc. Method for restoring virtual machine state from a checkpoint file
US20140214770A1 (en) * 2013-01-31 2014-07-31 Hewlett-Packard Development Company, L.P. Checkpoint generation

Also Published As

Publication number Publication date
RU2015125822A (en) 2017-01-10
RU2015125822A3 (en) 2018-03-05
WO2017001900A1 (en) 2017-01-05

Similar Documents

Publication Publication Date Title
US11182196B2 (en) Unified resource management for containers and virtual machines
EP3535668B1 (en) Storage isolation for containers
US9201875B2 (en) Partition file system for virtual machine memory management
JP5680961B2 (en) Integrated provision of physical and virtual images
US9639432B2 (en) Live rollback for a computing environment
CN101650660B (en) Booting a computer system from central storage
US7966470B2 (en) Apparatus and method for managing logical volume in distributed storage systems
JP6506412B2 (en) Application loading method and apparatus
CN104111897A (en) Data processing method, data processing device and computer system
US20190227995A1 (en) Layer-Based File Access Method and Apparatus of Virtualization Instance
US10346150B2 (en) Computerized system and method for patching an application by separating executables and working data using different images
US20170315732A1 (en) Page compression strategy for improved page out process
JP2014503895A (en) System reset
US10534714B2 (en) Allocating cache memory on a per data object basis
JP7394978B2 (en) Virtual memory metadata management
US9471366B2 (en) Virtual machine disk image backup using block allocation area
US9817754B2 (en) Flash memory management
US20170242602A1 (en) Data processing method
US10346188B1 (en) Booting virtual machine instances in a distributed data processing architecture
RU2666334C2 (en) Method of data processing
CN109766179B (en) Video memory allocation method and device
US10565202B2 (en) Data write/import performance in a database through distributed memory
US20160283118A1 (en) Optimization of disk images for thin provisioned disks
CN109324867A (en) A kind of virtual machine temporary storage method, restoration methods and device
CN113032088A (en) Dirty page recording method and device, electronic equipment and computer readable medium