Можно весь документик увидеть? А то я не совсем врубаюсь, о чём там именно речь, ведь под "аппаратными нуждами" можно понимать много что. Например, некоторые самые слабые машины (вроде нашей ЕС-1020) часть физически имеющегося ОЗУ использовали для хранения текущего содержимого регистров -- т.е. физических регистров общего назначения и с плавающей запятой у процессора не было, были лишь зарезервированные ячейки ОЗУ (они располагались в области сохранения регистров при аппаратном сбое, см. ниже). Некоторые другие машины (например, ЕС-1130) использовали часть ОЗУ для обмена данными с каналами ввода-вывода. Но такая память была для программиста полностью недоступна: при попытке обратиться по соответствующим адресам возникало прерывание по обращению к несуществующей памяти. Располагалась она по самым верхним адресам, поэтому с точки зрения программиста всё ОЗУ представляло собой непрерывную область адресного пространства, начиная с нуля.
Что же касается доступной для программ памяти, но зарезервированной под специальные нужды, то в Системе/370 её было 512 байтов, начиная с нулевого адреса. Там располагались области старых и новых PSW (можно считать, векторов прерываний), кой-какая другая системная информация, а также область сохранения состояния процессора при возникновении сбоя. В последней, если аппаратура обнаруживала сбой, который невозможно скорректировать (т.е. если процессор подыхал и нуждался в ремонте), сохранялось содержимое всех регистров общего назначения, с плавающей запятой и управляющих, а также "внутрипроцессорных" средств отсчёта времени. Естественно, сохранялась и информация, описывающая сбой, но она уже зависела от модели процессора. Если эта информация сохранялась корректно (сведения о том, что именно было записано и насколько правильно, тоже размещались в определённых ячейках), была возможность продолжить работу программы с точки сбоя на другом процессоре или на этом же после устранения неисправности. В ориентированных на надёжность мэйнфреймах (современные именно таковыми являются, раньше -- не всякие, ибо сложно и дорого) гарантируется 100% возможность возобновления выполнения программы с точки сбоя даже при полном выходе процессора из строя. Ну а в наиболее примитивных, как уже говорил, не было физических регистров, и соответствующие значения всегда хранились в ОЗУ именно в ячейках, отведённых под область сохранения.
Что же касается CPU extended logout area, то по-русски это было переведено как "область расширенной регистрации при аппаратном контроле". Размер этой области и её содержимое зависели от конкретной модели, а базовый адрес находился в управляющем регистре 15 (по умолчанию он был равен 512, т.е. 0х00000200, но мог быть системой перенесён куда угодно). При генерации ОС (при сборке, если говорить современным языком), помимо прочих параметров, указывалась модель процессора, и в систему включались подпрограммы обработки машинных ошибок именно для этой модели. Исходя из этого же устанавливался и размер данной области.
На практике можно было считать, что программисту полностью доступна память, начиная с 4-го килобайта. Тут дело не столько в области расширенной регистрации (её, во-первых, очень часто вообще не было -- мало какой мэйнфрейм её использовал; как сейчас -- не знаю, надо смотреть доку на конкретные нынешние модели), сколько в том, что защита памяти и переадресация работали со страницами размером 2 и 4 Кбайта, причём в системах с виртуальной памятью был принят именно последний. Кроме того, в многопроцессорных системах работал механизм префиксации, логически перемещающий младшие 4 Кбайта адресного пространства того или иного процессора в другие "общие" адреса, поэтому у каждого процессора как бы имелась своя собственная страница в 4 Кбайта, хотя все они имели доступ в такие страницы друг друга (чтобы, например, один процессор мог возобновить работу программы, прекращённую другим процессором из-за его сбоя). С этим, кстати, и связана разница в терминах "абсолютный адрес" и "реальный адрес": в однопроцессорной системе они всегда совпадают, а в многопроцессорной различаются для нулевой страницы и страницы, выбранной для префиксации ей на замену (две страницы как бы менялись местами).
|