stringtranslate.com

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

Схема

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

Использование

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

Пример

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

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

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

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

Приложения

По состоянию на 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, где файлы оверлея « fat » были даже двоично идентичны в своих портах для CP/M-86 и MS-DOS [12] ), dBase , [13] и пакет программного обеспечения для автоматизации делопроизводства Enable DOS от Enable Software . Turbo Pascal [14] [15] от Borland и компилятор GFA BASIC могли создавать файлы .OVL.

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

Примечания

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

Ссылки

  1. ^ "Oxford Dictionaries". 2015-11-26. Архивировано из оригинала 2022-07-10 . Получено 2022-07-10 .
  2. ^ ab Butterfield, James "Jim" , ed. (июнь 1986). "Часть 4: Наложение". Загрузка и связывание программ Commodore. стр. 74. Архивировано из оригинала 2022-07-10 . Получено 2022-07-10 . Это позволяет вам запускать программы, которые, по сути, намного больше, чем объем памяти вашего компьютера. {{cite book}}: |magazine=проигнорировано ( помощь )
  3. ^ ab Levine, John R. (2000). Linkers & Loaders. Morgan Kaufmann Publishers . стр. 177. ISBN 1-55860-496-0. Архивировано из оригинала 2022-04-06 . Получено 2022-07-10 .[2]
  4. ^ Национальный исследовательский совет (ноябрь 1993 г.) [июнь 1993 г.]. Оценка процессов разработки программного обеспечения для космических челноков (2-е изд.). Вашингтон, округ Колумбия, США: Национальная академия наук , The National Academies Press . doi :10.17226/2222. hdl :2060/19930019745. ISBN 978-0-309-04880-4. LCCN  93-84549 . Получено 29.10.2012 .(208 страниц)
  5. ^ "Глава 12: Цепная работа" (PDF) . IBM 7090/7094 Programming Systems – FORTRAN II Programming (PDF) . Покипси, Нью-Йорк, США: IBM Corporation . Август 1963 г. стр. 34–35. Форма C28-6054-4 Файл № 7090-25. Архивировано (PDF) из оригинала 15.03.2022 . Получено 10.07.2022 . {{cite book}}: |work=проигнорировано ( помощь ) (52 страницы)
  6. ^ IBM 7090/7094 Programming Systems – IBJOB Processor – Overlay feature of IBLDR (PDF) (1-е изд.). Покипси, Нью-Йорк, США: IBM Corporation . Май 1963 г. Форма C28-6331 Файл № 7090-27. Архивировано (PDF) из оригинала 15.03.2022 . Получено 26.12.2021 . {{cite book}}: |work=проигнорировано ( помощь ) (8 страниц)
  7. ^ ab Elliott, John C. (2012-06-05) [2000-01-02]. "Формат файла PRL". seasip.info . Архивировано из оригинала 2020-01-26 . Получено 2020-01-26 . […] Файл 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. ^ Гэвин, Брюс. «Создание программных оверлеев». В Пирсон, Дэйв (ред.). Turbo Pascal - Norton Guide. v3. стр. 149. Архивировано из оригинала 2022-08-04 . Получено 2022-08-04 .
  10. ^ Маббетт, Алан (1985). Начало работы с WordStar, MailMerge + SpellStar . Cambridge University Press . ISBN 0-521-31805-X.
  11. ^ Necasek, Michal (2018-01-30) [2018-01-28, 2018-01-26]. "WordStar Again". Музей OS/2 . Архивировано из оригинала 2019-07-28 . Получено 2019-07-28 . […] Причина подозревать такую ​​разницу в том, что версия 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. ^ Сиднем-Райт, Лиз; Стивенс, Брэд, ред. (1990-07-31). "Ashton-Tate ships dBASE IV Version 1.1" (PDF) . Торранс, Калифорния, США: Ashton Tate . стр. 2-2-2. Архивировано из оригинала (PDF) 2017-04-04 . Получено 2014-02-13 . Версия 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 страниц)

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

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