Проект как проект.

Для полноценной многозадачности нужно 2 окна проецирования. Нижняя память имеет обыкновение кончаться, особенно если её выделять по N сегментов подряд (эффект решета).

Окна должны быть вложенными (про это писал Vitamin).

Если страницы памяти, с которыми работают приложения, физические, а не виртуальные, то невозможен своп.

Непонятно, как организованы очереди сообщений. Их составляет сама задача? Она это делает, находясь в своём стеке? или в стеке ядра?

Где вообще располагаются стеки задач?