собственно, пояснение: в венде, для операций с контекстами выполнения используются файберы(fibers). в доке говорится что они реализованы очень схоже с потоками за исключением того, что позволяют пользовательскому коду самому управлять контекстом управления. минус файберов в том, что они(как и потоки) по умолчанию резервируют 1МБ виртуальной памяти, вне зависимости от того, какой объем стека для них указан. т.е. если объем стека меньше 1МБ, то объем виртуальной памяти всегда 1МБ. для сопрограмм, как правило, такие огромные стеки не нужны. обычно объем стека находится в пределах 8-64Кб. т.е. уменьшая объем стека, мы экономим физическую память, но виртуальная память неподконтрольна. т.е. создать 100000 файберов - проблематично.
аналогичная технология в линуксе - контексты[1,2]. но я никак немогу понять, используют ли они виртуальную память, растет ли необходимый объем виртуальной памяти при росте кол-ва контекстов, и какова зависимость между размером стека для контекста и размером виртуальной памяти?
очень много гуглил - но ничего говорящего _о_виртуальной_памяти_для_контекстов_ не нашел.
благодарен.
[1] http://linux.die.net/man/3/makecontext [2] http://linux.die.net/man/3/getcontext