Jump to content

Дескрипторы больших систем Берроуза

Дескрипторы являются архитектурной особенностью больших систем Burroughs , включая текущие (по состоянию на 2006 год) Unisys системы Clearpath/MCP. Помимо того, что эти системы основаны на стеках и тегах , примечательной архитектурной особенностью этих систем является то, что они основаны на дескрипторах. Дескрипторы — это средства хранения данных , которые не находятся в стеке, например массивов и объектов . Дескрипторы также используются для строковых данных, например, в компиляторах и коммерческих приложениях .

Подробности

[ редактировать ]

Дескрипторы описывают области хранения, запросы ввода-вывода и результаты ввода-вывода. Они содержат поля, указывающие, например, тип дескриптора, адрес, длину, наличие данных в памяти. Детали различаются в зависимости от линейки продуктов и типа дескриптора. В следующем тексте самый левый (самый значимый) бит нумеруется как 0, в соответствии с документацией Берроуза.

Дескрипторы программ и данных имеют бит, называемый «бит присутствия» или «p-бит»; он указывает, находится ли объект, на который ссылается дескриптор, в настоящее время в памяти или во вторичном хранилище. Этот бит используется для реализации виртуальной памяти .

Виртуальная память изначально была разработана для проекта Атлас в Манчестерском университете в конце 1950-х годов. Стремясь увидеть использование этого в коммерческих приложениях, они пригласили на семинар инженеров из нескольких компьютерных компаний, в том числе из Burroughs и IBM . [1] [ не удалось пройти проверку ] B5000, выпущенный в 1961 году, был первым коммерческим компьютером с виртуальной памятью. В середине 1960-х годов другие поставщики, в том числе IBM, RCA и General Electric, разработали машины, поддерживающие виртуальную память, с операционными системами, ориентированными на разделение времени; IBM не поддерживала виртуальную память на машинах, предназначенных для общей обработки данных, до 1972 года.

При обращении к дескриптору аппаратное обеспечение проверяет p-бит. Если он равен 1, данные присутствуют в памяти в месте, указанном в поле адреса. Если p-бит равен 0, блок данных отсутствует, и прерывание (p-битное прерывание возникает ) и вводится код MCP , чтобы сделать блок присутствующим. В этом случае, если поле адреса равно 0, блок данных не был выделен (начальный p-бит), и MCP ищет свободный блок, размер которого указан в поле длины.

Последний сценарий с p-битом — это когда p-бит равен 0, что указывает на то, что данные не находятся в памяти, но адрес не равен нулю, что указывает на то, что данные были выделены, и в этом случае адрес представляет собой адрес диска в область виртуальной памяти на диске. В этом случае возникает прерывание по p-биту, которое отмечается как «другой» p-бит.

В5000, В5500 и В5700

[ редактировать ]

В5000 [2] был первым компьютером, основанным на дескрипторах. Каждый дескриптор имеет флаг (бит 0), равный 1. Дескрипторы данных содержат 15-битный адрес хранения и 10-битный размер, как и большинство дескрипторов ввода-вывода. Дескрипторы программ и дескрипторы внешних результатов имеют 15-битный адрес, но не имеют поля размера.

B5x00 Дескрипторы программ

[ редактировать ]

Дескрипторы программы используются для определения сегментов программы. Либо вызов операнда, либо вызов дескриптора, который ссылается на дескриптор программы, вызовет вызов подпрограммы, если бит присутствия равен 1. В противном случае это вызовет прерывание присутствия.

B5x00 Дескрипторы программ [2] : 4-2 
0 1 2 3 4 5 6 7 8-17 18-32 33-47
Флаг я Присутствие я Режим А Адрес
1 1 0 = нет в памяти
1=в памяти
1 0=слово
1=символ
0=аргумент не требуется
1=требуется аргумент

Дескрипторы данных

[ редактировать ]

Дескрипторы данных относятся либо к блоку данных, присутствующему в памяти (P=1), либо к блоку данных, который должен быть считан в память (P=0), в зависимости от значения бита присутствия. Либо вызов операнда, либо вызов дескриптора, который ссылается на дескриптор данных, проверит бит присутствия и поле размера; если бит присутствия равен 0, произойдет прерывание присутствия; если поле размера ненулевое, то второе слово в стеке должно находиться в пределах диапазона, иначе произойдет прерывание индекса.

Дескрипторы данных B5x00 [2] : 4-3 
0 1 2 3-7 8-17 18 19 20 21-32 33-47
Флаг я Присутствие Размер я С Адрес
1 0 0 = нет в памяти
1=в памяти
Сдержанный
для МКП
Сдержанный
для МКП
0=Плавающий
1=целое число
[Д5 1] Сдержанный
для МКП
  1. ^ Бит непрерывности - для управления типом прерывания, вызванного оператором выпуска программы.
    0=Установить прерывание завершения программы — области ввода-вывода не заполнены или последняя область ввода-вывода
    1=Установить прерывание непрерывности - области ввода/вывода заполняются

Дескрипторы ввода-вывода

[ редактировать ]
B5x00 Дескрипторы ввода/вывода [2] : 4-4–4-13 
0 1 2 3-7 8-17 18-32 33-47
Флаг я Альтернативный
Внешний
Единица Размер Устройство
Зависимый
Адрес
1 1 0=записать
1 = читать

Дескрипторы внешних результатов

[ редактировать ]

Дескриптор внешнего результата содержит дескриптор ввода-вывода, используемый для инициации операции с заменой некоторых полей.

B5x00 Дескрипторы внешних результатов [2] : 4-14–4-15 
0 1 2 3-7 8-25 26-32 33-47
Флаг я Альтернативный
Внешний
Единица Не имеющий отношения Устройство
Зависимый
Адрес
1 1 0=записать
1 = читать
ошибка
условия
последний
расположение

B6500, B7500 и последующие модели

[ редактировать ]

Дескрипторы описывают блоки данных. Каждый дескриптор содержит 20- битное поле адреса, ссылающееся на блок данных. Каждый блок имеет длину, которая хранится в дескрипторе, также 20 бит. Также указан размер данных: 4-, 6-, 8- или 48-битные данные в трехбитном поле.

Первым компьютером с такой архитектурой стал B6500. в этой реализации значение различных битов состояния было следующим:

  • Бит 47 – Бит присутствия (P-Bit)
  • Бит 46 – Бит копирования.
  • Бит 45 – Индексированный бит.
  • Бит 44 – Сегментированный бит.
  • Бит 43 – бит только для чтения.

В более поздних реализациях эти биты состояния развивались, чтобы соответствовать растущим размерам памяти и полученным с течением времени знаниям.

Использование в компиляторах

[ редактировать ]

В АЛГОЛе границы массива полностью динамические и могут быть взяты из значений, вычисленных во время выполнения, в отличие от Паскаля , где размер массивов фиксируется во время компиляции. Это основная слабость Паскаля, как она определена в его стандарте, но она была устранена во многих коммерческих реализациях Паскаля, особенно в реализациях Берроуза (как версия Университета Тасмании Артура Сейла и Роя Фрика, так и реализация Burroughs Slice автора Мэтт Миллер и др.)

В программе в среде Берроуза массив не выделяется при его объявлении, а только тогда, когда к нему прикасаются в первый раз - таким образом, можно объявить массивы и избежать накладных расходов на их выделение, если они не используются.

Кроме того, не нужны низкоуровневые системные вызовы выделения памяти, такие как вызовы класса malloc в C и Unix — массивы автоматически выделяются по мере использования. Это избавляет программиста от необходимости наполнять программы подверженной ошибкам деятельностью по управлению памятью, которая имеет решающее значение в приложениях для мэйнфреймов .

При переносе программ на языки более низкого уровня, такие как C, структура памяти C обрабатывается путем выделения собственной памяти в большом выделенном блоке B5000 - таким образом, безопасность остальной части системы B5000 не может быть поставлена ​​под угрозу ошибочными программами на C. Фактически, при портировании на B5000 было обнаружено множество случаев переполнения буфера в, казалось бы, правильно работающих программах на языке C. [ нужна ссылка ] архитектура. C, как и Pascal, также был реализован с использованием системы компилятора Slice (которая, как и LLVM , использует общий генератор кода и оптимизатор для всех языков). Компилятор C, система времени выполнения, интерфейсы POSIX , а также порт многих инструментов Unix были созданы Стивом Бартельсом. Компилятор Eiffel также был разработан с использованием Slice.

Для объектно-ориентированных программ, которые требуют более динамичного создания объектов, чем архитектура B5000, объекты лучше всего размещать в одном блоке B5000. Такое распределение объектов является более высоким уровнем, чем malloc в C, и его лучше всего реализовать с помощью современного эффективного сборщика мусора .

Интеграция в архитектуру памяти

[ редактировать ]

Поле адреса в B5000 имеет длину всего 15 бит, а это означает, что дескрипторы могут адресовать только 32 КБ слов (192 КБ) памяти. B6500 расширил это значение до 20 бит или 1 мегаслова (6 МБ). К середине семидесятых годов это все еще оставалось существенным ограничением архитектуры. Чтобы преодолеть эту проблему, было реализовано два решения:

  1. Swapper – это решение фактически реализует еще один уровень поверх управления памятью, одновременно перемещая большие кластеры связанных данных в память и из нее.
  2. ASN – это решение позволяет физически настроить больше памяти в системе, разделенной на отдельно адресуемые фрагменты. Эта архитектура стала известна как память ASN (номер адресного пространства). Память логически разделена на две области: адреса нижней памяти распределяются в глобальное адресное пространство для операционной системы и вспомогательного программного обеспечения, а адреса верхней памяти - в несколько параллельных локальных адресных пространств для отдельных программ. Адресные пространства пронумерованы: ноль означает глобальное адресное пространство, 1..n — локальное адресное пространство. Программы, совместно использующие данные, автоматически помещаются в одно и то же адресное пространство.

Для использования этих функций не требовалось никаких модификаций программного кода. Оба решения можно даже комбинировать, но в конечном итоге требования к памяти MCP и требования к совместному использованию данных программы переросли максимальный размер самого адресного пространства.

С появлением серии A в начале 1980-х годов значение этого поля было изменено и теперь содержит адрес главного дескриптора, что означает, что могут быть выделены блоки данных размером 1 мегабайт, но машинная память может быть значительно расширена до гигабайт. или, возможно, терабайты. Эта архитектура получила название памяти ASD (Advanced Segment Descriptors). Это потребовало новой общей спецификации микрокода, называемой бета-версией. Главным провидцем памяти с РАС является Джон МакКлинток. Позже 3-битный тег памяти был увеличен до 4-битного, что позволило увеличить размер дескриптора сегмента с 20 до 23 бит, что позволило одновременно обращаться к еще большему объему памяти. Эта спецификация микрокода стала известна как уровень Гамма.

Управление памятью

[ редактировать ]

Еще одно существенное преимущество было реализовано для виртуальной памяти. В конструкции B5000, если был развернут блок данных, необходимо было найти все дескрипторы, ссылающиеся на этот блок, чтобы обновить бит присутствия и адрес. При использовании главного дескриптора необходимо изменить только бит присутствия в главном дескрипторе. Кроме того, MCP может перемещать блоки в памяти для сжатия, и ему нужно только изменить адрес в главном дескрипторе.

Разница между B5000 и большинством других систем заключается в том, что другие системы в основном использовали страничную виртуальную память, то есть страницы выгружаются порциями фиксированного размера независимо от структуры информации в них. Виртуальная память B5000 работает с сегментами разного размера, как описано в дескрипторах.

Когда память заполняется до определенной емкости, вызывается процесс ОС, называемый «Шериф рабочего набора», чтобы либо сжать память, либо начать перемещать сегменты из памяти. Сначала он выбирает сегменты кода, поскольку они не могут изменяться и могут быть перезагружены из оригинала в файл кода, поэтому не требуют записи, а затем сегменты данных, которые записываются в файл виртуальной памяти.

Прерывания P-бита также полезны для измерения производительности системы. При первом выделении «p-биты инициализации» указывают на потенциальную проблему с производительностью программы, например, если процедура выделения массива вызывается постоянно. Перезагрузка блоков из виртуальной памяти на диске может существенно ухудшить производительность системы и не является ошибкой какой-либо конкретной задачи. Вот почему многие современные компьютеры могут повысить производительность системы за счет добавления памяти. На машинах B5000 «другие p-биты» указывают на системную проблему, которую можно решить либо путем лучшей балансировки вычислительной нагрузки в течение дня, либо путем добавления дополнительной памяти.

Таким образом, архитектура больших систем Берроуза помогает оптимизировать как отдельные задачи, так и систему в целом.

Защита от переполнения буфера

[ редактировать ]

Последний и, возможно, самый важный момент, который следует отметить в отношении дескрипторов, — это то, как они влияют на взаимодополняющие понятия безопасности системы и корректности программы. Одним из лучших инструментов, хакер которыми сегодня располагает для взлома операционных систем, является переполнение буфера. В языке C, в частности, используется наиболее примитивный и подверженный ошибкам способ обозначения конца строк, используя нулевой байт в качестве индикатора конца строки в самом потоке данных.

Указатели реализованы в B5000 с помощью индексированных дескрипторов. Во время операций индексирования указатели проверяются при каждом приращении, чтобы убедиться, что ни исходный, ни целевой блоки не выходят за пределы. Во время операции сканирования или замены механизмы, используемые для чтения или копирования больших блоков памяти, как источника, так и назначения, проверяются при каждом приращении слова на наличие допустимого тега памяти. Каждый сегмент памяти ограничен тегом из 3 слов, что может привести к сбою такой операции. Каждый сегмент памяти, содержащий чувствительные к целостности данные, такие как программный код, хранится в трех словах тега, что делает невозможным неконтролируемое чтение, не говоря уже о модификации. Таким образом, значительный источник программных ошибок может быть обнаружен задолго до того, как программное обеспечение будет запущено в производство, и более серьезный класс атак на безопасность системы невозможен.

Примечания

[ редактировать ]
  1. ^ Истории о Burroughs B 5000 и людях, которые там были - Приложение A Уэйна Уилнера (PDF) , Музей истории компьютеров, 1979 г.
  2. ^ Jump up to: а б с д и Эксплуатационные характеристики процессоров Burroughs B 5000 (PDF) (ред.), Детройт: Burroughs, 1962, 5000-21005A
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 319c95df4f05329f89c6e62d90d01555__1710208920
URL1:https://arc.ask3.ru/arc/aa/31/55/319c95df4f05329f89c6e62d90d01555.html
Заголовок, (Title) документа по адресу, URL1:
Burroughs large systems descriptors - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)