Загрузка цепочки — это метод, используемый компьютерными программами для замены текущей выполняемой программы новой программой, используя общую область данных для передачи информации из текущей программы в новую программу. Это происходит в нескольких областях вычислений.
Загрузка цепочки похожа на использование оверлеев . Однако, в отличие от оверлеев, загрузка цепочки заменяет текущую исполняемую программу целиком. Оверлеи обычно заменяют только часть работающей программы. Как и использование оверлеев, использование загрузки цепочки увеличивает нагрузку ввода-вывода приложения.
В программах менеджера загрузки операционной системы цепная загрузка используется для передачи управления от менеджера загрузки к загрузочному сектору . Целевой загрузочный сектор загружается с диска , заменяя загрузочный сектор в памяти, с которого был загружен сам менеджер загрузки, и выполняется.
В Unix (и в Unix-подобных операционных системах) системный вызов exec() используется для выполнения загрузки цепочки. Образ программы текущего процесса заменяется совершенно новым образом, и текущий поток начинает выполнение этого образа. Общая область данных включает переменные окружения процесса , которые сохраняются во время системного вызова.
В дополнение к загрузке цепочки уровня процесса exec() Linux поддерживает системный вызов kexec () для замены всего ядра операционной системы на другую версию. Новое ядро загружается так, как будто оно было запущено при включении питания, и никакие работающие процессы не сохраняются.
В программах BASIC загрузка цепочки является компетенцией CHAIN
оператора (или, в Commodore BASIC , LOAD
оператора), который приводит к завершению текущей программы и загрузке и вызову связанной программы (с необязательным параметром, указывающим номер строки , с которой должно начаться выполнение, а не по умолчанию первой строки новой программы на тех диалектах BASIC, которые его поддерживают). Общая область данных варьируется в зависимости от конкретного используемого диалекта BASIC. Например, в BBC BASICCOM
только определенное подмножество всех переменных сохраняется в ЦЕПИ. В других BASIC оператор [1] может использоваться в сочетании с CHAIN
для указания того, какие переменные должны быть сохранены как общие данные в цепочке операций.
Загрузка цепочки позволяет программам BASIC выполнять больше программного кода, чем может поместиться в доступной памяти программ и переменных. Таким образом, приложения, написанные на BASIC, могут быть намного больше размера рабочей памяти, с помощью набора взаимодействующих программ, которые CHAIN
взаимодействуют между собой по мере перемещения потока программы в пределах всего приложения.
Многие версии Fortran включают оператор CALL CHAIN
or CALL LINK
, который выполняет цепочечную загрузку, сохраняя содержимое хранилища COMMON . [2] Это не то же самое, что несвязанная LINK
подпрограмма в GNU Fortran . [3]
OS/360 и последующие версии используют XCTL
макрос (для "управления передачей") для загрузки цепочки. Из-за управления памятью операционной системы это может привести или не привести к замене кода вызывающей программы в памяти.