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