RU2467379C2 - Method for decentralisation of computer program - Google Patents

Method for decentralisation of computer program Download PDF

Info

Publication number
RU2467379C2
RU2467379C2 RU2009138304/08A RU2009138304A RU2467379C2 RU 2467379 C2 RU2467379 C2 RU 2467379C2 RU 2009138304/08 A RU2009138304/08 A RU 2009138304/08A RU 2009138304 A RU2009138304 A RU 2009138304A RU 2467379 C2 RU2467379 C2 RU 2467379C2
Authority
RU
Russia
Prior art keywords
program
parts
distributed
execution
interaction
Prior art date
Application number
RU2009138304/08A
Other languages
Russian (ru)
Other versions
RU2009138304A (en
Inventor
Александр Николаевич Сафонов (RU)
Александр Николаевич Сафонов
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 RU2009138304/08A priority Critical patent/RU2467379C2/en
Publication of RU2009138304A publication Critical patent/RU2009138304A/en
Application granted granted Critical
Publication of RU2467379C2 publication Critical patent/RU2467379C2/en

Links

Landscapes

  • Multi Processors (AREA)

Abstract

FIELD: physics, computer engineering.
SUBSTANCE: method relates to techniques for organising distributed computing and information security techniques. The method of decentralising a computer program involves determining parts of the source program to be executed remotely from each other, dividing the source program into parts, transforming the separated parts to allow them to interact and organising interaction of the separate parts of the program during execution thereof.
EFFECT: transformed parts of a source program for distributed execution, capable of interacting with each other through a distributed interaction environment.
4 cl, 1 dwg

Description

Изобретение относится к технике организации распределенных вычислений и защите информации.The invention relates to techniques for organizing distributed computing and information security.

Широко известен способ создания распределенных программ для ЭВМ «с нуля». При таком способе программа изначально задумывается как распределенная, проектируется подобным образом и реализуется на каком-либо из языков программирования.The method of creating distributed computer programs from scratch is widely known. With this method, the program is initially conceived as distributed, designed in a similar way and implemented in any of the programming languages.

Недостаток этого способа в том, что каждый раз необходимо повторять все этапы разработки распределенной программы для ЭВМ, что весьма ресурсоемко (требуются значительные временные и людские ресурсы). Даже с выделением общих частей распределенных программ в библиотеки, трудоемкость снижается незначительно, так как остаются проблемы аккуратного и внимательного проектирования, проработки и реализации распределенных интерфейсов взаимодействия удаленных частей программы. Дополнительно, невозможно либо крайне трудоемко при таком способе реализовать динамический выбор и логистику частей программы и их данных между сторонами исполнения. Под стороной исполнения подразумевается фактическое место исполнения частей программы (ЭВМ, процесс).The disadvantage of this method is that each time it is necessary to repeat all the stages of developing a distributed computer program, which is very resource intensive (significant time and human resources are required). Even with the allocation of the common parts of distributed programs to libraries, the complexity is reduced slightly, since there remain problems of accurate and careful design, development and implementation of distributed interfaces for the interaction of remote parts of the program. Additionally, it is impossible or extremely time-consuming with this method to realize the dynamic selection and logistics of program parts and their data between the parties to the execution. By the execution side is meant the actual place of execution of the parts of the program (computer, process).

Известен способ децентрализации программы для ЭВМ «вручную» при наличии ее исходных кодов (текстов программы на произвольном языке программирования). Способ фактически представляет из себя доработку существующей нераспределенной программы для ЭВМ с целью добавления возможности распределенного исполнения.A known method of decentralization of a computer program "manually" in the presence of its source codes (program texts in an arbitrary programming language). The method is actually a refinement of the existing unallocated computer program in order to add the possibility of distributed execution.

Недостатки такого способа: трудоемкость сравнима с трудоемкостью способа создания распределенной программы для ЭВМ «с нуля», а порой даже выше, так как может потребоваться значительная переработка существующих исходных кодов для интеграции с необходимым функционалом. В случае отсутствия исходных кодов децентрализация невозможна либо крайне затруднена (ввиду ограничений полной или частичной декомпиляции двоичных кодов программы, предназначенных для исполнения на конкретных архитектурах вычислительных машин, процессоров, операционных систем и иного системного программного обеспечения). Полная декомпиляция возможна только в случае так называемых «контролируемых» двоичных кодов (например, Intermediate Language - IL, платформа Microsoft.Net и JIL, платформа Sun Java), которые содержат в себе кроме программ и их данных дополнительную информацию об их структуре, зависимостях, детальном описании и т.п. (метаинформацию).The disadvantages of this method: the complexity is comparable to the complexity of the method of creating a distributed computer program “from scratch”, and sometimes even higher, since significant processing of existing source codes may be required to integrate with the necessary functionality. In the absence of source codes, decentralization is impossible or extremely difficult (due to the limitations of the full or partial decompilation of binary program codes intended for execution on specific architectures of computers, processors, operating systems and other system software). Full decompilation is possible only in the case of so-called “controlled” binary codes (for example, Intermediate Language - IL, Microsoft.Net and JIL, Sun Java platform), which contain in addition to programs and their data additional information about their structure, dependencies, detailed description, etc. (meta-information).

Также известен способ разработки программы для ЭВМ (computer application development method), описанный совместно с двумя системами - компьютерной системой программирования (a computer programming system) и динамической системой программирования (a dynamic programming system) в документе US 2008/0196025 A1 (MICROSOFT CORP.), 14.08.2008 (Д1). Документ Д1 оперирует понятием "звено" (tier), которое является элементом так называемой "многозвенной" (n-tier) клиент-серверной архитектуры программ для ЭВМ. В тематической литературе наряду с термином "звено" нередко применяется синоним "уровень". На текущий момент времени наиболее распространенной "многозвенной" ("многоуровневой") архитектурой является трехзвенная клиент-серверная архитектура, где, как правило, присутствуют следующие звенья: клиент (presentation tier), сервер приложений (logic tier) и сервер базы данных (data tier).Also known is a method of developing a computer program (computer application development method), described in conjunction with two systems - a computer programming system (a computer programming system) and a dynamic programming system (a dynamic programming system) in US 2008/0196025 A1 (MICROSOFT CORP. ), 08/14/2008 (D1). Document D1 uses the term “tier”, which is an element of the so-called “multi-tier” (n-tier) client-server architecture of computer programs. In the subject literature, along with the term "link", the synonym "level" is often used. Currently, the most common “multi-tier” (“tiered”) architecture is a three-tier client-server architecture, where, as a rule, the following links are present: client (presentation tier), application server (logic tier) and database server (data tier )

Описанный в Д1 способ разработки программы для ЭВМ содержит два ключевых признака:The method for developing a computer program described in D1 contains two key features:

получение (acquiring) программы, не имеющей информации о звеньях (tier agnostic);receiving (acquiring) a program that does not have information about links (tier agnostic);

преобразование программы в многозвенный вариант для облегчения распределенного исполнения.converting a program into a multi-tier option to facilitate distributed execution.

Также в Д1 предложены варианты способа разработки программы для ЭВМ, включающие дополнительные действия, такие как:Also in D1, variants of a method for developing a computer program are proposed, including additional actions, such as:

преобразование программы с использованием связывания с одной или несколькими предразделенными библиотеками;transforming a program using binding to one or more pre-shared libraries;

преобразование программы с включением в код программы одной или нескольких процедур и/или асинхронных вызовов для облегчения взаимодействия звеньев;program conversion with the inclusion in the program code of one or more procedures and / or asynchronous calls to facilitate the interaction of links;

преобразование программы с включением в код программы логики поддержки состояния на звеньях;program conversion with the inclusion of state support logic on the links in the program code;

автоматическое преобразование программы как функции от анализа программы и/или контекста исполнения;automatic transformation of the program as a function of program analysis and / or execution context;

компиляция многозвенной программы в представление на промежуточном языке (intermediate language representation);compilation of a multi-link program into a representation in an intermediate language (intermediate language representation);

тестирование многозвенной программы в защищенной и/или симулируемой распределенной среде.testing a multi-tier program in a secure and / or simulated distributed environment.

Общими признаками аналога и изобретения являются определение частей, предназначенных для распределенного исполнения, разделение программы на определенные части и преобразование разделенных частей для возможности организации их распределенного взаимодействия. Однако, следует отметить, что предложенный в Д1 способ, равно как и системы, применим только для работы над программами для ЭВМ, представленными в исходном человекочитаемом коде на одном из высокоуровневых языков программирования, и является этапом разработки программ для ЭВМ.Common features of the analogue and the invention are the definition of parts intended for distributed execution, the division of the program into specific parts and the conversion of the divided parts for the possibility of organizing their distributed interaction. However, it should be noted that the method proposed in D1, as well as the system, is applicable only to work on computer programs presented in the original human-readable code in one of the high-level programming languages, and is a stage in the development of computer programs.

В отличие от аналога заявленный способ не ограничен применением на этапах разработки программ для ЭВМ, так как способ оперирует уже созданной программой, предназначенной для работы на одиночном компьютере. Более того, основной акцент возможных применений способа ставится на область "постобработки" программ для ЭВМ, например для защиты программ от несанкционированного копирования и/или использования.In contrast to the analogue, the claimed method is not limited to application at the stages of developing computer programs, since the method operates on an already created program designed to operate on a single computer. Moreover, the main emphasis of possible applications of the method is placed on the area of "post-processing" of computer programs, for example, to protect programs from unauthorized copying and / or use.

Также способ не имеет ограничений на представление исходной программы для ЭВМ в виде человекочитаемых исходных кодов и, соответственно, применим для программ, представленных как в виде низкоуровневых исполнимых двоичных кодов, так и в виде человекочитаемых исходных кодов, а также в виде их комбинаций.Also, the method has no restrictions on the representation of the source program for computers in the form of human-readable source codes and, accordingly, is applicable to programs presented both in the form of low-level executable binary codes, and in the form of human-readable source codes, as well as in the form of their combinations.

Ни на одном из этапов раскрываемого способа не используется информация об архитектуре децентрализованной (распределенной) программы. В отличие от аналога способ не ограничен вариантами клиент-серверной архитектуры (включая многозвенные/многоуровневые архитектуры), у которых обязательно есть явно выраженный узел-инициатор запросов. Части децентрализованной программы для ЭВМ способны взаимодействовать в режиме одноранговой (пиринговой) сети, что возможно благодаря интеграции преобразованных частей программы со средой организации распределенного взаимодействия.None of the stages of the disclosed method uses information about the architecture of a decentralized (distributed) program. Unlike its counterpart, the method is not limited to client-server architecture options (including multi-tier / multi-tier architectures), which necessarily have an explicit request initiating node. Parts of a decentralized computer program can interact in a peer-to-peer network, which is possible due to the integration of the transformed parts of the program with a distributed interaction environment.

В заявленном способе, в отличие от аналога, не производится встраивание дополнительной логики в код программы (например, логики асинхронных вызовов) либо связывание (линковка) программы с предразделенными библиотеками. Вместо этого производится интеграция разделенных частей со средой организации распределенного взаимодействия.In the claimed method, in contrast to the analogue, additional logic is not embedded in the program code (for example, asynchronous call logic) or the linking (linking) of the program with pre-shared libraries. Instead, the integration of the divided parts with the distributed interaction environment is performed.

Среда организации распределенного взаимодействия представляет из себя множество распределенных компонентов, взаимодействующих по сети, где каждый компонент может быть в одном из двух вариантов: в контролируемом варианте и частично-контролируемом варианте. Рекомендуется использовать интеграцию частей с контролируемыми компонентами среды организации распределенного взаимодействия, так как в таком случае отсутствует потенциальная возможность потери контроля исполнения частей программы и рассинхронизации их данных при многопоточном исполнении. Однако частично-контролируемые компоненты среды имеют ключевое преимущество, выраженное в большем быстродействии. Компоненты среды организации распределенного взаимодействия выполняют контроль исполнения распределенных частей, логистику самих частей между сторонами исполнения, логистику данных и контекстов, которыми оперируют распределенные части, между сторонами исполнения.The environment for organizing distributed interaction is a set of distributed components interacting over a network, where each component can be in one of two options: in a controlled version and a partially-controlled version. It is recommended to use the integration of parts with the controlled components of the distributed interaction environment, since in this case there is no potential possibility of losing control over the execution of parts of the program and the desync of their data in multi-threaded execution. However, the partially-controlled components of the medium have a key advantage, expressed in greater speed. The components of the distributed interaction organization environment control the execution of distributed parts, the logistics of the parts themselves between the parties to the execution, the logistics of data and contexts that operate the distributed parts, between the parties to the execution.

В способе, предложенном в аналоге, используется дополнительный этап "получение программы" (acquiring) до момента определения частей, предназначенных для распределенного исполнения, равно как и компонент "получения" (acquisition component), предназначенный для осуществления этого шага. В отличие от аналога заявленный способ не использует никаких дополнительных шагов до определения частей, предназначенных для распределенного взаимодействия.In the method proposed in the analogue, the additional step of “acquiring” is used until the parts intended for distributed execution are determined, as well as the acquisition component intended for this step. Unlike the analogue, the claimed method does not use any additional steps to determine the parts intended for distributed interaction.

Подавляющее количество программ для ЭВМ изначально являются централизованными, то есть не предназначенными для исполнения их частей удаленно друг от друга, на различных вычислительных машинах, в различных процессах и средах. Процесс проектирования и разработки распределенной программы всегда вызывает ряд сложностей у разработчиков, так как распределенные программы требуют особого подхода к проектированию и наличию опыта их разработки. Для значительного снижения трудоемкости при разработке распределенных программ, а также для возможности использования децентрализации программ для ограничения доступа к определенным частям (защиты частей программ) как в случае наличия исходных кодов, так и в случае их отсутствия предложен способ организации распределенных вычислений произвольной программы для ЭВМ.The vast majority of computer programs are initially centralized, that is, not intended for the execution of their parts remotely from each other, on various computers, in various processes and environments. The process of designing and developing a distributed program always causes a number of difficulties for developers, since distributed programs require a special approach to design and the experience of their development. To significantly reduce the complexity of developing distributed programs, as well as to use decentralized programs to limit access to certain parts (protect parts of programs), both in the case of source codes and in their absence, a method for organizing distributed computing of an arbitrary computer program is proposed.

Сущность предлагаемого способа заключается в том, что произвольная исходная программа для ЭВМ, как правило, изначально не предназначенная для распределенного исполнения, преобразуется в распределенный вариант этой же программы, независимо от того, в каком виде она представлена - в виде двоичного кода, исходного кода или того и другого. Способ включает в себя:The essence of the proposed method lies in the fact that an arbitrary source program for a computer, usually not originally intended for distributed execution, is converted into a distributed version of the same program, regardless of whether it is presented in the form of binary code, source code, or one and the other. The method includes:

- определение частей исходной программы, подлежащих дальнейшему преобразованию для распределенного взаимодействия, которые, в зависимости от меры участия человека, можно разделить на ручные (требуют участия человека), полуавтоматические (незначительное участие человека), автоматические (не требующие участия человека). Ниже предложены основные способы определения частей исходной программы:- determination of the parts of the initial program that are subject to further transformation for distributed interaction, which, depending on the measure of human participation, can be divided into manual (require human participation), semi-automatic (insignificant human participation), automatic (not requiring human participation). Below are the main ways to determine the parts of the source program:

1. непосредственное указание частей с использованием метрик программы (например, номер строки, столбца исходного кода программы либо адрес в двоичном коде программы), что применимо как в случае наличия исходных кодов программы, так и в случае их отсутствия;1. direct indication of the parts using program metrics (for example, the line number, column of the program source code or the address in the binary program code), which is applicable both in the case of the source code of the program, and in the absence thereof;

2. непосредственное указание частей с использованием меток в теле программы (например, таких как «начало части», «конец части»), что применимо в случае наличия исходных кодов программы, не применимо в случае их отсутствия;2. direct indication of the parts using labels in the body of the program (for example, such as “the beginning of the part”, “the end of the part”), which is applicable if the source codes of the program are available, not applicable if they are not available;

3. непосредственное указание частей с использованием информации о функциях и процедурах программ, что применимо в случае отсутствия исходных кодов программы, но при наличии информации о наименовании и местоположении функций и процедур программы в двоичном коде (.mар-файлов);3. direct indication of the parts using information about the functions and procedures of the programs, which is applicable if there is no source code for the program, but if there is information about the name and location of the functions and procedures of the program in binary code (.mar files);

4. обработка исходной программы с помощью программ, реализующих автоматические алгоритмы анализа, оценки и ранжирования определенных частей. В этом случае автоматические алгоритмы производят статический и динамический анализ различных частей исходной программы, измерение различных метрик для определения оценки частей по эффективности их выноса из исходной программы, а также ранжирование определенных частей. Результатом работы таких программ является список частей исходной программы, выраженный в ее метриках (например, если происходит анализ двоичного кода программы, то метриками частей будут являться адреса начала и конца каждой части в теле исходной программы);4. processing the original program using programs that implement automatic algorithms for the analysis, evaluation and ranking of certain parts. In this case, automatic algorithms perform a static and dynamic analysis of various parts of the original program, measure various metrics to determine the evaluation of parts by the efficiency of their removal from the original program, and also ranking certain parts. The result of the work of such programs is a list of parts of the source program expressed in its metrics (for example, if the binary code of the program is analyzed, the metrics of the parts will be the addresses of the beginning and end of each part in the body of the source program);

5. комбинация автоматической обработки с непосредственным указанием частей человеком. Наиболее эффективный способ с точки зрения удобства и тонкостей определения частей.5. A combination of automatic processing with direct indication of parts by a person. The most effective way in terms of convenience and subtleties of determining parts.

Дополнительно, для удобства определения частей программы можно использовать не только метки частей, предназначенных для отделения, но и метки частей, которые запрещены для отделения от исходной программы.Additionally, for the convenience of determining parts of the program, you can use not only the labels of the parts intended for separation, but also the labels of the parts that are prohibited for separation from the original program.

- непосредственно разделение исходной программы на части по ранее определенным границам, указанным в метриках кода программы (возможно, с группировкой частей по какому-либо признаку, например по сторонам исполнения частей).- directly dividing the source program into parts according to previously defined boundaries indicated in the metrics of the program code (possibly with a grouping of parts according to some criterion, for example, according to the sides of the execution of parts).

Кроме определения и разделения частей программы возможно определить и разделить (а также пометить для использования на конкретных сторонах исполнения) как статические, так и динамические данные, используемые частями программы.In addition to identifying and separating parts of a program, it is possible to identify and separate (as well as mark for use on specific aspects of execution) both static and dynamic data used by parts of the program.

- преобразование разделенных частей для организации их взаимодействия посредством распределенной среды, а именно:- the conversion of the separated parts to organize their interaction through a distributed environment, namely:

1. если часть программы может (будет) исполняться на частично-контролируемых сторонах исполнения среды (сторонах исполнения, в которых существует лишь опосредованная возможность контроля исполняемых программ и используемых ими данных путем модификации самих программ и интеграцией их с контролирующей логикой), то в местах разрыва (точках входа и/или выхода частей) требуется установка стабов («заглушек» в программе, замещающих или дополняющих части исходной программы, перехватывающих исполнение программы на себя и позволяющих связать программу с дополнительной логикой);1. if a part of the program can (will) be executed on partially controlled parties of the medium execution (parties of execution in which there is only an indirect ability to control the executable programs and the data used by them by modifying the programs themselves and integrating them with the controlling logic), then at the places of the break (points of entry and / or exit of parts) requires the installation of stubs ("stubs" in the program, replacing or supplementing parts of the original program, intercepting the execution of the program on themselves and allowing to bind grams with additional logic);

2. если часть программы будет исполняться только на полностью контролируемых сторонах исполнения (сторонах исполнения, в которых существует возможность полного контроля исполняемых программ и используемых ими данных), то установка стабов не требуется.2. if a part of the program will be executed only on completely controlled parties of execution (parties of execution, in which there is a possibility of full control of executable programs and the data used by them), then installation of stubs is not required.

Части могут быть объединены в группы по желаемым сторонам исполнения. Если архитектура предполагаемых сторон исполнения частей будет отличаться от архитектуры исполнения исходной программы, то допустима статическая перекомпиляция таких частей в код другой архитектуры.Parts can be grouped into desired performance sides. If the architecture of the intended aspects of the execution of parts will differ from the architecture of the execution of the original program, then static recompilation of such parts into the code of another architecture is acceptable.

- организация распределенного взаимодействия выделенных частей. Такое взаимодействие производится посредством среды организации распределенного взаимодействия, которая представляет из себя дополнительную логику. Среда состоит из узлов сети, которые производят транспорт частей программы от стороны исполнения к стороне исполнения и данных от одних частей программы к другим частям и обратно (по какому-либо физическому, либо логическому каналу связи). Каждый узел такой сети организует логическую абстракцию «сторона исполнения» и способен полностью либо частично контролировать исполнение частей исходной программы. Подобная схема организации позволяет исполнять части исходной программы на различных сторонах исполнения различной архитектуры, отличной от архитектуры исходной программы.- organization of distributed interaction of selected parts. Such interaction is carried out through a distributed interaction organization environment, which is an additional logic. The environment consists of network nodes that transport parts of the program from the execution side to the execution side and data from one part of the program to other parts and vice versa (via any physical or logical communication channel). Each node of such a network organizes a logical abstraction "execution side" and is able to fully or partially control the execution of parts of the original program. Such an organization scheme allows executing portions of the source program on different sides of various architecture execution, different from the architecture of the source program.

На среду организации распределенного взаимодействия возлагается обязанность по определению наиболее целесообразного местоположения частей программы и их данных, если требуемое местоположение не указано явно на этапах определения частей программы и их преобразования. Среда вправе производить статистическую и иную оценку эффективности местоположения частей программы и их данных, а также доставку необходимых данных от и к частям программы как при входе и выходе исполнения определенной части, так и по запросу (осуществлять логистику данных).It is the responsibility of the organization of distributed interaction to determine the most appropriate location of the program parts and their data, unless the required location is explicitly indicated at the stages of determining the program parts and their transformation. The environment has the right to make a statistical and other assessment of the effectiveness of the location of the program parts and their data, as well as the delivery of the necessary data from and to the program parts both at the input and output of the execution of a certain part, and upon request (to carry out data logistics).

Исполнение распределенных частей организуется в полностью либо частично контролируемой среде, подразумевающей полный или частичный контроль доступа частей программы к обрабатываемым ими данным, а также передачу управления от одной части программы к другой. Интеграция подобного контроля возможна в нескольких вариантах:Execution of distributed parts is organized in a fully or partially controlled environment, which implies full or partial control of access of program parts to the data they process, as well as transfer of control from one part of the program to another. Integration of such control is possible in several ways:

1. определенные части программы исполняются без изменения набора инструкций на виртуальной машине:1. Certain parts of the program are executed without changing the set of instructions on the virtual machine:

1.1. интерпретирующего типа;1.1. interpretative type;

1.2. компилирующего типа (динамическом компиляторе, который при исполнении определенной части производит ее перекомпиляцию «на лету» в код архитектуры процессора, на котором исполняется эта часть, со вставками дополнительной контролирующей логики обращений к данным);1.2. a compiler type (a dynamic compiler, which, when a certain part is executed, recompiles it on the fly into the architecture code of the processor on which this part is executed, with inserts of additional controlling logic for accessing data);

2. определенные части программы статически перекомпилируются в код новой архитектуры на этапе преобразования частей.2. Certain parts of the program are statically recompiled into the code of the new architecture at the stage of part conversion.

В случае полного контроля исполнения какой-либо части программы средой организации распределенного взаимодействия установка стабов на этапе преобразования такой части может быть необязательной, так как существует возможность определить входы и выходы этой части при исполнении и обработать их необходимым образом. В случае частичного контроля исполнения части программы установка стабов является необходимым этапом, причем во все предполагаемые точки входа исполнения в удаленные части, позволяя тем самым перехватить исполнение части средой и контролировать его.In the case of complete control over the execution of any part of the program by the distributed interaction environment, the installation of stubs at the stage of conversion of such a part may be optional, since it is possible to determine the inputs and outputs of this part during execution and process them as necessary. In the case of partial control of the execution of a part of the program, the installation of stubs is a necessary step, and at all the supposed entry points of the performance in the remote parts, thereby allowing you to intercept the execution of the part by the environment and control it.

Сущность способа децентрализации программы для ЭВМ отражена на фиг.1. Для исходной программы ИП определяют (процесс П1) N-частей, указанные как части 1, 2, 3, 4,…, N-1, N, разделяют ИП на эти части (процесс П2), затем производят преобразование разделенных частей (процесс П3): для частей, которые могут исполняться частично-контролируемой средой (1, 2, 4, N), обязательно устанавливают стаб; для частей, которые могут исполняться только полностью контролируемой средой (3, N-1), установка стабов не обязательна, хотя и может быть произведена (например, для части 3). Кроме установки стабов части объединяют в группы Г1, Г2, Г3, … по произвольному признаку (на фиг.1 части объединены в группы по планируемым сторонам исполнения). Последним организуют взаимодействие преобразованных частей ИП через среду организации распределенного взаимодействия (процесс П4).The essence of the method of decentralization of a computer program is reflected in figure 1. For the initial IP program, N-parts are determined (process P1), N-parts indicated as parts 1, 2, 3, 4, ..., N-1, N, the IP is divided into these parts (process P2), then the divided parts are converted (process P3 ): for parts that can be executed by a partially-controlled environment (1, 2, 4, N), a stub must be installed; for parts that can only be executed in a fully controlled environment (3, N-1), the installation of stubs is not necessary, although it can be done (for example, for part 3). In addition to installing stubs, the parts are combined into groups G1, G2, G3, ... according to an arbitrary criterion (in Fig. 1, the parts are combined into groups according to the planned execution sides). The last to organize the interaction of the transformed parts of the IP through the environment of the organization of distributed interaction (process P4).

Удобство предложенного способа является в том, что среда организации взаимодействия разрабатывается только один раз для определенной архитектуры ЭВМ, процессоров и затем без изменений используется для организации распределенного взаимодействия различных программ для ЭВМ. Единственное, что потребуется произвести для каждой исходной программы - это определить части и подготовить их для распределенного исполнения. А так как это можно сделать автоматически, то предлагаемый способ представляет из себя универсальное решение децентрализации программ для ЭВМ. Способ применим для программ с произвольным количеством потоков исполнения (непосредственно процессами выполнения инструкций программы), как статическим, так и динамическим. Способ позволяет использовать для исполнения распределенных частей различные архитектуры ЭВМ, процессоров, для чего достаточно реализовать узел исполнения среды организации распределенных вычислений под такую архитектуру.The convenience of the proposed method is that the interaction organization environment is developed only once for a specific computer architecture, processors, and then is used without changes to organize the distributed interaction of various computer programs. The only thing that needs to be done for each source program is to identify the parts and prepare them for distributed execution. And since this can be done automatically, the proposed method is a universal solution for decentralizing computer programs. The method is applicable to programs with an arbitrary number of execution threads (directly by the processes of executing program instructions), both static and dynamic. The method allows the use of various computer architectures, processors for executing distributed parts, for which it is sufficient to implement the execution unit of the distributed computing organization environment for such an architecture.

Claims (4)

1. Способ децентрализации программы для ЭВМ, заключающийся в том, что:
для исходной программы определяют части, предназначенные для распределенного исполнения;
производят разделение программы на определенные части;
преобразовывают разделенные части для возможности организации их распределенного взаимодействия (исполнения);
отличающийся тем, что:
в качестве входных данных используют программу, созданную для работы только на одиночном компьютере и представленную либо в виде человекочитаемых исходных программных кодов на любых высокоуровневых языках программирования, либо в виде низкоуровневых исполнимых двоичных кодов, либо в виде комбинации исходных программных кодов и низкоуровневых исполнимых двоичных кодов;
дополнительно производят интеграцию преобразованных частей со средой (представляющей из себя множество взаимодействующих посредством сети связи компонентов), организующей распределенное взаимодействие преобразованных частей друг с другом вместо внедрения в каждую преобразованную часть дополнительной логики, предоставляющей возможность распределенного взаимодействия с другими преобразованными частями программы, такой как, например, логика перехвата управления при исполнении распределенных частей программы и логика передачи данных между ними по сети.
1. The way to decentralize a computer program, which consists in the fact that:
for the original program, parts intended for distributed execution are determined;
divide the program into specific parts;
transform the divided parts for the possibility of organizing their distributed interaction (execution);
characterized in that:
as input, use a program designed to work only on a single computer and presented either in the form of human-readable source program codes in any high-level programming languages, or in the form of low-level executable binary codes, or as a combination of source program codes and low-level executable binary codes;
additionally, the transformed parts are integrated with the environment (which is a set of components interacting via the communication network), which organizes the distributed interaction of the transformed parts with each other instead of introducing additional logic into each transformed part, which allows distributed interaction with other transformed parts of the program, such as, for example , control interception logic when executing distributed program parts and data transfer logic given ny between them on a network.
2. Способ по п.1, отличающийся тем, что части программы, предназначенные для распределенного исполнения, определяют с помощью способов автоматического статического и динамического анализа алгоритмов и способов оценки частей программы, отделение которых от исходной программы будет наиболее эффективным.2. The method according to claim 1, characterized in that the parts of the program intended for distributed execution are determined using automatic static and dynamic analysis of algorithms and methods for evaluating parts of the program, the separation of which from the original program will be most effective. 3. Способ по п.1, отличающийся тем, что исходную программу разделяют на две и более группы частей, одна из которых физически недоступна пользователю, что позволяет использовать описанный способ для защиты программ от несанкционированного доступа и копирования.3. The method according to claim 1, characterized in that the source program is divided into two or more groups of parts, one of which is physically inaccessible to the user, which allows you to use the described method to protect programs from unauthorized access and copying. 4. Способ по п.1, отличающийся тем, что выбор стороны исполнения конкретных частей программы и их данных предоставляют среде организации распределенного взаимодействия, позволяя ей динамически (во время исполнения частей программы) определять наиболее оптимальную сторону исполнения для конкретной части программы и ее данных. 4. The method according to claim 1, characterized in that the choice of the execution side of specific parts of the program and their data is provided to the distributed interaction organization environment, allowing it to dynamically (during the execution of program parts) determine the most optimal execution side for a specific part of the program and its data.
RU2009138304/08A 2009-10-19 2009-10-19 Method for decentralisation of computer program RU2467379C2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
RU2009138304/08A RU2467379C2 (en) 2009-10-19 2009-10-19 Method for decentralisation of computer program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
RU2009138304/08A RU2467379C2 (en) 2009-10-19 2009-10-19 Method for decentralisation of computer program

Publications (2)

Publication Number Publication Date
RU2009138304A RU2009138304A (en) 2010-02-10
RU2467379C2 true RU2467379C2 (en) 2012-11-20

Family

ID=42123557

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2009138304/08A RU2467379C2 (en) 2009-10-19 2009-10-19 Method for decentralisation of computer program

Country Status (1)

Country Link
RU (1) RU2467379C2 (en)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2005116258A (en) * 2003-10-23 2005-12-20 Майкрософт Корпорейшн (Us) MODEL-BASED MANAGEMENT OF COMPUTER SYSTEMS AND DISTRIBUTED APPLICATIONS

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2005116258A (en) * 2003-10-23 2005-12-20 Майкрософт Корпорейшн (Us) MODEL-BASED MANAGEMENT OF COMPUTER SYSTEMS AND DISTRIBUTED APPLICATIONS

Also Published As

Publication number Publication date
RU2009138304A (en) 2010-02-10

Similar Documents

Publication Publication Date Title
Carlsson et al. SICStus Prolog—the first 25 years
Din et al. KeY-ABS: A deductive verification tool for the concurrent modelling language ABS
Tisi et al. Parallel execution of ATL transformation rules
US9170787B2 (en) Componentization of compiler functionality
Ferreira et al. Automated verification of the FreeRTOS scheduler in Hip/Sleek
Legalov et al. A toolkit for the development of data-driven functional parallel programmes
Ploeg et al. Practical principled FRP: forget the past, change the future, FRPNow!
Sanán et al. Csimpl: A rely-guarantee-based framework for verifying concurrent programs
Belson et al. A survey of asynchronous programming using coroutines in the Internet of Things and embedded systems
Kamburjan et al. Behavioral contracts for cooperative scheduling
Hong et al. Effective pattern-driven concurrency bug detection for operating systems
US20170075668A1 (en) Methods and Systems for Generating Client-Server Applications for Target Devices
US10496433B2 (en) Modification of context saving functions
Henrio et al. Multiactive objects and their applications
Moser Data dependency graphs for Ada programs
Ertel et al. Stclang: State thread composition as a foundation for monadic dataflow parallelism
Vasilakis et al. Ignis: Scaling distribution-oblivious systems with light-touch distribution
Peccerillo et al. Flexible task‐DAG management in PHAST library: Data‐parallel tasks and orchestration support for heterogeneous systems
RU2467379C2 (en) Method for decentralisation of computer program
Fecht et al. An emulation layer for dynamic resources with MPI sessions
Henrio et al. From modelling to systematic deployment of distributed active objects
Serbanescu et al. Towards type-based optimizations in distributed applications using ABS and JAVA 8
Stolz et al. Refactoring and active object languages
Kiselyov et al. Delimited continuations in operating systems
Hesselink Verifying a simplification of mutual exclusion by Lycklama–Hadzilacos