Файл: Debian Таненбаум Бос.pdf

ВУЗ: Не указан

Категория: Книга

Дисциплина: Операционные системы

Добавлен: 29.10.2018

Просмотров: 48099

Скачиваний: 190

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

Гл а в а   4

.

 

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

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

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

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

Таким образом, есть три основных требования к долговременному хранилищу инфор-
мации:

1.  Оно должно предоставлять возможность хранения огромного количества инфор-

мации.

2.  Информация должна пережить прекращение работы использующего ее процесса.

3.  К информации должны иметь одновременный доступ несколько процессов.

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

 

 чтение блока k;

 

 запись блока k.


background image

302  

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

На самом деле этих операций больше, но, в принципе, решить проблему долговремен-
ного хранения могут и эти две.

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

 

 Как ведется поиск информации?

 

 Как уберечь данные одного пользователя от чтения их другим пользователем?

 

 Как узнать, которые из блоков свободны?

А ведь таких вопросов значительно больше.

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

Файлы

 являются логическими информационными блоками, создаваемыми процес-

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

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

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

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


background image

4.1. Файлы   

303

4.1. Файлы

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

4.1.1. Имена файлов

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

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

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

andrea

bruce

 и 

cathy

. Зачастую допускается также применение 

цифр и специальных символов, поэтому допустимы также такие имена, как 

2

urgent!

 

и 

Fig.2-14

. Многие файловые системы поддерживают имена длиной до 255 символов.

Некоторые файловые системы различают буквы верхнего и нижнего регистров, а не-
которые не делают таких различий. Система UNIX подпадает под первую категорию, 
а старая MS-DOS — под вторую. (Кстати, при всей своей древности MS-DOS до сих 
пор довольно широко используется во встроенных системах, так что она отнюдь не 
устарела.) Поэтому система UNIX может рассматривать сочетания символов 

maria

Maria

 и 

MARIA

 как имена трех разных файлов. В MS-DOS все эти имена относятся 

к одному и тому же файлу.

Наверное, будет кстати следующее отступление, касающееся файловых систем. Обе 
операционные системы, Windows 95 и Windows 98, использовали файловую систему 
MS-DOS под названием FAT-16, и поэтому они унаследовали множество ее свойств, 
касающихся, например, построения имен файлов. В Windows 98 было представлено 
расширение FAT-16, которое привело к системе FAT-32, но обе эти системы очень похо-
жи друг на друга. Вдобавок к этому Windows NT, Windows 2000, Windows XP, Windows 
Vista, Windows 7 и Windows 8 по-прежнему поддерживают обе файловые системы FAT, 
которые к настоящему времени фактически уже устарели. Но новые операционные 
системы имеют собственную намного более совершенную файловую систему NTFS, 
которая обладает несколько иными свойствами (к примеру, допускает имена файлов 
в кодировке Unicode). На самом деле для Windows 8 имеется вторая файловая система, 
известная как ReFS (или Resilient File System — восстанавливаемая файловая система), 
но она предназначена для серверной версии. В этой главе все ссылки на MS-DOS или 
файловую систему FAT будут, если не указано иное, подразумевать системы FAT-16 
и FAT-32, используемые в Windows. Далее в этой главе мы рассмотрим файловую 
систему FAT, а систему NTFS — в главе 12, когда будем подробно изучать операцион-
ную систему Windows 8. Кстати, есть также новая FAT-подобная файловая система, 
известная как exFAT. Это созданное компанией Microsoft расширение к FAT-32, опти-


background image

304  

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

мизированное для флеш-накопителей и больших файловых систем. ExFAT является 
единственной современной файловой системой компании Microsoft, в отношении 
которой в OS X допускаются чтение и запись.

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

prog.c

. Та часть имени, которая следует 

за точкой, называется расширением имени файла и, как правило, несет в себе некото-
рую информацию о файле. К примеру, в MS-DOS имена файлов состоят из 1–8 сим-
волов и имеют (необязательно) расширение, состоящее из 1–3 символов. В UNIX 
количество расширений выбирает сам пользователь, так что имя файла может иметь 
два и более расширений, например 

homepage.html.zip

, где 

.html

 указывает на наличие 

веб-страницы в коде HTML, а 

.zip

 — на то, что этот файл (

homepage.html

) был сжат 

архиватором. Некоторые широко распространенные расширения и их значения по-
казаны в табл. 4.1.

Таблица 4.1. Некоторые типичные расширения имен файлов

Расширение

Значение

.bak

Резервная копия файла

.c

Исходный текст программы на языке C

.gif

Изображение формата GIF

.hlp

Файл справки

.html

Документ в формате HTML

.jpg

Статическое растровое изображение в формате JPEG

.mp3

Музыка в аудиоформате MPEG layer 3

.mpg

Фильм в формате MPEG

.o

Объектный файл (полученный на выходе компилятора, но еще 
не прошедший компоновку)

.pdf

Документ формата PDF

.ps

Документ формата PostScript

.tex

Входной файл для программы форматирования TEX

.txt

Обычный текстовый файл

.zip

Архив, сжатый программой zip

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

file.txt

 может быть текстовым файлом, но это скорее напоминание 

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

.c

, и отказываться выполнять компиляцию, если они не имеют 

такого расширения. Но операционную систему это не волнует.

Подобные соглашения особенно полезны, когда одна и та же программа должна 
управлять различными типами файлов. Например, компилятору языка C может быть 
предоставлен список файлов, которые он должен откомпилировать и скомпоновать, 
причем некоторые из этих файлов могут содержать программы на языке C, а другие — 
являться ассемблерными файлами. В таком случае компилятор сможет отличить одни 
файлы от других именно по их расширениям.


background image

4.1. Файлы   

305

Система Windows, напротив, знает о расширениях имен файлов и присваивает каждому 
расширению вполне определенное значение. Пользователи (или процессы) могут реги-
стрировать расширения в операционной системе, указывая программу, которая станет 
их «владельцем». При двойном щелчке мыши на имени файла запускается программа, 
назначенная этому расширению, с именем файла в качестве параметра. Например, двой-
ной щелчок мыши на имени 

file.docx

 запускает Microsoft Word, который открывает файл 

file.docx

 в качестве исходного файла для редактирования.

4.1.2. Структура файла

Файлы могут быть структурированы несколькими различными способами. Три наи-
более вероятные структуры показаны на рис. 4.1. Файл на рис. 4.1, а представляет со-
бой бессистемную последовательность байтов. В сущности, операционной системе все 
равно, что содержится в этом файле, — она видит только байты. Какое-либо значение 
этим байтам придают программы на уровне пользователя. Такой подход используется 
как в UNIX, так и в Windows.

Рис. 4.1. Три типа файлов: а — последовательность байтов; б — последовательность записей; 

в  — дерево

Когда операционная система считает, что файлы — это не более чем последователь-
ность байтов, она предоставляет максимум гибкости. Программы пользователя могут 
помещать в свои файлы все, что им заблагорассудится, и называть их, как им удобно. 
Операционная система ничем при этом не помогает, но и ничем не мешает. Последнее 
обстоятельство может иметь особое значение для тех пользователей, которые хотят 
сделать что-либо необычное. Эта файловая модель используется всеми версиями UNIX 
(включая Linux и OS X) и Windows.

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