Удаленная загрузка программы (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.
Категория:Сетевые протоколы