Файловые системы операционной системы LINUX

Автор работы: Пользователь скрыл имя, 15 Января 2014 в 11:58, реферат

Описание работы

Термин "файловая система" по сути имеет два значения. С одной стороны это составная часть файлового дерева, а с другой - все файловое дерево и алгоритмы, с помощью которых ОС управляет им. Как правило, значение термина становится ясным из контекста. В широком смысле понятие "файловая система" включает:
• Совокупность всех файлов на диске
• Наборы структур данных, используемых для управления файлами, такие, например, как каталоги файлов, дескрипторы файлов, таблицы распределения свободного и занятого пространства на диске

Файлы: 1 файл

Linux.doc

— 109.00 Кб (Скачать файл)

                                                            РЕФЕРАТ

                                   по информатике

                                           на тему:

 

Файловые системы 

                      операционной системы LINUX

 

 

Введение

 

         Термин "файловая система" по сути имеет два значения. С одной стороны это составная часть файлового дерева, а с другой - все файловое дерево и алгоритмы, с помощью которых ОС управляет им. Как правило, значение термина становится ясным из контекста. В широком смысле понятие "файловая система" включает:  
      • Совокупность всех файлов на диске  
      • Наборы структур данных, используемых для управления файлами, такие, например, как каталоги файлов, дескрипторы файлов, таблицы распределения свободного и занятого пространства на диске  
      • Комплекс системных программных средств, реализующих управление файлами, в частности: создание, уничтожение, чтение, запись, именование, поиск и другие операции над файлами 

        Linux является операционной системой семейства Unix и ее файловая система полностью соответствует стандартам данного класса. В Unix под файлом понимается не только объект, хранящийся на диске, но и любое устройство, поддерживающее ввод/вывод потока данных. Например, драйверы устройств рассматриваются как файлы. Основными задачами файловой системы являются: упорядочивание хранимых данных; простой и быстрый доступ к хранимым данным; обеспечение целостности хранимых данных.

 

Виртуальная файловая система (Virtual File System)

 
       В Unix различают несколько типов файлов. Каждый тип файлов имеет свои особенности реализации. Эти особенности, однако, скрыты от пользователя программным уровнем ядра Linux, получившим название виртуальной файловой системы (Virtual File System - VFS).  
       Виртуальная файловая система VFS поддерживает следующие типы файлов:  

• Обычные файлы  
• Каталоги  
• Специальные файлы  
• Именованные конвейеры  
• Символьные связи  
      

        В состав VFS Linux входят два основных компонента: набор определений, характеризующих объект типа файл и программный уровень, обеспечивающий работу с подобными объектами. Основные типы объектов, выделяемых VFS: индексы (inode, vnode) - представляют каждый элемент файловой системы, файловые структуры (структура file) - представляют отдельные файлы, файловая система (file system) - представляет файловую систему в целом.  
        Для каждого типа объектов VFS поддерживает свой набор разрешенных операций, ссылки на которые хранятся в таблице функций. По указателю конкретного объекта происходит обращение к требуемой области таблицы, хранящей фактические адреса функций, реализующих требуемые операции.  
         В VFS вся информация о файлах разделена на две части - не зависящую от типа файловой системы, которая хранится в специальной структуре ядра - структуре vnode, и зависящую от типа файловой системы - структуре inode, формат которой на уровне VFS не определен, а используется только ссылка на нее в структуре vnode.  
        Структура vnode используется ядром для связи файла с определенным типом файловой системы и конкретными реализациями файловых операций. Одно из полей vnode используется для указания на таблицу физических страниц памяти в случае, когда файл отображается в физическую память. В vnode также содержится тип файла и указатель на зависимую от типа файловой системы часть описания характеристик файла - структуру inode, обычно содержащую адресную информацию о расположении файла на носителе и о правах доступа к файлу. Кроме этого, vnode используется ядром для хранения информации о блокировках (locks), примененных процессами к отдельным областям файла.  
        Сами операции над объектом реализуются на программным уровне VFS, который непосредственно вызывает необходимую функцию через таблицу функций. При этом не имеет значения, представляет ли индекс сетевой файл, файл на диске, сетевое гнездо, либо каталог.  
        При каждом открытии процессом файла ядро создает в системной области памяти новую структуру типа file, которая описывает как открытый файл, так и операции, которые процесс собирается производить с файлом (например, чтение). Структура file содержит такие поля, как определение режима открытия (только для чтения, для чтения и записи и т.п.); указатель на структуру vnode; смещение в файле при операциях чтения/записи; указатель на структуру, содержащую права процесса, открывшего файл; а также указатели на предыдущую и последующую структуру типа file, связывающие все такие структуры в список. 

 
        В функции объекта file входит:  
• отслеживание последовательного ввода/вывода в файл  
• учет запросов от процессов на разрешение записи при открытии файла  
• отслеживание действий процессов при необходимости упреждающего чтения  
        В отличие от структур типа file структуры типа vnode заводятся операционной системой для каждого активного (открытого) файла в единственном экземпляре, поэтому структуры file могут ссылаться на одну и ту же структуру vnode.  
        Структуры vnode не связаны в какой-либо список. Они появляются по требованию в системном пуле памяти и присоединяются к структуре данных, которая инициировала появление этого vnode, с помощью соответствующего указателя.  
         Все операции с файлами производятся с помощью связанной с файлом структуры vnode. Когда процесс запрашивает операцию с файлом (например, операцию open), то независимая от типа файловой системы часть ОС передает управление зависимой от типа файловой системы части ОС для выполнения операции. Если зависимая часть обнаруживает, что структуры vnode, описывающей нужный файл, нет в оперативной памяти, то зависимая часть заводит для него новую структуру vnode.  
         Файловая система представляет собой множество файлов, объединенных в единую иерархическую структуру при помощи каталогов. Такое объединение файлов представляет объект "файловая система". Каждое дисковое устройство смонтированное как файловая система трактуется как отдельный объект "файловая система".  
        Обработка директорий (файлов-каталогов) имеет свои особенности. При выполнении операций считывания/записи файл должен быть предварительно открыт. Однако этого не требуется в случае переименования либо удаления файла в каталоге. Всю информацию о подобных операциях VFS хранит в объекте inode, а не в объекте file.

 

Файловая система Ext2fs (Linux ext2 File System) 

 
          Linux поддерживает несколько типов файловых систем. Наиболее важные из них рассмотрены ниже.  
• minix Считается самой старой и самой надежной файловой системой, но достаточно ограниченной в своих возможностях и доступных объемах (максимум 64 Мб на одну файловую систему).  
• xia Модифицированная версия системы minix, в которой увеличена максимальная длина имени файла и размер файловой системы.  
• ext2 Наиболее богатая функциональными возможностями файловая система из семейства совместимых с Linux. Разработана с учетом совместимости с последующими версиями, поэтому для установки новой версии кода системы не требуется устанавливать ее заново.  
• ext Предыдущая версия системы ext2, не совместима с последующими версиями. В настоящее время она очень редко включается в пакеты новых поставляемых систем, т.к. большинство пользователей сейчас пользуются системой ext2.  
• proc Эта система, которая обычно доступна через каталог /ргос, позволяет получить доступ к определенным структурам данных ядра, к таким, как список процессов (отсюда название). В действительности, она не является файловой системой, хотя по ее структуре сложно обнаружить разницу. Все эти структуры выглядят как файловая система и ими можно оперировать обычными средствами работы с файловой системой.  
         В дополнение к рассмотренным выше, в Linux включена поддержка еще некоторых файловых систем для обеспечения обмена файлами между другими операционными системами. Эти файловые системы работают также, как и описанные выше, кроме того, что их функциональные возможности могут быть значительно ограничены по сравнению с возможностями, обычно предоставляемыми файловыми системами UNIX.  
> msdos Обеспечивается совместимость с системой MS-DOS (а также OS/2 и Windows 95/98/NT/2000).  
> umsdos Расширяет возможности драйвера файловой системы MS-DOS для Linux таким образом, что при работе в Linux, имеется возможность работы с именами файлов нестандартной длины, просмотра прав доступа к файлу, ссылок, имени пользователя, которому принадлежит файл, а также оперирование с файлами устройств.

> iso9660 Стандартная файловая система для CD-ROM.

> nfs Сетевая файловая система, обеспечивающая разделение одной файловой системы между несколькими компьютерами для предоставления доступа к ее файлам со всех машин.  
> hpfs Файловая система OS/2.  
> xenix Файловая система Xenix  
> coherent Файловая система Coherent  
> sysv Файловые системы System V/386, Coherent и Xenix.  
> ncpfs Сетевая файловая система, позволяющая монтировать тома файл-сервера Novell NetWare.  
 
Ext2fs является стандартной дисковой файловой системой, принятой в среде Linux.  
 
С точки зрения Linux файлами являются:  
• Обыкновенные файлы (собственно файлы на физическом носителе)  
• Каталоги, директории (directory)  
• Символьные устройства  
• Блочные устройства  
• Именованные каналы, конвейеры (named pipes)  
• Гнезда, сокеты (sockets)  
• Символьные ссылки, связи (symlinks).

 

Файлы

 
        Файлы представляют собой совокупности данных, имеющие собственные имена. Имя файла является его идентификатором. Это означает то, что в одном каталоге не могут храниться несколько файлов, имеющих одинаковое имя. 
        Вся необходимая операционной системе информация о файле, кроме его символьного имени, хранится в специальной системной таблице, называемой индексным дескриптором (inode) файла. Индексные дескрипторы всех файлов имеют одинаковый размер - 64 байта и содержат данные о типе файла, о физическом расположении файла на диске (описанные далее 13 элементов), размере в байтах, о дате создания, последней модификации и последнего обращения к файлу, о привилегиях доступа и некоторую другую информацию. Индексные дескрипторы пронумерованы и хранятся в специальной области файловой системы. Номер индексного дескриптора является уникальным именем файла. Соответствие между полными символьными именами файлов и их уникальными именами устанавливается с помощью иерархии каталогов.  
         В системе Ext2fs данные не фрагментированы, но хранятся небольшими блоками. По умолчанию размер блока составляет 1 Кб, система поддерживает также размер и в 2 и 4 Кб. Операции же ввода/вывода осуществляются большими порциями, что обеспечивается объединением запросов физически смежных блоков в кластер.  
         В файловой системе Ext2fs действует разделение на множественные группы блоков. При размещении файла группы выбираются следующим образом:  
  • для размещения данных, как правило, выбирается группа, где размещается самаиндексаinode,  
  • для размещения индекса inode и файлов, не являющихся каталогами, выбирается группа, соответствующая родительскому каталогу файла.  
          

        В общем случае файл может располагаться в несмежных блоках дисковой памяти. Логическая последовательность блоков в файле задается набором из 13 элементов. Первые 10 элементов предназначаются для непосредственного указания номеров первых 10 блоков файла. Если размер файла превышает 10 блоков, то в 11 элементе указывается номер блока, в котором содержится список следующих 128 блоков файла. Если файл имеет размер более, чем 10+128 блоков, то используется 12-й элемент, содержащий номер блока, в котором указываются номера 128 блоков, каждый из которых может содержать еще по 128 номеров блоков файла. Таким образом, 12-й элемент используется для двухуровневой косвенной адресации. В случае, если файл больше, чем 10+128+1282 блоков, то используется 13 элемент для трехуровневой косвенной адресации. При таком способе адресации предельный размер файла составляет 2 113 674 блока.  
         

В зависимости от хранимой информации на логическом уровне рассмотрения различают следующие типы файлов:  
• Пользовательские - файлы, создаваемые и управляемые пользователем  
• Системные - файлы, содержащие данные, необходимые для функционирования системы. Например, файл /etc/passwd - системный файл, обновляющийся каждый раз при добавлении к системе нового пользователя.  
• Исполнимые -файлы-программы, исполняемые системой.  

Соглашения  об именах файлов

 
1) Имя может содержать до 256 символов  
2) Имя может содержать символы обоих регистров (верхнего и нижнего). Регистр символов в именах различается, то есть файлы Linux и linux - это различные файлы и могут располагаться в одном каталоге.  
3) Разрешается включать в имя дополнительные символы: тире, нижнее подчеркивание и точку.  
4) Имя не должно содержать метасимволы, такие как звездочка, знак вопроса, обратный слеш, так как они имеют особое значение в оболочке Linux. 

Каталоги

 
           Как все файловые системы Linux поддерживает понятие каталога. Под каталогами понимаются папки (области на диске), в которых могут храниться файлы и другие каталоги. Каталог, содержащий другой каталог, по отношению к последнему называется родительским, а хранящийся в нем каталог - его подкаталогом. Так, например: если в каталоге "parent" создать каталог "children", то "parent" будет родительским каталогом для "children", а тот, в свою очередь, его подкаталогом.  
          Внутри системы каталоги хранятся на диске так же, как и обычные файлы, однако их содержимое обрабатывается несколько по-другому. Каждый элемент каталога состоит из связанных записей, содержащих следующую информацию: длину записи, имя файла, номер индекса inode, на который ссылается запись    
         Каталоги хранятся отдельно друг от друга с распределением по всем доступным группам.  
         Файловая система Linux имеет иерархическую структуру, она организована в виде дерева с одной исходной вершиной, называемой корневым каталогом. Корневой каталог является родительским каталогом для всей файловой системы. Для обозначения корневого каталога используется символ слеш "/". На рисунке отражена иерархия файловой системы. 

  

 
 
       Для имен каталогов действуют те же ограничения, что и для имен файлов. Символ "/" считается символом каталога и его присутствие рядом с именем файла в режиме просмотра свидетельствует о том, что это каталог. 

 

Символьные и блочные устройства

 
      Файлы символьных и блочных устройств создаются с помощью программы mknod и соответствуют внешним устройствам, а также псевдоустройствам, таким как пустое устройство /dev/null (такое, при попытке чтения из которого сразу же сообщается о достижении конца файла и при записи, в которой никогда не происходит переполнения - точный аналог NUL в DOS и Windows).  
      Устройства нумеруются двумя целыми числами - старшим (major number) и младшим (minor number). Первое из них соответствует типу устройства, а второе - конкретному устройству. Различие между файлами символьных и блочных устройств заключается в том, что к первым разрешен только последовательный доступ, а вторые допускают обращение (для чтения или записи) к произвольному месту устройства. 

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

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

 

Гнезда

 
Вообще гнезда (и взаимодействие программ при помощи гнезд) играют очень важную роль во всех Unix-системах, включая и Linux: они являются ключевым понятием TCP/IP и соответственно на них целиком строится Internet. Однако с точки зрения файловой системы гнезда практически неотличимы от именованных каналов: это просто метки, позволяющие связать несколько программ. После того как связь установлена, общение программ происходит без участия файла гнезда: данные передаются ядром ОС непосредственно от одной программы к другой. 

Символические ссылки

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

Информация о работе Файловые системы операционной системы LINUX