Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовой ОС / РГР Открытое ПО / РГР Открытое ПО.doc
Скачиваний:
45
Добавлен:
15.06.2014
Размер:
268.8 Кб
Скачать

3.3 Поддержка нескольких файловых систем

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

3.3.1 Linux

Аспект ядра Linux, который отличает его от ядра BSD, - виртуальная файловая система (VFS), которая предоставляет общую абстракцию интерфейса к файловым системам. VFS предоставляет уровень коммутации между SCI и файловыми системами, поддерживаемыми ядром. Обобщенная схема виртуальной файловой системы приведена на рисунке 3.

Рисунок 3 – Схема VFS

На верхнем уровне VFS располагается единая API-абстракция таких функций, как открытие, закрытие, чтение и запись файлов. На нижнем уровне VFS находятся абстракции файловых систем, которые определяют, как реализуются функции верхнего уровня. Они представляют собой подключаемые модули для конкретных файловых систем (которых существует более 50). Ниже уровня файловой системы находится кэш буферов, предоставляющий общий набор функций к уровню файловой системы (независимый от конкретной файловой системы). Этот уровень кэширования оптимизирует доступ к физическим устройствам за счет краткосрочного хранения данных (или упреждающего чтения, обеспечивающего готовность данных к тому моменту, когда они понадобятся). Ниже кэша буферов находятся драйверы устройств, реализующие интерфейсы для конкретных физических устройств.

3.3.2 FreeBsd

Для облегчения поддержки нескольких файловых систем разработчики добавили в ядро интерфейс виртуальных узлов файловой системы, или интерфейс «vnode». Набор операций, экспортируемых через интерфейс «vnode», похож на операции файловой системы, ранее поддерживаемые локальной файловой системой. Однако они могут поддерживаться широким спектром типов файловых систем:

  1. Локальные файловые системы, использующие диск;

  2. Файлы, импортируемые при помощи разнообразных протоколов удаленных файловых систем;

  3. Файловые системы CD-ROM, доступные только для чтения;

  4. Файловые системы, предоставляющие специализированные.

Некоторые варианты BSD позволяют выполнять динамическую загрузку файловых систем при первом обращении к ним при помощи системного вызова «mount».

3.4 Итоги сравнения ядер

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

Ядро HURD(Mach) же принципиально отличается от ядерLinuxиBSD, оно является микроядром и выполняет функцию диспетчера между программами-серверами, которые находятся вне ядра (выполняют функции, которые реализованы в ядреBSDиLinux). Поэтому само ядро гораздо меньше размером. Также не базе ядраMachможно эмулировать другие ОС, что дает возможность запускать программы, написанные для различныхOC.

Таблица 1 – Результаты сравнения ядер

 

Ядро

Linux

FreeBSD

HURD

тип архитектуры

модульное

модульное

микроядро

механизм SMP

+

+

+

многозадачность

+

+

+

Управление процессами

взаимодействие процесса с ядром (другим процессом)

системный вызов (сигнал)

системный вызов (сигнал)

IPC

доступ процесса к привилегированному уровню

-

-

+

наследование адресного пространства при создании процесса

+

+

-

Управление памятью

страничная организация памяти

+

+

+

подкачка

+

+

+

совместное использование вирт. Памяти

+

+

+

разделение на машинно-завис. и машинно-независ. части

-

+

+

 

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

+ (VFS)

+ (vnode)

-

архитектурно-зависимый код

+

+

+

интерфейс системных вызовов

+

+

+

Соседние файлы в папке РГР Открытое ПО