В общем вычислительном смысле наложение означает «процесс передачи блока программного кода или других данных в основную память с заменой того, что уже хранится». [1] Наложение - это метод программирования, который позволяет программам быть больше, чем основная память компьютера . [2] Во встроенной системе обычно используются наложения из-за ограничений физической памяти , которая является внутренней памятью для системы на кристалле , и отсутствия средств виртуальной памяти .
Применение
Построение оверлейной программы включает ручное разделение программы на автономные блоки объектного кода, называемые оверлеями , размещенными в древовидной структуре . Сегменты- братья с одинаковым уровнем глубины используют одну и ту же память, называемую областью наложения или областью назначения . Диспетчер наложений, либо часть операционной системы, либо часть программы наложения, загружает требуемый оверлей из внешней памяти в целевую область, когда это необходимо. Часто линкеры поддерживают наложения. [3]
Пример
В следующем примере показаны управляющие операторы, которые инструктируют редактор связей OS / 360 связать оверлейную программу с отступом для отображения структуры (имена сегментов могут быть произвольными):
ВКЛЮЧИТЬ SYSLIB (MOD1) ВКЛЮЧИТЬ SYSLIB (MOD2) НАЛОЖЕНИЕ A ВКЛЮЧИТЬ SYSLIB (MOD3) НАДПИСЬ AA ВКЛЮЧИТЬ SYSLIB (MOD4) ВКЛЮЧИТЬ SYSLIB (MOD5) НАДПИСЬ AB ВКЛЮЧИТЬ SYSLIB (MOD6) НАЛОЖЕНИЕ B ВКЛЮЧИТЬ SYSLIB (MOD7)
+ -------------- + | Корневой сегмент | | MOD1, MOD2 | + -------------- + | + ---------- + ---------- + | | + ------------- + + ------------- + | Накладка A | | Накладка B | | MOD3 | | MOD7 | + ------------- + + ------------- + | + -------- + -------- + | | + ------------- + + ------------- + | Оверлей AA | | Накладка AB | | MOD4, MOD5 | | MOD6 | + ------------- + + ------------- +
Эти операторы определяют дерево, состоящее из постоянно резидентного сегмента, называемого корнем , и двух оверлеев A и B, которые будут загружены после окончания MOD2. Само наложение A состоит из двух сегментов наложения, AA и AB. Во время выполнения оверлеи A и B будут использовать одни и те же ячейки памяти; AA и AB будут использовать одни и те же локации после окончания MOD3.
Все сегменты между корнем и данным сегментом наложения называются путем .
Приложения
По состоянию на 2015 год[Обновить], большинство бизнес-приложений предназначены для работы на платформах с виртуальной памятью . Разработчик на такой платформе может разработать программу так, как будто ограничение памяти не существует, если рабочий набор программы не превышает доступную физическую память. Наиболее важно то, что архитектор может сосредоточиться на решаемой проблеме без дополнительных трудностей проектирования, связанных с форсированием обработки на этапах, ограниченных размером наложения. Таким образом, разработчик может использовать языки программирования более высокого уровня, которые не позволяют программисту сильно контролировать размер (например, Java , C ++ , Smalltalk ).
Тем не менее, оверлеи остаются полезными во встроенных системах. [4] Некоторые недорогие процессоры, используемые во встроенных системах , не имеют блока управления памятью (MMU). Кроме того, многие встроенные системы работают в режиме реального времени , и оверлеи обеспечивают более точное время отклика, чем пейджинг . Например, программное обеспечение основной авионики космического корабля (PASS) использует запрограммированные наложения. [5]
Даже на платформах с виртуальной памятью программные компоненты, такие как кодеки, могут быть отделены до такой степени, что их можно загружать и выгружать по мере необходимости .
Историческое использование
В эпоху домашних компьютеров наложения были популярны, потому что операционная система и многие компьютерные системы, на которых она работала, не обладали виртуальной памятью и имели очень мало оперативной памяти по текущим стандартам: исходный компьютер IBM PC имел от 16 до 64 КБ, в зависимости от конфигурации. Оверлеи были популярной техникой в Commodore BASIC для загрузки графических экранов. Чтобы определить, когда наложение уже было загружено, можно использовать переменную флага . [2]
«Некоторые компоновщики DOS в 1980-х поддерживали [наложения] в форме, почти идентичной той, которая использовалась 25 годами ранее на мэйнфреймах». [4] Двоичные файлы, содержащие оверлеи памяти, де-факто имели стандартное расширение .OVL . Этот тип файла используется среди прочих, WordStar , Dbase и Enable DOS программного пакета автоматизации делопроизводства от Enable Software, Inc. . GFA BASIC компилятор был способен производить .OVL файлы.
Смотрите также
Рекомендации
- ^ «Оксфордские словари» . 2015-11-26.
- ^ а б Баттерфилд, Джим (июнь 1986). «Часть 4: Наложение». Загрузка и связывание программ Commodore . Вычислить! . п. 74.
Это позволяет запускать программы, размер которых в действительности намного превышает объем памяти вашего компьютера.
- ^ «Документация по GNU Linker: описание наложения» . 2008-06-03.
- ^ а б Левин, Джон Р. (2000). Линкеры и загрузчики . Издательство Морган Кауфманн . п. 177. ISBN. 1-55860-496-0. [1]
- ^ "Оценка процессов разработки программного обеспечения для полета космического корабля" . Проверено 29 октября 2012 .
Внешние ссылки
- IBM OS Linkage Editor and Loader (PDF) . Выпуск 21. Корпорация IBM . Март 1972 года [январь 1972 года]. п. 244. GC28-6538.