ОБРАБОТКА АСИНХРОННЫХ СОБЫТИЙ В МНОГОПОТОЧНОМ ДВОИЧНОМ ТРАНСЛЯТОРЕ

1. Реализуемый с помощью компьютера метод для обработки асинхронного события, наступающего в связи с исполнением блока двоично-транслированного кода, включающего множество двоично-транслированных инструкций, которые исполняются с учетом контекста гостевой системы, метод включает:
a. при наступлении асинхронного события определение ближайшей по потоку управления двоично-транслированной инструкции из множества двоично-транслированных инструкций;
b. копирование двоично-транслированных инструкций из множества двоично-транслированных инструкций вплоть до (и включая) определенной последней двоично-транслированной инструкции из множества двоично-транслированных инструкций в локальный буфер;
c. вставку вызова функции восстановления контекста в локальный буфер, функция восстановления контекста настроена на восстановление контекста гостевой системы, в результате чего контекст гостевой системы становится согласованным; и
d. вставку вызова функции обработки асинхронного события в буфер, функция обработки асинхронного события настроена на обработку асинхронного события в согласованном контексте гостевой системы.
2. Реализуемый с помощью компьютера метод по п. 1, в котором локальный буфер доступен только одному потоку.
3. Реализуемый с помощью компьютера метод по п. 1, в котором функция восстановления контекста исполняется после последней двоично-транслированной инструкции.
4. Реализуемый с помощью компьютера метод по п. 1, в котором функция обработки асинхронного события исполняется после функции восстановления контекста.
5. Реализуемый с помощью компьютера метод по п. 1, в котором множество двоично-транслированных инструкций хранится в глобальном буфере, отдельно и независимо от локального буфера, множество двоично-транслированных инструкций может исполняться одновременно несколькими потоками.
6. Реализуемый с помощью компьютера метод по п. 5, дополнительно включающий:
i. установку счетчика множества потоков, исполняющих множество двоично-транслированных инструкций, хранящихся в глобальном буфере; и
ii. создание механизма задержки исполнения множества двоично-транслированных инструкций, хранящихся в глобальном буфере, в котором поток из множества потоков, который попытается изменить часть двоично-транслированных инструкций из глобального буфера:
1. не позволит другим потокам из множества потоков начать исполнение двоично-транслированных инструкций из глобального буфера;
2. если значение счетчика потоков отлично от нуля, то поток, выполняющий выгон, запретит исполнение двоично-транслированных инструкций из глобального буфера и будет ждать, пока значение счетчика потоков не станет равным нулю; и
3. после наложения запрета на исполнение двоично-транслированных инструкций из глобального буфера любой поток из множества потоков, который попытается исполнить двоично-транслированную инструкцию из глобального буфера, получит исключение и переключится на функцию обработки события.
7. Реализуемый с помощью компьютера метод по п. 6, в котором полученное исключение обрабатывается как асинхронное событие.
8. Материальный носитель информации, представляющий собой множество инструкций, которые при исполнении на одном или более процессорах приводят к исполнению этим одним или более процессорами реализуемого с помощью компьютера метода для обработки асинхронного события, наступающего в связи с исполнением блока двоично-транслированного кода, включающего множество двоично-транслированных инструкций, которые исполняются с учетом контекста гостевой системы; где метод включает в себя:
a. при наступлении асинхронного события, определение ближайшей по потоку управления двоично-транслированной инструкции из множества двоично-транслированных инструкций;
b. копирование двоично-транслированных инструкций из множества двоично-транслированных инструкций вплоть до (и включая) определенной последней двоично-транслированной инструкции из множества двоично-транслированных инструкций в локальный буфер;
c. вставку вызова функции восстановления контекста в локальный буфер, функция восстановления контекста настроена на восстановление контекста гостевой системы, в результате чего контекст гостевой системы становится согласованным; и
d. вставку вызова функции обработки асинхронного события в буфер, функция обработки асинхронного события настроена на обработку асинхронного события в согласованном контексте гостевой системы.
9. Материальный носитель информации по п. 8, в котором локальный буфер доступен только одному потоку.
10. Материальный носитель информации по п. 8, в котором функция восстановления контекста исполняется после последней двоично-транслированной инструкции.
11. Материальный носитель информации по п. 8, в котором функция обработки асинхронного события исполняется после функции восстановления контекста.
12. Материальный носитель информации по п. 8, в котором множество двоично-транслированных инструкций хранится в глобальном буфере, отдельно и независимо от локального буфера, множество двоично-транслированных инструкций может исполняться одновременно несколькими потоками.
13. Материальный носитель информации по п. 12, в котором метод также включает:
i. установку счетчика множества потоков, исполняющих множество двоично-транслированных инструкций, хранящихся в глобальном буфере; и
ii. создание механизма задержки исполнения множества двоично-транслированных инструкций, хранящихся в глобальном буфере, в котором поток из множества потоков, который попытается изменить часть двоично-транслированных инструкций из глобального буфера:
1. не позволит другим потокам из множества потоков начать исполнение двоично-транслированных инструкций из глобального буфера;
2. если значение счетчика потоков отлично от нуля, то поток, выполняющий выгон, запретит исполнение двоично-транслированных инструкций из глобального буфера и будет ждать, пока значение счетчика потоков не станет равным нулю; и
3. после наложения запрета на исполнение двоично-транслированных инструкций из глобального буфера любой поток из множества потоков, который попытается исполнить двоично-транслированную инструкцию из глобального буфера, получит исключение и переключится на функцию обработки события.
14. Материальный носитель информации по п. 13, в котором полученное исключение обрабатывается логически как асинхронное событие.
15. Компьютеризированная система, включающая центральный процессор и память, в памяти хранится множество инструкций, которые при исполнении центральным процессором приводят к исполнению центральным процессором реализуемого с помощью компьютера метода для обработки асинхронного события, наступающего в связи с выполнением блока двоично-транслированных инструкций, включающего множество двоично-транслированных инструкций, которые исполняются с учетом контекста гостевой системы; где метод включает в себя:
a. при наступлении асинхронного события определение ближайшей по потоку управления двоично-транслированной инструкции из множества двоично-транслированных инструкций;
b. копирование двоично-транслированных инструкций из множества двоично-транслированных инструкций вплоть до (и включая) определенной последней двоично-транслированной инструкции из множества двоично-транслированных инструкций в локальный буфер;
c. вставку вызова функции восстановления контекста в локальный буфер, функция восстановления контекста настроена на восстановление контекста гостевой системы, в результате чего контекст гостевой системы становится согласованным; и
d. вставку вызова функции обработки асинхронного события в буфер, функция обработки асинхронного события настроена на обработку асинхронного события в согласованном контексте гостевой системы.
16. Компьютеризированная система по п. 15, в которой локальный буфер доступен только одному потоку.
17. Компьютеризированная система по п. 15, в которой функция восстановления контекста исполняется после последней двоично-транслированной инструкции.
18. Компьютеризированная система по п. 15, в которой функция обработки асинхронного события исполняется после функции восстановления контекста.
19. Компьютеризированная система по п. 15, в которой множество двоично-транслированных инструкций хранится в глобальном буфере, отдельно и независимо от локального буфера, множество двоично-транслированных инструкций может исполняться одновременно несколькими потоками.
20. Компьютеризированная система по п. 19, в которой процедура также включает:
i. установку счетчика множества потоков, исполняющих множество двоично-транслированных инструкций, хранящихся в глобальном буфере; и
ii. создание механизма задержки исполнения множества двоично-транслированных инструкций, хранящихся в глобальном буфере, в котором поток из множества потоков, который попытается изменить часть двоично-транслированных инструкций из глобального буфера:
1. не позволит другим потокам из множества потоков начать исполнение двоично-транслированных инструкций из глобального буфера;
2. если значение счетчика потоков отлично от нуля, то поток, выполняющий выгон, запретит исполнение двоично-транслированных инструкций из глобального буфера и будет ждать, пока значение счетчика потоков не станет равным нулю; и
3. после наложения запрета на исполнение двоично-транслированных инструкций из глобального буфера любой поток из множества потоков, который попытается исполнить двоично-транслированную инструкцию из глобального буфера, получит исключение и переключится на функцию обработки события.
21. Компьютеризированная система по п. 20, в которой полученное исключение обрабатывается логически как асинхронное событие.