- •Раздел 4. Операционная система unix
- •Оглавление
- •Введение
- •1. Основание и история
- •2. Основные понятия ос unix
- •2.1. Основные понятия
- •2.2. Ядро ос unix
- •2.2.1. Общая организация традиционного ядра ос unix
- •2.2.2. Основные функции
- •2.2.3. Принципы взаимодействия с ядром
- •2.2.4. Принципы обработки прерываний
- •2.3. Файловая система
- •2.3.1. Структура файловой системы
- •2.3.2. Монтируемые файловые системы
- •2.3.3. Интерфейс с файловой системой
- •2.3.4. Разновидности файлов
- •2.3.5. Распределенные файловые системы
- •2.4. Управление устройствами
- •2.4.1. Устройство как специальный файл
- •2.4.2. Драйверы устройств
- •2.4.3. Внешний и внутренний интерфейсы устройств
- •2.5. Принципы защиты
- •2.5.1. Идентификаторы пользователя и группы пользователей
- •2.5.2. Защита файлов
- •2.6. Базовые механизмы сетевых взаимодействий
- •2.6.1. Потоки (Streams)
- •2.6.2. Стек протоколов tcp/ip
- •2.6.3. Программные гнезда (Sockets)
- •2.6.4. Вызовы удаленных процедур (rpc)
- •3. Основные функции и компоненты ядра ос unix
- •3.1. Управление памятью
- •3.1.1. Виртуальная память
- •3.1.2. Аппаратно-независимый уровень управления памятью
- •3.1.3. Страничное замещение основной памяти и swapping
- •3.2. Управление процессами и нитями
- •3.2.1. Пользовательская и ядерная составляющие процессов
- •3.2.2. Принципы организации многопользовательского режима
- •3.2.3. Механизм управления процессами на уровне пользователя
- •3.2.4. Понятие нити (threads)
- •3.2.5. Организация нитей и управлению ими в ос unix
- •3.3. Управление вводом/выводом
- •3.3.1. Принципы системной буферизации ввода/вывода
- •3.3.2. Системные вызовы для управления вводом/выводом
- •3.3.3. Блочные драйверы
- •3.3.4. Символьные драйверы
- •3.3.5. Потоковые драйверы
- •3.4. Взаимодействие процессов
- •3.4.1. Разделяемая память
- •3.4.2. Семафоры
- •3.4.3. Очереди сообщений
- •3.4.4. Программные каналы
- •3.4.5. Программные гнезда (sockets)
- •4. Мобильное программирование в среде ос unix. Стандартные библиотеки
- •4.1. Библиотека системных вызовов
- •4.2. Библиотека ввода/вывода
- •4.3. Дополнительные библиотеки
- •4.4. Файлы заголовков
- •5. Средства интерактивного интерфейса пользователей
- •5.1. Командные языки и командные интерпретаторы
- •5.1.1. Общая характеристика командных языков
- •5.1.2. Базовые возможности семейства командных интерпретаторов
- •5.2. Команды и утилиты
- •5.2.1. Организация команды в ос unix
- •5.2.2. Перенаправление ввода/вывода и организация конвейера
- •5.2.3. Встроенные, библиотечные и пользовательские команды
- •5.2.4. Программирование на командном языке
- •6. Средства графического интерфейса пользователей
- •6.1. Оконная система X как базовое средство графических интерфейсов в среде ос unix
- •6.1.1. Общая организация X-Window
- •6.1.2. Клиентская и серверная части
- •6.1.3. Базовые библиотеки
- •6.2. Средства разработки графических интерфейсов
- •7. Современное состояние ос unix
- •7.2. Системы, основанные на System V Release 4
- •7.3. Свободно распространяемые и коммерческие варианты ос unix семейства bsd
- •7.4. Другие свободно распространяемые варианты ос unix
- •7.5. Стандарты ос unix
- •Заключение
- •Литература
2.3.5. Распределенные файловые системы
Основная идея распределенной файловой системы состоит в том, чтобы обеспечить совместный доступ к файлам локальной файловой системы для процессов, которые, вообще говоря, выполняются на других компьютерах. Эта идея может быть реализована многими разными способами, однако в среде ОС UNIX все известные подходы основываются на монтировании удаленной файловой системы к одному из каталогов локальной файловой системы. После выполнения этой процедуры файлы, хранимые в удаленной файловой системе, доступны процессам локального компьютера точно таким же образом, как если бы они хранились на локальном дисковом устройстве.
На рис.2.3 приведен пример, в котором два подкаталога удаленной файловой системы-сервера (share и X11) монтируются к двум (пустым) каталогам файловой системы-клиента.
Рис.2.3. Схема монтирования удаленной файловой системы
В принципе, такая схема обладает и достоинствами, и недостатками. К достоинствам, конечно, относится то, что при работе в сети можно экономить дисковое пространство, поддерживая совместно используемые информационные ресурсы только в одном экземпляре. Но, с другой стороны, пользователи удаленной файловой системы неизбежно будут работать с удаленными файлами существенно более медленно, чем с локальными. Кроме того, реальная возможность доступа к удаленному файлу критически зависит от работоспособности сервера и сети. Заметим, что распространенные в мире UNIX сетевые файловые системы NFS (Network File System - сетевая файловая система) и RFS (Remote File Sharing - совместное использование удаленных файлов) являются достаточно тщательно спроектированными и разработанными продуктами, во многом сглаживающими отмеченные недостатки.
Сетевая файловая система (NFS). Система NFS была разработана компанией Sun Microsystems как часть ее сетевого продукта ONC (Open Network Computing - открытая сетевая вычислительная обработка). В настоящее время NFS, является официальным компонентом UNIX System V Release 4.
NFS разрабатывалась как система, пригодная к использованию не только на разных аппаратных, но и на разных операционных платформах. В настоящее время продукт NFS, в соответствии со спецификациями и на основе программного кода Sun Microsystems, выпускают более 200 производителей. Отметим, в частности, наличие популярного в России продукта PC-NFS, обеспечивающего клиентскую часть системы в среде MS-DOS. Кроме того, заметим, что имеются и свободно доступные (public domain), и коммерческие варианты NFS.
Первоначально NFS разрабатывалась в среде UNIX BSD 4.2, и для реализации системы потребовалось существенно переделать код системных вызовов файловой системы. При внедрении NFS в среду System V понадобилась значительная переделка ядра ОС. Отмечается, что большая часть изменений в ядре System V Release 4 была связана именно с NFS.
В архитектурном отношении в NFS выделяются три основные части: протокол, серверная часть и клиентская часть. Протокол NFS опирается на примитивы RPC, которые, в свою очередь, построены над протоколом XDR. Клиентская часть NFS взаимодействует с серверной частью системы на основе механизма RPC.
Основным достоинством NFS является возможность использования в среде разных операционных систем. Возможным недостатком является то, что независимость от транспортных средств ограничена уровнем такой независимости, присущей RPC. В настоящее время де-факто это означает, что NFS можно использовать только в TCP/IP-ориентированных сетях.
Сетевая файловая система RFS была реализована компанией AT&T в рамках ее продукта UNIX System V Release 3. Функционально она выглядит подобно NFS, т.е. обеспечивает прозрачный доступ к удаленным файлам. Однако реализация системы абсолютно отлична. Основным недостатком RFS является то, что система реализуема только на компьютерах, работающих под управлением ОС UNIX (причем именно UNIX System V с номером выпуска, не меньше чем 3). Но с другой стороны, это решение позволило сохранить для пользователей RFS всю семантику файлов ОС UNIX. В частности (в отличие от NFS), в удаленной файловой системе могут находиться не только обычные файлы и каталоги, но и специальные файлы и именованные программные каналы. Более того, на удаленные файлы распространяются возможности блокировки файлов и/или диапазонов адресов внутри файлов.
Если NFS опирается на протокол RPC, то в RFS используется родной для AT&T протокол обмена сообщениями на основе потоков (поскольку механизм RPC во многих случаях является слишком ограничительным.)
Другим преимуществом RPC (тоже связанным с использованием TLI) является независимость системы от используемого транспортного механизма (если этот механизм поддерживает спецификации семиуровневой модели ISO/OSI). Поэтому эту систему можно использовать в среде операционных систем, основывающихся на различных сетевых.
