мне почему то кажется, что все решается аппаратно. в частности оперативой. хоть она иине задействуется явно. немножко свопу переподает в процессе
Нет, аппаратно решается лишь дрсселирование тактов, ну и ещё кое-какие мелочи.
Напрямую с памятью софт не работает, он работат с виртуальной памятью, и часто происходят конфузы, когда программа запрашивает XX памяти, система говорит - ок, выделю, потом, когда её начинают использовать программа хочет положить данные в память, а система говорит - сорян, нету. Вот тут-то и начинается веселье, которое зависит от шедуллера и аллокатора ядра.