Лабораторная работа №1 Системные ресурсы для работы с файлами, директориями и дисками



Скачать 91.84 Kb.
Дата24.04.2016
Размер91.84 Kb.
ЛАБОРАТОРНАЯ РАБОТА № 1

Системные ресурсы для работы с файлами, директориями и дисками

ЦЕЛЬ РАБОТЫ: Изучение системы прерываний компьютеров IBM PC и системы управления файлами операционной системы MS DOS.

ОСНОВНЫЕ ПОНЯТИЯ



4.1. Система прерываний условного процессора

Вызов функции DOS и BIOS реализуются через прерывания (команда int).

Команда int N выполняет прерывание с переходом к обработчику прерывания, адрес которого находится в векторе N (два слова, которые содержат значения регистров CS и соответственно IP).

Команда iret служит для возврата из процедуры обработки прерывания.

В оперативную память компьютера, начиная с адреса 0000:0000 записывается таблица векторов прерываний, которая имеет 256 векторов (адреса от 0000h – 03FFh). В двух старших байтах каждого вектора записан адрес сегмента процедуры обработки прерывания, а в двух младших байтах – смещение. Векторы, как и соответствующие им прерывания, имеют номера, называемые типами и вектор с номером 0 расположен в памяти начиная от адреса 0:0, вектор типа 1 – с адреса 0:4, т.д.

При вызове прерывания процессор выполняет автоматически следующие операции:



  1. сохраняет в стеке значения регистра флагов;

  2. [SP] = [SP] – 2;

  3. флагам IF и TF присваеваится значение ноль, т.е. дезактивируются маскируемые прерывания и выполнение команд в пошаговом режиме;

  4. в стек записывается содержимое регистра CS;

  5. [SP] = [SP] – 2;

  6. из вектора прерываний загружается новое значение регистра CS;

  7. в стеке сохраняется содержимое регистра IP;

  8. [SP] = [SP] – 2;

  9. загружается новое значение для IP.

Команда iret востановит значения, извлекая из стека сохраненные значения для регистров CS и IP, и регистра флагов (рис.1).
В
ызовы процедур обработки прерываний могут быть разного вида. Различают прерывания hardware, которые вызываются периферийными устройствами или другими компонентами системы, и прерывания software, вызываемые командой процессора int, которая используется для вызова из программы функций DOS и BIOS. Вне зависимости от типа прерывания, описанная выше процедура всегда выполняется одинаково, как для прерываний hardware так и для прерываний software.

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

00h - деление на ноль

01h - пошаговое выполнение

02h - немаскируемое прерывание

03h - команда int

04h - into – прерывание переполнения с фиксированной запятой overflow

08h - прерывание от системного таймера (hardware)

09h - hardware прерывание клавиатуры

0Ah - зарезервировано для подключения нестандартного устройства (hardware)

0Bh - второй последовательный порт COM2 (hardware)

0Ch - последовательный порт COM1 (hardware)

0Dh - жесткий диск

0Eh - дисковод (hardware)

0Fh - параллельный порт (принтер LPT1, hardware)

10h - драйвер BIOS видео адаптера

13h - драйвер BIOS диска

16h - драйвер BIOS клавиатуры

17h - драйвер BIOS принтера

1Bh - процедура обработки прерывания при нажатии клавиш CTRL/BREAK

1Ch - вызов программы BIOS обработки прерывания системного таймера (18,2 прер./с)

1Dh - адрес таблицы видео параметров, BIOS

1Eh - адрес таблицы параметров гибкого диска, BIOS

1Fh - адрес второй половины таблицы характеристик для графических режимов 4..6, BIOS

21h - распределитель функций DOS

22h - процедура обработки завершения выполнения задач (DOS)

23h - процедура обработки прерывания при нажатии клавиш CTRL/С

24h - процедура обработки прерывания при фатальной ошибке

25h - чтение с диска

26h - запись на диск

60h…66h - прерывания пользователя

67h - драйвер расширенной памяти

68h…6Fh - свободные векторы

78h…7Fh - свободные векторы

F1h…FFh - не используются

Как можно заметить из таблицы векторов прерываний, они могут быть разделены на следующие группы:



  • прерывания hardware (08h…0Fh, 70h…77h)

  • драйверы BIOS (10h, 13h, 16h и т.д.)

  • процедуры DOS (21h, 22h и т.д.)

  • адреса системных таблиц DOS или BIOS (1Dh, 1Fh, 43h и т.д.)

Адреса системных программ сохранены в векторах прерываний. Большинство из этих программ по своему содержанию являются диспетчерами, которые обеспечивают доступ к большой группе процедур, реализующих системные функции. Так, например, видеодрайвер BIOS (вектор 10h) содержит процедуры изменения графического режима, позиций курсора, загрузку символов и т.д. Характерным является вектор 21h, который вызывает все функции DOS: чтение с клавиатуры и вывод на экран, работу с файлами, директориями и дисками, управления памятью и процессами и т.д.

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

Большинство функций DOS и многие функции BIOS записывают во флаг CF код завершения. Если функция завершилась успешно- CF=0, в противном случае CF=1. В последнем случае в один из регистров (обычно AX) заносится код ошибки. Таким образом, типичная процедура вызова системной функции может быть представлена следующим образом:

mov AH, number of function
……………..

int 21h


jc error
…………….

error:


cmp ax,1

je error1

cmp ax,2

je error2


4.2 Основные характеристики файловой системы MS DOS

В компьютерах IBM PC предусмотрены два уровня адресации к магнитным дискам. Когда работается на нижнем уровне, пользователь через прерывание системы BIOS int 13h, напрямую вызывает драйвер диска. Типовые операции этого уровня следующие: запись или чтение сектора, перемещения магнитных головок, форматирование дорожки. В этом случае файловая система DOS не используется – необходимая информация локализуется не по имени файла, а по номеру поверхности, цилиндра и сектора.

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

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

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

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

Атрибуты файла (также и каталога) сохраняются в байте атрибутов файла который имеет следующие значения:

01h - файл только для чтения (read only)

02h - «спрятанный» файл (hidden)

04h - системный файл, который содержит файлы системы DOS

08h - запись о файле, представляет собой метку для диска (не больше 11 символов). Такая запись (единственная для всего диска) может содержаться только в родительском каталоге.

10h - файл представляет каталог

20h - атрибут «архив»

При создании нового файла, DOS ищет свободное место на диске и присваивает его новому файлу, создавая и заполняя соответствующую запись этого файла в каталоге. Хотя минимальное количество информации, передаваемое контролером диска в процессе записи или чтения файла это один сектор (512 байт), файловая система разделяет поверхность диска в кластеры. Размер одного кластера составляет от двух секторов (1 Кб) для дискет до 4-8 секторов для жесткого диска. Таким образом, минимальный физический размер файла составляет один кластер, хотя информация в нем может иметь несколько байт. Плюс ко всему, в записи каталога содержится логическая, а не физическая длина файла, т.е. реальное количество информации в байтах.

Файл может занимать непоследовательные ячейки, т.е. может быть прерывистым. Такое разделение поверхности диска дает возможность:


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

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

Процедура адресации к файлу, в общем случае, делится на следующие операции:

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

открытие файла, если он уже был создан;

запись в файл или чтение из файла его содержимого (полностью или частично);

закрытие файла.

Определены два метода выполнения операций с файлами: с использованием блока управления файлами FCB (File Control Block) и логических указателей файла (handle).

Блок FCB это таблица из 37 байтов, которая содержит информацию о файле: имя и расширение, длина, длины записи файла, количества записей и т.д. Для выполнения какой-либо операции над файлом, необходимо заполнить блок FCB нужной информацией и выполнить вызов необходимой функции.

При другом методе используются логические указатели. Адресация к файлу (как и к стандартному периферийному устройству) выполняется через номер логического указателя. Указатель присваивается файлу системой при открытии этого файла и убирается при его закрытии.

Для работы со стандартными периферийными устройствами DOS использует пять логических указателей:

0 - ввод (стандартная консоль CON - клавиатура);



  1. - стандартный вывод – монитор;

  2. – стандартный ввод;

  3. – стандартный порт, дополнительный;

  4. – стандартный принтер (PRN).

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

1 Создание, открытие и закрытие файла

3Ch - создание файла

5Ah - создание временного файла

5Bh - создание нового файла

3Dh - открытие файла, используя логический указатель

3Eh - закрытие файла, используя логический указатель

41h - удаление файла

2 Запись и чтение данных

42h - перемещение указателя записи/чтения

3Fh - чтение из файла или устройства, используя логический указатель

40h - запись в файл или устройство, используя логический указатель



3 Изменение характеристик файла

43h - получение/установка атрибутов файла

56h - изменение имени файла

57h - получение/установка даты и времени создания файла



4 Поиск файла

1Ah - изменение адреса перемещения диска (Disk Transfer Address)

2Fh - получение текущей зоны DTA

4Eh - поиск первого подходящего файла (find first)

4Fh - поиск следующего подходящего файла (find next)

5 Операции над каталогами

39h - создание нового каталога (MKDIR)

3Ah - удаление каталога (RMDIR)

3Bh - изменения текущего каталога (CHDIR)

47h - получение текущего каталога (GDD)

6 Операции над дисками

0Eh - выбор диска по умолчанию

1Eh - получение текущего диска

36h - получение свободного места на диске (Get Disk Free Space)

Функции 3CH и 5Bh применяются для создания файла с определенной спецификацией. Спецификация файла, т.е. путь к файлу, имя файла, его расширение определена как последовательность символов ASCIIZ (завершается нулевым байтом). Указатель на эту последовательность (ASCIIZ) загружается в пару регистров DS:DX. В регистр СХ загружается коды атрибутов файла:

00 – обычный (normal)

01 – только для чтения (read only)

02 – скрытый (hidden)

03 – системный

08 – метка диска

20h - архив

В регистр AX возвращается логический идентификатор файла, при помощи которого, в дальнейшем производится его запись/чтение. Различия между функциями 3Ch и 5Bh проявляются в случае когда файл со спецификацией уже создан. Функция 3Ch практически удаляет существующий файл (обнуляется его длина) и создает новый файл с тем же именем, а функция 5Bh завершается с ошибкой (CF=1).



4.3 Задания для лабораторной работы

Задача 4.1 Создание файла. Напишите программу, которая создает новый файл с именем MyFile.dat. в текущем каталоге и записывает в него имя и фамилию разработчика программы. Если такой файл уже существует, данные записываются в конец файла. После выполнения программы проверить содержится ли файл в каталоге, и вывести содержимое файла на экран.

Задача 4.2 Чтение файла. Напишите программу, которая считывает содержимое файла MyFile.dat в память компьютера и выводит его на экран. Предполагается, что файл имеет произвольную величину.

Задача 4.3 Прямой доступ в файл. Напишите программу, которая считывает 8 байт из созданного ранее файла MyFile.dat, начиная с 7-го байта, относительно начала, и 10 байт от конца файла. Размер файла более 30 байт. Выведите считанную информацию на экран.

Задача 4.4 Добавление данных в файл. Напишите программу, которая добавляет некоторый текст в конец текстового файла MyFile.dat. Проверьте содержимое и длину до и после выполнения операции добавления.

Задача 4.5 Изменение атрибутов файла. Напишите программу, которая присваивает файлу MyFile.dat атрибут «только для чтения». После выполнения программы, проверьте результат.

Задача 4.6 Изменение имени файла. Напишите программу, которая переименовывает имя файла MyFile.dat в NewName.dat, который находится в другом каталоге.

Задача 4.7 Изменение диска. Напишите программу, которая изменяет текущей диск – на диск А, и после небольшой задержки переводит вновь на предыдущий диск.

Задача 4.8 Создание и удаление каталогов. Напишите программу, которая создает в текущем каталоге подкаталог NewDir, а после этого из текущего каталога удаляет предварительно созданный подкаталог TestDir.
4.4. Составьте отчет по лабораторной работе.


База данных защищена авторским правом ©bezogr.ru 2016
обратиться к администрации

    Главная страница