Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

636

.pdf
Скачиваний:
5
Добавлен:
13.02.2021
Размер:
2.16 Mб
Скачать

151

4.3.5 Файловая система ОС UNIX

Файловая система UNIX имеет иерархическую структуру каталогов и файлов, включая корневой каталог. Файловая система располагается на устройстве, которое обычно является магнитным диском того или иного типа. Если диск достаточно велик, он может быть разбит на несколько логических дисков; тогда на каждом логическом диске может быть размещена отдельная файловая система. Каждая файловая система, прежде чем стать доступной, должна быть смонтирована.

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

1)загрузочный блок – это первый блок диска (блок 0), зарезервированный для системной загрузочной программы;

2)суперблок – это первый блок собственно файловой системы (блок 1), содержащий основные данные о файловой системе и ее размещении на диске, в том числе о списках свободных i-узлов и блоков;

3)i-узлы – это последовательность блоков, следующих за суперблоком. I-узел содержит ссылки на блоки. Имеется ровно один i-узел для каждого каталога или файла в файловой системе;

4)блоки – это блоки, которые занимают оставшееся пространство диска и содержат либо действительные данные каталогов и файлов (блоки данных), либо ссылки на блоки (косвенные блоки).

Суперблок содержит следующие данные:

- размер дискового пространства, доступного файловой системе (в блоках);

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

- время последнего изменения;

- время последнего копирования (back up); - ссылку на список свободных блоков;

- ссылку на список свободных i-узлов.

Структурафайловойсистемы UNIX представлена на рис. 4.3.

152

 

 

 

 

 

 

 

 

 

 

 

Загрузоч-

 

Супер-

 

 

i-узлы

 

 

 

Блоки

 

ный блок

 

 

 

 

 

 

 

 

блок

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Список свободных

i-узлов Список свободных блоков

Рис. 4.3 Структура файловой системы UNIX

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

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

Структура i-узлов и блоков файла для UNIX показана на рис. 4.4. Каждый i-узел содержит 13 указателей.

Первые 10 указателей непосредственно ссылаются на блоки данных файла. Поскольку блок содержит 512 байтов, то этого достаточно для обработки файлов до 5120 байтов (512 ×10).

Если длина файла больше 5120 байт, используется 11-й указатель i-узла, который ссылается на косвенный блок из 128 ссылок на блоки данных. Использование косвенного блока позволяет увеличить длину файла до величины 70656 байт (512 × (10 + 128)).

Если и этого недостаточно, то используется 12-й указатель i-узла, ссылающийся на дважды косвенный блок, содержащий 128 ссылок на косвенные блоки. Тогда максимальный размер файла увеличивается до величины 8459264 байта (512×(10+1282). Наконец, использование последнего 13-го указателя на трижды косвенный блок из 128 ссылок на дважды косвенные блоки дает предельную длину в файловой системе –

1082201088 байтов (512×(10+128+1282+1283). Другие версии системы UNIX могут отличаться количеством ссылок в i-узле, косвенных блоках и размером блока данных.

153

 

i-узел

 

 

> -------

 

 

 

-------

 

 

 

-------

 

 

 

 

>│-----

 

 

-----------

 

 

 

│ -----

 

 

 

│-----

 

 

│Информация││------

 

> │ -----

-->-------

128 │

│-----

 

 

│ о файле

│││

 

│ -----

+

│ :

-----

│---------

 

 

│││

 

│ -----

│ │

 

│Блоки│

│ 1

 

+-│

 

│ : │ │ -------

 

 

│---

>│-----

│ ---

>│---

│----------

2

 

│ │

 

│ Блоки │

│Косвенный

 

-------

│---

 

+--

 

│ -----

блок

 

 

 

+--

>│---

│----------

:

 

 

│ -----

 

 

-------

│ 128 │

+--

>│---

 

 

│ -----

 

 

-->

--│

│---

:

 

-->│-----

 

 

 

--->│---

│----------

10

 

-------

 

 

 

-------

--->│---

 

+-----

-------

 

 

 

 

-->│ 128 │

--│

│---

│----------

11

 

 

 

 

 

 

-------.

+--

>│---

 

+-----------

 

 

 

 

 

+--

>│---

│----------

12

 

 

 

>

--------

│ 128

 

.

│---

 

+---------------

 

 

 

--

│-+

.

--->│---

│----------

13

 

 

 

--------

Дважды

.

 

│---

 

+---

 

 

 

.

--->│---

------------

 

 

 

 

 

 

косвенный│

.

│---

 

 

 

 

 

 

 

блок

.

+--

>│ : │

 

 

 

 

 

--->-------

 

-------128

+--

>│---

 

 

 

 

 

-----

--│

│---

 

 

 

 

 

-----

│->

-------

--->│---

 

 

 

 

-------

-----:

 

│---

 

-----------

 

 

 

│->

--->│---

 

 

 

-->

│ 128 │

--+

-----

 

│ 128 │

--│

│---

 

 

 

------- .

--->│

-----

 

-------

+--

>│---

 

 

----- │

 

-----

 

 

│ : │

 

->│128│-│

.

--->│

-----

 

 

+--

>│---

 

-----.

.

-----

 

 

│---

 

-------

-----

 

 

--->│---

---+---

.

-->│ 128 │

--+

-----:

 

 

 

-----

│ 128 +-+

 

-------

 

 

 

Блоки

---+---

.

 

 

--->│

-----

 

 

 

 

 

Трижды

 

 

--->│

-----:

 

 

 

 

 

косвенный

.

 

-------

 

 

 

 

 

блок

 

│ 128 │-+

│Блоки│

 

 

 

 

 

 

 

 

-- ------->

│-----

 

 

 

 

 

 

 

 

----- │

.

--->│-----

 

 

 

 

 

 

 

 

-->│128│-│

.

--->│-----

 

 

 

 

 

 

 

 

 

----- │

.

│-----

 

 

 

 

 

 

 

 

 

 

│ -------

 

│-----

 

 

 

 

 

 

 

 

 

 

-->│ 128 │-+

│-----

:

 

 

 

 

 

 

 

 

 

-------

 

 

 

 

 

 

 

 

 

 

 

 

--->│-----

 

 

 

 

 

 

 

 

 

 

 

 

 

-------

 

 

 

 

 

Рис. 4.4 Структура i-узлов и блоков файла для UNIX

154

Когда система загружается, имеется только одна из файловых систем, называемая корневой. В ней находятся все важнейшие каталоги (/dev,/etc, /bin и т.п.). Все остальные файловые системы должны быть созданы и смонтированы.

Команда mkfs создает новую файловую систему. Она расположена в каталоге /etc и имеет два параметра:

/etc/mkfs <имя> <размер>

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

Пример создания файловой системы на флоппи-диске:

/etc/mkfs /dev/flo 2000 isize = 230

Ответное сообщение указывает число блоков, выделенных для размещения i-узлов.

Монтирование файловой системы UNIX для какой-либо ОС осуществляется посредством команды mount. Эта команда подключает корневой каталог монтируемой файловой системы в один из каталогов корневой файловой системы. Команда расположена в каталоге /etc и имеет два параметра:

/etc/mount <устройство> <каталог>

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

Чтобы выяснить, какие файловые системы смонтированы в данный момент, надо выполнить команду mount без параметров:

mount

/dev/fl0 on /floppy0

Ответом является сообщение об этих системах (в данном случае об одной системе). Оно формируется на основе данных о монтаже файловых систем, хранимых в файле /etc/mnttab.

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

155

Если файловая система на съемном устройстве больше не используется, ее можно демонтировать командой umount, расположенной в каталоге /etc и имеющей один параметр:

umount <устройство>

Например, демонтаж файловой системы на гибком диске из предыдущего примера выполняется командой:

umount /dev/fl0

Результатом демонтажа является разрыв связи между корневым каталогом демонтируемой файловой системы и каталогом корневой файловой системы, в котором производился монтаж. При выполнении команды демонтажа текущий каталог должен быть вне демонтируемой файловой системы, иначе будет выдано сообщение о том, что устройство занято (umount : device busy), и команда не будет выполнена.

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

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

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

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

-существование некоторых файлов, которые не включены ни в один каталог.

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

-блок данных, являющийся каталогом, содержит имена файлов и номера i-узлов; где-то имеется i-узел, соответствую-

156

щий этому каталогу, и этот i-узел должен быть каталогом, а не обычным файлом;

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

-аналогично, блок, принадлежащий файлу, должен принадлежать только одному файлу; это легко проверить.

Эти и другие виды избыточности использует программа проверки файловой системы, запускаемая командой fsck (file system check). В различных реализациях существуют разные команды проверки целостности файловой системы: icheck, dcheck, ncheck. Однако все они в большей или меньшей степени перекрываются командой fsck.

Команда fsck выполняется в несколько фаз, на которых производится следующая работа:

-проверка целостности i-узлов (счетчик связи, тип и формат i-узла);

-проверка каталогов, указывающих на i-узлы, содержащие ошибки;

-проверка каталогов, на которые нет ссылок;

-проверка счетчиков связей в каталогах и файлах;

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

Команда по умолчанию всегда проверяет корневую файловую систему: все другие файловые системы проверяются, если их имена занесены в файл /etc/checklist.

После выполнения fsck, связанного с «починкой» файловой системы, может появиться сообщение

***** BOOT UNIX (NO SYNC!) *****,

требующее перезагрузки системы без выполнения команды sync.

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

157

их обновления требуется перезагрузка без выгрузки буферов на диск командой sync.

Необходимым условием правильной работы fsck является также наличие пустого каталога /lost+found в корневом каталоге.

Если при выполнении fsck будут найдены каталоги, на которые никто не ссылается в проверяемой файловой системе, они будут подключены в каталог /lost+found для дальнейшего изучения их принадлежности.

4.3.6 Файловые системы для CD-ROM

4 . 3 . 6 . 1 Файловая система C D F S

В Windows 2000 обеспечивается поддержка файловой сис-

темы CDFS (Compact Disk File System), отвечающей стандарту

ISO'9660, описывающему расположение информации на CDROM. Поддерживаются длинные имена файлов в соответствии с

ISO'9660 Level 2 [15].

При создании CD-ROM под управлением Windows 2000 следует иметь в виду следующее:

-все имена каталогов и файлов должны содержать менее 32 символов;

-все имена каталогов и файлов должны состоять только из символов верхнего регистра;

-глубина каталогов не должна превышать 8 уровней от

корня;

-использование расширений имен файлов не обязательно.

4 . 3 . 6 . 2 Файловая система U D F

Поддержка файловой системы UDF (Universal Disk Format) является одним из новшеств в Windows 2000. UDF – это файловая система, отвечающая стандарту ISO'13346 и используемая для обмена данными с накопителями CD-ROM и DVD. В настоящее время поддерживаются только диски версий UDF 1.02

и 1.50 [15].

158

Вопросы для самопроверки

1.На какие классы делятся устройства внешней памяти по методу доступа?

2.Назовите общие параметры устройств внешней памяти.

3.Назовите общие параметры жестких дисков.

4.Опишите структуру магнитного диска (разбиение дисков на разделы). Сколько разделов может быть на магнитном диске? Каково назначение разделов магнитного диска?

5.В какой последовательности ОС дает имена разделам на жестком диске, если в ПК подключают два жестких диска с различными типами разделов?

6.Как в общем случае осуществляется загрузка ОС после включения компьютера?

7.Приведите основные характеристики FAT16? Что такое кластер? От каких параметров зависит его размер?

8.Приведите основные характеристики FAT32.

9.Приведите основные характеристики NTFS.

10.Приведите основные характеристики HPFS. За счет чего в файловой системе HPFS обеспечена высокая производительность?

11.Приведите основные характеристики файловой систе-

мы ОС UNIX?

12.Где используются файловые системы CDFS и UDF?

159

5.АРХИТЕКТУРЫ ОПЕРАЦИОННЫХ СИСТЕМ И ИНТЕРФЕЙСЫ ПРИКЛАДНОГО ПРОГРАММИРОВАНИЯ

5.1Основные принципы построения операционных систем

Существует множество принципов построения операционных систем. Рассмотрим основные из них [2].

5 . 1 . 1 . 1 Принцип модульности

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

Особо важное значение при построении ОС имеют привилеги-

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

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

160

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

5 . 1 . 1 . 2 Принцип функциональной избирательности

В ОС выделяется некоторая часть важных модулей, которые должны постоянно находиться в оперативной памяти для более эффективной организации вычислительного процесса. Эту часть в ОС называют ядром, так как это – основа системы. При формировании состава ядра требуется учитывать два противоречивых требования. С одной стороны, в состав ядра должны войти наиболее часто используемые системные модули, с другой – количество модулей должно быть таковым, чтобы объем памяти, занимаемый ядром, не был слишком большим. В состав ядра, как правило, входят модули по управлению системой прерываний, средства по переводу программ из состояния счета в состояние ожидания, готовности и обратно, средства по распределению таких основных ресурсов, как оперативная память и процессор. Помимо программных модулей, входящих в состав ядра и постоянно располагающихся в оперативной памяти, может быть много других системных программных модулей, которые получают название транзитных. Транзитные программные модули загружаются в оперативную память только при необходимости и в случае отсутствия свободного пространства могут быть замещены другими транзитными модулями. В качестве синонима к термину «транзитный» можно использовать термин «диск-резидентный».

5 . 1 . 1 . 3 Принцип генерируемости ОС

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]