stringtranslate.com

Наложение (программирование)

Схематическое изображение

В общем вычислительном смысле наложение означает «процесс передачи блока программного кода или других данных в основную память с заменой того, что уже сохранено». [1] Наложение — это метод программирования , который позволяет программам занимать больше места, чем основная память компьютера . [2] Встроенная система обычно использует оверлеи из-за ограничения физической памяти , которая является внутренней памятью для системы-на-кристалле , и отсутствия средств виртуальной памяти .

Применение

Создание программы-наложения включает ручное разделение программы на автономные блоки объектного кода , называемые наложениями или ссылками , обычно расположенные в древовидной структуре . [b] Одноуровневые сегменты, находящиеся на одном и том же уровне глубины, используют одну и ту же память, называемую областью наложения [c] или областью назначения . Менеджер наложения, являющийся частью операционной системы или частью программы наложения, загружает необходимое наложение из внешней памяти в регион назначения, когда это необходимо; это может происходить автоматически или с помощью явного кода. Часто компоновщики обеспечивают поддержку наложений. [3]

Пример

В следующем примере показаны операторы управления, которые предписывают редактору связей OS/360 связать программу-наложение, содержащую одну область с отступом для отображения структуры (имена сегментов произвольны):

ВКЛЮЧИТЬ SYSLIB(MOD1) ВКЛЮЧИТЬ SYSLIB(MOD2) НАЛОЖЕНИЕ А ВКЛЮЧИТЬ SYSLIB(MOD3) НАВЕРХ AA ВКЛЮЧИТЬ SYSLIB(MOD4) ВКЛЮЧИТЬ SYSLIB(MOD5) НАЛОЖЕНИЕ AB ВКЛЮЧИТЬ SYSLIB(MOD6) НАЛОЖЕНИЕ Б ВКЛЮЧИТЬ SYSLIB (MOD7)
 +--------------+ | Корневой сегмент | | МОД1, МОД2 | +--------------+ | +----------+----------+ | | +-------------+ +-------------+ | Наложение А | | Наложение Б | | МОД3 | | МОД7 | +-------------+ +-------------+ | +--------+--------+ | | +-------------+ +-------------+ | Наложение AA | | Наложение AB | | МОД4, МОД5 | | МОД6 | +-------------+ +-------------+

Эти операторы определяют дерево, состоящее из постоянно расположенного сегмента, называемого корнем , и двух наложений A и B, которые будут загружены после окончания MOD2. Само наложение A состоит из двух сегментов наложения: AA и AB. Во время выполнения оверлеи A и B будут использовать одни и те же ячейки памяти; После окончания MOD3 AA и AB будут использовать одни и те же места.

Все сегменты между корнем и данным сегментом наложения называются путем .

Приложения

По состоянию на 2015 год большинство бизнес-приложений предназначены для работы на платформах с виртуальной памятью . Разработчик на такой платформе может спроектировать программу так, как будто ограничения памяти не существует, если только рабочий набор программы не превышает доступную физическую память. Самое главное, что архитектор может сосредоточиться на решаемой проблеме без дополнительных сложностей проектирования, связанных с разделением обработки на этапы, ограниченные размером наложения. Таким образом, разработчик может использовать языки программирования более высокого уровня, которые не позволяют программисту сильно контролировать размер (например, Java , C++ , Smalltalk ).

Тем не менее, наложения остаются полезными во встроенных системах. [4] Некоторые недорогие процессоры, используемые во встроенных системах, не имеют блока управления памятью (MMU). Кроме того, многие встроенные системы являются системами реального времени , и оверлеи обеспечивают более определенное время отклика, чем пейджинг . Например, программное обеспечение основной системы авионики космического корабля (PASS) использует запрограммированные наложения. [5]

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

Историческое использование

IBM представила концепцию цепочки заданий [6] в FORTRAN II . Программа должна была явно вызвать подпрограмму CHAIN ​​для загрузки новой ссылки, и новая ссылка заменила все хранилище старой ссылки, за исключением области FORTRAN COMMON.

IBM представила более общую обработку наложений [7] в IBSYS / IBJOB , включая древовидную структуру и автоматическую загрузку ссылок как часть обработки CALL.

В OS/360 IBM расширила возможности наложения IBLDR, разрешив программе наложения иметь независимые области наложения, каждая со своим собственным деревом наложения. OS/360 также имела более простую систему наложения для временных подпрограмм SVC , используя 1024-байтовые временные области SVC.

В эпоху домашних компьютеров оверлеи были популярны, потому что операционная система и многие компьютерные системы, на которых она работала, не имели виртуальной памяти и имели очень мало оперативной памяти по нынешним стандартам: оригинальный IBM PC имел от 16 до 64 КБ, в зависимости от конфигурации. Наложения были популярным методом в Commodore BASIC для загрузки графических экранов. [2]

«Некоторые компоновщики DOS в 1980-х годах поддерживали [оверлеи] в форме, почти идентичной той, которая использовалась 25 годами ранее на мэйнфреймах». [4] [8] Двоичные файлы , содержащие наложения памяти, де-факто имели стандартные расширения .OVL [8] или .OVR [9] (но также использовались числовые расширения файлов, такие как .000 , .001 и т. д. для последующих файлов [10] ). . Этот тип файлов использовался, среди прочего, WordStar [11] (состоявший из основного исполняемого файла WS.COMи модулей оверлея WSMSGS.OVR, WSOVLY1.OVR, MAILMERGE.OVRи SPELSTAR.OVR, где « толстые » файлы оверлея были даже двоично идентичными в своих портах для CP/M-86 и MS-DOS). [12] ), dBase , [13] и пакет программного обеспечения для автоматизации офиса Enable DOS от Enable Software . Borland Turbo Pascal [14] [15] и компилятор GFA BASIC могли создавать файлы .OVL.

Смотрите также

Примечания

  1. ^ Это не имеет ничего общего с термином « регион» в управлении хранилищем MVT .
  2. ^ В OS/360 и его преемниках может быть несколько регионов [a], каждый из которых содержит полное дерево наложения.
  3. ^ Номенклатура различается в зависимости от системы, например, в регионе OS/360 относится ко всему дереву наложения.

Рекомендации

  1. ^ "Оксфордские словари". 26 ноября 2015 г. Архивировано из оригинала 10 июля 2022 г. Проверено 10 июля 2022 г.
  2. ^ Аб Баттерфилд, Джеймс «Джим» , изд. (июнь 1986 г.). «Часть 4: Наложение». Загрузка и связывание программ Commodore. п. 74. Архивировано из оригинала 10 июля 2022 г. Проверено 10 июля 2022 г. Это позволяет запускать программы, размер которых, по сути, намного превышает объем памяти вашего компьютера. {{cite book}}: |magazine=игнорируется ( помощь )
  3. ^ аб Левин, Джон Р. (2000). Линкеры и загрузчики. Издательство Морган Кауфманн . п. 177. ИСБН 1-55860-496-0. Архивировано из оригинала 6 апреля 2022 г. Проверено 10 июля 2022 г.[2]
  4. ^ Национальный исследовательский совет (ноябрь 1993 г.) [июнь 1993 г.]. Оценка процессов разработки программного обеспечения для полетов космических кораблей (2-е изд.). Вашингтон, округ Колумбия, США: Национальная академия наук , The National Academies Press . дои : 10.17226/2222. hdl : 2060/19930019745. ISBN 978-0-309-04880-4. LCCN  93-84549 . Проверено 29 октября 2012 г.(208 страниц)
  5. ^ «Глава 12: Цепная работа» (PDF) . Системы программирования IBM 7090/7094 — Программирование на FORTRAN II (PDF) . Покипси, Нью-Йорк, США: Корпорация IBM . Август 1963. стр. 34–35. Форма С28-6054-4 Файл №7090-25. Архивировано (PDF) из оригинала 15 марта 2022 г. Проверено 10 июля 2022 г. {{cite book}}: |work=игнорируется ( помощь ) (52 страницы)
  6. ^ Системы программирования IBM 7090/7094 - Процессор IBJOB - Функция наложения IBLDR (PDF) (1-е изд.). Покипси, Нью-Йорк, США: Корпорация IBM . Май 1963 г. Форма C28-6331, файл № 7090-27. Архивировано (PDF) из оригинала 15 марта 2022 г. Проверено 26 декабря 2021 г. {{cite book}}: |work=игнорируется ( помощь ) (8 страниц)
  7. ^ аб Эллиотт, Джон К. (05 июня 2012 г.) [02 января 2000 г.]. «Формат файла PRL». seasip.info . Архивировано из оригинала 26 января 2020 г. Проверено 26 января 2020 г. […] Файл PRL — это перемещаемый двоичный файл, используемый MP/M и CP/M Plus для различных модулей, кроме файлов .COM . Этот формат файла также используется для файлов FID на Amstrad PCW . Существует несколько форматов файлов, в которых используются версии PRL: SPR (системный PRL), RSP (резидентный системный процесс). LINK-80 также может создавать файлы OVL (оверлеи), которые имеют заголовок PRL, но не подлежат перемещению. Драйверы GSX имеют формат PRL; то же самое относится и к резидентным системным расширениям (.RSX). […][3]
  8. ^ Домен, Норберт (1990). «Platz schaffen durch Überlagern - Overlay-Strukturen в Turbo Pascal». MC (на немецком языке). Том. 90, нет. 12. С. 124–130. Архивировано из оригинала 4 августа 2022 г. Проверено 4 августа 2022 г.[4]
  9. ^ Гэвин, Брюс. «Создание наложений программы». В Пирсоне, Дэйв (ред.). Турбо Паскаль — Руководство по Нортону. v3. п. 149. Архивировано из оригинала 4 августа 2022 г. Проверено 4 августа 2022 г.
  10. ^ Маббетт, Алан (1985). Начало работы с WordStar, MailMerge + SpellStar . Издательство Кембриджского университета . ISBN 0-521-31805-Х.
  11. ^ Некасек, Михал (30 января 2018 г.) [28 января 2018 г., 26 января 2018 г.]. «Снова WordStar». Музей OS/2 . Архивировано из оригинала 28 июля 2019 г. Проверено 28 июля 2019 г. […] Причина подозревать такую ​​разницу заключается в том, что версия 3.2x также поддерживает CP/M-86 (оверлеи идентичны между DOS и CP/M-86, отличается только основной исполняемый файл) […] файлы .OVR На 100% идентично DOS и CP/M-86, с флагом (четко показанным в руководстве WordStar 3.20 ), переключающимся между ними во время выполнения […] интерфейс ОС в WordStar довольно узкий и хорошо абстрагированный […] WordStar 3.2x оверлеи на 100% идентичны в версиях DOS и CP/M-86. Существует переключатель времени выполнения, который выбирает между вызовом INT 21h (DOS) и INT E0h (CP/M-86). WS.COM не одинаков для DOS и CP/M-86, хотя, вероятно, и не сильно отличается. […]
  12. ^ Сиднэм-Райт, Лиз; Стивенс, Брэд, ред. (31 июля 1990 г.). «Эштон-Тейт поставляет dBASE IV версии 1.1» (PDF) . Торранс, Калифорния, США: Эштон Тейт . п. 2-2-2. Архивировано из оригинала (PDF) 4 апреля 2017 г. Проверено 13 февраля 2014 г. Версия 1.1 имеет новую динамическую систему управления памятью (dMMS), которая более эффективно обрабатывает наложения: продукт требует меньше памяти, что приводит к увеличению доступности места для приложений. […] Более низкие требования к памяти продукта (всего 450 КБ ОЗУ) обеспечивают улучшенную поддержку сети, поскольку для поддержки сетей больше не требуется дополнительная аппаратная память. […] Ускоряя области dBASE IV, которые зависят от наложения, новый dMMS повышает производительность при работе в Центре управления и в программах, использующих меню и окна.(5 страниц)
  13. ^ Гершель, Рудольф; Дитрих, Эрнст-Вольфганг (2000). Turbo Pascal 7.0 (на немецком языке) (2-е изд.). Р. Ольденбург Верлаг  [ де ] . п. 249. ИСБН 3-486-25499-5.
  14. ^ Эссер, Ханс-Георг (июнь 2009 г.). «Глава 6. Speicherverwaltung und Dateisysteme - Часть 5: Nicht-zusammenhängende Speicherzuordnung». Betriebssysteme I (PDF) (на немецком языке). Мюнхен, Германия: Hochschule München. Архивировано (PDF) из оригинала 8 мая 2022 г. Проверено 13 февраля 2014 г.(9 страниц)

дальнейшее чтение

Внешние ссылки