Все проще. Диспетчер памяти к PDP-11 прикрутили слишком сбоку - почти без вмешательства в аппаратуру процессора, и, поэтому, у программы нет средств нормального манипулирования длинными адресами. Вспомните х86*16. У него есть команды дальнего перехода, дальнего вызова подпрограммы, дальней косвенной адресации... То есть, при помощи специальных команд ЦП доступно все адресное пространство, все данные для этого содержались в регистрах процессора, при переключении задач они входили в контекст сохранения/восстановления. А здесь до этого не догадались, ДП прикрутили сбоку, как внешнее устройство, систему команд оставили, практически, прежней, а ей доступно только 64К. То есть, конечно, можно сделать что-то подобное, используя ресурсы ОС, что в некотором роде и сделали. Но это, прежде всего, долго, "на лету" не сделаешь. То есть, допустим, не сделаешь последовательный вызов нескольких дальних подпрограмм из быстрого цикла, поскольку он перестанет быть быстрым - вызов ОС для переключения - это не одна машинная команда, как в х86. Пусть и не самая быстрая...
С другой стороны, такая модификация системы команд отправила бы лесом бОльшую часть наработанного до этого... ИМХО.
- - - Добавлено - - -
Да, умелое планирование оверлеев и правильное размещение данных позволяет решать многое, но это надо напрягаться программисту, тогда, как при наличии расширенной системы команд (как в х86, допустим) с этим справляются компиляторы.





Ответить с цитированием