Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Рассмотрим для примера путь /usr/linux/progr.c






Алгоритм одинаков для всех иерархических систем:

§ Сначала в фиксированном месте на диске находится корневаядиректория.

§ Затем находится компонент пути usr, т. е. в корневой директории ищется файл /usr.

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

§ Из строки для linux находится файл, соответствующий компоненту usr/linux/.

§ Затем находится компонент progr.c, который открывается, заносится в таблицу открытых файлов и сохраняется в ней до закрытия файла.

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

Для реализации этой возможности в большинстве ОС, поддерживающих иерархическую структуру директорий, используется обозначение "." - для текущей директории и ".." - для родительской.

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

1. Понятие каталога (директории).

2. Объясните структуру файловой системы.

3. Использование абсолютного и относительного пути к файлу.

Разделы диска. Организация доступа к архиву файлов.

Задание пути к файлу в файловых системах некоторых ОС отличается тем, с чего начинается эта цепочка имен.

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

Бывает, что, наоборот, объединяют несколько физических дисков в один логический диск (например, это можно сделать в ОС Windows NT).

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

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

В некоторых системах управления файлами требуется, чтобы каждый архив файлов целиком располагался на одном диске (разделе диска). В этом случае полное имя файла начинается с имени дискового устройства, на котором установлен соответствующий диск (буквы диска). Например, c: \util\nu\ndd.exe. Такой способ именования используется в файловых системах DEC и Microsoft.

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

В ОС Unix предполагается наличие нескольких архивов файлов, каждый на своем разделе, один из которых, считается корневым.

После запуска системы можно " смонтировать" корневую файловую систему и ряд изолированных файловых систем в одну общую файловую систему:

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

Специальный системный вызов mount ОС Unix позволяет подключить к одному из этих пустых каталогов корневой каталог указанного архива файлов.

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

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

Операции над директориями

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

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

Совокупность системных вызовов для управления директориями зависит от особенностей конкретной ОС.

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

Некоторые операции с каталогами.

· Создание директории. Вновь созданная директория включает записи с именами '.' и '..', однако считается пустой.

· Удаление директории. Удалена может быть только пустая директория.

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

· Закрытие директории после ее чтения для освобождения места во внутренних системных таблицах.

· Поиск. Данный системный вызов возвращает содержимое текущей записи в открытой директории. Вообще говоря, для этих целей может использоваться системный вызов Read, но в этом случае от программиста потребуется знание внутренней структуры директории.

· Получение списка файлов в каталоге.

· Переименование. Имена директорий можно менять, как и имена файлов.

· Создание файла. При создании нового файла необходимо добавить в каталог соответствующий элемент.

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

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

Защита файлов

Информация в компьютерной системе должна быть защищена как от физического разрушения (reliability), так и от несанкционированного доступа (protection).

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

Контроль доступа к файлам

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

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

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

Списки прав доступа

Наиболее общий подход к защите файлов от несанкционированного использования - сделать доступ зависящим от идентификатора пользователя, то есть связать с каждым файлом или директорией список прав доступа (access control list), где перечислены имена пользователей и типы разрешенных для них способов доступа к файлу.

Любой запрос на выполнение операции сверяется с таким списком.

Основная проблема реализации данного способа - список может быть длинным.

Чтобы разрешить всем пользователям читать файл, необходимо всех их внести в список.

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

· Владелец (Owner).

· Группа (Group). Hабор пользователей, разделяющих файл и нуждающихся в типовом способе доступа к нему.

· Остальные (Univers).

Итак,

файловая система представляет собой набор файлов, директорий и операций над ними.

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

файл представляет собой неструктурированную последовательность байтов.

главная задача файловой системы - связать символьное имя файла с данными на диске.

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

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

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

1. Объясните понятие раздел диска.

2. В чем смысл монтирования файловой системы?

3. Расскажите о некоторых операциях с каталогами.

4. Назовите типы защиты файлов.

5. Классификация пользователей для установления защиты.

РЕАЛИЗАЦИЯ ФАЙЛОВОЙ СИСТЕМЫ

Общая структура файловой системы

Система хранения данных на дисках может быть структурирована следующим образом (см. рис. 3.1).

Нижний уровень - оборудование.

Это в первую очередь магнитные диски с подвижными головками - основные устройства внешней памяти.

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

Шаг движения пакета головок является дискретным, и каждому положению пакета головок логически соответствует цилиндр магнитного диска.

Цилиндры делятся на дорожки (треки).

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

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

- номер цилиндра,

- номер поверхности,

- номер блока на соответствующей дорожке

- число байтов, которое нужно записать или прочитать от начала этого блока.

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

Непосредственно с устройствами (дисками) взаимодействует часть ОС, называемая системой ввода-вывода.

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

Система ввода-вывода имеет дело с физическими блоками диска, которые характеризуются адресом, например диск 2, цилиндр 75, сектор 11.

Файловая система имеет дело с логическими блоками, каждый из которых имеет номер (от 0 или 1 до N). Размер логических блоков файла совпадает или является кратным размеру физического блока диска и может быть задан равным размеру страницы виртуальной памяти, поддерживаемой аппаратурой компьютера совместно с операционной системой.

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

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

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

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

 

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

  1. Назовите физические характеристики магнитного диска.
  2. Какие операции относятся к базисной подсистеме?
  3. Какие операции относятся к логической подсистеме?
  4. Как называется часть файловой системы, которая непосредственно контактирует с дисками?
  5. Что представляет собой дескриптор файла?

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.