Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Архитектура файловой системы NFS



Предоставляется доступ к каталогу (экспортируется) с подкаталогами. Информация об экспортируемых каталогах хранится в /etc/exports. При подключении эти каталоги монтируются к локальной файловой системе.

Примеры монтирования удаленных файловых систем

Протоколы файловой системы NFS

Протокол - набор запросов и ответов, клиента и сервера.

Используется два протокола:

1. Протокол управления монтирования каталогов

2. Протокол управления доступа к каталогам и файлам

Реализация файловой системы NFS

Структура уровней файловой системы NFS

VFS (Virtual File System) - виртуальная файловая система. Необходима для управления таблицей открытых файлов.

Записи для каждого открытого файла называются v-узлами (virtual i-node).

VFS используется не только для NFS, но и для работы инородными файловыми системами (FAT, /proc и т.д.)

Алгоритм работы NFS (рассмотрим последовательность системных вызовов mount, open и read):

1. Вызывается программа mount, ей указывается удаленный каталог и локальный каталог для монтирования.

2. Программа ищет сервер, соединяется с ним.

3. Запрашивает дескриптор каталога.

4. Программа mount обращается к системному вызову mount для монтирования полученного каталога.

5. Ядро формирует v-узел для открытого удаленного каталога.

6. Ядро формирует r-узел (удаленный i-узел) для удаленного каталога в своих внутренних таблицах. В результате v-узел указывает либо на r-узел для удаленного каталога, либо на i-узел одной из локальных файловых систем.

7. Система просит программу клиента NFS открыть файл.

8. Создаются v-узел и r-узел для удаленного файла.

9. Вызывающему процессу выдается дескриптор удаленного файла.

10. Теперь этот процесс может работать с файлом, используя вызов read.

Процессы

Понятие процесса

Процесс (задача) - программа, находящаяся в режиме выполнения.

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

Адресное пространство содержит:

o саму программу

o данные к программе

o стек программы

С каждым процессом связывается набор регистров, например:

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

o указатель стека

o и д.р.

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

Некоторые поля таблицы:

Управление процессом Управление памятью Управление файлами
Регистры Счетчик команд Указатель стека Состояние процесса Приоритет Параметры планирования Идентификатор процесса Родительский процесс Группа процесса Время начала процесса Использованное процессорное время Указатель на текстовый сегмент Указатель на сегмент данных Указатель на сегмент стека Корневой каталог Рабочий каталог Дескрипторы файла Идентификатор пользователя Идентификатор группы

Модель процесса

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

Рассмотрим схему с четырьмя работающими программами.

В каждый момент времени активен только один процесс

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

Создание процесса

Три основных события, приводящие к созданию процессов (вызов fork или CreateProcess ):

o Загрузка системы

o Работающий процесс подает системный вызов на создание процесса

o Запрос пользователя на создание процесса

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

В UNIX каждому процессу присваивается идентификатор процесса ( PID - Process IDentifier)

Завершение процесса

Четыре события, приводящие к остановке процесса (вызов exit или ExitProcess ):

o Плановое завершение (окончание выполнения)

o Плановый выход по известной ошибке (например, отсутствие файла)

o Выход по неисправимой ошибке (ошибка в программе)

o Уничтожение другим процессом

Таким образом, приостановленный процесс состоит из собственного адресного пространства, обычно называемого образом памяти ( core image ), и компонентов таблицы процессов (в числе компонентов и его регистры).

Иерархия процессов

В UNIX системах заложена жесткая иерархия процессов. Каждый новый процесс созданный системным вызовом fork, является дочерним к предыдущему процессу. Дочернему процессу достаются от родительского переменные, регистры и т.п. После вызова fork, как только родительские данные скопированы, последующие изменения в одном из процессов не влияют на другой, но процессы помнят о том, кто является родительским.

В таком случае в UNIX существует и прародитель всех процессов - процесс init.

Дерево процессов для систем UNIX

Состояние процессов

Три состояния процесса:

o Выполнение (занимает процессор)

o Готовность (процесс временно приостановлен, чтобы позволить выполняться другому процессу)

o Ожидание (процесс не может быть запущен по своим внутренним причинам, например, ожидая операции ввода/вывода)

Возможные переходы между состояниями.

1. Процесс блокируется, ожидая входных данных

2. Планировщик выбирает другой процесс

3. Планировщик выбирает этот процесс

4. Поступили входные данные

Переходы 2 и 3 вызываются планировщиком процессов операционной системы, так что сами процессы даже не знают о этих переходах. С точки зрения самих процессов есть два состояния выполнения и ожидания.

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


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-05-28; Просмотров: 740; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.024 с.)
Главная | Случайная страница | Обратная связь