Удалённая загрузка программы

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Удаленная загрузка программы (RIPL или RPL) — это протокол для запуска компьютера и загрузки его операционной системы с сервера через сеть. Такой сервер работает под управлением сетевой операционной системы, такой как LAN Manager, LAN Server, Windows NT Server, Novell NetWare, LANtastic, Solaris или Linux.

Сервер IBM LAN Server[править | править код]

IBM LAN Server позволяет клиентам (запрашивающим RIPL) загружать операционные системы DOS или OS/2 по протоколу 802.2/DLC из локальной сети (часто Token Ring). Поэтому сервер сравнивает запросы клиентов с записями в своей таблице RPL.MAP. IBM LAN Server 1.2 через протокол PCDOSRPL поддерживал удаленную загрузку рабочих станций DOS через загрузочные образы еще в 1990 году. IBM LAN Server 2.0 представил удаленную загрузку станций OS/2 (начиная с OS/2 1.30.1) в 1992 году.

RPL и DOS[править | править код]

Чтобы удаленная загрузка DOS работала, загрузчик RPL загружается в память клиента по сети до запуска операционной системы. Без особых мер предосторожности операционная система может легко перезаписать код RPL во время загрузки, поскольку код RPL находится в нераспределенной памяти (обычно в верхней части доступной обычной памяти). Код RPL скрывается и тем самым защищает себя от перезаписи, перехватывая INT 12h и уменьшая объем памяти, предоставляемый этой службой BIOS, до ее собственного размера. INT 12h используется DOS для запроса объема доступной памяти при инициализации собственной схемы распределения памяти в реальном режиме. Это вызывает проблемы в более современных системах DOS, где операционная система может использовать свободные диапазоны адресов реального режима для перемещения своих частей и высокой загрузки драйверов, чтобы объем доступной обычной памяти был максимально увеличен. Как правило, RPL-код должен был использовать различные «хитрые уловки» операционной системы и конкретной версии, чтобы выжить в этом очень динамичном процессе загрузки и позволить DOS восстановить контроль над памятью, занятой RPL, после завершения беспроблемной.

Начиная с MS-DOS / PC DOS 5.0 и DR DOS 6.0, операционная система проверяет, перехватил ли RPL INT 2Fh, ища подпись «RPL» в коде, указанном INT 2Fh. При наличии DOS вызывает INT 2Fh / AX = 4A06h, чтобы извлечь объем памяти из RPL и интегрировать его в свое собственное распределение памяти, тем самым защищая код RPL от перезаписи другими программами. Тем не менее, по-прежнему трудной обязанностью RPL было чистое удаление себя из памяти в конце фазы загрузки, если это возможно.

RPLOADER и DR-DOS[править | править код]

В дополнение к этому интерфейсу «RPL» DR DOS поддерживает более гибкое расширение с именем «RPLOADER». Если DR DOS обнаруживает присутствие RPLOADER, а не только RPL, он начинает выдавать сообщения INT 2F / AX = 12FFh / BX = 0005h на определенных критических этапах процесса загрузки. Код RPL может использовать их для перемещения себя в памяти (во избежание конфликтов с другим резидентным программным обеспечением или во избежание фрагментации памяти при освобождении памяти RPL в дальнейшем) или для подключения и лучшей интеграции с операционной системой, чтобы выполнять свои окончательные задачи по очистке четко определенным и скоординированным образом с помощью надежного и поддерживаемого внутреннего интерфейса, а не просто хаков. Это помогает улучшить совместимость без необходимости адаптации кода RPL к каждой новой версии операционной системы, а также позволяет избежать ненужной фрагментации памяти и, таким образом, увеличивает доступную память для запуска программ DOS. Интерфейс также можно использовать для запуска DR DOS в качестве задачи в операционной системе хоста, такой как Concurrent DOS.