Резидентная программа что это

Иллюстрированный самоучитель по Assembler

Большой класс программ, обеспечивающих функционирование вычислительной системы (драйверы устройств, оболочки DOS, русификаторы, интерактивные справочники и др.), должны постоянно находиться в памяти и мгновенно реагировать на запросы пользователя, или на какие-то события, происходящие в вычислительной системе. Такие программы носят названия программ, резидентных в памяти (Terminate and Stay Resident, TSR), или просто резидентных программ. Сделать резидентной можно как программу типа.СОМ, так и программу типа .ЕХЕ, однако поскольку резидентная программа должна быть максимально компактной, чаще всего в качестве резидентных используют программы типа .СОМ.

Программы, предназначенные для загрузки и оставления в памяти, обычно состоят из двух частей (секций) – инициализирующей и рабочей (резидентной). В тексте программы резидентная секция размещается в начале, инициализирующая – за ней.

При первом вызове программа загружается в память целиком и управление передается секции инициализации, которая заполняет или модифицирует векторы прерываний, настраивает программу на конкретные условия работы (возможно, исходя из параметров, переданных программе при ее вызове) и с помощью прерывания DOS Int 21h с функцией 31h завершает программу, оставляя в памяти ее резидентную часть. Размер резидентной части программы (в параграфах) передается DOS в регистре DX. Указывать при этом сегментный адрес программы нет необходимости, так как он известен DOS. Для определения размера резидентной секции ее можно завершить предложением вида:

Резидентная программа. Assembler


ressize=$-main

Где main – смещение начала программы, а при вызове функции 31h в регистр DX заслать результат вычисления выражения (rcssLze+10Fh)/16.

Разность S – main представляет собой размер главной процедуры. Однако перед главной процедурой размещается префикс программы, имеющий размер 100h байт, который тоже надо оставить в памяти. Далее, при целочисленном делении отбрасывается остаток, т.е. происходит округление результата в сторону уменьшения. Для компенсации этого дефекта можно прибавить к делимому число 15 = Fh. Деление всего этого выражения на 16 даст требуемый размер резидентной части программы в параграфах (возможно, с небольшим кусочком секции инициализации величиной до 15 байт).

Функция 31h, закрепив за резидентной программой необходимую для ее функционирования память, передает управление командному процессору COMMAND.СОМ, и вычислительная система переходит, таким образом, в исходное состояние. Наличие программы, резидентной в памяти, никак не отражается на ходе вычислительного процесса за исключением того, что уменьшается объем свободной памяти. Одновременно может быть загружено несколько резидентных программ.

Для того, чтобы активизировать резидентную программу, ей надо как-то передать управление и, возможно, параметры. Как правило, активизация резидентной программы осуществляется с помощью механизма прерываний.

Кроме того, специально для взаимодействия с резидентными программами в DOS предусмотрено мультиплексное прерывание 2Fh.

КАРЬЕРА ХАКЕРА. Книга 1 — Основы MASM32. Глава 4 — Резидентная программа

Рассмотрим типичную структуру резидентной программы и системные средства оставления ее в памяти. Как уже отмечалось, резидентные программы чаще всего пишутся в формате .СОМ:

code segment assume CS:text,DS:text org 100h main proc jmp init; Переход на секцию инициализации …; Данные резидентной секции программы entry:; Точка входа при активизации …; Текст резидентной секции программы iret main endp ressize=$-myproc; Размер (в байтах) резидентной секции init proc; Секция инициализации … mov DX,(ressize+10Fh)/16; Размер в параграфах mov AX,3100h; Функция «завершить и int 21h; оставить в памяти» init endp code ends end main

При первом запуске программы с клавиатуры управление передается на начато процедуры main (первый байт после префикса программы). Командой jmp осуществляется переход на секцию инициализации, в которой, в частности, подготавливаются условия для дальнейшей активизации программы уже в резидентном состоянии. Последними строками секции инициализации вызывается функция 31h, которая выполняет завершение программы с оставлением в памяти указанной ее части. С целью экономии памяти секция инициализации располагается в конце программы и отбрасывается при ее завершении.

Источник: samoychiteli.ru

Резидентная программа

Резидентная программа (или TSR-программа, от англ. Terminate and Stay Resident — «завершиться и остаться резидентной») — в операционной системе MS-DOS программа, вернувшая управление оболочке операционной системы (command.com) либо надстройке над операционной системой (Norton Commander и т. п.), но оставшаяся в оперативной памяти персонального компьютера [1] . Резидентная программа активизируется каждый раз при возникновении прерывания, вектор которого эта программа изменила на адрес одной из своих процедур.

При работе с MS-DOS резидентные программы широко использовались для достижения различных целей (например, русификаторы клавиатуры, программы доступа к локальной сети, менеджеры отложенной печати, вирусы).

По способу инициализации и вызова операционной системой резидентные программы необходимо отличать от «настоящих» драйверов MS-DOS, встраиваемых операционной системой в своё ядро во время загрузки.

В эпоху многозадачных ОС резидентными иногда называют программы, загруженные постоянно и работающие в фоновом режиме. Но применение этого термина некорректно по отношению к многозадачным ОС.

  • 1 Основные понятия
  • 2 Структура резидентной программы
  • 2.1 Функции секции инициализации заключаются в следующем
Читайте также:
Telegram widgets что это за программа

Источник: wiki2.org

Изучаем язык ассемблера на примере TSR программы под MS-DOS. Часть 1

Эта серия статей посвящена изучению и практике программирования на языке ассемблера.

Материал рассчитан на новичков в ассемблере, студентов, которым пришлось столкнуться с «динозавром» в виде MS-DOS, и может быть интересен тем, кто хочет немного узнать как функционировали операционные системы на заре своего существования.

Писать мы будем резидентную программу (TSR), которая при завершении возвращает управление оболочке операционной системы, но остается в памяти и продолжает своё существование. В современном мире близкий аналог этого понятия — демон/служба.

Программа будет выполнять следующие функции:

  • вывод текста вниз экрана по таймеру,
  • переключение режима отображения шрифта: italic/normal,
  • русификация,
  • запрет на ввод прописных русских букв,
  • резидентные часы,
  • вывод бинарного представления символа.

Предисловие

Материал не претендует на полноту, здесь будут рассматриваться базовые концепции и приемы программирования на языке ассемблера, необходимые для написания программ.

Не буду лишний раз подчеркивать важность ассемблера. Скажу лишь только, что любой уважающий себя профессионал должен понимать как работает его система на всех уровнях, необязательно знать, но понимать нужно.

Немного оговорок. Далее под ассемблером будет пониматься язык ассемблера, а не программа компилятор. MS-DOS часто будет заменяться на dos/дос.

Об умениях, ожидается, что ты имеешь какие-то представления о командной строке, работал с языками высокого уровня (так ты будешь уже знать основные конструкции, используемые в программировании, и увидишь как они реализуются на уровне ниже). В целом, этого хватит.

Про MS-DOS. Всех, наверное, пугает это слово в современном мире. Операционная система, которая уже как 20 лет мертва, но не все так однобоко как кажется на первый взгляд. Минусы понятны: изучение технологии, которая уже сгнила и разложилась, не используемая модель памяти. Но что насчет положительных моментов:

  • Ассемблер он и в Африке ассемблер, основные концепции программирования на нем будут везде одинаковы, да где-то будут расширенные регисты, где-то другой интерфейс по работе с операционной системой.
  • MS-DOS очень простая операционная система, которая в начале своего существования умещалась в 50 тысяч строк кода, причем ассемблерных (Майкрософт выложила исходники 2-х версий на github). График ее изучения имеет дно, в отличие от современных операционных систем. Аналогией может служить C и C++, последний, наверное, не знает в полной мере со всеми тонкостями ни один человек в мире.
  • Операционка работает в реальном режиме процессора, то есть в 16-битном. Это означает, что нет виртуальной памяти, адреса сразу преобразуются в физические с использованием сегментной адресаци памяти. Нет защиты процессов друг от друга, можно обратиться по любому адресу, посмотреть, что там лежит, можно делать с осью все, что тебе вздумается, но могут быть последствия ;). Плюс этот режим до сих пор не вымер, при запуске системы процессор начинает работу именно в этом режиме. Так что это не просто знакомство с историей.
  • Из предыдущего пункта понятно, что систему легко сломать, например, переписать адрес аппаратного прерывания по работе с клавиатурой, но в режиме эмуляции dos очень быстро запускается, что очень удобно в таких случаях
  • Ось очень близка к железу, есть только процессор, биос и несколько небольших модулей самой операционной системы. В отличие от современных операционок нет всяких питонов, огромного количества подсистем, которые устанешь перечислять.
  • в MS-DOS мало встроенной функциональности, она работает в режиме терминала (печатной машинки), и уже первые шаги в написании ассемблерных программ позволяют видеть пользу от них.
  • Ассемблер актуален в MS-DOS, и это радует, когда работаешь в ней, потому что иных средств разработки программ не так много там. Но в настоящее время ассемблер используется только в виде вставок в языке Си или в микроконтроллерах.
  • Простой формат бинарного файла, точнее его попросту нет. Текст программы компилируется напрямую в машинный код, и получается исполняемый файл .COM, готовый к запуску. Очень удобно начинать обучение с этого, не забивая себе голову всякими разными дерективами, секции, которые необходимы в современных форматах.

Немного про компилятор. Использоваться будет NASM, хотя логичнее было бы использовать досовские компиляторы TASM, MASM, но они не поддерживают мою рабочую операционную систему Линукс, а разрабатываться хочется все-таки в удобстве, поэтому взят nasm. Он популярный, современный, кроссплатформенный (запускается везде, компилируется подо все, включая дос), более умный — позволяет опускать какие-то вещи в синтаксисе, имеет фичи в виде локальных меток, контекстов, всяких других директив.

Настройка

Для начала нам потребуется эмулятор операционной системы DOS под названием DOSBox. Скачать можно здесь, версия 0.74-3. После установки и запуска вы увидите, что-то похожее на это:

Стартовый экран DOSBox

Теперь смонтируем папку (сделаем доступной в досе), в которой будут лежать все наши файлы, утилиты. Для этого в хостовой операционной системе создадим папку в домашней директории пользователя или на рабочем столе. Назовем ее, например, dos. После этого в эмуляторе прописываем следующую команду:

Читайте также:
Программа secure eraser что это

Windows: Z:> mount c: C:UsersUsernameDesktopdos

Linux: Z:> mount c: /home/username/dos

Получаем сообщение Drive C is mounted. Теперь все содержимое папочки dos будет отображаться в диске С: в эмуляторе. Перейти в диск C с диска Z можно командой Z:>c: . Это действие придется делать каждый раз при запуске эмулятора, поэтому мы можем положить эту команду в файл конфигурации в секцию autoexec. На линуксе файл находится в /home/username/.dosbox . На виндовс C:UsersUsernameAppDataLocalDOSbox . Открываем файл dosbox-0.74-3.conf и в конец прописываем команду монтирования и перехода в диск C вот таким образом:

[autoexec] # Lines in this section will be run at startup. # You can put your MOUNT lines here. mount c: /home/username/dos c:

Hello world

Напишем первую программу на ассемблере, которая будет выводить на экран избитую фразу hello world:

org 100h mov ah, 09h mov dx, message int 21h int 20h message: db ‘Hello, world!$’

Вот такая маленькая простая программа исполняет наши нужды. Скомпилировать ее можно с помощью насма следующим образом:

nasm hello_world.asm -o hello_world.com

Бинарный .com файл нужно положить в нашу папочку dos, перезапустить дос или запустить в работующем эмуляторе команду rescan, чтобы дос подхватил изменения. Запустить команду можно, начав вводить первые символы имени файла и нажав Tab. Вводить название файла целиком самостоятельно не стоит, потому что долго и потому что с файлами, у которых в имени больше 8 символов, начинаются проблемы. Регистр букв не важен. После запуска, на экране можно будет увидеть фразу Hello, world!.

Теперь о том, что делает каждая строчка, 1-я строка org 100h это указание компилятору на смещение начала инстукций, будет понятно, что это означает, когда мы рассмотрим устройство .com файла и механизм работы процессора в реальном режиме.

8-я строка содержит метку message: , метки это своего рода переменные, в них помещается адрес текущей инструкции, после компиляции, места, где были ссылки на метки будут заменяться реальными адресами. Двоеточие в метках опционально.

Далее идет псевдо-инструкция db (define byte), она не является инструкцией процессора, служит для того, чтобы в текущее место исполняемого файла записать блок данных побайтово. db принимает сколько угодно операндов (аргументов), разделенных запятыми. В нашем случае это один операнд, являющийся строкой из 14 символов (байт), можно было бы записать строку и посимвольно. В конце строки ставится знак $, который дает понять внутренней функции доса, что наступил конец строки. В следующей части поговорим, о том почему у нас данные находятся в конце файла.

3-5 строки подготовка для вызова прерывания 21h и непосредственно сам вызов, прерывание мы обсудим в 3-ей части, в нашем случае это попросту вызов функции операционной системы. В строке 3 мы помещаем число 09h (h значит шестнадцатиричное) в регистр ah. 09h — это номер функции.

В строке 4 записываем в dx адрес начала строки, которую хотим вывести на экран. Теперь понятно зачем нужен $, начало строки дос знает, конец нет.

В строке 5 передаем управление операционной системе с помощью прерывания, по номеру функции дос понимает, что нужно сделать (вывести строку на экран).

В строке 6 используем прерывание 20h для завершения программы, этот способ не совсем корректный, но он простой и хорошо подходит для .com программ.

Не думаю, что стало сильно понятно. Поэтому в следующих частях мы рассмотрим теоретические аспекты: сегментную адресацию памяти, формат файла .com, дебаггер, интерфейс вызовов функций дос, прерывания и снова вернемся к примеру с hello world.

Источник: habr.com

Резидентские программы. Что это такое, для чего они нужны и как отключить резидентные программы в памяти.

E Вкратце Я хочу начать серию статей по повышению безопасности наших компьютеров. В этих статьях мы увидим, как установить различные антишпионские программы (антишпионские программы), такие как Поиск и уничтожение Spybot o el Ad-Aware и важно, чтобы вы знали, что это резидентная программа, чтобы в дальнейшем избежать головной боли, когда мы начнем говорить о них в этих статьях.

Что такое резидентская программа?

Резидентная программа — это программа, которая остается в памяти компьютера, поэтому мы говорим о резидентных программах в памяти. Любое приложение, которое вы используете на своем компьютере (игра, p2p, редактор изображений, слово и т. Д.), Занимает определенный объем памяти, но когда вы закрываете программу, память освобождается и может использоваться для других целей. Резидентные программы остаются в памяти все время, даже если вы не используете их в это время, и поэтому постоянно занимают часть памяти вашего компьютера.

P Чтобы было немного понятнее, предположим, что, например, когда вы прекращаете играть в одну из своих игр, она полностью освобождает память, но если вы используете антивирус для анализа файла, после его анализа антивирус остается в памяти, защищая ваш компьютер.

Читайте также:
PowerdirecTor for acer что это за программа и нужна ли она

Для чего нужны резидентные программы?

Каждый раз, когда вы включаете компьютер, резидентные программы, такие как антивирус, загружаются вместе с операционной системой, так что эти программы доступны с первого момента. В случае с антивирусом это позволяет защитить систему с момента запуска компьютера без необходимости открывать антивирус при каждом включении компьютера.

Adobe Reader

C Как видите, хорошо, что такие программы, как антивирус, запускаются автоматически при включении компьютера и остаются в памяти для непрерывного использования. Другие программы, которые также находятся в памяти, предназначены для ускорения загрузки приложения, например, программа Acrobat Reader, который используется для открытия файлов PDF, частично находится в памяти, ожидая, когда вы захотите открыть файл PDF, таким образом, когда вы открываете один из этих файлов, программа уже частично загружается, и загрузка выполняется быстрее (если вы хотите заменить Acrobat Reader подумайте о Фоксит PDF).

P С другой стороны, может случиться так, что на вашем компьютере установлено много программ, что-то вполне нормальное, и что многие из этих программ хотят частично загружаться при запуске, чтобы они были доступны более быстрым способом, это означает, что запуск компьютера замедляется. (одна из проблем медленного компьютера в том) и что все эти резидентские программы в памяти потребляют большую часть памяти, доступной в системе. Поэтому то, что на первый взгляд может показаться преимуществом, в конечном итоге становится неудобством, поскольку компьютер замедляется, потребление ЦП без надобности и последнее тоже может привести к чрезмерному нагреву процессора (особенно летом).

Winamp Player

P Правда, если вы посмотрите в правый нижний угол рабочего стола (в Windows XP), вы увидите множество значков, каждый из которых представляет программу, которая запускается при запуске и остается резидентной в памяти. Мы уже говорили, что некоторые из них необходимы, например антивирус, но другие потребляют ресурсы только без надобности. Например, предположим, что вы устанавливаете Winamp Потому что по выходным вы любите слушать музыку на компьютере, но в течение недели вы работаете со своим компьютером и не используете его, при установке Winamp он всегда запускается вместе с компьютером, так что остается в памяти до тех пор. так как ваш компьютер ждет, когда вы воспользуетесь плеером, но вы используете его только по выходным, поэтому Зачем хранить эту программу в памяти, если вы не собираетесь ее использовать?. С другой стороны, даже если вы используете программу каждый день, разница между запуском ее с нуля и запуском из памяти минимальна, но все время, когда вы не используете плеер, он будет занимать ресурсы. Не лучше ли запретить запуск программы при запуске ПК и предотвратить ее сохранение в памяти?.

Как предотвратить загрузку программы в память при запуске компьютера

P Чтобы программа не загружалась в память и не запускалась с операционной системой, у нас есть несколько методов, но мы увидим только один, который для меня самый простой.

1-й) Перейдите в меню «Пуск» и нажмите «Выполнить»:

Начать бег

2-й) Откроется окно с названием «Выполнить», в котором необходимо ввести «Msconfig» (без кавычек). Затем нажмите «Принять».

Окно запуска

3-й) Откроется окно «Утилита настройки системы», нажмите на последнюю вкладку выше, где написано «Пуск».

Вкладка `` Домашняя страница

4-й) Теперь вы можете увидеть все программы, которые загружаются при включении компьютера.

Резидентные программы в памяти

5-й) Чтобы ни один из них не загружался, снимите соответствующий флажок. Например, чтобы предотвратить загрузку Winamp, снимите флажок рядом с «winampa», который соответствует «агенту Winamp», программе Winamp, которая загружается при запуске.

Агент Winamp

6-й) После того, как мы сняли все флажки, соответствующие программам, которые мы НЕ хотим загружать в начале, мы должны нажать «Применить», а затем «Закрыть». Важно, чтобы вы не начинали снимать флажки как сумасшедшие и снимали только те, которые, как вы знаете, соответствуют программам, которые вы хотите удалить с самого начала. После нажатия на «Close» появится следующее окно, в котором вы должны выбрать между перезапуском системы сейчас или позже.

перезапустить сейчас или позже

B Ну вот и все, при перезагрузке компьютера появится окно, информирующее о том, что использовалась утилита настройки системы, установите флажок, чтобы она больше не показывалась вам, и закройте окно. Выбранные вами программы больше не будут загружаться, это не означает, что вы их удалили, вы просто запретили им запускаться вместе с операционной системой и потреблять ресурсы. Помните, что есть резидентные программы, такие как антивирус и другие программы операционной системы, которые не следует отключать. По любым вопросам используйте комментарии. Поздравления с виноградниками.

Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Полный путь к статье: Новости гаджета » Общие » Программные обеспечения для георадаров » Резидентские программы. Что это такое, для чего они нужны и как отключить резидентные программы в памяти.

Источник: www.actualidadgadget.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru