Смекни!
smekni.com

Организационно-методические указания по проведению занятия (стр. 5 из 7)

Если надо сбросить буфера, не закрывая файл, это можно сделать с помощью функции 68h прерывания INT 21h. Дополнительно обновляется дескриптор файла в каталоге, а именно поля времени, даты и размера файла. Функция расширенного открытия файлов 6Ch, входящая в состав MS-DOS, позволяет при открытии файла отменить буферизацию.

1.6.2.5. Пакетные файлы в MS DOS

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

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

При написании пакетных файлов можно использовать любые команды MS DOS (см. табл. 6.3.1 и 6.3.2) и обращения к программам пользователя. Кроме того, в DOS имеется 9 специальных команд, которые можно использовать только внутри пакетных файлов. В табл. 6.3.3 приведены названия и описания этих команд.

Таблица 6.3.3

Команды пакетных файлов

Команда

Описание

1.

Call имя пакетного файла [параметры]

Вызов другого пакетного файла из данного

2.

Choice [/C: список символов] [/T: символ, число секунд] сообщение

Обеспечение выбора пользователя.

/C: список символов – указывает допустимые символы, которые пользователь может ввести в ответ на сообщение.

/T: символ, число_секунд – если параметр указан, то в случае, когда пользователь по истечении заданного параметром число_секунд времени не нажал ни на одну клавишу, то принимается ответ символ.

Сообщение – указывает сообщение, выводимое на экран.

3.

Echo[ON/OFF]

Выдача сообщений на экран, или включение/выключение дублирования команд пакетного файла на экран.

4.

FOR %%x in (список) do команда

Выполнение команды DOS или программы для нескольких файлов из указанного списка.

x – любой символ (кроме цифр 0…9).

Список – одно или несколько имен файлов, разделенных пробелами. В именах файлов можно использовать символы * и ?.

Команда – любая команда DOS или программа пользователя.

5.

Go to метка

Переход внутри пакетного файла на строку, помеченную как: метка.

6.

IF условие команда

Выполнение команды по условию.

Команда – любая допустимая команда.

Условие – одно из следующих выражений:

ERRORLEVEL число – условие истинно, если код завершения предыдущей выполненной программы больше или равен значению параметра число;

строка 1 = = строка 2 – условие истинно, если значения 1 строка 1 и строка 2 совпадают;

EXIST имя файла – условие истинно, если указанный файл существует;

NOT условие – истинно, если указанное условие ложно.

7.

Pause

Приостановка выполнения пакетного файла с выдачей сообщения strike a key then ready…

8.

Rem любые символы

Комментарии в пакетном файле.

9.

Shift

Сдвиг списка параметров пакетного файла.

1.6.3. Организация памяти MS DOS

1.6.3.1. Адресная арифметика и ограничения на память

Адресная линия - это физический путь между МП и той частью шины, которая переносит адрес.

Количество байт Nб, к которому процессор может адресоваться, вычисляется по формуле

Nб = 2K,

где K – количество адресных линий.

Например, МП 8086 содержит 20 адресных линий, поэтому для него

Nб = 220 = 1048576 = 1 Мб,

В табл. 1.6.3.1. приведены размеры адресуемой памяти для различных МП.

Таблица 1.6.3.1.

Максимальный объем адресуемой памяти

Тип МП

Кол-во адресных линий

Адресуемый объем

8086

20

1 Мб

80286, 80386SX

24

16 Мб

80386DX, 80486 и выше

32

4 Гб

Несмотря на то, что МП 80286 и выше имеют объем адресуемой памяти более 1 Мб, фактически DOS не может ее использовать без дополнительных усилий. ПК 286, 386 и т.д. полностью используют свои адресные шины только тогда, когда они работают в так называемом защитном режиме. Однако при работе DOS эти процессоры используют реальный режим, который по сути дела эмулирует МП 8086. В реальном режиме активны только первые 20 адресных линий, т.е. МП 286, 386 и т.д., работающие в реальном режиме, ограничены адресным пространством 1 Мбайт подобно МП 8086.

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

1.6.3.2. Структура основной памяти MS DOS

Память, которую могут непосредственно использовать DOS – программы, состоит из двух частей:

· обычная память (conventional memory), занимающая первые 640 Кбайт основной памяти;

· верхняя память (upper memory), занимающая адреса основной памяти от 640 Кбайт до 1 Мбайта.

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

Верхняя память отводится для служебных целей. В ней размещаются:

- массивы для хранения BIOS – программ, обеспечивающих тестирование компьютера, начальную загрузку ПК, выполнение основных низкоуровневых услуг ввода-вывода и т.п.;

- видеопамять для хранения информации, выводимой на экран;

- массивы для хранения различных расширений BIOS, которые поставляются вместе с некоторыми контроллерами (видеоконтроллером, контроллером дисков и т.д.).

Для DOS- программ пользователя особо важен объем свободной обычной памяти, не занятой программами DOS, драйверами и резидентными программами. Из 640 Кбайт обычной памяти до 100 Кбайт занято именно такими служебными программами, так что программам пользователя в MS DOS остается для работы только около 540 Кбайт обычной памяти.

Барьер в 640 Кбайт для DOS-программ был преодолен внедрением двух новых видов памяти – дополнительной (EMS – памяти) и расширенной (XMS- памяти).

Распределение оперативной памяти в MS-DOS

Как известно, MS-DOS – это однопрограммная ОС. В ней, конечно, можно организовать запуск резидентных или TSR-задач, но в целом она предназначена для выполнения только одного вычислительного процесса. Поэтому распределение памяти в ней построено по самой простой схеме, которую мы уже рассматривали в разделе «Простое непрерывное распределение и распределение с перекрытием (оверлейные структуры)» Здесь мы лишь уточним некоторые характерные детали.

В IBM PC использовался 16-разрядный микропроцессор i8088, который за счет введения сегментного способа адресации позволял адресоваться к памяти объемом до 1 Мбайт. В последующих ПК (IBM PC AT, AT386 и др.) было принято решение поддерживать совместимость с первыми, поэтому при работе с DOS прежде всего рассматривают первый мегабайт. Вся эта память разделялась на несколько областей, что проиллюстрировано на рис. 2.10. На этом рисунке изображено, что памяти может быть и больше, чем 1 Мбайт, но более подробное рассмотрение этого вопроса мы здесь опустим.

Если не вдаваться в детали, можно сказать, что в состав MS-DOS входят следующие основные компоненты:

- Базовая подсистема ввода/вывода – BIOS (base input-output system), включающая в себя помимо программы тестирования ПК (POST - power on self test – программа самотестирования при включении компьютера) обработчики прерываний (драйверы), расположенные в постоянном запоминающем устройстве. В конечном итоге, почти все остальные модули MS-DOS обращаются к BIOS. Если и не напрямую, то через модули более высокого уровня иерархии.

- Модуль расширения BIOS – файл IO.SYS (в других DOS-системах он может называться иначе, например, IBMIO.COM).

- Основной, базовый модуль обработки прерываний DOS – файл MSDOS.SYS. Именно этот модуль в основном реализует работу с файловой системой. (в PC-DOS аналогичный по значению файл называется IBMDOS.COM).

- Командный процессор (интерпретатор команд) – файл COMMAND.COM.

- Утилиты и драйверы, расширяющие возможности системы.

- Программа загрузки MS-DOS – загрузочная запись (boot record), расположенная на дискете.

Вся память в соответствии с архитектурой IBM PC условно может быть разбита на три части.

В самых младших адресах памяти (первые 1024 ячейки) размещается таблица векторов прерываний. Это связано с аппаратной реализацией процессора i8088, на котором была реализована ПК. В последующих процессорах (начиная с i80286) адрес таблицы прерываний определяется через содержимое соответствующего регистра, но для обеспечения полной совместимости с первым процессором при включении или аппаратном сбросе в этот регистр заносятся нули. При желании, однако, в случае использования современных микропроцессоров i80x86 можно разместить векторы прерываний и в другой области.