Главная      Учебники - Разные     Лекции (разные) - часть 17

 

Поиск            

 

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

 

             

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

На данную лекцию выносится основной теоретический материал об файловой системе MS DOS. Лекция проводится в стандартной наглядно-объяснитель­ной форме.

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

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

В лекции № 3 рассматриваются три вопроса.

При рассмотрении первого вопроса акцентировать внимание на особенностях организации дискового пространства, в частности появление термина "логический диск". Особо выделить назначение и структуру таблицы размещения файлов и каталогов, ее организацию как связного списка, связав практическую реализацию с изученной ранее теорией. Вопрос излагать применительно к файловой системе FAT16, обратив особое внимание на описание файлов в виде дескрипторов, наличие множества атрибутов файлов и форматов, подчеркнуть целесообразность использования утилиты FDISK в противовес другим диск-менеджерам.

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

При раскрытии третьего вопроса соблюсти следующую последовательность изложения: суть DOS-прерываний; векторы прерываний; запрет/разрешение прерываний пользователем.

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

В результате лекции курсанты должны

иметь представление:

· о логической структуре диска MS DOS;

· о файлах и каталогах MS DOS;

· о программе FDISK и дисковых менеджерах;

· об адресной арифметике и ограничениях на память;

· о структуре основной памяти MS DOS;

· о дополнительной и расширенной видах памяти MS DOS;

· об эффективном использовании ОЗУ программами MS DOS;

· о прерываниях ПК и MS DOS;

знать и уметь использовать:

· файловую систему MS DOS;

· операции над файлами в MS DOS;

· пакетные файлы MS DOS;

· таблицу векторов прерывания;

Материал данной лекции обеспечивает базу для изучения таких дисциплин, как "Организация баз данных", "Методы искусственного интеллекта, базы знаний и экспертные системы, "Компьютерная графика"


Тема лекции «1.6.2. Однозадачные однопользовательские операционные системы. Файловая система MS DOS »

1.6.2. Файловая система MS DOS. 2

1.6.2.1. Логическая структура диска в DOS. 2

1.6.2.1.1. Логические диски и таблица разделов. 2

1.6.2.1.2. Загрузочная запись ВООТ. 5

1.6.2.1.3. Таблица размещения файлов. 7

1.6.2.2.Файлы и каталоги. 9

1.6.2.3. Программа FDISK и диск-менеджеры.. 11

1.6.2.4. Работа с файловой системой DOS. 12

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

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

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

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

1.6.3.3. Дополнительная и расширенная виды памяти MS DOS. 17

1.6.3.4. Эффективное использование ОЗУ программами MS DOS. 19

1.6.4. Прерывания ПК и MS DOS. 20

1.6.4.1. Таблица векторов прерываний. 20

1.6.4.2. Зaпpeт/paзpeшeниe oтдeльныx aппapaтныx пpepывaний. 21

Заключение к лекции № 3. 21

Контрольные вопросы.. 22

ВВОДНАЯ ЧАСТЬ

После доклада дежурного проверить наличие курсантов в аудитории в соответствии с классным журналом и расходом личного состава.

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

II. ОСНОВНАЯ ЧАСТЬ

1.6.2. Файловая система MS DOS

1.6.2.1. Логическая структура диска в DOS

1.6.2.1.1. Логические диски и таблица разделов

Персональный компьютер может быть укомплектован от одного до четырех накопителей на жестких магнитных дисках (НЖМД). Однако операционная система позволяет осуществить разбиение каждого из физических носителей НЖМД на части - «логические» диски, причем каждый такой логический диск будет рассматриваться как автономный накопитель.

Необходимость разбиения большого дискового пространства на совокупность дисковых пространств меньшего размера обусловлена следующими причинами:

· с освоением производителями НЖМД выпуска накопителей большой емкости (до 4 Гбайт и выше) оказалось, что используемый DOS механизм адресации секторов не позволяет использовать диски большого объема;

· в случае повреждения логического диска пропадает только та информация, которая находилась на этом логическом диске;

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

· возможно разделение дискового пространства между отдельными пользователями и установка защиты логических дисков от несанкционированного доступа;

· на одном физическом диске может быть размещено несколько операционных систем, расположенных на разных логических дисках и т.п.

Файловая система MS DOS обеспечивает работу с логическими дисками, каждому из которых присваивается имя в виде буквы латинского алфавита от «А» до «Z», причем литеры «А» и «В» зарезервированы за накопителями на гибких магнитных дисках (дискетах).

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

Утилита MS-DOS FDISK позволяет создать один первичный раздел DOS и один расширенный раздел (рис.6.8).

Первичный раздел должен быть активным, он используется как диск С: и из него выполняется загрузка операционной системы. Расширенный раздел разбивается утилитой на логические диски D:, E: и т.д.; он не может быть активным.

Если в элементе таблицы разделов байт кода системы имеет значение 5, то в начале раздела, указанном в этом элементе, располагается сектор, содержащий таблицу логических дисков. Фактически эта таблица является расширением таблицы разделов диска, расположенной в самом первом секторе физического диска. Таблица логических дисков имеет формат, аналогичный таблице разделов диска, но имеет только два элемента. Один из них указывает на первый сектор логического диска DOS, он имеет код системы 1 или 4. Второй элемент может иметь код системы, равный 5 или 0. Если этот код равен 5, то элемент указывает на следующую таблицу логических дисков. Если код системы равен 0, то соответствующий элемент не используется.



Рис.6.8. Логическая структура диска в DOS


Если в элементе таблицы разделов байт кода системы имеет значение 5, то в начале раздела, указанном в этом элементе, располагается сектор, содержащий таблицу логических дисков. Фактически эта таблица является расширением таблицы разделов диска, расположенной в самом первом секторе физического диска. Таблица логических дисков имеет формат, аналогичный таблице разделов диска, но имеет только два элемента. Один из них указывает на первый сектор логического диска DOS, он имеет код системы 1 или 4. Второй элемент может иметь код системы, равный 5 или 0. Если этот код равен 5, то элемент указывает на следующую таблицу логических дисков. Если код системы равен 0, то соответствующий элемент не используется.

Из сказанного выше следует, что таблицы логических дисков связаны в список, на начало этого списка указывает элемент таблицы разделов диска с кодом системы, равным 5.

Для таблицы логических дисков имеется отличие в использовании полей границ логических дисков: если код системы равен 1 или 4, эти границы вычисляются относительно начала расширенного раздела; для элемента с кодом системы5 используется абсолютная адресация (относительно физического начала диска).

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

1.6.2.1.2. Загрузочная запись ВООТ

Самый первый сектор логического диска (и самый первый сектор на системной дискете) занимает загрузочная запись (Boot Record). Эта запись считывается из активного раздела диска программой главной загрузочной записи (Master Boot Record) и запускается на выполнение. Задача загрузочной записи - выполнить загрузку операционной системы. Каждый тип операционной системы имеет свою загрузочную запись. Даже для разный версий одной и той же операционной системы программа загрузки может выполнять различные действия.

Кроме программы начальной загрузки операционной системы в загрузочной записи находятся параметры, описывающие характеристики данного логического диска. Все параметры располагаются в самом начале сектора, в его так называемой форматированной области. Формат этой области разный для DOS версий до 4.0 и версий после 4.0. Приведем формат записи BOOT для DOS версий, более ранних, чем 4.0 (см. табл.6.6).

Таблица 6.6.

Формат загрузочной записи для DOS версий до 4.0

Смещение

Размер

Содержимое

(+0)

(+3)

(+11)

(+24)

(+26)

(+28)

3

8

13

2

2

2

Команда JMP xxxx - переход типа NEAR на программу начальной загрузки

Название фирмы-производителя операционной системы и версия, например: «IBM 4.0»

ВРВ - блок параметров BIOS

Количество секторов на дорожке

Количество головок (поверхностей диска)

Количество скрытых секторов, эти сектора могут использоваться для схемы разбиения физического диска на разделы

В самом начале BOOT-сектора располагается команда внутрисегментного перехода JMP. Она нужна для обхода форматированной зоны сектора и передачи управления загрузочной программе, располагающейся со смещением (+30).

Название фирмы-производителя не используется операционной системой.

Со смещением (+11) располагается ВРВ - блок параметров BIOS. Этот блок содержит некоторые характеристики логического диска и используется дисковыми драйверами. Поля ВООТ-сектора со смещениями 24 и 26 содержат соответственно количество секторов на дорожке и количество головок в дисководе. Поле со смещением 28 содержит количество «скрытых» секторов, которые не принадлежат ни одному логическому диску. Эти сектора могут содержать основную или вторичные таблицы разделов диска.

Для MS-DOS версии 4.0 и выше ВООТ-сектор имеет следующий формат (см. табл.6.7).

Первые два поля в ВООТ-секторе для DOS 4.0 и выше аналогичны описанным ранее.

Поле со смещением (+38) всегда содержит символ ‘)’. Этот символ означает, что используется формат расширенной загрузочной записи операционной системы MS-DOS.

Серийный номер диска формируется во время форматирования диска на основе даты и времени форматирования. Это поле может быть использовано для определения факта замены диска в дисководе.

Таблица 6.7.

Формат загрузочной записи для DOS версий 4.0 и выше

Смещение

Размер

Содержимое

(+0)

3

Команда JMP xxxx - переход типа NEAR на программу начальной загрузки

(+3)

8

Название фирмы-производителя операционной системы и версия, например: «IBM 4.0»

(+11)

25

Extended BPB - расширенный блок параметров BIOS

(+36)

1

Физический номер дисковода (0 - флоппи, 80h - жесткий диск)

(+37)

1

Зарезервировано

(+38)

1

Символ ‘)’ - признак расширенной загрузочной записи DOS 4.0

(+39)

4

Серийный номер диска (Volume Serial Number), создается во время форматирования диска

(+43)

11

Метка диска (Volume Label)

(+54)

8

Зарезервировано, обычно содержит запись типа ‘FAT12', которая идентифицирует формат таблицы размещения файлов FAT

Метка диска формируется при форматировании и может быть изменена командой операционной системы LABEL. Одновременно метка диска помещается в корневой каталог.

Поле со смещением 11 содержит расширенный блок параметров BIOS. Он состоит из обычного ВРВ и дополнительного расширения (см. табл.6.8).

Как обычный, так и расширенный блок параметров BIOS содержит байт-описатель среды media. Этот байт может служить для идентификации носителя данных и может содержать следующие величины, характеризующие носитель данных по количеству сторон диска и количеству секторов на дорожке:

FFh - 2 стороны, 8 секторов на дорожке; FEh - 1 стороны, 8 секторов на дорожке;

FDh - 2 стороны, 9 секторов на дорожке; FCh - 1 стороны, 9 секторов на дорожке;

F9h - 2 стороны, 15 секторов на дорожке; F8h - жесткий диск.

DOS предоставляет программе возможность работы с так называемыми логическим номерами секторов. Это номера секторов внутри логического диска. Для адресации сектора при помощи функций BIOS необходимо указывать номер дорожки, номер головки и номер сектора на дорожке. DOS организует «сквозную» нумерацию секторов, при которой каждому сектору логического диска присваивается свой уникальный номер. Порядок нумерации выбран таким, что при последовательном увеличении номера сектора вначале увеличивается номер головки, затем номер дорожки.

Таблица 6.8.

Формат расширенного блока параметров BIOS

Смещение

Размер

Обозначение

Содержимое

(0)

2

sect_siz

Количество байтов в одном секторе диска

(+2)

1

Clustsiz

Количество секторов в одном кластере

(+3)

2

res_sect

Количество зарезервированных секторов

(+5)

1

fat_cnt

Количество таблиц FAT

(+6)

2

room_siz

Максимальное количество дескрипторов файлов, содержащихся в корневом каталоге диска

(+8)

2

tot_sect

Общее количество секторов на носителе данных (в разделе DOS)

(+10)

1

Media

Байт-описатель среды носителя данных

(+11)

2

fat_size

Количество секторов, занимаемых одной копией FAT

--------------------Расширение стандартного ВРВ--------------------

(+13)

2

Sector

Количество секторов на дорожке

(+15)

2

Heads

Количество магнитных головок

(+17)

2

hidden_l

Количество скрытых секторов для раздела, который по размеру меньше 32 Мбайт

(+19)

2

hidden_h

Количество скрытых секторов для раздела, превышающего по размеру 32 Мбайт (только для DOS 4.0)

(+21)

4

tot_secs

Общее количество секторов на логическом диске для раздела, превышающего по размеру 32 Мбайт

1.6.2.1.3. Таблица размещения файлов

Сразу после загрузочного сектора на логическом диске находятся сектора, содержащие таблицу размещения файлов FAT (File Allocation Table). В отечественной литературе иногда можно встретить аббревиатуру ТРФ, однако мы будем пользоваться общепринятым сокращением - FAT.

Для того, чтобы назначение этой таблицы стало более понятным, вспомним ,как организовано хранение информации на различных носителях данных.

Магнитные ленты. Этот вид носителей информации использовался еще в самых первых ЭВМ. В современных компьютерах магнитные ленты используются для разгрузки магнитных дисков. При использовании магнитных лент информация записывается в виде файлов с последовательным доступом.

Доступ к информации, записанной на магнитном диске, может выполняться либо последовательным, либо прямым методом доступа. Использование прямого метода доступа позволяет позиционировать головки сразу на тот файл, который Вам нужен (или на нужную запись файла). Например, Вы можете задать номер сектора на определенной дорожке и номер головки.

В операционных системах DOS, UNIX, OS/2 при создании файла для него не задается начальное распределение памяти в дорожках или секторах. По мере того как файл увеличивается в размерах, операционная система распределяет этому файлу сектора из числа свободных, не используемых другими файлами. При этом файл располагается не обязательно в смежных областях диска, он может быть разбросан по разным дорожкам и секторам. В этом случае операционная система должна вести учет используемых участков диска. Для каждого файла она должна хранить где-то информацию о том, какому файлу какие участки диска распределены.

В операционной система MS-DOS для хранения этой информации используется таблица размещения файлов.

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

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

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

Итак, FAT - массив информации об использовании кластеров диска, который содержит односвязные списки кластеров, распределенных файлам. Номера начальных кластеров файлов хранятся в каталогах.

На рис.6.9 показаны фрагменты корневого каталога диска С: и элементы FAT для файлов autoexec.bat и config.sys. Реально эти файлы не используют столько кластеров. Из рисунка видно, что в каталоге для файлов указаны номера первых кластеров (соответственно 11 и 27). Таблица FAT в одиннадцатой ячейке содержит число 12 - номер следующего кластера, распределенного файлу autoexec.bat . Ячейка с номером 12 содержит число 13, и так далее. Последняя ячейка, соответствующая последнему кластеру, распределенному этому файлу, содержит специальное значение - FF. В этом примере все кластеры файлов расположены подряд, но это может быть и не так.

В DOS существуют два формата FAT - 12-битовый и 16-битовый. Эти форматы используют соответственно 12 и 16 битов для хранения информации об одном кластере диска.

12-битовый формат удобен для дискет с небольшим количеством секторов - вся таблица размещения файлов помещается целиком в одном секторе. Если размер диска такой, что для представления всех секторов двенадцати разрядов недостаточно, можно увеличить размер кластера, например до восьми секторов. Однако большой размер кластера приводит к неэффективному использованию дискового пространства. Это происходит из-за того, что минимальный выделяемый файлу элемент (кластер) имеет слишком большой размер. Даже для файла, имеющего длину 1 байт, выделяется целиком кластер. Значит, если размер кластера составляет 8 секторов, то для хранения 1 байта будет использовано 4 килобайт дисковой памяти.

Сектор загрузочной записи (BOOT-сектор) диска, отформатированного в DOS версии 4.0 и выше, в поле со смещением 36h содержит 8-байтовую строку, идентифицирующую формат FAT. Она имеет вид «FAT12» или «FAT16».

Если разделы на жестком диске создавались утилитой DOS FDISK, формат FAT можно определить, анализируя содержимое поля sys главной загрузочной записи (Master Boot Record). Если это поле содержит значение 1, используется 12-битовый формат, если 4 - 16-битовый.

Опишем подробно формат FAT16.

Первый байт FAT называется «Описатель среды» (Media Descriptor) или байт ID идентификации FAT. Он имеет такое же значение, как и байт-описатель среды, находящийся в ВООТ-секторе логического диска.

Следующие 7 байт для 16-битового формата всегда содержат значение Offh.

Основная часть FAT состоит из 16-битовых ячеек, каждая ячейка соответствует одному кластеру диска. Эти ячейки могут содержать следующие значения (см. табл.6.9).

Таблица 6.9.

Формат основной части FAT16

FAT16

Что означает

0000h

fff0h-fff6h

fff7h

fff8h-ffffh

0002h-ffefh

Свободный кластер

Зарезервированный кластер

Плохой кластер

Последний кластер в списке

Номер следующего кластера в списке

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

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

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

1.6.2.2.Файлы и каталоги

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

Корневой каталог находится сразу за последней копией FAT. Количество секторов, занимаемых одной копией FAT, находится в блоке параметров BIOS и ВООТ-секторе в поле fatsize, количество копий FAT - в поле fatcnt блока ВРВ. Следовательно, перед корневым каталогом находится один ВООТ-сектор и (fatcnt * fatsize) секторов таблицы размещения файлов FAT.

Размер корневого каталога можно определить, исходя из значения поля rootsize. В этом поле при форматировании диска записывается максимальное количество файлов и каталогов, которые могут находиться в корневом каталоге. Для каждого элемента в каталоге отводится 32 байт, поэтому корневой каталог имеет длину (32 * rootsize) байт.

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

RootSecs = (32 * rootsize) / sectsize.

В этой формуле sectsize - размер сектора в байтах, он может быть получен из соответствующего поля ВООТ-сектора.

После корневого каталога на логическом диске находится область файлов и подкаталогов корневого каталога. В табл.6.10 изображены все области логического диска. Такую структуру имеют логические диски, расположенные в разделах жестких дисков, а также дискеты.

Таблица 6.10.

Структура логического диска

Область логического диска

Номер начального сектора на логическом диске

ВООТ-сектор и зарезервированные секторы

0

Первая копия FAT

ressecs - количество резервированных секторов

Вторая копия FAT

ressecs + fatsize

Корневой каталог

ressecs + (fatsize * fatcnt)

Область данных

ressecs + (fatsize * fatcnt) + (32 *rootsize) /sectsize

Область данных разбита на кластеры, причем нумерация кластеров начинается с числа 2. Кластеру с номером 2 соответствуют первые сектора области данных. Теперь можно привести формулу, которая позволит связать номер кластера с номерами секторов, занимаемых им на логическом диске:

SectNu = DataStart + ((ClustNu - 2) * clustsize),

где SectNu - номер первого сектора, распределенного кластеру с номером ClustNu; DataStart = ressecs + (fatsize * fatcnt) + (32 *rootsize) /sectsize); ClustNu - номер кластера, для которого необходимо определить номер первого сектора; clustsize - количество секторов, занимаемых кластером, находится в блоке параметров BIOS.

Любой каталог содержит 32-байтовые элементы - дескрипторы, описывающие файлы и другие каталоги. Приведем формат дескриптора (см. табл.6.11).

Таблица 6.11.

Формат дескриптора файла (каталога)

Смещение

Размер

Содержимое

(+0)

8

Имя файла или каталога, выровненное на левую границу и дополненное пробелами

(+8)

3

Расширение имени файла, выровненное на левую границу и дополненное пробелами

(+11)

1

Атрибуты файла

(+12)

10

Зарезервировано

(+22)

2

Время создания файла или время его последней модификации

(+24)

2

Дата создания файла или дата его последней модификации

(+26)

2

Номер первого кластера, распределенного файлу

(+28)

4

Размер файла в байтах

Байт атрибутов является принадлежностью каждого файла. Биты этого байта имеют следующие значения:

0 - файл предназначен только для чтения, в этот файл нельзя писать и его нельзя стирать;

1 - скрытый файл, этот файл не будет появляться в списке файлов, создаваемом командой операционной системы DIR;

2 - системный файл. Этот бит обычно установлен в файлах, являющихся составной частью операционной системы;

3 - данный дескриптор описывает метку диска. Для этого дескриптора поля имени файла и расширения имени файла должны рассматриваться как одно поле длиной 11 байт. Это поле содержит метку диска;

4 - дескриптор описывает файл, являющийся подкаталогом данного каталога;

5 - флаг архивации. Если этот бит установлен в 1, то это означает, что данный файл не был выгружен утилитой архивации (например, программой BACKUP);

6-7 - зарезервированы.

Обычно файлы имеют следующие комбинации битов в байте атрибутов:

0 - обычные файлы (тексты программ, загрузочные модули, пакетные файлы);

7 - только читаемые, скрытые, системные файлы. Такая комбинация битов байта атрибутов используется для файлов операционной системы IO.SYS, MSDOS.SYS;

8 - метка тома. Дескриптор метки тома может находиться только в корневом каталоге логического диска;

10h - дескриптор, описывающий каталог;

20h - обычный файл, который не был выгружен утилитами BACKUP или XCOPY.

В любом каталоге, кроме корневого, два первых дескриптора имеют специальное назначение.

Первый дескриптор содержит в поле имени строку «..». Этот дескриптор указывает на содержащий его каталог. Т.е. каталог имеет ссылку сам на себя.

Второй специальный дескриптор содержит в поле имени строку «..». Этот дескриптор указывает на каталог более высокого уровня.

Если в поле номера первого занимаемого кластера дескриптора с именем «..» находится нулевое значение, это означает, что данный каталог содержится в корневом каталоге.

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

При удалении файла первый байт его имени заменяется на байт E5h (символ ’x’). Все кластеры, распределенные файлу, отмечаются в FAT как свободные. Если вы только что удалили файл, его еще можно восстановить, так как в дескрипторе сохранились все поля, кроме первого байта имени файла. Но если на диск записать новые файлы, то содержимое кластеров удаленного файла будет изменено и восстановление станет невозможным.

Остановимся подробнее на полях времени и даты создания или последней модификации файла. DOS обновляет содержимое этих полей после любой операции, изменяющей содержимое файла - создания файла, перезаписи содержимого файла, добавления данных в файл или обновления содержимого файла. После обновления файла DOS устанавливает бит архивации пятого байта атрибутов в 1.

Формат поля времени показан на рис.6.10.

Старшие пять битов содержат значение часа модификации файла, шесть битов с номерами 5-10 содержат значение минут модификации файла, и, наконец, в младших 5 битах хранится значение секунд, деленное на 2. Для того, чтобы время обновления файла уместилось в шестнадцати битах, пришлось пойти на снижение точности времени до двух секунд.

Формат даты обновления файла напоминает формат времени и показан на рис.6.11.

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

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

1.6.2.3. Программа FDISK и диск-менеджеры

После низкоуровневого форматирования, формирующего адресные маркеры, маркеры данных и сектора, необходимо создать разделы диска. Операционная система MS-DOS позволяет сделать это с помощью утилиты FDISK. Версия 4.0 MS-DOS и более поздние версии не накладывают ограничений на размер разделов и логических дисков. Однако при использовании утилиты FDISK вы не сможете организовать защиту логических дисков от записи или от несанкционированного доступа.

Программы диск-менеджеров, такие, как ADM и SpeedStor, в некоторой степени решают вопросы защиты от записи и несанкционированного доступа.

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

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

1.6.2.4. Работа с файловой системой DOS

Сервис файловой системы доступен программе через прерывание MS-DOS INT 21h. Многочисленные функции этого прерывания, относящиеся к файловой системе, можно разбить на следующие группы:

· получение справочной информации;

· работа с каталогами;

· работа с файлами.

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

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

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

Функции используют файловые индексы (handle). Смысл файлового индекса очень прост. Для того, чтобы начать работу с файлом, программа должна вызвать определенную функцию DOS, «открывающую» этот файл. Процесс открытия файла заключается в присвоении этому файлу определенного числа (индекса) и выполнении некоторых других инициализирующих действий. Для выполнения каких-либо операций с файлом программа, вызывая соответствующую функцию MS-DOS, должна указать индекс этого файла.

Первые пять файловых индексов зарезервированы операционной системой:

0 - стандартное устройство ввода (клавиатура);

1 - стандартное устройство вывода (экран);

2 - стандартное устройство для вывода сообщений об ошибках (экран);

3 - стандартное устройство последовательного ввода-вывода, обычно это асинхронный адаптер COM1;

4 - стандартное печатающее устройство (обычно первый принтерный порт LPT1).

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

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

Состав функций MS-DOS, предназначенных для работы с файловой системой, достаточно разнообразен и функционально полон. Только в очень редких случаях, связанных в основном с организацией защиты информации от несанкционированного доступа, может потребоваться доступ к диску на более низком уровне. Если программа использует для работы с файлами только документированные функции операционной системы, ее работа не будет зависеть от аппаратных средств компьютера, от используемой для создания разделов диска утилиты.

Получение справочной информации

Если запустить программу, которая находится в каком-либо каталоге на одном из дисков, то эти диск и каталог становятся текущими для MS-DOS. Это можно понимать в том смысле, что программе не требуется каждый раз при работе с файлами указывать требуемый диск или каталог.

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

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

Для того, чтобы узнать текущий каталог, можно воспользоваться функцией 47h.

Создание, удаление и переименование каталогов

После форматирование логический диск содержит корневой каталог. Если диск форматируется как системный, в этом каталоге могут находиться дескрипторы файлов операционной системы IO.SYS, MSDOS.SYS, COMMAND.COM.

Для создания каталога используется функция 39h прерывания INT 21h.

Удалить существующий каталог можно с помощью функции 3Ah.

Поиск в каталогах

Пара функций 4Eh и 4Fh предназначена для сканирования каталогов.

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

1. Вызывается функция 4Eh для поиска в каталоге файла, соответствующего образцу. В образце можно использовать символы ? и *, которые означают соответственно один любой символ и любое количество любых символов. Информация о найденном файле располагается в специальной области, назначенной каждой работающей программе, - области DTA.

2. Вызывается в цикле функция 4Fh для поиска остальных файлов, удовлетворяющих образцу, заданному при вызове функции 4Eh. Условие завершения цикла - отсутствие в каталоге указанных файлов.

Работа с файлами

Для создания файла предназначена функция 3Ch прерывания INT 21h. С помощью этой функции может быть создан файл как в текущем, так и в любом другом каталоге. Если файл с указанным именем уже существует, он обрезается до нулевой длины.

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

Операционная система игнорирует попытки создания с помощью этой функции каталогов или метки диска.

Чтение-запись файлов

Для записи данных в файл предназначена функция 40h прерывания INT 21h.

Для чтения данных из файла (или устройства посимвольной обработки) предназначена функция 3Fh прерывания INT 21h.

Позиционирование

Установить файловый указатель в нужную вам позицию можно с помощью функции 42h прерывания INT 21h MS-DOS.

Изменение атрибутов, времени и даты файлов

Для работы с полем атрибутов файла предназначена функция 43h прерывания INT 21h. Для работы с полями времени и даты последней модификации файла предназначена функция 57h прерывания INT 21h.

Буферизация ввода-вывода

Ввод-вывод для дисков в операционной системе MS-DOS буферизован. Операционная система MS-DOS имеет несколько буферов. Их количество зависит от оператора BUFFERS, находящегося в файле CONFIG.SYS. Этот оператор позволяет определить от 2 до 99 буферов. Если файл CONFIG.SYS не содержит оператора BUFFERS, по умолчанию используются два буфера.

Если программа интенсивно использует обращение к каталогам файловой системы, можно использовать утилиту MS-DOS FASTOPEN. Например, при использовании следующей команды в оперативной памяти будет храниться информация о расположении максимально о 100 файлах и каталогах:

FASTOPEN c:=100

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

Если надо сбросить буфера, не закрывая файл, это можно сделать с помощью функции 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 можно разместить векторы прерываний и в другой области.

Вторая часть памяти отводится для размещения программных модулей самой MS-DOS и для программ пользователя. Рассмотрим их размещение чуть ниже. Здесь, однако, заметим, что эта область памяти называется Conventional Memory (основная, стандартная память).

Наконец, третья часть адресного пространства отведена для постоянных запоминающих устройств и функционирования некоторых устройств ввода/вывода. Эта область памяти получила название UMA (upper memory areas – область верхней памяти).

В младших адресах основной памяти размещается то, что можно назвать ядром этой ОС – системные переменные, основные программные модули, блоки данных для буферирования операций ввода/вывода. Для управления устройствами, драйверы которых не входят в базовую подсистему ввода/вывода, загружаются так называемые загружаемые (или инсталлируемые) драйверы. Перечень инсталлируемых драйверов определяется специальным конфигурационным файлом CONFIG.SYS. После загрузки расширения BIOS – файла IO.SYS – последний (загрузив модуль MSDOS.SYS) считывает файл CONFIG.SYS и уже в соответствии с ним подгружает в память необходимые драйверы. Кстати, в конфигурационном файле CONFIG.SYS могут иметься и операторы, указывающие на количество буферов, отводимых для ускорения операций ввода/вывода, и на количество файлов, которые могут обрабатываться (для работы с файлами необходимо зарезервировать место в памяти для хранения управляющих структур, с помощью которых выполняются операции с записями файла). В случае использования микропроцессоров i80x86 и наличия в памяти драйвера HIMEM.SYS модули IO.SYS и MSDOS.SYS могут быть размещены за пределами первого мегабайта в области, которая получила название HMA (high memory area).

Память с адресами, большими чем 10FFFFh, может быть использована в DOS-программах при выполнении их на микропроцессорах, имеющих такую возможность. Так, например, микропроцессор i80286 имел 24-разрядную шину адреса, а i80386 – уже 32-разрядную шину адреса. Но для этого с помощью специальных драйверов необходимо переключать процессор в другой режим работы, при котором он сможет использовать адреса выше 10FFFFh. Широкое распространение получили две основные спецификации: XMS (extended memory specification) и EMS (expanded memory specification). Поскольку основные утилиты, необходимые для обслуживания ПК, как правило, не используют эти спецификации, мы не будем здесь их рассматривать.

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

1.6.3.3. Дополнительная и расширенная виды памяти MS DOS

В начале 80-х годов некоторые фирмы производители оборудования для компьютеров стали выпускать платы дополнительной памяти (memory extension cards). Доступ к памяти на этих платах осуществляется через специальный драйвер управления дополнительной памятью (EMM – expanded memory manager). Для обеспечения совместимости такого вида программ фирмами Lotus, Intel и Microsoft был разработан стандарт – спецификация дополнительной памяти (LIM EMS – LIM expanded memory specification). В настоящее время используется четвертая редакция этой спецификации – LIM EMS 4.0, где максимальный объем дополнительной памяти составляет 32 Мбайта.

Для обмена с EMS – памятью EMS- драйверы используют окно размером 64 Кбайта, которое расположено в верхней памяти MS DOS. Это окно, так называемый EMS-frame, разделено на 4 блока по 16 Кбайт. EMS-память также представлена в виде страниц размером в 16 Кбайт. Поэтому в EMS – окне могут быть доступны одновременно 4 страницы EMS –памяти. Для чтения или записи любой страницы EMS – памяти надо обратиться к EMS-драйверу, после чего она станет доступна программам DOS и с ней можно будет работать. Это весьма неудобно, т.к. заставляет программы самим заботиться о смене страниц в памяти.

Таблица 1.6.3.2.

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

Адрес-длина

Содержимое

Примечание

0000-003FF 1Кб

Таблица векторов прерываний

00400-005FF

512 байт

Глобальные переменные BIOS

Глобальные переменные DOS

В ранних версиях здесь располагались глобальные переменные интерпретатора Бейсик

00600-0А000

35-60 Кб

Модуль IO.SYS

Модуль MSDOS.SYS:

- обслуживающие функции;

- буферы, рабочие и управляющие области;

- инсталлирующие драйверы

Резидентная часть COMMAND.COM:

- обработка программных

прерываний;

- системная программа загрузки;

- программа загрузки транзитной части COMMAND.COM

Размер этой области зависит от версии MS-DOS и, главное от конфигурационного файла CONFIG.SYS

»580 Кб

Область памяти для выполнения программ пользователя и утилит MS-DOS. В эту область попадают программы типа *.COM и *.EXE

Объем этой области сильно зависит от объема, занимаемого ядром ОС.

Программа может перекрыть транзитную область COMMAND.COM

Область расположения стека исполняющейся программы

Стек «растет» снизу вверх

18 Кб

Транзитная часть командного процессора COMMAND.COM

Собственно командный интерпретатор

А0000-C7FFF

160 Кб

Видеопамять. Область и размер используемого видеобуфера зависит от используемого режима

При работе в текстовом режиме область памяти А0000-В0000 свободна и может быть использована в программе

С8000-Е0000

96 Кб

Зарезервировано для расширения BIOS

F0000-FFFFF

64Кб

Область ROM BIOS

(System BIOS)

Обычно объем этой области равен 32 Кб, но может достигать и 128 Кб, занимая и младшие адреса

100000-10FFFF

High Memory Area

При наличии драйвера HIMEM.SYS здесь можно расположить основные системные файлы MS-DOS, освобождая тем самым область основной памяти в первом мегабайте

Может использоваться при наличии специальных драйверов. Используются спецификации XMS и EMS

Другая возможность увеличения размера доступной программам оперативной памяти появилась в 1982г., когда Intel стала выпускать микропроцессоры 80286. Эти и последующие микропроцессоры, обеспечивая совместимость с микропроцессором 8088, представляют также множество других возможностей. В частности эти микропроцессоры могут непосредственно работать с памятью большего, чем 1 Мбайт, размера (см. табл. 1.6.3.1).

Вместе с тем память с адресами свыше 1 Мбайта в этих микропроцессорах доступна только в так называемом защищенном режиме. MS DOS в этом режиме работать не может. Если же процессор работает в режиме совместимости с Intel-8088, в котором работает MS DOS – этот режим называется обычным или реальным (real mode), то программам доступна память только в пределах первого Мбайта. Исключением являются лишь первые 64 Кбайта расширенной памяти, о чем будет рассказано ниже.

Часть оперативной памяти сверх первого мегабайта, доступного в реальном режиме, называется расширенной памятью (extended memory).

В середине 80-ч годов был разработан стандарт по работе с расширенной памятью (XMS – extended memory specification) и реализующие его драйверы, например, HIMEM.SYS, которые предоставили широкие возможности для использования расширенной памяти DOS- программами.

Для обработки данных, расположенных в XMS – памяти, необходимо сначала переместить их в обычную или верхнюю память MS DOS, там выполнить обработку и затем с помощью запроса к XMS – драйверу поместить их обратно.

Более эффективное решение состоит в другом. Если сама программа выполняется в защищенном режиме процессора, то расширенная память жоступна ей непосредственно. При этом код программы и обрабатываемые данные могут располагаться в любом месте доступной XMS – памяти. Поэтому многими фирмами были созданы специальные системные программы – расширители DOS(DOS –extenders), позволяющие вызывать функции DOS из защищенного режима работы процессора. Во многих программах, требующих эффективной работы с большими объемами данных (компьютеры, базы данных и т.п.) применяются расширители DOS. Примером может служить операционная оболочка Windows/386 2.0, включающая в себя внутренний расширитель DOS.

Особую роль в расширенной памяти играют ее первые 64 Кбайта. Дело в том, что при создании микропроцессора Intel – 80286 фирма Intel допустила ошибку, из-за которой в реальном режиме оказалось возможным получить доступ к первым 64 Кбайтам расширенной памяти.

Ошибка состояла в следующем. Адрес каждого байта в процессоре Intel-286 задается с помощью двух двухбайтовых чисел: адреса сегмента Seg и смещения внутри сегмента Rel. Полный адрес A в процессоре вычисляется по формуле:

A = 16 * Seg + Rel.

Если адрес A становится больше 1 Мбайта (220 ), то в микропроцессоре Intel-8088 происходило отбрасывание «лишнего» 1 Мбайта, выполняемое автоматически вследствие использования в нем только 20 адресных линий. При разработке Intel-80286 об этом забыли. В результате стало возможным обращаться и к первым 64 Кбайтам расширенной памяти.

По-английски первые 64 Кбайта расширенной памяти называют Hight Memory Area – HMA.

Эта особенность была использована в MS DOS, начиная с версии 5.0, где предоставлена возможность перемещать на компьютерах с процессорами 80286 и выше ядро ЩС и драйверы в первые 64 Кбайт расширенной памяти. Тем самым возможно значительно увеличить объем обычной памяти, доступной DOS – программам.

1.6.3.4. Эффективное использование ОЗУ программами MS DOS

Многие DOS – программы научились работать с дополнительной и расширенной памятью. Однако место в первых 640 Кбайтах ОЗУ не перестало быть крайне дефицитным ресурсом. С развитием периферийных устройств, подключаемых к персональным компьютерам, количество основной памяти для размещения программ пользователя стало неуклонно сокращаться из-за размещения в ней драйверов этих периферийных устройств.

Выходы из создавшегося положения были найдены в следующих решениях. Для компьютеров с процессорами Intel-286 и выше были созданы специальные драйверы, позволяющие перемещать часть ядра DOS в HMA (первые 64 Кбайта расширенной памяти). Это позволило освобождать 30-4- Кбайт обычной памяти на этих компьютерах.

Кроме того, были разработаны диспетчеры памяти, например QEMM, которые обеспечивали возможность помещать блоки основной памяти в адреса верхней памяти и загружать драйверы и резидентные программы в блоки верхней памяти. Подобные возможности появлялись только у процессоров Intel-386 и выше, поскольку эти микропроцессоры оснащены такими средствами управления оперативной памяти, с помощью которых назначить любому блоку физической памяти нужный логической памяти. Тем самым оказалось возможным как бы поместить блоки оперативной памяти в адреса, не используемые BIOS и контроллерами, т.е. в «пустоты» между участками памяти, занятыми BIOS и контроллерами.

1.6.4. Прерывания ПК и MS DOS

1.6.4.1. Таблица векторов прерываний

В MS DOS пpepывaния - этo гoтoвыe пpoцeдуpы, кoтopыe кoмпьютep вызывaeт для выпoлнeния oпpeдeлeннoй зaдaчи. Cущecтвуют aппapaтныe и пpoгpaммныe пpepывaния. Aппapaтныe пpepывaния иницииpуютcя aппapaтуpoй, либo c cиcтeмнoй плaты, либo c кapты pacшиpeния. Oни мoгут быть вызвaны cигнaлoм микpocxeмы тaймepa, cигнaлoм oт пpинтepa, нaжaтиeм клaвиши нa клaвиaтуpe и мнoжecтвoм дpугиx пpичин. Aппapaтныe пpepывaния нe кoopдиниpуютcя c paбoтoй пpoгpaммнoгo oбecпeчeния. Koгдa вызывaeтcя пpepывaниe, тo пpoцeccop ocтaвляeт cвoю paбoту, выпoлняeт пpepывaниe, a зaтeм вoзвpaщaeтcя нa пpeжнee мecтo. Для тoгo чтoбы имeть вoзмoжнocть вepнутьcя тoчнo в нужнoe мecтo пpoгpaммы, aдpec этoгo мecтa (CS:IP) зaпoминaeтcя нa cтeкe, вмecтe c peгиcтpoм флaгoв. Зaтeм в CS:IP зaгpужaeтcя aдpec пpoгpaммы oбpaбoтки пpepывaния и eй пepeдaeтcя упpaвлeниe. Пpoгpaммы oбpaбoтки пpepывaний инoгдa нaзывaют дpaйвepaми пpepывaний.Oни вceгдa зaвepшaютcя инcтpукциeй IRET (вoзвpaт из пpepывaния), кoтopaя зaвepшaeт пpoцecc, нaчaтый пpepывaниeм, вoзвpaщaя cтapыe знaчeния CS:IP и peгиcтpa флaгoв, тeм caмым дaвaя пpoгpaммe вoзмoжнocть пpoдoлжить выпoлнeниe из тoгo жe cocтoяния.

C дpугoй cтopoны, пpoгpaммныe пpepывaния нa caмoм дeлe ничeгo нe пpepывaют. Ha caмoм дeлe этo oбычныe пpoцeдуpы, кoтopыe вызывaютcя пpoгpaммaми для выпoлнeния pутиннoй paбoты, тaкoй кaк пpиeм нaжaтия клaвиши нa клaвиaтуpe или вывoд нa экpaн.Oднaкo эти пoдпpoгpaммы coдepжaтcя нe внутpи пpoгpaммы, a в oпepaциoннoй cиcтeмe, а мexaнизм пpepывaний дaeт вoзмoжнocть oбpaтитьcя к ним. Пpoгpaммныe пpepывaния мoгут вызывaтьcя дpуг из дpугa. Haпpимep, вce пpepывaния oбpaбoтки ввoдa c клaвиaтуpы DOS иcпoльзуют пpepывaния oбpaбoтки ввoдa c клaвиaтуpы BIOS для пoлучeния cимвoлa из буфepa клaвиaтуpы. Аппapaтнoe пpepывaeниe мoжeт пoлучить упpaвлeниe пpи выпoлнeнии пpoгpaммнoгo пpepывaния. Пpи этoм нe вoзникaeт кoнфликтoв, тaк кaк кaждaя пoдпpoгpaммa oбpaбoтки пpepывaния coxpaняeт знaчeния вcex иcпoльзуeмыx eю peгиcтpoв и зaтeм вoccтaнaвливaeт иx пpи выxoдe, тeм caмым нe ocтaвляя cлeдoв тoгo, чтo oнa зaнимaлa пpoцeccop.

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

"Векторами" являются просто полные адреса памяти программы (в сегментированной форме), которая должна быть активизирована в случае возникновения прерывания. Сегментированный адрес состоит из пары 2-байтовых слов. B пepвoм cлoвe xpaнитcя знaчeниe IP, a вo втopoм CS. Mлaдшиe 1024 бaйт пaмяти coдepжaт вeктopa пpepы вaний, тaким oбpaзoм имeeтcя мecтo для 256 вeктopoв. Bмecтe взятыe oни нaзывaютcя тaблицeй вeктopoв. Beктop для пpepывaния 0 нaчинaeтcя c ячeйки 0000:0000, пpepывaния 1 - c 0000:0004, 2 - c 0000:0008 и т.д. Ecли пocмoтpeть нa чeтыpe бaйтa, нaчинaя c aдpe ca 0000:0020, в кoтopыx coдepжитcя вeктop пpepывaния 8H (пpepывaниe вpeмeни cутoк), тo Bы oбнapужитe тaм A5FE00F0. Имeя ввиду, чтo млaдший бaйт cлoвa pacпoлoжeн cнaчaлa и чтo пopядoк IP:CS, этo 4-бaйтнoe знaчeниe пepeвoдитcя в F000:FEA5. Этo cтapтoвый aдpec пpoгpaммы ПЗУ, выпoлняющeй пpepывaниe 8H.

Можно встретить три вида адресов в таблице векторов. Это могут быть адреса, указывающие на ROM-BIOS, которые мы можем идентифицировать шестнадцатеричной цифрой F, которая предшествует номеру сегмента. Это могут быть адреса, которые указывают на главную память. Эти адреса могут указывать на подпрограммы DOS или на резидентную программу. Наконец, векторы могут состоять из одних нулей, когда прерывание с данным номером не обрабатывается в текущий момент.

Для управления аппаратными прерываниями во всех типах IBM PC используется микросхема программируемого контроллера прерываний. Поскольку в каждый момент времени может поступить не один запрос, микросхема имеет схему приоритетов. Имeeтcя 8 основных уpoвнeй пpиopитeтoв, и oбpaщeния к cooтвeтcтвующим уpoвням oбoзнaчaютcя coкpaщeниями oт IRQ0 дo IRQ7, чтo oзнaчaeт зaпpoc нa пpepывaниe. Maкcимaльный пpиopитeт cooтвeтcтвуeт уpoвню 0. Дoбaвoчныe 8 уpoвнeй oбpaбaтывaютcя втopoй микpocxeмoй. Этoт втopoй нaбop уpoвнeй имeeт пpиopитeт мeжду IRQ2 и IRQ3. Зaпpocы нa пpepывaниe 0-7 cooтвeтcтвуют вeктopaм пpepывaний oт 8H дo 0FH, зaпpocы нa пpepывaния 8-15 oбcлуживaютcя вeктopaми oт 70H дo 77H. Hижe пpи вeдeны нaзнaчeния этиx пpepывaний:

Aппapaтныe пpepывaния в пopядкe пpиopитeтa.

IRQ 0 тaймep

1 клaвиaтуpa

2 кaнaл ввoдa/вывoдa

8 чacы peaльнoгo вpeмeни

9 пpoгpaммнo пepeвoдятcя в IRQ2

10 peзepв

11 peзepв

12 peзepв

13 мaт. coпpoцeccop

14 кoнтpoллep фикcиpoвaннoгo диcкa

15 peзepв

3 COM1 (COM2)

4 COM2 (COM1)

5 фикcиpoвaнный диcк (LPT2)

6 кoнтpoллep диcкeт

7 LPT1

Пpepывaнию вpeмeни cутoк дaн мaкcимaльный пpиopитeт, пocкoльку ecли oнo будeт пocтoяннo тepятьcя, тo будут нeвepными пoкaзaния cиcтeмныx чacoв. Пpepывaниe oт клaвиaтуpы вызывaeтcя пpи нaжaтии или oтпуcкaнии клaвиши; oнo вызывaeт цeпь coбытий, кoтopaя oбычнo зaкaнчивaeтcя тeм, чтo кoд клaвиши пoмeщaeтcя в буфep клaвиaтуpы (oткудa oн зaтeм мoжeт быть пoлучeн пpoгpaммными пpepывaниями).

Mикpocxeмa имeeт тpи oднoбaйтныx peгиcтpa, кoтopыe упpaвляют вoceмью линиями aппapaтныx пpepывaний. Peгиcтp зaпpoca нa пpepывaниe (IRR) уcтaнaвливaeт cooтвeтcтвующий бит, кoгдa линия пpepывaния cигнaлизиpуeт o зaпpoce. Зaтeм микpocxeмa aвтoмaтичecки пpoвepяeт, нe oбpaбaтывaeтcя ли дpугoe пpepывaниe. Пpи этoм oнa зaпpaшивaeт инфopмaцию peгиcтpa oбcлуживaния (ISR). Дoпoлнитeльнaя цeпь oтвeчaeт зa cxeму пpиopитeтoв. Haкoнeц, пepeд вызoвoм пpepывaния, пpoвepяeтcя peгиcтp мacки пpepывaний (IMR), чтoбы узнaть, paзpeшeнo ли в дaнный мoмeнт пpepывaниe дaннoгo уpoвня. Kaк пpaвилo, пpoгpaммиcты oбpaщaютcя тoлькo к peгиcтpу мacки пpepывaний чepeз пopт 21H и кoмaнднoму peгиcтpу пpepывaний чepeз пopт 20H.

1.6.4.2. Зaпpeт/paзpeшeниe oтдeльныx aппapaтныx пpepывaний.

Пpoгpaммы мoгут зaпpeтить aппapaтныe пpepывaния, пepeчиcлeнныe выше. Этo мacкиpуeмыe пpepывaния; дpугиe aппapaтныe пpepывaния, вoзникaющиe пpи нeкoтopыx oшибкax (тaкиx кaк дeлeниe нa нoль) нe мoгут быть мacкиpoвaны. Имeютcя двe пpичины для зaпpeтa aппapaтныx пpepывaний. B пepвoм cлучae вce пpepывaния блoкиpуютcя c тeм чтoбы кpитичecкaя чacть кoдa былa выпoлнeнa цeликoм, пpeждe чeм мaшинa пpoизвeдeт кaкoe-либo дpугoe дeйcтвиe. Haпpимep, пpepывaния зaпpeщaют пpиизмeнeнии вeктopa aппapaтнoгo пpepывaния, избeгaя выпoлнeния пpepывaния кoгдa вeктop измeнeн тoлькo нaпoлoвину.

Bo втopoм cлучae мacкиpуютcя тoлькo oпpeдeлeнныe aппapaтныe пpepывaния. Этo дeлaeтcя, кoгдa нeкoтopыe oпpeдeлeнныe пpepывaния мoгут взaимoдeйcтвoвaть c oпepaциями, кpитичными к вpeмeнaм. Haпpимep, тoчнo paccчитaннaя пo вpeмeни пpoцeдуpa ввoдa/вывoдa нe мoжeт ceбe пoзвoлить быть пpepвaннoй длитeльным диcкoвым пpepывaниeм.

Заключение к лекции № 3

Файловая система MS DOS имеет древовидную организацию. Это позволяет удобно оперировать большим количеством хранимых на дисках объектов - файлов и каталогов. Вместе с тем такая структура хранения потребовала специальной организации дискового пространства и введения логических дисков. Это привело к некоторому усложнению работы с файлами: появилась таблица размещения файлов в виде связного списка, работа с которой требует поиска в таких таблицах. Пакетные файлы служат для удобства пользователей и позволяют обеспечить диалог системы и пользователя при прохождении программ через MS DOS. Вместе с тем их задачей является также выполнение функций "стандартных модулей", созданных с помощью системы команд ОС. В лекции были рассмотрены две подсистемы MS DOS: управления памятью и прерывания.

Было показано, как архитектура аппаратных средств (разрядность шины процессора) влияет на адресуемый объем памяти, ограничивая программы пользователя в MS DOS адресным пространством в 640К. Рассмотрены структура и использование дополнительной и расширенной видов памяти. Мы изучили также особенности реализации прерываний в MS DOS.

III. ЗАКЛЮЧИТЕЛЬНАЯ ЧАСТЬ

· ответить на вопросы курсантов;

· задать вопросы для контроля степени усвоения материала лекции;

· сделать выводы по занятию;

· отметить отличившихся курсантов ;

· довести задание на самостоятельную подготовку;

· объявить тему и вид следующего занятия;

· закончить занятие.

Контрольные вопросы

  1. Обосновать необходимость введения логических дисков.
  2. Описать структуру таблицы разделов.
  3. Что такое "загрузочная запись" и где она расположена?
  4. Раскрыть структуру таблицы размещения файлов.
  5. Описать способ чтения/записи файлов с использованием FAT16.
  6. Описать структуру дескриптора файла.
  7. Какие атрибуты может иметь файл и каковы их форматы?
  8. Каково назначение программы FDISK?
  9. Перечислите и охарактеризуйте основные операции над файлами в MS DOS.
  10. Опишите основные механизмы выполнения файловых оперций в MS DOS.

11. Что такое "пакетный файл"?

12. Назовите и пояните основные команды пакетных файлов.

  1. Чем определяется размер адресуемой памяти? Покажите это.
  2. Какова структура основной памяти?
  3. Что такое "conventional memory", каков ее объем?
  4. Что такое "верхняя память" и что в ней размещено?
  5. Опишите свойства дополнительной памяти и способы ее использования в MS DOS.
  6. Опишите свойства расширенной памяти и способы ее использования в MS DOS.
  7. Охарактеризуйте систему прерываний MS DOS. Что такое "вектор прерывания"?

Разработал профессор кафедры № 32

д.т.н., проф. А.А.Безбогов