Перейти на главную   
  helloworld.ru - документация и книги по программированию  
helloworld.ru - документация и книги по программированию
    главная     хостинг    
Поиск по сайту:  
Смотрите также
Языки программирования
C#
MS Visual C++
Borland C++
C++ Builder
Visual Basic
Quick Basic
Turbo Pascal
Delphi
JavaScript
Java
PHP
Perl
Assembler
AutoLisp
Fortran
Python
1C

Интернет-технологии
HTML
VRML
HTTP
CGI
FTP
Proxy
DNS
протоколы TCP/IP
Apache

Web-дизайн
HTML
Дизайн
VRML
PhotoShop
Cookie
CGI
SSI
CSS
ASP
PHP
Perl

Программирование игр
DirectDraw
DirectSound
Direct3D
OpenGL
3D-графика
Графика под DOS

Алгоритмы
Численные методы
Обработка данных

Сис. программирование
Драйверы

Базы данных
MySQL
SQL

Другое

Хостинг


Друзья
demaker.ru
Реклама

Лучший хостинг. Аренда серверов




helloworld.ru

A.2.4. Файлы устройств

В Unix-подобных операционных системах доступ к устройствам осуществляется через специальные файлы. Такой файл не занимает места в файловой системе. Он является только точкой доступа к драйверу устройства.

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

A.3. Виртуальная Файловая Система (VFS)

A.3.1. Принцип работы

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

Такой механизм работы с файлами часто используется в Unix-подобных операционных системах для упрощения объединения и использования нескольких типов файловых систем.

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

A.3.2. Структура VFS

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

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

Дескриптор смонтированной файловой системы содержит в себе некоторую информацию: информация, которая одинакова для каждого типа файловой системы, указатели на функции, используемые для выполнения операций данной файловой системы и некоторые данные, используемые этой системой. Указатели на функции, расположенные в дескрипторе файловой системы, позволяют VFS получить доступ к внутренним функциям файловой системы.

В VFS используются еще два типа дескрипторов: это inode и дескриптор открытого файла. Каждый из них содержит информацию, связанную с используемыми файлами и набором операций, используемых кодом файловой системы. В то время как дескриптор inode содержит указатели к функциям, используемым по отношению к любому файлу (например, create или unlink), то дескриптор файлов содержит указатели к функциям, оперирующим только с открытыми файлами (например, read или write).


[ Назад | Оглавление | Далее ]









helloworld.ru © 2001-2021
Все права защищены