Jump to content

Программа прекращения пребывания и проживания

Резидентная программа завершения и пребывания (обычно TSR ) — это компьютерная программа , работающая под DOS , которая использует системный вызов для возврата управления DOS, как если бы она завершилась, но остается в памяти компьютера , чтобы ее можно было повторно активировать позже. [1] Этот метод частично преодолел ограничение DOS на выполнение только одной программы или задачи за раз. TSR используются только в DOS, а не в Windows .

Некоторые TSR представляют собой служебные программы , которые пользователь компьютера может вызывать несколько раз в день, работая в другой программе, с помощью горячей клавиши . Borland Sidekick был ранним и популярным примером этого типа. Другие служат драйверами устройств для оборудования , которое операционная система напрямую не поддерживает.

Использовать

[ редактировать ]

Обычно DOS может запускать только одну программу одновременно. Когда программа завершает работу, она возвращает управление DOS с помощью системного вызова. INT 21h/4Ch DOS API . [2] Используемая память и системные ресурсы затем помечаются как неиспользуемые. Это делает невозможным перезапуск частей программы без перезагрузки всей ее. Однако если программа заканчивается системным вызовом INT 27ч или INT 21h/31h , операционная система не использует повторно определенную указанную часть своей памяти.

Оригинальный звонок, INT 27h называется «завершить, но остаться резидентным», отсюда и название «TSR». Используя этот вызов, программа может освободить до 64 КБ своей резидентной памяти. В MS-DOS версии 2.0 представлен улучшенный вызов: INT 21h/31h («Сохранить процесс»), который снял это ограничение и позволил программе вернуть код выхода . Прежде чем совершить этот вызов, программа может установить один или несколько обработчиков прерываний , указывающих на себя, чтобы ее можно было вызвать снова. Установка вектора аппаратного прерывания позволяет такой программе реагировать на аппаратные события. Установка вектора программного прерывания позволяет вызывать его из запущенной в данный момент программы. Установка обработчика прерываний таймера позволяет TSR запускаться периодически (с использованием программируемого интервального таймера ).

Типичный метод использования вектора прерывания включает в себя чтение его текущего значения (адреса), сохранение его в пространстве памяти TSR и замену его адресом в его собственном коде. Сохраненный адрес вызывается из TSR, фактически формируя односвязный список обработчиков прерываний , также называемых процедурами обслуживания прерываний или ISR. Эта процедура установки ISR называется связыванием или перехватом прерывания или вектора прерывания.

TSR можно загрузить в любое время; либо во время запуска DOS (например, из AUTOEXEC.BAT ), либо по запросу пользователя (например, Borland и Turbo Debugger от Sidekick , QuickPay от Quicken или Personal Calendar от FunStuff Software). Части самой DOS используют этот метод, особенно в версиях DOS 5.0 и более поздних. Например, редактор командной строки DOSKEY и различные другие утилиты устанавливаются путем запуска их из командной строки (вручную, из AUTOEXEC.BAT или через INSTALL изнутри CONFIG.SYS ), а не загружать их как драйверы устройств через DEVICE утверждения в CONFIG.SYS.

Некоторые TSR не имеют возможности самостоятельно выгрузиться, поэтому останутся в памяти до перезагрузки. Однако выгрузка возможна извне, используя такие утилиты, как комбинация MARK.EXE / RELEASE.EXE от TurboPower Software или программную перезагрузку TSR, которые улавливают определенную комбинацию клавиш и освобождают все TSR, загруженные после них. Поскольку цепочка ISR является односвязной, и TSR может хранить ссылку на своего предшественника где угодно, у TSR не существует общего способа удалить себя из цепочки. Поэтому обычно при выгрузке TSR в памяти необходимо оставить заглушку, что приводит к фрагментации памяти. Эта проблема привела к появлению таких структур сотрудничества TSR, как TesSeRact и AMIS. [3]

Прерывание совместного использования

[ редактировать ]

предложил метод под названием «Альтернативная спецификация мультиплексных прерываний» (AMIS) Для решения проблем, когда множество TSR совместно используют одно и то же прерывание, Ральф Д. Браун как улучшение по сравнению с ранее использовавшимися услугами, предлагаемыми через INT 2Fh. AMIS предоставляет способы распределения программных прерываний контролируемого . Он создан по образцу протокола совместного использования прерываний IBM, первоначально изобретенного для совместного использования аппаратных прерываний процессора x86. Услуги AMIS доступны через Int 2Dh. [4]

В свое время это предложение так и не получило широкой поддержки среди программистов. Он существовал наряду с несколькими другими конкурирующими спецификациями различной сложности. [5]

Неисправности

[ редактировать ]

Хотя TSR очень полезны или даже необходимы для преодоления ограничений DOS , они имеют репутацию нарушителей спокойствия. Многие взламывают операционную систему различными документированными или недокументированными способами, часто вызывая сбой системы при ее активации или деактивации при использовании определенных приложений или других TSR.

Объединив векторы прерываний, TSR может получить полный контроль над компьютером. TSR может иметь одно из двух вариантов поведения:

  • Получите полный контроль над прерыванием, не вызывая другие TSR, которые ранее изменили тот же вектор прерывания .
  • Каскадируйтесь с другими TSR, вызывая старый вектор прерывания. Это можно сделать до или после того, как они выполнили свой фактический код. Таким образом, TSR могут образовывать цепочку, в которой каждый вызывает следующего.

Резидентный метод «завершить и остаться» используется большинством DOS- вирусов и других вредоносных программ, которые могут либо получить контроль над ПК, либо оставаться в фоновом режиме. Это вредоносное ПО может реагировать на события дискового ввода-вывода или выполнения, заражая исполняемые файлы (.EXE или .COM) при запуске, а также файлы данных при их открытии.

Кроме того, в DOS все программы, даже с большим объемом физической оперативной памяти , должны загружаться в первые 640 КБ ОЗУ ( обычная память ). TSR не являются исключением и берут фрагменты из этих 640 КБ, которые, таким образом, недоступны другим приложениям. Это означало, что написание TSR было непростой задачей: добиться для него минимально возможного размера и проверить его на совместимость с множеством программных продуктов от разных поставщиков — часто очень разочаровывающая задача.

В конце 1980-х и начале 1990-х годов многие видеоигры на платформе ПК преодолели этот предел и оставляли все меньше и меньше места для TSR — даже таких важных, как драйверы CD-ROM — и организовывали все так, чтобы было достаточно свободной оперативной памяти для запуска. игры, сохраняя при этом необходимые TSR, стали очень сложными. У многих геймеров было несколько загрузочных дисков разной конфигурации для разных игр. В более поздних версиях MS-DOS сценарии «загрузочного меню» позволяли выбирать различные конфигурации с помощью одного пункта меню. В середине и конце 1990-х годов, когда многие игры все еще писались для DOS, ограничение в 640 КБ в конечном итоге было преодолено за счет помещения частей игровых данных выше первых 1 МБ памяти и использования кода ниже 640 КБ для доступа к расширенной памяти. использование расширенной памяти (EMS) с использованием техники наложения . Альтернативный более поздний подход заключался в переключении ЦП в защищенный режим с помощью расширителей DOS и запуске программы в защищенном режиме. Последнее позволяло располагать код и данные в области расширенной памяти. [ нужна ссылка ]

Поскольку программирование с множеством оверлеев само по себе является сложной задачей, когда программа становилась слишком большой, чтобы полностью уместиться примерно в 512 КБ, использование расширенной памяти почти всегда осуществлялось с использованием стороннего расширителя DOS, реализующего VCPI или DPMI , поскольку это становится Гораздо проще и быстрее получить доступ к памяти, превышающей границу 1 МБ, и можно запускать код в этой области, когда процессор x86 переключается из реального режима в защищенный режим . Однако, поскольку DOS и большинство программ DOS работают в реальном режиме (VCPI или DPMI делают программу защищенного режима похожей на программу реального режима для DOS и остальной системы за счет переключения между двумя режимами), DOS TSR и драйверы устройств также работают в реальном режиме, и поэтому каждый раз, когда кто-то получает управление, расширитель DOS должен переключиться обратно в реальный режим до тех пор, пока он не откажется от управления, что приведет к штрафу по времени (если только они не используют такие методы, как DPMS или CLOAKING ).

Возвращаться

[ редактировать ]

С появлением во второй половине 1980-х годов плат расширенной памяти и особенно процессоров Intel 80386 стало возможным использовать память объемом более 640 КБ для загрузки TSR. Это потребовало сложных программных решений, названных менеджерами расширенной памяти . Некоторые менеджеры памяти — QRAM и QEMM от Quarterdeck , 386. МАКС от Qualitas , CEMM от Compaq и позже EMM386 от Microsoft . Области памяти, используемые для загрузки TSR размером более 640 КБ, называются « верхними блоками памяти » (UMB), а загрузка программ в них называется высокой загрузкой . Позже менеджеры памяти начали включать такие программы, как Optimize от Quarterdeck или MEMMAKER от Microsoft , которые пытаются максимизировать доступное пространство в первых 640 КБ, определяя, как лучше всего распределить TSR между нижней и верхней памятью.

Отклонить

[ редактировать ]

С разработкой игр с использованием расширителей DOS (ранним примером был Doom ), которые обходили барьер в 640 КБ, многие проблемы, связанные с TSR, исчезли, а с широким распространением Microsoft Windows и особенно Windows 95 (за которой последовала Windows 98 ) — что сделало большинство TSR ненужными, а некоторые TSR несовместимыми - TSR устарел, хотя приложения Win16 могут выполнять трюки, подобные TSR, такие как исправление таблицы дескрипторов прерываний (IDT), поскольку Windows это позволяла. Windows Me не позволяет компьютеру загружаться с ядром DOS после завершения работы Windows Me; таким образом, TSR стали бесполезными в Windows Me.

Серия Windows NT (включая Windows 2000 , Windows XP и более поздние версии) полностью заменила DOS и все время работала в защищенном или длинном режиме (только более поздние 64-битные версии), отключив возможность перехода в реальный режим, который необходим чтобы TSR функционировали. Вместо этого эти операционные системы оснащены современными драйверов и служб платформами с защитой памяти и вытесняющей многозадачностью , что позволяет одновременно запускать несколько программ и драйверов устройств без необходимости использования специальных приемов программирования; исключительно ядро . ​​и его модули несут ответственность за изменение таблицы прерываний

См. также

[ редактировать ]
  1. ^ Мэйбери, Рик (1998). «Победим ошибку — компьютерные вирусы» . Лучшие советы по ПК . Архивировано из оригинала 28 сентября 2009 года . Проверено 9 февраля 2012 г. {{cite web}}: CS1 maint: неподходящий URL ( ссылка )
  2. ^ [1] Ссылка на HelpPC: INT 21,0 – Завершение программы.
  3. ^ «список библиотек TSR» . Архивировано из оригинала 17 августа 2007 г. также известные как фреймворки.
  4. ^ «инт 2D» . Архивировано из оригинала 1 декабря 2017 г. Проверено 14 ноября 2019 г.
  5. ^ «Библиотеки ТСР» . 19.06.2016. Архивировано из оригинала 19 июня 2016 г. Проверено 14 ноября 2019 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 3f751c1f97d47fefdbfcdb34ce6f9815__1721955240
URL1:https://arc.ask3.ru/arc/aa/3f/15/3f751c1f97d47fefdbfcdb34ce6f9815.html
Заголовок, (Title) документа по адресу, URL1:
Terminate-and-stay-resident program - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)