СПОСОБ И СИСТЕМА ОБРАБОТКИ ДАННЫХ

1. Способ обработки данных, включающий следующие этапы:
а) выделение первым воплощением компьютерной программы начального непрерывного блока памяти для хранения переменных динамически распределяемой области памяти;
б) обработка указанным первым воплощением компьютерной программы данных, включая хранение переменных в указанной динамически распределяемой области памяти;
в) копирование указанного начального непрерывного блока памяти в постоянную память в ответ на прерывание обработки данных указанным первым воплощением компьютерной программы;
г) выделение, выполняемое последующим воплощением указанной компьютерной программы, последующего непрерывного блока памяти для хранения переменных динамически распределяемой области памяти, причем указанный последующий непрерывный блок памяти имеет по меньшей мере такой же размер, как указанный начальный непрерывный блок памяти;
д) копирование, выполняемое указанным последующим воплощением, указанной постоянной памяти в указанный последующий непрерывный блок памяти; и
е) возобновление обработки данных указанным последующим воплощением указанной компьютерной программы на основе переменных динамически распределяемой области памяти, хранящихся в указанной динамически распределяемой области памяти в указанном последующем непрерывном блоке памяти.
2. Способ по п. 1, включающий создание указанного первого воплощения компьютерной программы на первом вычислительном устройстве и создание указанного последующего воплощения компьютерной программы на втором отдельном вычислительном устройстве.
3. Способ по п. 1, отличающийся тем, что первое и второе вычислительные устройства являются одним и тем же вычислительным устройством.
4. Способ по п. 1, отличающийся тем, что указанная постоянная память содержит память компьютера и (или) энергонезависимую память, доступные для каждого из указанных первого и последующего воплощений.
5. Способ по п. 1, дополнительно включающий следующие этапы: сохранение указанным первым воплощением стека программы в указанном начальном непрерывном блоке памяти; сохранение указанным первым воплощением локальных переменных в указанном стеке; выделение указанным последующим воплощением части указанного последующего непрерывного блока памяти для хранения стека программы; и возобновление указанным последующим воплощением обработки данных на основе переменных динамически распределяемой области памяти, хранящихся в указанном стеке программы в указанном последующем непрерывном блоке памяти.
6. Способ по п. 5, включающий применение указанной программы как многопоточной программы, причем каждый поток имеет свой собственный стек и каждый стек хранится в указанном начальном непрерывном блоке памяти.
7. Способ по п. 1, дополнительно включающий следующие этапы: сохранение указанным первым воплощением по меньшей мере одного значения регистра процессора в постоянной памяти, когда указанному первому воплощению необходимо прервать обработку данных; копирование указанным последующим воплощением указанных значений регистров процессора из указанной постоянной памяти; и возобновление указанным последующим воплощением обработки данных на основе указанных одного или нескольких значений регистров процессора.
8. Способ по п. 1, отличающийся тем, что указанная компьютерная программа содержит множество сопрограмм, причем каждое воплощение сопрограммы выполнено с возможностью реализовать этапы от (а) до (е).
9. Способ по п. 1, отличающийся тем, что указанная программа содержит функцию распределения памяти для переменных динамически распределяемой области памяти, заменяющую функцию распределения памяти по умолчанию, которая в противном случае выделяла бы память для переменных динамически распределяемой области памяти в непрерывных блоках памяти.
10. Способ по п. 1, отличающийся тем, что указанная программа является скомпилированной программой C и этапы от (а) до (г) реализуют с помощью переопределенной функции malloc().
11. Способ по п. 1, отличающийся тем, что указанная программа является скомпилированной программой C++ и этапы от (а) до (г) реализуют с помощью переопределенной функции new().
12. Способ по п. 1, отличающийся тем, что указанная память представляет собой виртуальную память.
13. Способ по п. 1, отличающийся тем, что после прерывания обработки данных происходит либо выход из указанной программы, либо ее приостановка.
14. Машиночитаемый носитель с компьютерной программой, содержащей команды, которые при их выполнении на вычислительном устройстве реализуют способ по пп. 1-12.
15. Система обработки данных, содержащая первое вычислительное устройство и второе вычислительное устройство, подключенные через постоянную память, причем первое вычислительное устройство выполнено с возможностью сначала создать воплощение компьютерной программы и выделить начальный непрерывный блок памяти для хранения переменных динамически распределяемой области памяти, а указанное первое воплощение компьютерной программы обрабатывает данные, включая хранение переменных в указанной динамически распределяемой области памяти; и в ответ на прерывание указанным первым воплощением обработки данных указанное первое воплощение компьютерной программы копирует указанный начальный непрерывный блок памяти в указанную постоянную память; указанное второе вычислительное устройство, выполненное с возможностью впоследствии создать воплощение указанной компьютерной программы и выделить последующий непрерывный блок памяти для хранения переменных динамически распределяемой области памяти, причем указанный последующий непрерывный блок памяти имеет по меньшей мере такой же размер, как и указанный начальный непрерывный блок памяти; указанное последующие воплощение указанной компьютерной программы, копирующий указанную постоянную память в указанный последующий непрерывный блок памяти; и возобновление обработки данных на основе переменных, хранящихся в указанной динамически распределяемой области памяти в указанном последующем непрерывном блоке памяти.
16. Система по п. 15, отличающаяся тем, что первое и второе вычислительные устройства являются различными устройствами.