А зачем отдавать управление системе каждый фрейм?
Я предложил более простой и очевидный вариант:
- процесс работает столько, сколько считает нужным. Все это время его никто не перемещает (кооперативная многозадачность)
- когда процесс решает прерваться (сам), он вызывает системную функцию шедулинга. В процессе вызова процесс _может_ быть перемещен по памяти (только кодовая область)
- процессы, требующие прерываний, регистрируют callback в системе
- выделенные блоки памяти адресуются не адресами, а хендлами. Для получения абсолютного адреса и работы делается системный вызов. При этом блок запирается и не перемещается никуда. Когда процесс заканчивает работать с блоком, делается другой вызов и указатель становится невалидным (хендл остается).





Ответить с цитированием