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

Операционные среды, системы и оболочки. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
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-узлов
Рис. 4.3 − Структура файловой системы UNIX
i-узлы
Список свободных блоков
Блоки
Каждый файл и каждый каталог в файловой системе представлен
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+128
2
). Наконец, использование последнего 13-го указа-
теля на трижды косвенный блок из 128 ссылок на дважды кос­венные блоки дает предельную длину в файловой системе –
1082201088 байтов (512×(10+128+128
2
+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 Файловая система CDFS
В Windows 2000 обеспечивается поддержка файловой сис­темы CDFS (Compact Disk File System), отвечающей стандарту
ISO'9660, описывающему расположение информации на CD­ROM. Поддерживаются длинные имена файлов в соответствии с ISO'9660 Level 2 [15].
При создании CD-ROM под управлением Windows 2000 следует иметь в виду следующее:
- все имена каталогов и файлов должны содержать менее
32 символов;
- все имена каталогов и файлов должны состоять только
из символов верхнего регистра;
- глубина каталогов не должна превышать 8 уровней от
корня;
- использование расширений имен файлов не обязательно.
4.3.6.2 Файловая система UDF
Поддержка файловой системы 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 Принцип генерируемости ОС
Суть принципа состоит в организации (выборе) такого спо­соба исходного представления центральной системной управ­ляющей программы ОС (ядра и постоянно находящихся в опе­ративной памяти основных компонентов), который позволял бы