Слайд 2(C) В.О. Сафонов, 2010
Интерфейс с системой файлов
Понятие файла
Методы доступа
Структура директорий
Монтирование файловых систем
Общий
доступ к файлам
Защита
Слайд 3(C) В.О. Сафонов, 2010
Понятие файла
Смежная область логического адресного пространства
Типы:
Данные
числовые
символьные
двоичные
Программа
Слайд 4(C) В.О. Сафонов, 2010
Структура файла
Последовательность слов или байтов (UNIX)
Простая структура - последовательность
записей
Строки
Записи фиксированной длины
Записи переменной длины
Сложная структура
Отформатированный документ
Загрузочный модуль; PE-файл (.NET), class-файл (Java)
Сложная структура может быть смоделирована записями путем добавления соответствующих управляющих символов.
Интерпретируют файлы:
Операционная система
Программа
Слайд 5(C) В.О. Сафонов, 2010
Атрибуты файлов
Имя (Name) – информация в символьной форме, воспринимаемая
человеком.
Тип (Type) – необходим для систем, которые поддерживают различные типы файлов (Эльбрус: тип файла – число; 0 – данные, 2 – код, 3 – текст и т.д.). В MS DOS, Windows, UNIX тип файла принято кодировать расширением имени.
Размещение (Location) – указатель на размещение файла на устройстве.
Размер (Size) – текущий размер файла.
Защита (Protection) – управляющая информация о том, кто может читать, изменять и исполнять файл.
Время, дата, идентификация пользователя.
Информация о файлах хранится в структуре директорий.
Слайд 6(C) В.О. Сафонов, 2010
Операции над файлом
Создание - Create
Запись - Write
Чтение - Read
Поиск
позиции внутри файла - Seek
Удаление - Delete
Сокращение - Truncate
Open(Fi) – поиск в структуре директорий на диске элемента Fi, и перемещение содержимого элемента в память.
Close (Fi) – переместить содержимое элемента Fi из памяти в структуру директорий на диске.
Слайд 7(C) В.О. Сафонов, 2010
Типы файлов – имена и расширения
Слайд 8(C) В.О. Сафонов, 2010
Методы доступа к файлам
Последовательный доступ
read next
write next
reset
rewrite
Прямой доступ
read
n
write n
position to n
read next
write next
rewrite n
n = относительный номер блока
Слайд 9(C) В.О. Сафонов, 2010
Файл последовательного доступа
Слайд 10(C) В.О. Сафонов, 2010
Моделирование последовательного доступа для файла с прямым доступом
Слайд 11(C) В.О. Сафонов, 2010
Пример индексного файла и относительного файла
Слайд 12(C) В.О. Сафонов, 2010
Структура директорий
Совокупность узлов, содержащих информацию обо всех файлах
Как структура
директорий, так и файлы хранятся на диске.
Резервное копирование (back-up) обеих этих структур выполняется на ленту (стример), flash-память, внешний жесткий диск, CD и др.
Слайд 13(C) В.О. Сафонов, 2010
Файловая система в “Эльбрусе”
Файлы, контейнеры, справочники
Файл – заголовок и
память.
В заголовке – порядка 200 (!) атрибутов файла
Возможно создание файла и управление им без присваивания ему имени, т.е. без отображения в справочниках (директориях)
Файлы могут ссылаться друг на друга (по файловой ссылке, а не по имени) через справочники внешних ссылок (СВС)
Недостатки: сложная структура файлов, большое число атрибутов, зависимость логической структуры файла от типа устройства
Слайд 14(C) В.О. Сафонов, 2010
Типичная организация файловой системы
Слайд 15(C) В.О. Сафонов, 2010
Операции над директорией
Поиск файла
Создание файла
Удаление файла
Создание поддиректории
Вывод содержимого директории
Переименование
файла
Создание символической ссылки
Обход файловой системы (traverse – обход дерева)
Ср. с “Эльбрусом”: в нем создание файла – отдельная операция, не связанная с директорией (справочником) вообще
Слайд 16(C) В.О. Сафонов, 2010
Цели логической организации директорий
Эффективность – быстрый поиск файла.
Именование –
удобство для пользователей.
Два пользователя могут называть два разных файла одним и тем же именем.
Один и тот же файл может иметь несколько различных имен.
Логическая группировка файлов по назначению, свойствам и т.д. (почта, Java-код, игры и др.)
Слайд 17(C) В.О. Сафонов, 2010
Одноуровневая организация для всех пользователей – проблемы с группировкой
и именованием
Слайд 18(C) В.О. Сафонов, 2010
Двухуровневая организация
Имя пути
Возможность иметь одинаковые имена файлов для различных
пользователей
Эффективный поиск
Нет возможности группировки
Слайд 19(C) В.О. Сафонов, 2010
Древовидная структура директорий
Слайд 20(C) В.О. Сафонов, 2010
Древовидная структура директорий
Эффективный поиск
Возможность группировки
Текущая директория (рабочая директория)
cd /spell/mail/prog
type
list
Слайд 21(C) В.О. Сафонов, 2010
Древовидная структура директорий
Абсолютный или относительный путь (первый может создавать
проблемы при переносе на другие компьютеры, сборке и др.)
Создание нового файла выполняется в текущей директории.
Удаление файла
rm
Создание новой поддиректории выполняется в текущей директории.
mkdir
Пример: если текущая директория /mail
mkdir count
Слайд 22(C) В.О. Сафонов, 2010
Структура директорий в виде ациклического графа (с разделяемыми директориями
и файлами)
Слайд 23(C) В.О. Сафонов, 2010
Структура директорий в виде ациклического графа (продолжение)
Два различных имени
у одного файла (директории) - aliasing
Если в dict удалить list ⇒ подвисшая ссылка (dangling pointer).
Решения:
Обратные ссылки (с целью удаления всех ссылок).
Счетчики ссылок.
Слайд 24(C) В.О. Сафонов, 2010
Структура директорий в виде произвольного графа
Слайд 25(C) В.О. Сафонов, 2010
Структура директорий в виде произвольного графа (прод.)
Как гарантировать отсутствие
циклов?
Допускать только ссылки на файлы, а не на поддиректории.
Сборка мусора.
Каждый раз при создании новой ссылки запускать алгоритм проверки отсутствия циклов.
Слайд 26(C) В.О. Сафонов, 2010
Монтирование файловых систем (mounting)
Файловая система должна быть смонтирована, прежде
чем к ней будет обеспечен доступ.
Файловая система монтируется в некоторую точку монтирования (mount point).
Монтирование (с абстрактной точки зрения) – подсоединение отдельного дерева (еще не смонтированной файловой системы) к какой-либо вершине (точке монтирования) общего дерева смонтированных и доступных файловых систем
UNIX: команды mount; automount; autodirect
Слайд 27(C) В.О. Сафонов, 2010
Дерево смонтированных систем (а) и еще не смонтированная файловая
система (b)
Слайд 28(C) В.О. Сафонов, 2010
Точка монтирования
Слайд 29(C) В.О. Сафонов, 2010
Общий доступ к файлам (sharing)
В многопользовательских системах общий доступ
к файлам необходим.
Общий доступ может быть обеспечен через некоторую систему защиты (protection).
В распределенных системах файлы могут использоваться совместно через сеть.
Network File System (NFS) – распространенный метод общего доступа к файлам.
Solaris: /net/hostname/filesystem; hostname – имя машины; filesystem – имя файловой системы на ней, для которой разрешен общий доступ (выполнена команда share)
Слайд 30(C) В.О. Сафонов, 2010
Защита (protection)
Создатель файла должен иметь возможность управлять:
Списком допустимых операций
над файлом
Списком пользователей, которым они разрешены
Типы доступа:
Read
Write
Execute
Append
Delete
List
Слайд 31(C) В.О. Сафонов, 2010
Списки доступа и группы (UNIX)
Режимы доступа: read, write, execute
Три
класса пользователей:
RWX
a) owner access 7 ⇒ 1 1 1
RWX
b) group access 6 ⇒ 1 1 0
RWX
c) public access 1 ⇒ 0 0 1
Системный администратор создает группу (например, JAVA) и включает в нее нескольких пользователей.
Для конкретного файла (например, game) или поддиректории определяются соответствующие полномочия доступа
Для директории “X” означает возможность входа в нее (cd)
Слайд 32(C) В.О. Сафонов, 2010
Реализация файловых систем
Структура файловых систем
Реализация файловых систем
Реализация директорий
Методы
размещения файлов
Управление свободной памятью
Эффективность и производительность
Восстановление
Файловые системы на основе журналов транзакций (Log-Structured)
NFS
Слайд 33(C) В.О. Сафонов, 2010
Структура файловой системы
Структура файла
Файл - логическая единица распределения памяти
Файл
– совокупность взаимосвязанной информации
Файловая система располагается во внешней памяти (на дисках)
Файловая система организована по уровням.
Блок управления файлом (File control block) – структура в памяти, содержащая информацию о файле.
Слайд 34(C) В.О. Сафонов, 2010
Многоуровневая файловая система
Слайд 35(C) В.О. Сафонов, 2010
Типовая структура блока управления файлом
Слайд 36(C) В.О. Сафонов, 2010
Структуры ОС в памяти для управления файловой системой (открытие,
чтение)