Системное программное обеспечение персональных ЭВМ


Пример 8 - часть 2


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

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

Поскольку программный пример 10.6 представляет собой в основном сведение воедино предыдущих примеров, для него будет достаточно самого поверхностного описания.

Задание (полный путь и имя файла) вводится в строку job, указатель jobptr отслеживает в процессе выполнения программы текущее состояние лексического разбора задания. Первые три символа задания интерпретируются как идентификация логического диска, например: "A:\". В дальнейшем для лексического разбора задания применяется функция Get_Name, которая выделяет из задания очередное слово и переназначает jobptr. Пустое (NULL) значение jobptr свидетельствует об исчерпании задания.



- Начало -  - Назад -  - Вперед -