соответствующей BIOS производители компьютеров могли использовать
приемлемую и развитую операционную систему с тысячами доступных
программ. Благодаря своей адаптируемости CP/M стала промышленным
стандартом ОС для ПК на микропроцессорах 8080 или Z80.
Микропроцессоры 8080 и Z80 могли адресовать только 64К
памяти, поэтому CP/M строилась как однопользовательская
однопрограммная ОС.Была построена и многопользовательская версия,
названная MP/M, но она не стала промышленным фаворитом, каким
была CP/M, в основном из-за медленнной работы (8080 не очень
быстрый процессор), и потому, что ПК не особенно подходят для
многопользовательской работы.
ДОС, управляющая работой PC, является адаптацией ОС,
созданной для использования на 8086, и заметно похожей на CP/M.
Microsoft купила ее у создателя - фирмы Seattle Computer
Products, а IBM купила лицензию у Microsoft. ДОС до сих пор во
многом похожа на CP/M. ДОС состоит из трех модулей, схожих по
функциям с BDOS, CCP и BIOS в CP/M; и пользовательский интерфейс
почти идентичен используемому в CP/M. У ДОС есть дополнительные
возможности, такие, как каналы, фильтры, переназначение
ввода-вывода, пометка файлов временем и датой, и иерархическая
структура файлового каталога. ДОС по-прежнему
однопользовательская однозадачная ОС, в чем совпадает с CP/M.
Первые компьютеры IBM PC были очень похожи на своих
предшественников с микропроцессорами 8080 и Z80; у них было 64К
памяти, флоппи-диски и процессор немного побыстрее, чем Z80.
Однозадачная ДОС была подходящей и адекватной этим компьютерам,
но PC имели три архитектурные особенности, предназначенные для
расширения. Микропроцессор 8088 адресует до 1М памяти; он имеет
векторную систему прерываний; клавиатура и дисплей IBM PC
являются составной частью компьютера, в отличие от
видеотерминалов, присоединенных через последовательный порт. Эти
характеристики легли в основу ограниченного вида
мультизадачности, который развивался на PC и сейчас известен как
программы, остающиеся в памяти (TSR).
ДОС включает две функции, позволяющие программе объявить
себя резидентной. Эти функции похожи, но имеют небольшие
различия. Функция 0х31 прерывания ДОС 0х21 заканчивает выполнение
программы, но оставляет ее резидентной. ДОС не будет покушаться
на память, принадлежащую программе. Прерывание ДОС 0х27 делает то
же самое, но ограничивает размер программы величиной 64К.
Эти две функции предназначались в ДОС не для написания
резидентных утилит, а для того, чтобы создатели системы могли
написать программы обработки прерываний (ISR), поддерживающие
дополнительные устройства ввода-вывода, такие, как мышь,
графический планшет, или джойстик. Эти устройства не являются
стандартной частью PC и, соответственно, не имеют стандартного
программного интерфейса с ДОС. ISR могут поддерживають и другой
вид программ, не обязательно связанных с дополнительными
устройствами, но расширяющих пользовательский интерфейс с
компьютером. Это TSR-программы; два наиболее популярных вида
таких программ - это расширители клавиатуры и
программы-секретари. Расширители клавиатуры, такие, как Prokey и
Superkey, позволяют пользователю присвоить значения символов
функциональным клавишам, -key комбинациям, или любым другим
клавишам. Программы-секретари, такие, как Sidekick и Homebase,
предлагают записную книжку, калькулятор, календарь, автовызывное
телефонное устройство и другие возможности рабочего стола,
вызываемые нажатием клавиши.
Среди других TSR-программ : программы-корректоры, системы
обработки структуризованных текстов, печать со спулингом,
расширения командного процессора ДОС, отладчики, часы с
будильником. Эти программы и многочисленные представители других
резидентных программ имеются в продаже, в источниках бесплатного
программного обеспечения, или в исходных текстах, публикуемых в
журналах.
Эта глава представляет и объясняет класс программ для PC,
известных под разными именами, среди которых всплывающие
(pop-up), TSR, резидентные утилиты, и программы-секретари. Такие
программы уникальны, так как после исполнения они остаются
резидентными в памяти и часто ее не покидают до выключения
компьютера. Будучи резидентными, они выполняются (или
"всплывают") при вызове.
Типичная TSR-программа вызывается внешним событием, обычно
называемым "горячим ключом". Горячий ключ - это ключевая строка,
формируемая при нажатии пользователем комбинации клавиш,
зарезервированной для вызова утилиты. Естественно, эта комбинация
не должна обычно использоваться для других целей.
Активизация TSR-программы прерывает выполнение текущей
программы на время работы TSR-программы. После окончания
TSR-программы прерванная программа продолжает работу. Прерванный
процесс может быть нерезидентной программой, другой
TSR-программой, или самой ДОС.
Загрузка нескольких TSR-программ в память превращает ДОС -
однозадачную по сути операционную систему - в ограниченную, в чем
-то калечную мультизадачную ОС.
Прерывания
-----------------------------------------------------------------
Чтобы понять сущность TSR-программ, вы должны понять систему
прерываний, потому что эти программы используют структуру
прерываний ДОС и PC. Это обсуждение ни в коей мере не является
исчерпывающим описанием прерываний, и этим вы поощряетесь к
исследованию предмета с использованием материалов, посвященных
архитектуре 8086/80286 и PC. Здесь объясняется, что такое
прерывания и как они используются, но без детальных спецификаций.
Этого вам хватит, чтобы понять TSR-программы.
Прерывание - это кратковременное приостановка текущей
прочедуры программы, позволяющая выполнить другую процедуру.
После завершения прерывания прерванная программа продолжает
выполняться так, как будто бы ничего не происходило. Эти две
процедуры могут быть несвязанными - и прерывание не окажет
никакого воздействия на прерванную процедуру. Они могут быть
взаимозависимы - прерванная программа может быть модифицирована
процедурой обработки прерывания. Прерывание может быть вызвано
внешним по отношению к выполняемой программе событием или в
результате действий самой программы. Прерывание может быть
вызвано аппаратно или командой из программы.
Векторы прерывания
-----------------------------------------------------------------
В компьютере PC имеется 256 различных прерываний, с номерами
от 0 до 0хff. Некоторые из них определены для использования
процессором. Например, прерывание 0 возникает при делении на 0.
Другие определены для вызова функций BIOS, третьи - для
использования ДОС. Напомним, что 8088/8086/80286 - это
микропроцессор, PC - компьютер, построенный на его базе, а ДОС -
это операционная система. Для каждого из этих трех архитектурных
слоев определен свой набор прерываний. Оставшиеся прерывания
доступны для использования прикладными программами и программами
обслуживания устройств.
Каждое прерывание представлено в памяти четырехбайтным
значением адреса. Эти значения располагаются в памяти со
смещениями от 0 до 0х3ff. При прерывании содержимое регистра
признаков и четырехбайтный адрес выполняемой команды сохраняется
в стеке.После этого прерывания запрещаются, и начинает
выполняться программа с адреса, соответствующего происшедшему
прерыванию. Эта программа должна сохранить используемые ей
регистры, выполнить свою задачу, восстановить значения регистров,
и выполнить команду возврата из прерывания, которая
восстанавливает адрес прерванной программы и регистр признаков,
так что прерванная программа продолжит свое выполнение с того
места, где была прервана.
Аппаратные прерывания
-----------------------------------------------------------------
Аппаратные прерывания вызываются событиями, физически
связанными в аппаратуре с соответствующими векторами прерываний.
Например, клавиатура в PC связана с прерыванием 9. Нажатие
клавиши вызывает прерывание выполняемой программы, как было
описано выше, и переход по адресу, находящемуся в векторе
прерывания, соответствующему прерыванию 9. В памяти этот вектор
находится по адресу 0х24 (9*4 байт ).
Программные прерывания
-----------------------------------------------------------------
Программные прерывания происходят при выполнении в текущей
программе команды INT с номером прерывания в качестве операнда. В
остальном нет никакой разницы между программным и аппаратным
прерыванием.
ДОС - однозадачная операционная система
-----------------------------------------------------------------
Работу TSR-программ можно понять, изучая условия, в которых
выполняются нерезидентные программы. ДОС была сделана для
поддержки работы только одной задачи. ОС организует загрузку и
выполнение задач и выполняет запросы на ввод-вывод. Она управляет
дисковыми каталогами и файлами, работает с системными часами,
выводит данные на печать, консоль, и возвращает программе
символы, введенные с клавиатуры. ДОС - это в сущности сервер,
обслуживающий иерархическую файловую систему и
записе-ориентированные устройства, и обеспечивающий одному
пользователю выполнение одной задачи. И с этой службой ДОС
справляется.
После первоначальной загрузки ДОС память размером в 640К,
имеющаяся в PC (или в размерах памяти вашего компьютера)
распределена, как показано на рис.11.1. Память с адресами от 0 до
0х400 зарезервирована для векторов прерываний.За ними следует
программа ДОС. Затем идут драйверы устройств,загруженные вместе с
ДОС.Например, при использовании виртуального диска или драйвера
терминала ANSI, программы этих драйверов располагаются после ДОС.
После драйверов идет резидентная часть командного процессора. Эта
программа обрабатывает командную строку и выполняет программы, и
она разделена на резидентную и нерезидентную части. Нерезидентная
область (Transient Program Area - TPA) находится после
резидентной части командного процессора. Запущенная пользователем
из командной строки программа загружается в TPA. В конце TPA
находится область нерезидентной части командного процессора.
Пользовательская программа может использовать эту область. В этом
случае резидентная часть командного процессора подгружает
нерезидентную после окончания программы.
ЪДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД¬
¦ ¦
¦ КОМАНДНЫЙ ПРОЦЕССОР ¦
¦ (нерезидентная часть) ¦
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
¦ ¦
¦ НЕРЕЗИДЕНТНАЯ ОБЛАСТЬ ¦
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
¦ ¦
¦ КОМАНДНЫЙ ПРОЦЕССОР ¦
¦ (резидентная часть) ¦
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
¦ ¦
¦ ДРАЙВЕРЫ УСТРОЙСТВ ¦
ГДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДґ
¦ ¦