- •/Классификация операционных систем
- •Сравнительные характеристики ос.
- •/Процессы и примитивы.
- •Примитивы.
- •Процессы.
- •/Предполагаемая среда выполнения процессов.
- •/ Диаграмма переходов.
- •/Создание процессов.
- •/Уровневое представление ос unix
- •/Функции ядра операционной системы.
- •/Понятие прерываний в ос
- •/Структура ос
- •/Обзор подсистем ядра Unix
- •Описание подсистем ядра unix
- •Планирование но наивысшему приоритету (hpf)
- •Метод круговорота (карусель)
- •Очереди с обратной связно (fв)
- •Планирование в unix.
- •Типы многозадачности.
- •Состав планировщика
- •Зависимости подсистем ядра
- •Контроллер памяти (Метоrу Manager)
- •Механизм свопинга (Swapping)
- •Механизм пейджинга (Paging)
- •Внешний интерфейс
- •Verify_area()– проверка прав на доступ к выделенному региону памяти; get_free_page() / free_page() – выделение и освобождение физической памяти.
- •Реализация программ выделения памяти
- •Сборка мусора
- •Типы сборщиков памяти
- •Взаимодействие внутренних модулей мм
- •Архитектура vfs
- •Интерфейсы файловой системы
- •Ioctlo: установить атрибуты файла;
- •Защита файлов
- •Списки прав доступа
- •Механизмы обмена данными в vfs
- •Буферный кэш.
- •Механизмы обмена данными.
- •Логическая файловая система
- •Физическая организация файловой системы
- •Структура файла обычного типа
- •Примечания к физической организации vfs
- •Сетевая подсистема (Net)
- •Состав сетевой подсистемы
- •Представление и структуры данных
- •Внутренняя структура подсистемы
- •Зависимости сетевой подсистемы
- •Подсистема межпроцессного взаимодействия
Архитектура vfs
Рассмотрим архитектуру VFS, представленную на рис. 3.9.
Большинство функций файловой системы реализовано (как и функций
других подсистем ядра) в виде динамически загружаемых модулей. Это
позволяет пользователю ОС сконфигурировать ядро так, чтобы оно занимало минимальное место, а необходимые для выполнения модули загружались бы по мере их вызова. Так, например, для печати в Uпix используется специальный драйвер, который обслуживает порт принтера. Этот драйвер загружается динамически только в тот момент, когда необходимо вывести информацию на печать. После выполнения печати он выгружается и освобождает память.
В состав виртуanьной файловой системы входят следующие блоки:
-
Модули драйверов физических устройств (Device Drivers), каждый из которых поддерживает контроллер конкретного физического устройства. Так как существует большое количество обслуживаемых устройств, то существует и большое количество драйверов к ним.
-
Модуль интерфейсов, независимых от устройств (Device Independent Interface), обеспечивает доступ Ко всем устройствам в системе.
-
Модуль логической файловой системы (Logical System) объединяет все устройства системы в единую виртуальную файловую систему.

-
Модуль системных интерфейсов, независимых от устройств (System Independent Interface), обеспечивает единый для всех файловых систем доступ к устройствам в системе. Этот модуль представляет все ресурсы физических устройств ОС, используя либо бит-ориентированный, либо байт-ориентированный интерфейсы.
-
Модуль внешнего системного интерфейса (System Саll lnterface) обеспечивает пользовательским процессам управление и доступ к файловой системе.
Интерфейсы файловой системы
Так же как и остальные подсистемы ядра, VFS поддерживает два вида интерфейсов: внешний интерфейс для обслуживания процессов пользователя и внутренний интерфейс для обеспечения взаимодействия с другими подсистемами. Внешний интерфейс обеспечивает для пользователя доступ файлам и каталогам. К основным файловым операциям ОС Unix [11] относятся:
-
Создание файла, не содержащего данных.
-
Удаление файла и освобождение занимаемого им дискового пространства.
-
Открытие файла. Цель данного системного вызова - разрешить системе проанализировать атрибуты файла и проверить права доступа к нему и вернуть некоторый числовой параметр для пользовательского обращения к файлу (дескриптор или номер канала).
-
Закрытие файла и освобождение места во внутренних таблицах файловой системы.
-
Позиционирование. Дает возможность специфицировать место внутри файла, откуда будет производиться считывание (или запись) данных, то есть задать текущую позицию.
-
Чтение данных из файла с текущей позиции. Пользователь должен задать объем считываемых данных и предоставить для них буфер в оперативной памяти.
-
Запись данных в файл с текущей позиции. Если текущая позиция находится в конце файла, его размер увеличивается, в противном случае запись осуществляется на место имеющихся данных, которые, таким образом, теряются.
Есть и другие операции, внешние, например, переименование файла, получение атрибутов файла и т. п.
Операции над файлами типа ореn/close/read/write/seek/tell и над каталогами типа readdir/create/unlink/chmod/stat и некоторые другие полностью соответствуют стандарту POSIX систем. При работе с каталогами обычно используются следующие системные операции [11]:
-
Создание каталога. Вновь созданный каталог включает записи с именами'.' и'..', однако считается пустым.
-
Удаление директории. Операция может быть исполнена только над пустым каталогом.
-
Открытие директории для последующего чтения. Например, чтобы перечислить файлы , входящие в каталог, процесс должен его открыть и считать имена всех файлов, которые в нем находятся.
-
Закрытие каталога после его чтения для освобождения места во внутренних системных таблицах.
-
Поиск. Данный системный вызов возвращает содержимое текущей записи в открытом каталоге. Вообще говоря, для этих целей может использоваться системный вызов rеad, но в этом случае от программиста потребуется знание внутренней структуры директории.
-
Получение списка файлов в каталоге.
-
Переименование. Имена директорий можно менять, как и имена файлов.
-
Создание файла. При создании нового файла необходимо добавить в каталог соответствующий элемент.
-
Удаление файла. Удаление из каталога соответствующего элемента. Если удаляемый файл присутствует только в одной директории, то он вообще удаляется из файловой системы, в противном случае система ограничивается только удалением специфицируемой записи.
Ннтерфейсы VFS имеют большой набор функций для манипулирования потоками информации и структурами данных, особенно для работы с i-узлами и файлами. Например интерфейс I узлов:
chdir(): - сменить директорию;
chroot(): - сменить rооt-директорию;
dir(): - класс директории;
closedir():- закрывает дескриптор директории;
getcwd(): -получает текущую рабочую директорию;
ореndir(): - открывает дескриптор директории;
readdir(): - читает вхождение из дескриптора директории;
rewinddir(): - переходит в начало дескриптора директории;
link() / sуmlink() / unIink() /readlink() /follow link() управление связями в файловой системе;
mkdir() /rmdir(): создание и удаление каталогов;mknod() : создание каталога, специального файла или обычного файла;
readpage() /writepage(): чтение/запись страницы физической памяти; smap(): пометить логический блок файла на физическом устройстве; rename(): переименовать файл или каталог;
Интерфейс для работы с файлами:
ореn() /release(): открыть/закрыть файл;read()
/ write(): чтение/запись файла;
create(): создание файла в каталоге;
lookup(): поиск файла в каталоге;
select(): ожидание, пока свойства файла не изменятся (то есть файл станет доступным на чтение или запись);
lseek() /fseek(): поиск в файле по смещению;
mmap() : отметить регион файла внутри виртуальной памяти пользовательского процесса;
fsync() / fasync(): синхронизация некоторого буфера памяти с физиче‑
ским устройством;
truпcate(): установить длину файла равной нулю;
permission(): проверка и установка пользовательским процессом свойств файла на выполнение;
