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

Учебное пособие 1461

.pdf
Скачиваний:
7
Добавлен:
30.04.2022
Размер:
1.19 Mб
Скачать

файлы будут отличаться только именем, все остальные атрибуты файла будут абсолютно одинаковыми. С точки зрения пользователя – это два разных файла. Изменения, внесённые в любой из этих файлов, затронут и другой. Удаление одного из них не приведёт к удалению самого файла. По определению жесткие связи указывают на один и тот же индексный дескриптор inode. Поэтому проверить, имеют ли два имени файла жёсткую связь, можно, вызвав команду ls с ключом – i. Информацию о наличии у файла нескольких имён можно получить с помощью команды ls – l. Во второй колонке указывается число жёстких связей данного файла.

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

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

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

4.10.2. Базовая файловая система. System V (s5fs)

Исконной файловой системой UNIX является s5fs. Файловая система FFS появилась позже, она обладает лучшей производительностью, функциональностью и надежностью. Файловые системы современных версий UNIX используют

111

базовые идеи, заложенные в системах s5fs и FFS, которые и сегодня поддерживаются в большинстве версий UNIX.

Каждый жесткий диск состоит из одной или нескольких логических частей, называемых разделами (partitions). В UNIX разделы выступают в качестве независимых устройств, доступ к которым осуществляется как к различным носителям данных. Каждый раздел имеет свою файловую систему. Файловая система s5fs занимает раздел диска и состоит из трёх основных компонентов:

суперблок. Содержит общую информацию о файловой системе;

массив индексных дескрипторов (ilist).

Содержит метаданные всех файлов файловой системы. Индексный дескриптор содержит статусную информацию о файле и указывает на расположение данных этого файла. Ядро обращается к inode по индексу в массиве ilist. Один inode является корневым (root) inode файловой системы, через него обеспечивается доступ к структуре каталогов и файлов. Размер массива ilist является фиксированным и задается при создании файловой системы. Таким образом, файловая система s5fs имеет ограничения по числу файлов, которые могут в ней храниться, независимо от размера этих файлов;

Блоки хранения данных. Занимают большую часть дискового раздела, и их число определяет максимальный суммарный объем данной файловой системы. Размер блока кратен 512 битам.

Суперблок считывается в память при монтировании файловой системы и находится там до её отключения. Суперблок содержит следующую информацию:

Тип файловой системы (s_type);

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

(s_fsize);

Размер массива индексных дескрипторов (s_isize);

112

Число свободных блоков, доступных для размещения

(s_tfree);

Число свободных inode, доступных для размещения

(s_tinode);

Флаги (флаг модификации s_fmod, флаг режима монтирования s_fronly);

Размер логического блока (512, 1024, 2048);

Список номеров свободных inode;

Список адресов свободных блоков.

Индексные дескрипторы. Индексный дескриптор не содержит:

Имени файла, которое содержится в блоках хранения данных каталога;

Содержимого файла, которое размещено в блоках хранения данных.

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

Основными полями дискового inode являются следующие:

Di_mode – тип файла, дополнительные атрибуты выполнения и права доступа;

Di_nlinks – число ссылок на файл, т.е. количество имён, которые имеет файл в файловой системе;

Di_uid, di_gid – идентификаторы владельцапользователя и владельца-группы;

Di_size – размер файла в байтах;

Di_atime – время последнего доступа к файлу;

Di_mtime – время последней модификации;

Di_ctime – время последней модификации inode кроме полей di_atime, di_mtime;

Di_addr[13] – массив адресов дисковых блоков хранения данных.

113

Индексный дескриптор содержит информацию о расположении данных файла. Эта информация хранится в виде массива, каждый элемент которого содержит физический адрес дискового блока, а индексом массива является номер логического блока файла. Массив имеет фиксированный размер и состоит из 13 элементов. При этом первые 10 адресуют непосредственно блоки хранения данных файла. Одиннадцатый элемент адресует блок, в свою очередь содержащий адрес блоков хранения данных. Двенадцатый элемент указывает на дисковый блок, также хранящий адреса блоков, каждый из которых адресует блок хранения данных файла. Тринадцатый элемент используется для тройной косвенной адресации, когда для нахождения адреса блока хранения данных файла используется три дополнительных блока.

Такой подход позволяет поддерживать работу с файлами с размером до десятка мегабайт. Для относительно небольших файлов (до 10 Кбайт при размере блока 1024 байт) используется прямая индексация, обеспечивающая максимальную производительность.

Для файлов, размер которых не превышает 266 Кбайт (10 Кбайт + 256*1024), достаточно простой косвенно адресации. При использовании тройной косвенной адресации можно обеспечить доступ к 16 777 216 блокам (256*256*256).

4.10.3. Файловая система FFS

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

114

Как и в случае файловой системы s5fs, суперблок содержит общие описание файловой системы и располагается в начале раздела. Однако в суперблоке не хранятся данные о свободном пространстве файловой системы, также как массив свободных блоков и inode. Поэтому данные суперблока остаются неизменными на протяжении всего времени существования файловой системы. Так как данные суперблока жизненно важны, то он дублируется для повышения надежности. Организация файловой системы предусматривает логическое деление дискового раздела на одну или несколько групп цилиндров. Группы цилиндров представляет собой несколько последовательных дисковых цилиндров. Каждая группа цилиндров содержит управляющую информацию, включающую резервную копию суперблока, массив inode, данные о свободных блоках и итоговую информацию об использовании дисковых блоков в группе. Для каждой группы цилиндров при создании файловой системы выделяется место под определенное количество inode. При этом обычно на каждые 2 Кбайт блоков хранения данных создается один inode. Поскольку размеры группы цилиндров и массива inode фиксированы, то в файловой системе FFS как и в s5fs присутствуют ограничения на количество файлов.

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

115

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

Производительность файловой системы существенным образом зависит от размера блока хранения данных. Чем больше размер блока, тем большее количество данных может быть прочитано без поиска и перемещения дисковой головки. Файловая система FFS поддерживает размер блока до 64 Кбайт. Проблема заключается в том, что типичная файловая система UNIX состоит из значительного числа файлов небольшого размера. Это приводит к потере до 60% полезной ёмкости диска.

Этот недостаток был преодолен с помощью возможности фрагментации блока. Каждый блок может быть разбит на два, четыре или восемь фрагментов. В то время как блок является единицей передачи данных в операциях ввода/вывода, фрагмент определяет адресную единицу хранения данных на диске. Таким образом был найден компромисс между производительностью ввода/вывода и эффективностью хранения данных. Размер фрагмента задается при создании файловой системы, его максимальное значение определяется размером блока (0.5 размера блока), а минимальный – минимальной единицей адресации диска – сектором.

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

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

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

116

то данный подход увеличивает скорость последовательного доступа к этим файлам.

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

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

Описанная архитектура является весьма эффективной, однако эти параметры начинают значительно ухудшаться по мере уменьшения свободного места. Практика показывает, что FFS имеет удовлетворительные характеристики при наличии более 40% свободного места.

Структура каталога файловой системы FFS была изменена для поддержки длинных имен файлов (до 255 символов).

4.10.4. Архитектура виртуальной файловой системы

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

117

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

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

Каждая подключенная файловая система представлена на независимом уровне в виде структуры vfs. Структуры vfs всех подключенных файловых систем организованны в виде односвязного списка. Первой записью списка всегда является корневая файловая система. Структура vfs содержит следующие поля:

Vfs_next: следующая файловая система в списке монтирования;

Vfs_op: операции файловой системы;

Vfs_vnodecovered: (vnode) виртуальный индексный дескриптор, перекрываемый файловой системой. Структура данных vnode одинакова для всех файлов, независимо от типа реальной файловой системы, где фактически располагается файл.

Vfs_flag: флаги;

Vfs_bsize: размер блока файловой системы;

Vfs_data: указатель на специфические данные, относящиеся к реальной файловой системе.

Поле vfs_data содержит указатель на данные реальной файловой системы. Например для s5fs, это поле указывает на операции файловой системы, которые называются виртуальными методами объекта vfs. Поля vfs_op заполняются

118

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

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

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

119

ЛАБОРАТОРНАЯ РАБОТА № 1

Установка операционной системы Linux

Цель работы: приобрести навыки установки операционной системы Linux.

Порядок выполнения лабораторной работы

1.Получить задание у преподавателя.

2.Запустить программу виртуальной машины.

3.Запускаем VMware Workstation.

4.Выбираем в меню File > New > Virtual Machine...

5.Указываем тип конфигурации «Custom».

6.Выбираем формат «New – Workstation».

7.Выбираем ОС «Linux» и версию «Other Linux».

8.Указываем название для виртуальной машины. В

нашем примере «Debian».

9. Количество процессоров не меняем.

10. Ставим значение 512 для памяти, выделяемой для виртуальной машины.

11. Выбираем тип используемой сети: «Use host-only networking».

12. Оставляем параметр по умолчанию («BusLogic»).

13. Создадим новый диск (пункт «Create a new virtual disk»).

14. Оставляем рекомендуемое значение («SCSI»).

15. Указываем размер диска («Disk size») равный 3. И

ставим галку напротив пункта «Allocate all disk space now».

16. Название не меняем. Жмем «Готово».

17. Ждем завершение процесса создания диска. И возвращаемся в главное окно программы VMware Workstation.

18. Выбираем в меню VM > Settings... и для устройства

«CD-ROM» в разделе «Connection» ставим «Use ISO image» и

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

120