birmaga.ru
добавить свой файл

1

3.2 Disk Special Files and File Systems

The section explains how to do I/O on disk special files, which is then used to access the internals of a UNIX file system. It also explains how mounting and unmounting work.

3.2.1 I/O on Disk Special Files


Until now we've done I/O exclusively through the kernel file system, using relatively high-level abstractions like file, directory, and i-node. As discussed in Section 2.12, the file system is implemented on top of the block I/O system, which uses the buffer cache1. The block I/O system is accessed via a block special file, or block device, that interfaces directly to the disk. The disk is treated as a sequence of blocks whose size is a multiple of the sector size, which is usually 512.

There may be several physical disks, and each physical disk may be divided into pieces, each of which is called a volume, partition, or file system. (The term file system is confusing because it also describes part of the kernel. The context in which we use the term will make our intended meaning clear.)

Each volume corresponds to a special file whose name is typically formed from a device name, such as "hd," followed by numbers and letters that indicate which section of which physical disk it occupies. These special files are usually linked into the /dev directory, although they don't have to be. For example, on Linux the file /dev/hdb3 refers to the third partition of the second physical hard disk.

In principle, a disk special file may be operated on with I/O system calls just as if it were a regular file. It may be opened for reading and/or writing, read or written (in arbitrary units), seeked (to any byte boundary), and closed. The buffer cache is used (since it is a block special file), but within the volume, there are no directories, files, i-nodes, permissions, owners, sizes, times, and so on. One just deals with a giant array of numbered blocks.

In practice, most users can't perform any of these operations because permission is denied to them. Reading a disk that contains other users' files compromises their privacy, even though the disk appears haphazard when viewed as a special file (blocks are assigned to UNIX files and directories in no obvious order). Writing to a disk without going through the kernel file system would create even worse havoc.


On the other hand, if a volume is reserved for a user, and not used for other users' files and directories, then there is no conflict. Users implementing database man­agers or data acquisition systems may indeed want to have a volume set aside so they can access it as a block special file. A limitation, of course, is that there are only so many disk special files to go around. Usually when a disk special file is used by an application, that application is the only one, or certainly the main one, on the computer.

Potentially even faster than block disk special files are raw disk special files. These device drivers deal with the same areas of disk. However, these raw special files are character devices, not block devices. That means they do not follow the block model, and they do not use the buffer cache. They do something even better.


    1. Системные файлы на диске и файловые системы.

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

    1. Система ввода-вывода на системном диске.

На данный момент мы закончили установку системы ввода-вывода исключительно под ядро данной файловой системы, использующей относительно высокотехнологичные обобщения например файлы, обслуживание и интернет-заметки. Мы об этом говорили в графе 2.12, файловая система стоит на вершине в инструментах ввода-вывода системы, которая используется в буфере обмена. Блок ввода-вывода системы предоставляет доступ через файловую систему, или устройства, которое подсоединено прямо к диску. Диск в свою очередь разделён на последовательные блоки, чей размер кратен размеру сектора, который обычно равен 512.

Может быть установлено несколько жестких дисков, и каждый диск может быть разделён на части, каждая из которых называется вместительностью, разделением, или файловой системой. (Часть файловой системы смешана, так как это описывает часть ядра. Контекст который мы используем в этой части сделает наше намерение более ясным).


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

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

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

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


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


1 Newer systems actually use the virtual-memory system rather than the buffer cache, but the cache is still a useful abstract model for how the kernel handles files.