Процессы в A2/ЯОС уже есть (точнее, команды, но они близки по смыслу). Fork - да, в модели единой памяти он не особо осмысленен. В unix-системах просто копируются страницы памяти и получается дешёвый клон процесса. Это выгодно с точки зрения производительности, но приводит к заморочкам. В Оберонах такого нет, т.к. нельзя взять и скопировать кусок памяти задёшево.

stdin и stdout тоже уже присутствуют в A2/ЯОС, в объекте Commands.Context . У меня в основном вопрос про stderr. Мне кажется, что должно быть достаточно одного потока. Наличие двух потоков затрудняет синхронизацию. С другой стороны, можно различать "информацию для пользователя" и "информацию для специалистов". Например, в звукорежиссуре ещё больше потоков - там есть поток для зрителей, поток для телевидения, потоки для исполнителей и поток для звукорежиссёра, который он подключает то туда, то сюда, налаживая звук в остальных потоках. А есть и какой-нибудь индикатор громкости на канале, который не нужен слушателям, но звукорежиссёру он показывает проблемы.