Нужно сказать, что на ЕС ЭВМ была масса операционных систем! Дос — это была простая система с фиксированным числом задач и фиксированным распределением памяти. ОС MFT была значителоьно более развита с точки зрения сервиса файловой системы, но распределение памяти тож было фиксированным. Разделы назначались при генерации (сейчас это называется инсталляцией-установкой) конкретной конфигурации системы. Генерация — потому что ось представляла собой колоссальное количество макросов. Генерация состояла в том, что создавался пакет макровызовов с конкретными параметрами макросов. Для этого на компьютере была предустановлена минимальная система с транслятором-ассемблером (макроассемблером). Процесс генерации занимал несколько часов, потом ситему проверяли на работоспособность — та еще работа... Часто оказывалось, что параметры заданы не те или не так — не стыковались у некоторых макросов сочетания... И приходилось перегенерировать систему. Поэтому в системные программисты (а они как раз и занимались такой работой) старались брать людей, уже имевших опыт А фиксированные разделы памяти мог изменить и оператор — была у него такая команда. Каждая задача, естественно, попадала в такой раздел, размер которого был наиболее подходящь — память прописывалась в задании. Каритинку такой системы можно видеть в книге Олиферов — сетевые операционные системы. Они сдирали как раз с тех IBMовских осей. На смену ей довольно быстро пришла OC MVT — MultyVariableTask — мультипрограммирование с переменным числом задач. И тут уже была классика — загрузчик запрашивал память у оси и загружал туда задачу. Кстати, сама IBM/360-370 была машина очень даже ничего! Там была встроенная десятичная арифметика, и двоичная, и плавающая... Только память была устроена как "старшие разяды по младшему адресу"... И это казалось естественным — я потом долго не мог привыкнуть на СМ (pdp-11) к адресации "младшие разряды по младшему адресу". Система прерываний была прообраз нанешней с вектрами, но векторов было всего 6 (кажется) и никаких стеков. Вектор был не вектор, а PSW — Processor Status Word размером в 64 бита. И там была вся информация о состоянии процессора — вместе с адресом текущей команды (кажется 24 бита, поскольку до гигабайтов тогда не додумались еще). РОНы, естественно, отдельно. И это действительно были Регистры ОБЩЕГО назначения, а не так как в Интеле — каждый специализировнный. Было 6 "старых" PSW и 6 "новых" PSW. И одно — текущее. При возникновении прерывания текущее сохранялось в "старом", а в текущее попадало "новое". Естественно, первое, что делал обработчик — сохранял "старое" гденить у себя так, чтобы потом можно было открыть прерывания и обрабатывать вложенные. Стека — не было! Во всяком случае, реализованного в составе процессора. |