Анончик, я тут проектирую процессор просто так и думаю, как лучше реализовать выделение памяти процессам максимально эффективно и просто в плане логики. Сейчас единственное решение, которое у меня есть - выделять процессам реально непрерывный кусок памяти, но не начинающийся с нулевой ячейки, а виртуальные адреса процесса транслировать в реальные простым сумматором, который будет прибавлять адрес начала памяти процесса к адресу, к которому процесс пытается обратиться. А ещё с помощью компаратора выяснять, не пытается ли процесс обратиться за границы выделенной ему памяти, и если это так, то процессор инициализирует преждевременную передачу управления ОС и она решает, что делать. Ну, у меня она будет просто убивать процесс и продолжать работу. Но при такой модели выделения памяти я не могу выделять процессу куски памяти, находящиеся в разных местах так, чтобы он думал, что это всё - один непрерывный кусок. И на случай, если объём всей свободной памяти будет больше или равен объёму памяти, которую запрашивает процесс, а максимальный доступный объём непрерывной памяти будет меньше того объёма, который запрашивает процесс, то будет инициализироваться специальная процедура дефрагментации свободной оперативной памяти, которая просто будет сдвигать память всех процессов так, чтобы в оперативке сначала шёл большой непрерывный кусок уже выделенной процессам памяти, а дальше - кусок свободной памяти. А потом уже ОС будет выделять память тому самому процессу, которому не хватало непрерывной памяти и радоваться тому, что всё работает. Но я вот думаю, это нормальная модель выделения памяти или хреновая? Просто большую часть времени процессы будут довольно быстро запускаться, но проблема в том, что в случае той самой описанной мной выше ситуации, даже если я введу специальную команду, которая по-быстрому копирует содержимое одной ячейки памяти в другую, и буду использовать возможность работать с 4-мя байтами за раз, при тактовой частоте в 1 ггц и объёме памяти в 4гб, выполнение этой процедуры займёт около пяти секунд. Т.е. может быть такое, что при запуске рандомной программы внезапно компутерн словит пятисекундный фриз на пустом месте. Как думаете, это сильно неудобно или сойдёт?