Реферат: С по л-03 Организационно-методические указания по проведению занятия




С ПО Л-03

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


На данную лекцию выносится основной теоретический материал об файловой системе 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.2.Файлы и каталоги 9

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

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

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

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

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

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 19

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

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

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

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


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

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

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


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, предназначенных для работы с файловой системой, достаточно разнообразен и функционально полон. Только в оч^ 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 Мб
еще рефераты
Еще работы по разное