Отображаемый на адресное пространство памяти ввод-вывод.

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

У многих устройств есть буфер данных (например: видеопамять).

Реализации доступа к управляющим регистрам и буферам:

номер порта ввода-вывода – назначается каждому управляющему регистру 8- или 16-рзрядное целое число. Адресные пространства ОЗУ и устройства ввода-вывода в этой схеме не пересекаются.

Недостатки

- для чтения и записи применяются специальные команды, например: IN и OUT

- необходим специальный механизм защиты от процессов

- необходимо сначала считать регистр устройства в регистр процессора

отображаемый на адресное пространство памяти ввод-вывод – регистры отображаются на адресное пространство памяти.

Недостатки

- при кэшировании памяти, могут кэшироваться и регистры устройств

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

смешанная реализация – используется в х86 и Pentium,

- от 0 до 64К отводится портам,

- от 640 до 1М зарезервировано под буферы данных.

Рисунок 4.1 – Способы реализации доступа к управляющим регистрам и буферам

4.1.3 Прямой доступ к памяти (DMA – Direct Memory Access)

Прямой доступ к памяти реализуется с помощью DMA – контроллера. Контроллер содержит несколько регистров:

·  регистр адреса памяти;

·  счетчик байтов;

·  управляющие регистры, могут содержать:

-  порт ввода-вывода;

-  чтение или запись;

-  единицы переноса (побайтно или пословно).

Без контроллера происходит следующее:

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

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

3.  Контроллер диска инициирует прерывание;

4.  Операционная система начинает работать и может считывать из буфера данные в память.

Рисунок 4.2 – Работа DMA – контроллера

С контроллером происходит следующее:

1.  Процессор программирует контроллер (какие данные и куда переместить).

2.  Процессор дает команду дисковому контроллеру прочитать данные в буфер.

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

4.  Контроллер DMA посылает запрос на чтение дисковому контроллеру.

5.  Контроллер диска поставляет данные на шину, адрес памяти уже находится на шине, происходит запись данных в память.

6.  Когда запись закончена, контроллер диска посылает подтверждение DMA контроллеру.

7.  DMA контроллер увеличивает используемый адрес и уменьшает значение счетчика байтов.

8.  Все повторяется с пункта 4, пока значение счетчика не станет равной нулю.

9.  Контроллер DMA инициирует прерывание.

Операционной системе не нужно копировать данные в память, они уже там.

4.1.4 Прерывания

После того как устройство ввода-вывода начало работу, процессор переключается на другие задачи.

Чтобы сигнализировать процессору об окончании работы, устройство инициализирует прерывание, выставляя сигнал на выделенную устройству линию шины (а не выделенный провод).

Контроллер прерываний – обслуживает поступающие прерывания от устройств.

1.  Если необработанных прерываний нет, прерывание выполняется немедленно.

2.  Если необработанных прерываний есть, контроллер игнорирует прерывание. Но устройство продолжает удерживать сигнал прерывания на шине до тех пор, пока оно не будет обработано.

Алгоритм работы:

-  Устройство выставляет сигнал прерывания;

-  Контроллер прерываний инициирует прерывание, указывая номер устройства;

-  Процессор начинает выполнять обработку прерывания, вызывая процедуру;

-  Эта процедура подтверждает получение прерывания контроллеру прерываний.

Рисунок 4.3 – Работа прерываний

4.2 Принципы программного обеспечения ввода-вывода

4.2.1 Задачи программного обеспечения ввода-вывода

Основные задачи, которые должно решать программное обеспечение ввода-вывода:

-  Независимость от устройств – например, программа, читающая данные из файла не должна задумываться с чего она читает (CD, HDD и др.). Все проблемы должна решать ОС.

-  Единообразное именование – имя файла или устройства не должны отличаться. (В системах UNIX выполняется дословно).

-  Обработка ошибок – ошибки могут быть отловлены на уровне контроллера, драйвера и т. д.

-  Перенос данных – синхронный и асинхронный (в последнем случае процессор запускает перенос данных, и переключается на другие задачи до прерывания).

-  Буферизация.

-  Проблема выделенных (принтер) и невыделенных (диск) устройств – принтер должен предоставляться только одному пользователю, а диск многим. ОС должна решать все возникающие проблемы.

Три основных способа осуществления операций ввода-вывода:

-  Программный ввод-вывод;

-  Управляемый прерываниями ввод-вывод;

-  Ввод-вывод с использованием DMA.

Рассмотрим их подробнее.

4.2.2 Программный ввод-вывод

В этом случае всю работу выполняет центральный процессор. Рассмотрим процесс печати строки ABCDEFGH этим способом.

Рисунок 4.4 – Этапы печати строки ABCDEFGH

Алгоритм печати:

1.  Строка для печати собирается в пространстве пользователя.

2.  Обращаясь к системному вызову, процесс получает принтер.

3.  Обращаясь к системному вызову, процесс просит распечатать строку на принтере.

4.  Операционная система копирует строку в массив, расположенный в режиме ядра.

5.  ОС копирует первый символ в регистр данных принтера, который отображен на памяти.

6.  Символ печатается на бумаге.

7.  Указатель устанавливается на следующий символ.

8.  Процессор ждет, когда бит готовности принтера выставится в готовность.

9.  Все повторяется.

При использовании буфера принтера, сначала вся строка копируется в буфер, после этого начинается печать.

4.2.3 Управляемый прерываниями ввод-вывод

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

Рассмотрим тот же пример, но с небольшим усовершенствованием.

Алгоритм печати:

1.  До пункта 8 тоже самое.

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

3.  Когда принтер будет готов, он посылает прерывание процессору.

4.  Процессор переключается на печатающий процесс.

4.2.4 Ввод-вывод с использованием DMA

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

Алгоритм не отличается, но всю работу на себя берет контроллер DMA.

4.3 Программные уровни и функции ввода-вывода

Уровня ввода-вывода:

Уровень пользователя

Устройство-независимое программное обеспечение ОС

Драйверы устройств

Обработчики прерываний

Аппаратура

4.3.1 Обработчики прерываний

Прерывания должны быть скрыты как можно глубже в недрах операционной системы, чтобы как можно меньшая часть ОС имела с ними дело. Лучше всего блокировать драйвер, начавший ввод-вывод.

Алгоритм:

1)  Драйвер начинает операцию ввод-вывод.

2)  Драйвер блокирует сам себя,

-  выполнив на семафоре процедуру down;

-  выполнив на переменной состояния процедуру wait;

-  выполнив на сообщении процедуру receive;

3)  Происходит прерывание.

4)  Обработчик прерываний начинает работу.

5)  Обработчик прерываний может разблокировать драйвер (например, выполнив на семафоре процедуру up).

4.3.2 Драйвера устройств

Драйвер устройства – необходим для каждого устройства. Для разных ОС нужны разные драйверы.

Рисунок 4.5 – Логическое расположение драйверов устройств (на самом деле обмен данными между контроллерами и драйверами идет по шине)

Драйверы должны быть частью ядра (в монолитной системе), что бы получить доступ к регистрам контроллера.

Это одна из основных причин, приводящих к краху операционных систем. Потому что драйверы, как правило, пишутся производителями устройств, и вставляются в ОС.

Драйвера должны взаимодействовать с ОС через стандартные интерфейсы.

Стандартные интерфейсы, которые должны поддерживать драйвера:

-  Для блочных устройств;

-  Для символьных устройств.

Раньше для установки ядра приходилось перекомпилировать ядра системы.

Сейчас в основном ОС загружают драйверы. Некоторые драйверы могут быть загружены в горячем режиме.

Функции, которые выполняют драйвера:

-  обработка запросов чтения или записи;

-  инициализация устройства;

-  управление энергопотреблением устройства;

-  прогрев устройства (сканера);

-  включение устройства или запуска двигателя.

Использованная литература

1.  Гордеев, системы : учебник для студентов вузов по специальности "Информатика и вычислительная техника" / . - 2-е изд. - СПб. : Питер, 20с. : ил. - (Учебник для вузов. Гр.). - ISBN -632-3.

2.  Карпов, операционных систем : курс лекций ; учеб. пособие / , ; под ред. . - 2-е изд., доп. и испр. - М. : Интернет-ун-т информ. технологий, 20с. - (Учебник для вузов. Гр.). - ISBN 0044-4.

3.  . Операционные системы, 2-ое издание. – СПб. : Питер, 2004. ISBN: -Х.

Лекция 5

ДИСКИ

5.1 Аппаратная часть дисков

5.2 Форматирование дисков (программная часть)

5.3 Обработка ошибок

5.1 Аппаратная часть дисков

5.1.1 Магнитные диски

Основные понятия:

Головка (Head) – электромагнит, скользящий над поверхностью диска, для каждой поверхности используется своя головка. Нумерация начинается с 0.

Дорожка (Track) – концентрическая окружность, которое может прочитать головка в одной позиции. Нумерация дорожек начинается с внешней (первая имеет номер – 0).

Цилиндр (Cylinder) – совокупность всех дорожек с одинаковым номером на всех дисках, т. к. дисков может быть много и на каждом диске запись может быть с двух сторон.

Маркер – от него начинается нумерация дорожек, есть на каждом диске.

Сектор – на сектора разбивается каждая дорожка, сектор содержит минимальный блок информации. Нумерация секторов начинается от маркера.

Геометрия жесткого диска – набор параметров диска, количество головок, количество цилиндров и количество секторов.

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

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

Рисунок 5.1 – Физическая а) и виртуальная б) геометрия диска

5.1.2 RAID (Redundant Array of Independent Disk – массив независимых дисков с избыточностью)

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

RAID 0 – чередующий набор, соединение нескольких дисков в один большой логический диск, но логический диск разбит так, что запись и чтение происходит сразу с несколько дисков. Например, записываем блок 1, 2, 3, 4, 5, каждый блок будет записываться на свой диск.

Преимущества:

-  удобство одного диска;

-  увеличивает скорость записи и чтения.

Недостатки:

-  уменьшает надежность (в случае выхода одного диска, массив будет разрушен), избыточность не предусмотрена.

RAID 1 – зеркальный набор, параллельная запись и чтение на несколько дисков с дублированием (избыточность).

Преимущества:

-  дублирование записей;

-  увеличивает скорость чтения (но не записи).

Недостатки:

-  требует в два раза больше дисковых накопителей.

RAID 4 – аналогичен уровню RAID 0, но с добавлением диска четности. Если любой из дисков выйдет из строя, его можно восстановить с помощью диска четности.

Преимущества:

-  надежность;

-  не нужна синхронизация дисков.

Недостатки:

-  не дает увеличения производительности, узким местом становится диск четности при постоянных пересчетах контрольных сумм.

RAID 5 – аналогичен уровню RAID 4, но биты четности равномерно распределены по дискам.

На практике, как правило, используют RAID 0, 1 и 5.

Рисунок 5.2 – Системы RAID уровней 0, 1, 4 и 5.

5.1.3 Компакт-диски (CD-ROM)

Запись на CD-ROM диски производятся с помощью штамповки.

Сначала CD-диски использовались только для записи звука, стандарт которого был описан ISO 10149 ("Красная книга"). Вводится понятие «пит» – единица записи информации (впадина при штамповке, темное пятно, прожженное в слое краски в CD-R, область фазового перехода).

В 1984 году была опубликована "Желтая книга", в которой описан следующий стандарт.

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

Рисунок 5.3 – Запись на

CD-ROM производится

спирально

Рисунок 5.4 – Логическое расположение данных на CD-ROM для режима 1

Заголовок содержит:

§  Первые 12 байт заголовка содержат 00FFFFFFFFFFFFFFFFFFFF00, чтобы считывающее устройство могло распознать начало сектора.

§  Следующие три байта содержат номер сектора.

§  Последний байт содержит код режима.

На рисунке 5.4 – ECC (Error Correction Code) – код исправления ошибок.

В режиме 2 поле данных объединено с полем ECC в 2336-байтное поле данных. Этот режим можно использовать, если не требуется коррекция ошибок, например, видео и аудио запись.

Коррекция ошибок осуществляется на трех уровнях:

§  внутри символа;

§  в кадре;

§  в CD-ROM-секторе.

Поэтому 7203 байта содержат только 2048 байта полезной нагрузки, около 28%.

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

Файловая система для CD-ROM называется High Sierra , которая оформлена в стандарт ISO 9660.

Файловая система имеет три уровня:

1 уровень – файлы имеют имена формата, схожего с MS-DOS – 8 символов имя файла плюс до трех символов расширения, файлы должны быть непрерывными. Глубина вложенности каталогов ограничена восемью. Этот уровень понимают почти все операционные системы.

2 уровень – имена файлов могут быть до 32 символов, файлы должны быть непрерывными.

3 уровень – позволяет использовать сегментированные файлы.

5.1.4 Компакт-диски с возможностью записи (CD-R)

Запись на CD-R диски производятся с помощью локального прожигания нанесенного слоя красителя.

Используются лазеры с двумя уровнями разной мощности, для записи 8-16 мВт, для чтения 0,5 мВт.

В 1989 году была выпущена "Оранжевая книга", это документ определяет формат CD-R, а также новый формат CD-ROM XA , который позволяет посекторно дописывать информацию на CD-R.

CD-R-дорожка – последовательно записанные за один раз секторы. Для каждой такой дорожки создается свой VTOC (Volume Table of Contents – таблица содержания тома), в котором перечисляются записанные файлы.

Каждая запись производится за одну непрерывную операцию, поэтому если у вас будет слишком загружен компьютер (мало памяти или медленный диск), то вы можете испортить диск, т. к. данные не будут поспевать поступать на CD-ROM.

5.1.5 Многократно перезаписываемые компакт-диски (CD-RW)

Запись на CD-RW диски производятся локального перевода слоя из кристаллического в аморфное состояние.

Используются лазеры с тремя уровнями разной мощности.

Эти диски можно отформатировать (UDF), использовать их в место дискет и дисков.

5.1.6 Универсальный цифровой диск DVD (Digital Versatile Disk)

В этом формате были введены изменения:

§  Размер пита уменьшили в два раза (с 0,8 мкм до 0.4мкм);

§  Расстояние между дорожками уменьшено (0,74 вместо 1,6 у CD-ROM);

§  Уменьшена длина волны лазера (0,65 вместо 0,78).

Это позволило увеличить объем с (700) Мбайт до 4,7 Гбайт.

§  Определены четыре следующих формата:

§  Односторонний, одноуровневый (4,7 Гбайт);

§  Односторонний, двухуровневый (8,5 Гбайт), размеры пита второго уровня приходится делать больше, иначе не будут считаны, т. к. первый полуотражающий слой половину потока отразит и частично рассеет;

§  Двухсторонний, одноуровневый (9,4 Гбайт);

§  Двухсторонний, двухуровневый (17 Гбайт).

5.2 Форматирование дисков (программная часть)

5.2.1 Низкоуровневое форматирование

Низкоуровневое форматирование – разбивка диска на сектора, производится производителями дисков.

Каждый сектор состоит из:

§  Заголовка (Prefix portion) – по которому определяется начало (последовательность определенных битов) сектора и его номер, и номер цилиндра.

§  Области данных (как правило, 512 байт).

§  Конец сектора (Suffix portion) – содержит контрольную сумму ECC (Error Correction Code – код корректировки ошибок). Позволяет обнаружить или даже исправить ошибки чтения. Размер зависит от производителя, и показывает, как производитель относится к надежности работы диска.

На диске могут быть запасные сектора, которые могут быть использованы для замены секторов с дефектами (а они почти всегда есть). За счет этого обеспечивается одинаковая емкость на выходе.

При низкоуровневом форматировании часть полезного объема уменьшается, примерно до 80%.

Заголовок

ДАННЫЕ (512 байт)

ЕСС

(контрольная

сумма)

Рисунок 5.5 – Структура сектора диска

Перекос цилиндров – сдвиг 0-го сектора каждой последующей дорожки, относительно предыдущей. Служит для увеличения скорости.

Головка записи/чтения тратит, какое то время на смену дорожки, и если 0-й сектор будет начинаться в том же месте, что и предыдущий, то головка уже проскочит его, и будет ждать целый круг.

Перекос цилиндров делают разным в зависимости скоростей вращения и перемещения головок.

Перекос головок – приходится применять, т. к. на переключение с головки на головку тратится время.

Рисунок 5.6 – Перекос цилиндров

Чередование секторов

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

Рисунок 5.7 – Чередование секторов

Если копирование очень медленное, может применяться двукратное чередование, или больше.

5.2.2 Разделы диска

После низкоуровневого форматирования диск разбивается на разделы, эти разделы воспринимаются ОС как отдельные диски.

Для чего можно использовать разделы:

§  Отделить системные файлы от пользовательских (например, своп-файлы)

§  Более эффективно использовать пространство (например, для администрирования).

§  На разные разделы можно установить разные ОС.

Основные разделы диска:

Первичный (Primary partition) – некоторые ОС могут загружаться только с первичного раздела.

Расширенный (Extended partition) – непосредственно данные не содержит, служит для создания логических дисков (создается, что бы обойти ограничение в 4 раздела).

Логический (Logical partition) – может быть любое количество.

Информация о разделах записывается в 0-м секторе 0-го цилиндра, головка 0. И называется таблицей разделов.

Таблица разделов (Partition Table) – содержит информацию о разделах, номер начальных секторов и размеры разделов. На Pentium-компьютерах в таблице есть место только для четырех записей, т. е. может быть только 4 раздела (к логическим это не относится, их может быть не ограниченное количество).

Этот сектор называется главной загрузочной записью.

Главная загрузочная запись MBR (Master Boot Record) – содержит загрузочную программу и таблицу разделов.

Активный раздел – раздел, с которого загружается ОС, может быть и логическим. В одном сеансе загрузки может быть только один активный раздел.

В Windows разделы будут называться устройствами C:, D:, E: и т. д.

MBR

Первичный раздел

Расширенный раздел

Логический раздел 1

Логический раздел 2

Логический раздел 3

Логический раздел 4

Логический раздел 5

...

...

...

Рисунок 5.8 – Пример структуры разделов

5.2.3 Высокоуровневое форматирование

Высокоуровневое форматирование (создание файловой системы) – проводится для каждого раздела в отдельности, и выполняет следующее:

§  Создает загрузочный сектор (Boot Sector);

§  Создает список свободных блоков (для UNIX) или таблицу (ы) размещения файлов (FAT – File Allocation Table) (для FAT или NTFS);

§  Создает корневой каталог;

§  Создает, пустую файловую систему;

§  Указывает, какая файловая система;

§  Помечает дефектные кластеры.

Кластеры и блоки – единица хранения информации в файловых системах, файлы записываются на диск, разбитыми на блоки ли кластеры.

При загрузке системы, происходит следующее:

§  Запускается BIOS;

§  BIOS считывает главную загрузочную запись, и передает ей управление;

§  Загрузочная программа определяет, какой раздел активный;

§  Из этого раздела считывается и запускается загрузочный сектор;

§  Программа загрузочного сектора находит в корневом каталоге определенный файл (загрузочный файл);

§  Этот файл загружается в память и запускается (ОС начинает загрузку).

5.3 Обработка ошибок

Т. к. создать диск без дефектов сложно, а вовремя использования появляются новые дефекты.

Поэтому системе приходится контролировать и исправлять ошибки.

Ошибки могут быть обнаружены на трех уровнях:

§  На уровне дефектного сектора ECC (используются запасные, делает сам производитель)

§  Дефектные блоки или кластеры могут обрабатываться контроллером или самой ОС.

Блоки и кластеры не должны содержать дефектные сектора, поэтому система должна уметь помечать дефектные сектора.

Рисунок 5.9 – Способы замены дефектных кластеров

5.4 Стабильное запоминающее устройство

RAID могут защитить от выхода из строя сектора и даже целые диски, но они не могут защитить от сбоев во время записи (могут быть записаны не верные данные, или не туда).

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

В рассматриваемой модели учитывается следующее:

§  Запись блока может быть проверена при последующем чтении и изучении ECC.

§  Правильно записанный сектор может стать дефектным и не читаться (но это происходит редко).

§  Допускается выход из строя центрального процесса.

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

Для достижения этой цели определены три операции:

1)  Стабильная операция записи состоит из следующих шагов:

-  запись блока на диск 1;

-  считывание этой записи для проверки, если обнаружена ошибка, то повторяется запись (и так несколько раз), если запись не удалась, то используется резервный блок;

-  все тоже повторяется для второго диска.

2)  Стабильная операция чтения состоит из следующих шагов:

-  считывается блок с диска 1;

-  проверяется на ошибки, если обнаружены считывание повторяется, и так несколько раз;

-  если все попытки с 1-м диском не удачны, все повторяется для второго.

3)  Восстановление от сбоев (например, по питанию) состоит из следующих шагов:

-  после сбоя программа восстановления сканирует оба диска и сравнивает соответствующие блоки;

-  если у одного обнаружена ошибка, то на место дефектного записывается нормальный блок;

-  если ошибок нет, но блоки не совпадают, то блок с диска 1 пишется поверх диска 2 (на диске 1 всегда более свежий блок).

Использованная литература

1.  Гордеев, системы : учебник для студентов вузов по специальности "Информатика и вычислительная техника" / . - 2-е изд. - СПб. : Питер, 20с. : ил. - (Учебник для вузов. Гр.). - ISBN -632-3.

Лекция 6

ИСПОЛЬЗОВАНИЕ ДИСКОВ

6.1 Файлы

6.2 Каталоги

6.3 Производительность файловой системы

6.1 Файлы

Требования к хранению информации:

§  возможность хранения больших объемов данных;

§  информация должна сохраняться после прекращения работы процесса;

§  несколько процессов должны иметь одновременный доступ к информации.

6.1.1 Именование файлов

Длина имени файла зависит от ОС, может быть от 8 (MS-DOS) до 255 (Windows, LINUX) символов.

ОС могут различать прописные и строчные символы. Например, WINDOWS и windows для MS-DOS одно и тоже, но для UNIX это разные файлы.

Во многих ОС имя файла состоит из двух частей, разделенных точкой, например windows. exe. Часть после точки называют расширением файла. По нему система различает тип файла.

У MS-DOS расширение составляет 3 символа. По нему система различает тип файла, а также можно его исполнять или нет.

У UNIX расширение ограничено размером имени файла в 255 символов, также у UNIX может быть несколько расширений, но расширениями пользуются больше прикладные программы, а не ОС. По расширению UNIX не может определить исполняемый это файл или нет.

6.1.2 Структура файла

Три основные структуры файлов:

§  Последовательность байтов – ОС не интересуется содержимым файла, она видит только байты. Основное преимущество такой системы, это гибкость использования. Используются в Windows и UNIX.

§  Последовательность записей – записей фиксированной длины (например, перфокарта), считываются последовательно. Сейчас не используются.

§  Дерево записей – каждая запись имеет ключ, записи считываются по ключу. Основное преимущество такой системы, это скорость поиска. Пока еще используется на мэйнфреймах.

Рисунок 6.1 – Три типа структур файла

6.1.3 Типы файлов

Основные типы файлов:

§  Регулярные – содержат информацию пользователя. Используются в Windows и UNIX.

§  Каталоги – системные файлы, обеспечивающие поддержку структуры файловой системы. Используются в Windows и UNIX.

§  Символьные – для моделирования ввода-вывода. Используются только в UNIX.

§  Блочные – для моделирования дисков. Используются только в UNIX.

Основные типы регулярных файлов:

1)  ASCII файлы – состоят из текстовых строк. Каждая строка завершается возвратом каретки (Windows), символом перевода строки (UNIX) и используются оба варианта (MS-DOS). Поэтому если открыть текстовый файл, написанный в UNIX, в Windows, то все строки сольются в одну большую строку, но под MS-DOS они не сольются (это достаточно частая ситуация). Основные преимущества ASCII файлов:

-  могут отображаться на экране, и выводится на принтер без преобразований;

-  могут редактироваться почти любым редактором.

2)  Двоичные файлы – остальные файлы (не ASCII). Как правило, имеют внутреннею структуру. Основные типы двоичных файлов:

-  Исполняемые – программы, их может обрабатывать сама операционная система, хотя они записаны в виде последовательности байт.

-  Неисполняемые – все остальные.

6.1.4 Доступ к файлам

Основные виды доступа к файлам:

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

§  Произвольный – файл можно читать с произвольной точки. Основное преимущество возникает, когда используются большие файлы (например, баз данных) и надо считать только часть данных из файла. Все современные ОС используют этот доступ.

6.1.5 Атрибуты файла

Основные атрибуты файла:

§  Защита – кто, и каким образом может получить доступ к файлу (пользователи, группы, чтение/запись). Используются в Windows и UNIX.

§  Пароль – пароль к файлу;

§  Создатель – кто создал файл;

§  Владелец – текущий владелец файла.

§  Флаг "только чтение" – 0 – для чтения/записи, 1 – только для чтения. Используются в Windows.

§  Флаг "скрытый" – 0 – виден, 1 – невиден в перечне файлов каталога (по умолчанию). Используются в Windows.

§  Флаг "системный" – 0 – нормальный, 1 – системный. Используются в Windows.

§  Флаг "архивный" – готов или нет для архивации (не путать сжатием). Используются в Windows.

§  Флаг "сжатый" – файл сжимается (подобие zip архивов). Используются в Windows.

§  Флаг "шифрованный" – используется алгоритм шифрования. Если кто-то попытается прочесть файл, не имеющий на это прав, он не сможет его прочесть. Используются в Windows.

§  Флаг ASCII/двоичный – 0 – ASCII, 1 – двоичный

§  Флаг произвольного доступа – 0 – только последовательный, 1 – произвольный доступ

§  Флаг "временный" – 0 – нормальный, 1 – для удаления файла по окончании работы процесса

§  Флаг блокировки – блокировка доступа к файлу. Если он занят для редактирования.

§  Время создания – дата и время создания. Используются UNIX.

§  Время последнего доступа – дата и время последнего доступа.

§  Время последнего изменения – дата и время последнего изменения. Используются в Windows и UNIX.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4