КаталогИндекс раздела
НазадОглавлениеВперед


5. АДМИНИСТРАТОР ФАЙЛОВОЙ СИСТЕМЫ

5.1. Введение

Администратор файловой системы (Fsys) позволяет стандартным образом организовать хранение и получение доступа к данным дисковых подсистем.

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

5.2. Что такое файл

В системе QNX под файлом понимается объект, над которым может быть выполнена либо операция записи, либо операция чтения, либо обе эти операции. В QNX имеется шесть типов файлов, пять из которых поддерживает администратор Fsys:

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

Все эти типы файлов подробно рассматриваются в этом разделе. Шестой тип файла - (символьный специальный файл), относится к сфере управления Администратора устройств.

5.2.1. Метки даты и времени

Fsys хранит для каждого файла четыре различных значения времени:

5.2.2. Доступ к файлу

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

Этими битами разрешается чтение, запись и выполнение файла в зависимости от используемого идентификатора пользователя и группы. Существует три градации доступа:

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

5.3. Регулярные файлы и каталоги

5.3.1. Регулярные файлы

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

Совокупности регулярных файлов образуют файловые системы. Файловые системы поддерживаются Администратором файловой системы и реализованы в начале блок-ориентированных специальных файлов, которые определяют разделы диска (описываются в подразделе 5.9 "Исходные тома").

5.3.2. Каталоги

Каталог - это файл, содержащий элементы каталога. Каждый элемент каталога устанавливает соответствие имени файла с файлом. Имя файла - это символическое имя, которое позволяет идентифицировать файл и получить к нему доступ. Файл может быть идентифицирован более чем одним именем файла (см. секцию "Связи и индексные дескрипторы" и "Символические связи").

На рис. 19 показано, как осуществляется поиск файла /usr/bill/file2 в структуре каталога.

Путь по структуре каталогов QNX к файлу usr/bill/file2
Рис. 19

Операции с каталогом

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

Чтение элементов каталога

Для чтения элементов каталога используется набор POSIX-функций языка Си, которые обеспечивают к ним мобильный доступ:
    opendir()
    readdir()
    rewinddir()
    closedir()
Поскольку каталоги QNX являются просто файлами, содержащими "известную" информацию, то можно считывать элементы каталога, используя функции open() и read(). Однако, этот метод не является мобильным, т.к. формат элементов каталога различен в разных операционных системах.

5.3.3. Экстенты

В системе QNX регулярные файлы и файлы каталогов хранятся как последовательность экстентов. Экстент - это непрерывная последовательность блоков на диске.

Где хранятся экстенты

Файлы, имеющие только один экстент, хранят информацию об экстенте в элементе каталога. Если же для файла требуется более одного экстента, то информация о местонахождении экстента хранится в одном или нескольких блоках связанных экстентов. Каждый блок экстентов может содержать информацию о нахождении 60 экстентов. На рис._20 представлен файл, состоящий из нескольких последовательных областей на диске (экстентов).

Рис. 20

Увеличение размера файла

Когда Администратору файловой системы требуется увеличить размер файла, последний экстент которого уже заполнен, то он сначала пытается увеличить последний экстент хотя бы на один блок. Если это не удается сделать, то для расширяемого файла заводится новый экстент.

Для размещения нового экстента Администратор файловой системы действует по принципу "первый пригодный". Специальная таблица Администратора файловой системы содержит элементы для каждого блока, представленного в файле /.bitmap (этот файл описан в разделе "Ключевые компоненты раздела QNX"). Каждый из этих элементов определяет наибольший непрерывный свободный экстент в области, определяемой соответствующим блоком. Администратор файловой системы выбирает первый элемент данной таблицы, достаточный по размерам для нового экстента.

5.4. Связи и индексные дескрипторы

В системе QNX к файлу данных можно обращаться, используя более одного имени файла. Каждое имя называется связью. (Фактически существует два вида связей: жесткие связи, которые мы будем называть просто "связями" и символические связи. Символические связи описаны в следующем разделе.)

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

Если файл имеет только одну связь (т.е. одно имя файла), информация индексного дескриптора (т.е. информация, не относящаяся к имени файла) хранится в элементе каталога данного файла.

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

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

На один и тот же файл ссылаются две связи с именами "more" и "less".
Рис. 21

Существует еще две ситуации, при которых файл может иметь вход в файл /.inodes:

Если вы хотите Используйте
Создать связь из интерпретатора Shell Утилиту ln
Создать связь из программы Функцию Си link()

5.4.1. Удаление связей

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

Если вы хотите Используйте
Удалить связи из интерпретатора Shell Утилиту rm
Удалить связь из программы Функции Си remove() или unlink()

5.4.2. Связи каталога

Для каталога нельзя создать жесткие связи. Однако, каталоги имеют две жестко определенные связи:
.     - "точка";
..    - "точка точка".

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

    /usr/home/fred/./test               --------> /usr/home/fred/test
              ---
               | предшествующий 
           

    /usr/home/fred/../eric              -------> /usr/home/eric
         ---  ---
          |    | предшествующий 
          |    
          | предыдущий предшестующему

Если нет предшествующего каталога, то "точка" ссылается на текущий каталог. Точно также, элемент "точка точка" после символа "/" означает просто "/", т.к. вы не можете выйти за пределы пути.

5.5. Символические связи

Символическая связь - это специальный файл, который содержит составное имя в качестве данных. Когда в запросе ввода/вывода, например, в функции open(), встречается имя символической связи, то связываемая часть составного имени заменяется на содержимое файла связи, в результате чего путь переопределяется.

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

В следующем примере каталоги //1/usr/fred и //2/usr/barney связаны, несмотря на то, что они находятся в разных файловых системах и даже на разных узлах (см. рисунок). Этого нельзя было бы сделать, используя жесткие связи

    //1/usr/fred            -->   //2/usr/barney
Обратите внимание на то, что символическая связь и адресуемый каталог могут иметь разные имена. В большинстве случаев символические связи используются для соединения одного каталога с другим. Однако, можно использовать символические связи и для файлов, например //1/usr/eric/src/test.c --> //1/usr/src/dame.c

На рис. 22 представлены символические связи между двумя узлами.

Рис. 22

Если вы хотите Используйте
Создать символическую связь Утилиту ln (с опцией -s)
Удалить символическую связь* Утилиту rm
Узнать, является ли файл символической связью Утилиту ls
* Помните, что удаление символической связи действует только на связь и не действует на объект назначения.

Несколько функций оперируют непосредственно с символическими связями. Для этих функций замена символического элемента составного имени объектом назначения не выполняется. К этим функциям относятся: unlink() (которая удаляет символическую связь), lstat() и readlink().

Поскольку символические связи могут указывать на каталоги, то некорректная конфигурация может привести к возникновению замкнутых связей каталогов. Для того, чтобы избежать зацикливания, система накладывает ограничения на количество итераций. Это предельное значение задается как {SYMLOOP_MAX} в файле .

5.6. Программные каналы и FIFO-файлы

5.6.1. Программные каналы

Программный канал (pipe) - это неименованный файл, который служит каналом ввода/вывода между двумя или несколькими взаимодействующими процессами: один процесс выполняет запись в канал, другой - чтение из канала. Администратор файловой системы таким образом обеспечивает буферизацию данных. Размер буфера определяется как {PIPE_BUF} в файле . Канал удаляется, как только он закрывается с двух сторон.

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

Типичное применение программного канала - это соединение выхода одной программы со входом другой. Такое соединение часто выполняется интерпретатором Shell. Например,

    ls  |  move
направляет стандартный выход от утилиты ls через канал на стандартный вход утилиты more.

Если вы хотите Используйте
Создать канал из интерпретатора Shell символ канала ("|")
Создать канал из программы функции Си pipe() или popen()

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

5.6.2. FIFO-файлы

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

Если вы хотите Используйте
Создать FIFO-файл из интерпретатора Shell Утилиту mkfifo
Создать FIFO-файл из программы Функцию Си mkfifo()
Удалить FIFO-файл из интерпретатора Shell Утилиту rm
Удалить FIFO-файл из программы Функции Си remove() или unlink()

5.7. Производительность Администратора файловой системы

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

5.7.1. Элеваторный доступ

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

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

5.7.2. Кэш-буфер

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

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

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

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

5.7.3. Многопоточная обработка

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

5.7.4. Управляемый процессами приоритет

Приоритет Администратора файловой системы может определяться приоритетом процесса, посылающего сообщение. Когда Администратор файловой системы принимает сообщение, то его приоритет устанавливается равным приоритету процесса, пославшего сообщение.

Более подробную информацию см. в подразделе 2.7 "Планирование процессов".

5.7.5. Временные файлы

В QNX имеется возможность открывать временные файлы, которые записываются, а затем считываются в течение короткого интервала времени. Для таких файлов Администратор файловой системы стремится сохранить блоки данных в кэш-буфере и записывает блоки на диск только в случае крайней необходимости.

5.7.6. Электронные диски

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

Администратор файловой системы в этом случае не использует кэш-буфер, поскольку электронный диск организован в памяти и не снабжен драйвером. (Информация о передаче сообщений, состоящих из нескольких частей, содержится в разделе 2 "Микроядро".)

Благодаря отсутствию задержек, которые вносит аппаратура и использование кэш-буфера, электронные диски обеспечивают большую скорость выполнения операций чтения/записи по сравнению с жесткими дисками.

5.8. Живучесть файловой системы

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

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

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

5.8.1. Восстановление файловой системы

Даже в самых хороших системах могут происходить следующие отказы:

Поэтому, для того, чтобы можно было восстановить как можно больше файлов в случае возникновения указанных отказов, на диск записываются уникальные "метки", которые помогают при автоматической идентификации и восстановлении критических частей файловой системы. Файл индексных дескрипторов (/.inodes), а также каждый каталог и блок экстентов содержат уникальные структуры данных, которые утилита chkfsys использует для восстановления поврежденной файловой системы.

Более подробно о восстановлении файловой системы смотрите в описании утилиты chkfsys.

5.9. Исходные тома

Администратор файловой системы управляет блок-ориентированными специальными файлами. Эти файлы определяют диски и разделы дисков.

5.9.1. Диски и дисковые подсистемы

В системе QNX каждый физический диск компьютера представлен блок-ориентированным специальным файлом.

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

Поскольку каждый диск - это блок-ориентированный специальный файл, то он может быть открыт для доступа на физическом уровне, с использованием функций Си стандарта POSIX, таких, как open(), close(), read() и write(). На уровне блок-ориентированного специального файла, который определяет весь диск, система QNX не накладывает никаких ограничений на структуры данных, которые могут существовать на диске.

На компьютере, загруженном системой QNX, может быть одна или несколько дисковых подсистем. Каждая дисковая подсистема состоит из контроллера и одного или нескольких дисков. Для каждой дисковой подсистемы, которая должна управляться Администратором файловой системы, запускается процесс драйвера устройств.

5.9.2. Разделы операционной системы

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

В соответствии с этим стандартом в таблице разделов можно определить до четырех первичных разделов на диске. Таблица хранится в первом блоке диска.

Каждому разделу должен быть задан "тип", опознаваемый операционной системой, которая собирается работать с данным разделом. В таблице, приведенной ниже, указаны типы разделов операционной системы, используемые в настоящее время:

Тип Операционная система
1 DOS (12-битовая FAT)
4 DOS (16-битовая FAT)
5 Раздел расширения DOS
6 Большие разделы DOS 4.0 (>32 Мбайт)
7 QNX 1.x и 2.x ("qnx")
7 OS/2 HPFS
8 QNX 1.x и 2.x ("qny")
9 QNX 1.x и 2.x ("qnz")
77 QNX 4.x
78 QNX 4.x
79 QNX 4.x
99 UNIX

Если вам требуется более одного раздела для QNX 4.x на одном физическом диске, то следует использовать тип 77 для первого раздела QNX, тип 78 для второго раздела QNX и тип 79 для третьего раздела QNX.

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

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

Утилиту fdisk можно использовать для создания, модификации и удаления разделов.

Поскольку в системе QNX каждый раздел диска рассматривается как блок-ориентированный специальный файл, то доступ можно получить:

Таблица разделов

Два физических диска. Первый диск содержит разделы DOS, QNX и UNIX. Второй - разделы DOS и QNX.
Рис. 23

5.9.3. Определение блок-ориентированных специальных файлов

Имена всех блок-ориентированных специальных файлов содержатся в дереве префиксов того компьютера, в дисковой памяти которого эти файлы размещены (дерево префиксов описано в разделе 3 "Пространство имен ввода/вывода").

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

Допустим, что у вас имеется контроллер диска Western Digital, к которому подключены два дисковода. На одном вы хотите смонтировать раздел DOS, раздел QNX и раздел UNIX. На другом дисководе - раздел DOS и раздел QNX.

Администратор файловой системы определит блок-ориентированные специальные файлы /dev/hd0 и /dev/hd1 для этих двух дисководов на контроллере, где запущен драйвер.

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

    mount           -p /dev/hd0             -p /dev/hd1
создаст следующие блок-ориентированные специальные файлы.

Раздел ОС Блок-ориентированный специальный файл
Раздел DOS на диске hd0 /dev/hd0t4
Раздел QNX на диске hd0 /dev/hd0t77
Раздел UNIX на диске hd0 /dev/hd0t99
Раздел DOS на диске hd1 /dev/hd1t4
Раздел QNX на диске hd1 /dev/hd1t77

Обратите внимание на то, что сочетание tn указывает на раздел диска, используемый конкретной операционной системой. Например, раздел DOS - это t4, раздел UNIX - t99 и т.д.

5.9.4. Монтирование файловой системы

Обычно файловая система QNX монтируется как блок-ориентированный специальный файл. Для монтирования файловой системы используется утилита mount, которая задает префикс, идентифицирующий файловую систему. Например, команда

    mount /dev/hd0t77 /
монтирует файловую систему с префиксом "/" на разделе, определенном блок-ориентированным специальным файлом с именем hd0t77.

Если диск разбит на разделы, то необходимо смонтировать блок-ориентированный специальный файл раздела (например, /dev/hd0t77), который определяет раздел QNX 4.x, а не основной блок-ориентированный специальный файл, который определяет весь физический диск (например, /dev/hd0). Если вы попытаетесь смонтировать основной блок-ориентированный специальный файл для всего диска, то при попытке доступа к файловой системе получите сообщение "corrupt filesystem" ("испорченная файловая система").

5.9.5. Демонтирование файловой системы

Для демонтирования файловой системы используется утилита umount. Например, следующая команда демонтирует файловую систему вашего исходного раздела QNX

    umount /dev/hd0t77

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

5.10. Ключевые компоненты раздела QNX

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

Эти компоненты создаются при инициализации файловой системы по команде dinit.

На рис. 24 представлена структура файловой системы QNX в разделе диска.

Рис. 24

5.10.1. Блок загрузчика

Блок загрузчика_-_это первый физический блок раздела диска. Этот блок содержит программный код, который загружается и затем выполняется базовой системой ввода/вывода (BIOS) компьютера, при загрузке операционной системы из раздела.

Если диск не разбит на разделы (например, в случае гибкого диска), то этот блок является первым физическим блоком диска.

5.10.2. Корневой блок

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

Файлы /.boot и /.altboot содержат образы операционных систем, которые могут быть загружены программой начальной загрузки QNX.

Обычно программа начальной загрузки QNX загружает образ ОС, хранящийся в файле /.boot. Но в случае непустого файла /.altboot имеется возможность загрузить образ ОС, хранящийся в файле /.altboot.

5.10.3. Битовая карта

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

5.10.4. Корневой каталог

Корневой каталог раздела представляет собой обычный каталог, за исключением следующего:

5.11. Администратор файловой системы DOS

В системе QNX работа с пространством имен ввода/вывода организована посредством префиксов, которые адресуют запросы на доступ к файлам к соответствующему процессу-администратору. Это использует Администратор файловой системы DOS (Dosfsys). Dosfsys работает с префиксом /dos и представляет набор файлов DOS в пространстве имен системы QNX как "гостевую" файловую систему.

Dosfsys обеспечивает прозрачный доступ к дискам DOS таким образом, что с файловыми системами DOS можно работать также, как с файловыми системами QNX. Эта прозрачность позволяет процессам работать с файлами DOS непосредственно.

Стандартные библиотечные функции ввода/вывода, такие, как open(), close(), read() и write() работают идентично как с файлами раздела DOS, так и с файлами раздела QNX.

Например, для того, чтобы скопировать файл из раздела QNX в раздел DOS, достаточно ввести команду

    cp  /usr/luc/file.dat  /dos/c/file.dat
                      -----
                        | составное имя диска DOS С:,
                        | работающего под QNX
                        |

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

В том случае, если не существует эквивалента функции QNX в среде DOS, например, mkfifo() или link(), то Dosfsys возвращает соответствующий код ошибки (errno).

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

Для выполнения программ DOS в среде QNX существует специальный пакет Rundos.


НазадОглавлениеВперед
КаталогИндекс раздела