Алгоритмы выполнения типовых файловых операций

Чтение файла с диска (например, при выполнении команды TYPE D:\TEXT\File.txt) реализуется следующей процедурой:

В корневом каталоге логического диска D находится регистрационная запись, у которой: поле "имя" = TEXT, поле "расширение" = пусто, атрибут Dir = 1. В этой записи читается значение поля "номер начального кластера" (N).

Читается первая копия FAT логического диска D и определяется цепочка номеров кластеров, (начинающаяся с N и оканчивающаяся EOF), выделенных каталогу TEXT.

Читается каталог TEXT: последовательно считываются все кластеры этой "цепочки", начиная с N-ного; находится регистрационная запись, у которой: поле "имя" = File, поле "расширение" = txt, атрибут Dir = 0. В этой записи читается значение поля "номер начального кластера" (N1).

Читается первая копия FAT диска D и определяется цепочка номеров кластеров, (начинающаяся с N1 и оканчивающаяся EOF), выделенных файлу File.

Читается файл File: последовательно считываются все кластеры этой "цепочки", начиная с N1-го.

При записи на диск нового файла выполняется следующая процедура (приводится с упрощениями):

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

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

Начиная с начального элемента FAT, определяется цепочка свободных элементов (содержащих "0"), расположенных в порядке возрастания их номеров. При этом в каждый элемент записывается номер следующего элемента цепочки, а в последний элемент записывается код (f)ff8H (EOF).

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

Например (рисунок 1.2), при записи файла размером 1234 байта на дискету стандартного формата (512 байтов в секторе, 1 сектор в кластере), этому файлу будет выделено три кластера с номерами 10, 11 и 16. При этом последний (16-й) кластер будет занят лишь частично.

При удалении файла стандартными средствами (командой DEL):

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

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

Первый символ имени удаляемого файла в его регистрационной записи заменяется на код E5h (этот код соответствует строчной русской букве "х", недопустимой с точки зрения соглашения об именах MS DOS) – наличие такого символа в начале имени файла является признаком того, что файл логически удален.

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

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

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

При переименовании файла изменяются только значения полей "имя" и "расширение" соответствующей регистрационной записи каталога.

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

Процедура перемещения файла между двумя каталогами одного логического диска сводится к перемещению соответствующей регистрационной записи. Если же файл перемещается на другой логический диск, то он "удаляется" с одного диска и "копируется" на другой.

Учебные задания

Методические указания

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

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

Задание 1. Выведите на экран содержимое Boot-сектора рабочего диска в текстовом формате и определите основные параметры форматирования диска. Просмотрите этот же boot-сектор в шестнадцатеричном формате. Определите:

длину (в байтах) таблицы параметров форматирования диска;

основные параметры формата диска, приведенные в таблице 1.4.

Задание 2. Просмотрите содержимое корневого каталога командой DIR и программой Diskedit. Определите для этого каталога:

размер (в секторах и байтах);

физическое расположение (номера занятых каталогом секторов);

количество зарегистрированных в каталоге объектов, в том числе файлов, подкаталогов, скрытых файлов, меток томов

количество удаленных файлов, файлов с длинными именами Windows.

Задание 3. Измените метку рабочего тома стандартными средствами (командой Label). Определите место (места) на диске, в котором записана метка. Измените метку тома "вручную" с помощью программы Diskedit. Оцените результат с помощью команды Vol. Предложите эффективный способ сокрытия от (неквалифицированного) пользователя факта наличия на диске большой группы файлов.

Задание 4. Просмотрите область FAT.

Сколько копий FAT создано в системной области логического диска?

Каков размер (в байтах и секторах) каждой копии FAT?

Сколько "плохих", свободных и занятых кластеров на логическом диске?

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

Задание 5. Создайте (командой MD) рабочий каталог, подчиненный вашему личному каталогу. Просмотрите его содержимое командой DIR и программой Diskedit. Определите его размер (в кластерах) и место расположения на диске. Определите адрес (номер начального кластера) родительского каталога.

Задание 6. Скопируйте несколько файлов (с короткими английскими именами) в рабочий каталог, созданный при выполнении предыдущего задания. Изменился ли размер (в кластерах) этого каталога ? Сколько файлов можно зарегистрировать в этом каталоге, чтобы сохранить его минимальный размер ?

Задание 7. Скопируйте в рабочий каталог несколько файлов с длинными русскими именами. Просмотрите содержимое каталога командой DIR и программой Diskedit, определите места хранения длинного и короткого имен файла. Прокомментируйте результаты преобразования длинных имен.

Задание 8. Удалите (командой Del) один из файлов, зарегистрированных в рабочем каталоге. Прокомментируйте результат. Оцените возможность восстановления удаленного файла. Восстановите удаленный файл "вручную" (с помощью программы Diskedit).

Задание 9. Создайте еще один (пустой) рабочий каталог и удалите его командой RD. Прокомментируйте результат. Повторите ту же процедуру с непустым каталогом.

Задание 10.Исследуйте алгоритмы выполнения операций копирования, перемещения и переименования файлов. Подтвердите результатами экспериментов свои ответы на 7-й контрольный вопрос.

Задание 11. Просмотрите таблицу разделов диска (Partition Table). Определите:

количество, размеры и адреса расположения логических дисков (разделов);

количество системных (bootable) логических дисков и типы установленных на них операционных систем.

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

Поясните термины "Сектор" и "Кластер". С чем связаны ограничения на размер кластера ?

Как влияет разрядность элементов FAT на эффективность использования дискового пространства ?

Каково назначение второй копии FAT ?

Что изменится в системной и рабочей областях диска после завершения операции перемещения файла из одного каталога в другой (рассмотреть 2 случая: перемещение между каталогами одного логического диска и перемещение с одного логического диска на другой) ?

Контрольная работа №1

Задача 1.1.Определите термин "путь к файлу". Как реализуется ссылка на родительский каталог, если его имя явно не указано в команде ?

Задача 1.2. Подготовьте bat-файл в соответствии с вариантом, указанным преподавателем. Варианты заданий приведены в таблице 1.7.

Задача 1.3. Рассчитайте максимально-возможное количество кластеров рабочей области логического диска (FAT-12, FAT-16, FAT-32). Определите количество кластеров на дискете стандартного формата.

Задача 1.4.Определите максимально-возможное количество файлов, размещенных на дискете стандартного формата.

Задача 1.5.Опишите алгоритм работы процедуры восстановления файлов, удаленных стандартными средствами MS DOS.

Таблица 1.7 - Варианты контрольных заданий к задаче 1.2

  Вариант Список операций, выполняемых при запуске bat-файла Модификации варианта  
Описание  
 
· Выбор из меню одной из трех операций : - просмотр группы файлов - редактирование файла - копирование группы файлов с изменением их расширений · Вывод сообщений о выполняемой операции 1. Запуск операции после того, как пользователем нажата любая клавиша Каждая из трех операций выполняется отдельным bat-файлом, вызываемым из основного bat-файла  
 
 
 
Группа файлов задается их общим расширением TXT  
 
 
Группа файлов задается их общим именем MY_FILES  
 
Расширение группы файлов задается параметром  
Имя группы файлов задается параметром  

Продолжение таблицы 1.7

 
· Создание в рабочем каталоге трехступенчатой системы подкаталогов · Копирование в каждый из них из рабочего каталога всех файлов, имеющих заданные расширения · Вывод оглавлений рабочего и созданных каталогов · Удаление из рабочего каталога тех файлов, копии которых созданы в других каталогах Копирование файлов производится с использованием команды FOR.. IN.. DO  
 
 
Копирование файлов производится без использования команды FOR..IN..DO  
 
 
  Каждая из трех операций выполняется отдельным bat-файлом, вызываемым из основного bat-файла  
· Выбор из меню одной из четырех операций : - просмотр группы файлов - редактирование группы файлов - переименование группы файлов с заменой их расширений - переименование группы файлов с заменой их имен 1. Вывод сообщений о выполняемой операции 2. Запуск операции после того, как нажата любая клавиша Каждая из трех операций выполняется отдельным bat-файлом, вызываемым из основного bat-файла  
Группа файлов задается их общим расширением (номер Вашей учебной гр.)  
Группа файлов задается их общим именем (Ваше имя по-английски )  
Расширение группы файлов задается параметром  
Имя группы файлов задается параметром  

Окончание таблицы 1.7

· Выбор из меню одной из четырех операций : - просмотр группы файлов - редактирование группы файлов - переименование группы файлов с заменой их расширений - переименование группы файлов с заменой их имен · Проверка существования хотя бы одного файла заданной группы · Вывод сообщения о выполняемой операции или об отсутствии файлов в группе Каждая из трех операций выполняется отдельным bat-файлом, вызываемым из основного bat-файла
Группа файлов задается их общим расширением (параметр)
    Группа файлов задается их общим именем (параметр)
· Проверка введенного пользователем "пароля" (1-й параметр bat-файла) на соответствие одному из трех возможных значений · Если пароль введен верно - выбор из меню и запуск одной из трех программ · В противном случае – вывод сообщения о неправильно введенном пароле и завершение работы "Пути" к каждой из трех программ задаются в тексте bat-файла
"Пути" к каждой из трех программ задаются параметрами
Перед запуском программы производится проверка наличия соответствующего файла
При отсутствии программы в заданном каталоге – повторный выбор из меню

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

2 АДРЕСНОЕ ПРОСТРАНСТВО ПК

Лабораторная работа №4

Наши рекомендации