Лекция №1 Введение




НазваниеЛекция №1 Введение
страница6/6
Дата публикации03.03.2013
Размер1.23 Mb.
ТипЛекция
litcey.ru > Информатика > Лекция
1   2   3   4   5   6


Таблица 4. 2. Атрибуты файла.

Атрибут

Назначение

01h

Файл только для чтения. Модификация или удаление файла запрещаются

02h

Скрытый файл (не "замечаемый" командой DIR и некоторыми функциями DOS)

04h

Системный файл (обычно системными и заодно скрытыми объявляется файлы IO. SYS и MSDOS. SYS)

08h

Запись о файле представляет собой метку тома. Такая запись (одна на весь том) может существовать только в корневом каталоге

10h

Файл представляет собой каталог

20h

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

Файл может иметь несколько атрибутов одновременно. Так, для записи о метке тома характерно значение байта атрибутов 28: метка тома, не архивирована. Защищенный от стирания и модификации файл содержит в байте атрибутов число 21, а если к тому же он еще объявлен скрытым, то 23.

Время и дата создания файла помещаются в запись каталога после окончания работы программы с данным файлом и его закрытия. Формат этих полей приведен в табл. 4. 3 и 4. 4.
Таблица 4. 3. Формат поля времени создания файла.

Биты

Назначение

04... 00

Число двухсекундных интервалов в двоичной форме (от. 0 до 29, т. е. от 0 с до 58 с)

10... 05

Число минут в двоичной форме (от 0 до 59)

15... 11

Число часов в двоичной форме (от 0 до 23)

Таблица 4.4. Формат поля даты создания файла.

Биты

Назначение

04... 00

День месяца (от 1 ао 31)

08... 05

Месяц (от 1 ао 12)


15... 09

Год относительно 1980


Номер кластера, с которого начинается файл, позволяет найти на диске начало файла; информация о его последующих кластерах содержится в таблице размещения фалов (FAT от File Allocation Table).

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

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

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

Существуют два способа выполнения операций с файлами: с использованием блоков управления файлами (FCB, File control block) и дескрипторов файлов (handle).

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

Использование FCB было характерно для первых версий DOS (до 2.0). FCB-структуры и соответствующие функции DOS не поддерживают древовидных каталогов, и поэтому они могут работать только с файлами из текущего каталога текущего диска. С их помощью, естественно, нельзя создавать или удалять сами каталоги. В настоящее время функции типа FCB используются редко и в данном пособии рассматриваться не будут.

Другой способ операций с файлами предполагает использование] дескрипторов (файловых индексов, файловых описателей), которые в первом приближении можно рассматривать, как но'мера открытых файлов.

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

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

запись в файл или чтение из файла всего содержимого либо любой его части; закрытие файла.

В большинстве, случаев работа с файлом начинается с выполнения операции его открытия, для чего предусмотрена особая функция DOS. Открывая файл, DOS назначает ему очередной свободный элемент (блок описания файла) специальной системной таблицы, называемой таблицей открытых файлов (Sys­tem File Table, SFT) и располагаемой в оперативной памяти среди системных областей данных. Объем этой таблицы, определяющий максимальное число файлов, с которыми можно работать одновременно, задается на этапе конфигурирования DOS директивой FILES файла CONFIG. SYS.

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

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

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

Буферы DOS, количество которых определяется директивой BUFFERS файла CONFIG.SYS, служат для ускорения работы с файлом. DOS, получив из выполняемой программы заказ на чтение некоторой порции данных из файла, находит и считывает соответствующие секторы диска (в которых, между прочим, данных может быть больше, чем конкретно затребовала программа) и, переслав прочитанные данные в программу, помимо этого сохраняет содержимое прочитанных секторов в своих внутренних буферах. Если программа в дальнейшем передаст DOS запрос на чтение с диска или запись на диск тех данных, которые уже находятся в буферах DOS, система выполнит затребованные операции не на диске, а лишь в буферах DOS, что на несколько порядков сократит время их выполнения. Однако в этом случае состояние файла на диске не всегда отвечает его логическому образу в программе. Сброс буферов DOS на диск в процессе закрытия файла выполняет физическое обновление файла на диске и приведение его в соответствие с логическим образом в программе.

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

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

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

0 - стандартный ввод (CON);

1 - стандартный вывод (CON);

2 - стандартная ошибка (CON);

3 - стандартный вспомогательный порт (AUX);

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

Таким образом, при работе с терминалом, принтером или последовательным портом нет необходимости открывать новые дескрипторы; ввод с клавиатуры осуществляется через дескриптор 0, вывод на экран - через дескрипторы 1 или 2, вывод на принтер - через дескриптор 4. Различие дескрипторов 1 и 2 заключается в том, что стандартный вывод (как и стандартный ввод) можно перенаправить средствами DOS на любое устройство или в файл, а стандартная ошибка всегда связана с экраном. Обычно дескриптор 2 используют для вывода на экран аварийных или диагностических сообщений.

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

PROG. EXE

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

PROG. EXE > FILE. DAT

система сама создаст файл FILE. DAT, и весь вывод программы будет записан в этот файл. Ввод по-прежнему будет осуществляться с клавиатуры. Запуск программы командой

PROG. EXE < FILE. INI

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

PROG.EXE < FILE.INI > FILE.DAT

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

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

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

3Ch - создать файл;

5Ah - создать временный файл;

5Bh - создать новый файл;

3Dh - открыть файл;

3Eh - закрыть файл;

68h - сбросить файл на диск;

4 In - удалить файл.

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

42h - установить указатель;

3Fh - читать из файла или устройства;

40h - записать в файл или устройство.

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

43h - получить или установить атрибуты файла;

56h - переименовать файл;

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

4. Поиск файла:

lAh - установить адрес области передачи данных (DTA);

2Fh - получить адрес области передачи данных (DTA);

4Eh - найти первый файл;

4Fh - найти следующий файл.

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

39h - создать каталог;

3Ah - удалить каталог;

3Bh - сменить текущий каталог;

47h - получить текущий каталог.

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

19h - получить текущий диск;

0Eh - сменить текущий диск;

36h - получить информацию о диске.

Функции 3Ch и 5Bh позволяют создать файл с заданной спецификацией. Спецификация файла, т.е. путь к нему вместе с именем файла и расширением указывается в виде символьной строки, завершающейся двоичным нулем ("строки ASCIIZ") Ад рес этой строки заносится в регистры DS.-DX. В регистре СХ задается код атрибутов создаваемого файла: 0 - отсутствие атрибутов, 1 - только для чтения, 2 - скрытый, 4 - систем ный, 8 - метка тома, 20h - атрибут архива. Таким образом, с помощью этих функций можно создать как "настоящий" файл, так и метку тома (в корневом каталоге диска). В регис тре АХ возвращается дескриптор созданного файла, которым можно в дальнейшем пользоваться для записи в файл или чте ния из него. Различие функций 3Ch и 5Bh проявляется лишь в случае, когда файл с заданной спецификацией уже существует. Функция 3Ch при этом фактически уничтожает имеющийся файл и создает новый с тем же именем, а функция 5Bh завершается с CF-1.

Фyнкция 5Ah используется для создания временного файла, имя которому (являющееся функцией текущего времени) дает система. В" регистрах DS:DX указывается адрес пути к файлу (не имени файла!) в виде строки ASCIIZ, в конце которой должны быть предусмотрены 13 пустых байтов, куда DOS поместит обратный слэш и имя создаваемого файла, завершаемое двоичным нулем. При необходимости файлу можно придать любые атрибуты (см. описание функций 3Ch и 5Bh) кроме атрибута метки тома. Обычно временные файлы удаляются перед завершением программы, причем забота об этом лежит на программисте (автоматически файл не удаляется). Для записи в созданный временный файл следует использовать дескриптор, возвращаемый функцией 5Ah в регистре АХ.

функция 3Dh позволяет открыть уже имеющийся файл. В регистрах DS:DX задается спецификация файла (путь и имя файла с расширением) в виде строки ASCIIZ; в регистре AL -режим доступа (0 - чтение, 1 - запись, 2 - чтение и запись). В дальнейшем запись в файл и чтение из него осуществляется с помощью дескриптора, возвращаемого функцией в регистре АХ.

Для каждого открытого файла DOS создает и поддерживает указатель, который представляет собой относительный номер байта в файле, начиная от которого будут выполняться запись или чтение данных. Указатель только что открытого или созданного файла позиционируется системой на начало файла, а функции чтения или записи смещают его на число прочитанных или записанных байтов. Таким образом, повторное использование функций чтения или записи реализует последовательный доступ к файлу. Для организации прямого доступа к произвольному месту файла предусмотрена функция 42h, позволяющая задать положение указателя относительно начала файла (для этого надо задать AL=0), конца файла (AL=2) или текущего положения указателя (AL=1). Само значение смещения указателя (со знаком) заносится в регистры СХ (старшая половина) и DX (младшая),

Функции 3Fh 40h используются для чтения из файла или устройства (функция 3Fh) и записи в файл или устройство (функция 40h). Перед вызовом функции в регистр ВХ помещается дескриптор, в регистр СХ - число читаемых или записываемых байтов, а в регистры DS:DX - адрес буфера в программе пользователя.

Иногда возникает необходимость найти в некотором каталоге все файлы, удовлетворяющие условиям шаблона групповой операции (например, все файлы с расширением .ТХТ или все файлы с именем EXAMPLE и любыми расширениями). Поиск файлов по заданным шаблонам групповых операций осуществляется с помощью функций 4Eh (найти первый файл) и 4Fh (найти следующий файл). Для их использования необходимо с помощью функции lAh организовать в программе область передачи данных (Disk transfer area, DTA) размером не менее 43 байтов, либо с помощью функции 2Fh получить адрес области передачи данных, созданной DOS. Известно, впрочем, что в качестве DTA DOS использует область PSP от байта 80h до конца. DOS помещает в DTA информацию о найденном файле (атрибуты, время и дата создания, размер и т.д.). В частности, в байтах lEh...2Ah DTA содержится имя и расширение файла в виде строки ASCIIZ .

При поиске файлов по заданному шаблону сначала активизируется функция 4Eh. В регистры DS:DX помещается адрес строки ASCIIZ с путем к рассматриваемому каталогу, а в регистр СХ - код комбинации атрибутов искомого файла. О обозначает "нормальный" файл, т.е. файл без атрибутов, 1 - только для чтения, 2 - скрытый, 4 - системный, 8 - метка тома, 10h - каталог, 20h - атрибут архивации. Если установлены атрибуты поиска, то ищутся как нормальные файлы, так и файлы с заданными атрибутами. В случае успешного нахождения заданного файла функция возвращает CF=0, а имя и расширение файла в виде строки ASCIIZ помещаются в DTA, в байты lEh...2Ah. Получив имя файла, можно открыть его с помощью функции 3Dh и выполнить далее требуемые операции (чтение, запись и т.д.).

Поиск следующих файлов, удовлетворяющих условиям заданного шаблона, осуществляется с помощью функции 4Fh которая используется так же, как и функция 4Eh поиска первого файла. При необходимости функцию 4Fh можно активизировать многократно, пока CF=1 не покажет, что все файлы, удовлетворяющие условиям заданного шаблона, исчерпаны.

Использование остальных перечисленных выше функций для работы с файлами не представляет особых трудностей.
1   2   3   4   5   6

Похожие:

Лекция №1 Введение iconАнализ к ф. м н., доцент Рудой Евгений Михайлович 2013-2014 уч год
Лекция (2 часа) Введение. Нормированные пространства. Компактные множества. Теорема Хана-Банаха
Лекция №1 Введение iconЛекция введение
Материалы данного файла могут быть использованы без ограничений для написания собственных работ с целью последующей сдачи в учебных...
Лекция №1 Введение iconЛекция «Сущность и проблемы вэд, состояние вэд в России» 1 час. 2...
Лекция «Внешнеэкономические операции и сделки: виды, классификация, организация» 1 час
Лекция №1 Введение iconЛекция 1 введение
Петрофизика сформировалась к началу 60-х годов, когда появились обобщаю­щие труды по всем вопросам изучения физических свойств пород...
Лекция №1 Введение icon1. Лекция: Введение. История, предмет, структура информатики
Хотя информатика и считается достаточно молодой наукой по отношению ко многим другим отраслям знания, но предпосылки к ее зарождению...
Лекция №1 Введение iconЛекция №1. Введение в Экономикс. Основная проблема экономики и производственные...
Под материальными потребностями подразумевается желания потребителей приобрести и использовать товары и услуги, которые доставят...
Лекция №1 Введение iconЛекция №1
Лекция № Общие принципы эффективной организации учебного процесса. Физиологиче­ская цена учебных нагрузок
Лекция №1 Введение iconЛекция №1
Лекция № Общие принципы эффективной организации учебного процесса. Физиологиче­ская цена учебных нагрузок
Лекция №1 Введение iconЛекция №1
Лекция № Общие принципы эффективной организации учебного процесса. Физиологиче­ская цена учебных нагрузок
Лекция №1 Введение iconЛекция №1
Лекция № Общие принципы эффективной организации учебного процесса. Физиологиче­ская цена учебных нагрузок
Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
litcey.ru
Главная страница