Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SP_MET_2.DOC
Скачиваний:
13
Добавлен:
02.05.2019
Размер:
689.66 Кб
Скачать

1.Основы программирования для dos

1.1. Структура и выполнение программ в dos

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

DOS является однозадачной однопользовательской ОС, то есть рассчитана на обслуживание единственного пользователя и выполнение единственной программы в каждый момент времени.

DOS предоставляет программисту набор сервисных подпрограмм, называемых функциями. Доступ к функциям осуществляется при помощи программных прерываний, т. е. посредством команды INT микропроцессора. Механизм обращения к функциям рассматривается ниже.

Как уже говорилось в первой части курса, создание выполнимой программы состоит из нескольких этапов: подготовки исходного текста в определенном формате, трансляции исходного текста и компоновке полученного объектного модуля (или нескольких модулей) в один исполнимый файл. В DOS используется два формата исполнимых файлов — СОМ и ЕХЕ. Файлы типа СОМ содержат только скомпилированный код без какой-либо дополнительной информации о программе. Весь программный код, данные и стек такой программы располагаются в одном сегменте и не могут превышать 64 Кб. Файлы типа ЕХЕ содержат заголовок, в котором описывается размер файла, требуемый объем памяти, список команд в программе, использующих абсолютные адреса, которые не зависят от расположения программы в памяти, и т. д. ЕХЕ-файл может иметь любой размер (точнее, размер ограничивается только параметрами файловой системы).

Кроме обычных исполнимых программ DOS может загружать драйверы устройств — специальные программы, используемые для упрощения доступа к внешним устройствам. К таким драйверам, например, относятся драйверы системных устройств CON, PRN, NUL и других (помещаются в память при загрузке системы), драйвер виртуального диска RAMDRIVE.SYS, драйвер расширения возможностей вывода в текстовом режиме ANSI.SYS и др. (могут загружаться с помощью конфигурационного файла CONFIG.SYS). Написание драйверов значительно сложнее, чем написание обычных программ (см. раздел 2.5).

DOS имеет также внутренние команды, которые можно выполнять без наличия одноименного файла на диске, так как они входят в состав командного процессора ОС. К ним относятся, например, команды COPY, DIR, DEL, TYPE и др.

После окончания загрузки ядра ОС в память управление берет на себя командный процессор (интерпретатор) COMMAND.COM. Он следит за вводимыми пользователем командами и выполняет их, то есть запускает на выполнение программы. Запуск обычно заключается в размещении программы в памяти (с необходимой настройкой для ЕХЕ-программ) и передаче управления на входную точку программы. Таким образом командный процессор инициирует дочерний по отношению к себе процесс. Запуск осуществляется специальной функцией Exec, входящей в состав командного процессора.

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

В результате выполнения функции Exit занимаемая программой память освобождается, после чего управление возвращается родительскому процессу. В DOS, однако, имеется и другой вариант завершения работы программы — TSR (Terminate and Stay Resident), при котором управление передается родительской среде, но занятая программой память не освобождается. В результате программа остается в памяти резидентно в пассивном состоянии, но может быть определенным образом активизирована (то есть снова получить управление).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]