пятница, 24 января 2014 г.

Практическая работа "Работа с текстом"
текст для форматирования в текстовом редакторе и создания графического конспекта в тетради


Физические файловые системы UNIX - основные компоненты Каждый жесткий диск состоит из одной или нескольких логических частей (групп цилиндров), называемых разделами (partitions). Расположение и размер раздела определяется при форматировании диска. В ОС UNIX разделы выступают в качестве независимых устройств, доступ к которым осуществляется как к различным носителям данных. Обычно в разделе может располагаться только одна физическая файловая система. Имеется много типов физических файловых систем, например FAT16 и NTFS, с разной структурой. Более того, имеется множество типов физических файловых систем UNIX (ufs, s5fs, ext2, vxfs, jfs, ffs и т.д.). Ниже мы рассмотрим основные их общие особенности. Физическая файловая система UNIX занимает раздел диска и состоит из таких основных компонентов: Суперблок (superblock). Содержит общую информацию о файловой системе. Массив индексных дескрипторов (ilist). Содержит метаданные всех файлов файловой системы. Индексный дескриптор (inode) содержит информацию о статусе файла и указывает на расположение данных этого файла. Ядро обращается к индексному дескриптору по индексу в массиве. Один дескриптор является корневым для физической файловой системы, через него обеспечивается доступ к структуре каталогов и файлов после монтирования файловой системы. Размер массива индексных дескрипторов является фиксированным и задается при создании физической файловой системы. Блоки хранения данных. Данные обычных файлов и каталогов хранятся в блоках. Обработка файла осуществляется через индексный дескриптор, содержащий ссылки на блоки данных. Суперблок Суперблок содержит информацию, необходимую для монтирования и управления файловой системой в целом. В каждой файловой системе существует только один суперблок, который располагается в начале раздела. Суперблок считывается в память ядра при монтировании файловой системы и находиться там до ее отключения - демонтирования. Суперблок содержит: тип файловой системы; размер файловой системы в логических блоках, включая сам суперблок, массив индексных дескрипторов и блоки хранения данных; размер массива индексных дескрипторов; количество свободных блоков; количество свободных индексных дескрипторов; флаги; размер логического блока файловой системы (512, 1024, 2048, 4096, 8192). список номеров свободных индексных дескрипторов; список адресов свободных блоков. Поскольку количество свободных индексных дескрипторов и блоков хранения данных может быть значительным, хранение двух последних списков целиком в суперблоке непрактично. Для индексных дескрипторов храниться только часть списка. Когда число свободных дескрипторов приближается к 0, ядро просматривает список и вновь формирует список свободных дескрипторов.Такой подход неприемлем в отношении свободных блоков хранения данных, поскольку по содержимому блока нельзя определить, свободен он или нет. Поэтому необходимо хранить список адресов свободных блоков целиком. Список адресов свободных блоков может занимать несколько блоков хранения данных, но суперблок содержит только один блок этого списка. Первый элемент этого блока указывает на блок, хранящий продолжение списка. Выделение свободных блоков для размещения файла производиться с конца списка суперблока. Когда в списке остается единственный элемент, ядро интерпретирует его как указатель на блок, содержащий продолжение списка. В этом случае содержимое этого блока считывается в суперблок, и блок становится свободным. Такой подход позволяет использовать дисковое пространство под списки, пропорциональное свободному месту в файловой системе. Когда свободного места практически не остается, список адресов свободных блоков целиком помещается в суперблоке. Индексные дескрипторы Индексный дескриптор, или inode, содержит информацию о файле, необходимую для обработки данных, т.е. метаданные файла. Каждый файл ассоциирован с одним индексным дескриптором, хотя может иметь несколько имен (жестких связей) в файловой системе, каждое из которых указывает на один и тот же индексный дескриптор. Индексный дескриптор не содержит: имени файла, которое содержится в блоках хранения данных каталога; содержимого файла, которое размещено в блоках хранения данных. Индексный дескриптор содержит: номер; тип файла; права доступа к файлу; количество связей (ссылок на файл в каталогах) файла; идентификатор пользователя и группы-владельца; размер файла в байтах; время последнего доступа к файлу; время последнего изменения файла; время последнего изменения индексного дескриптора файла; указатели на блоки данных файла (обычно 10); указатели на косвенные блоки (обычно 3). Размер индексного дескриптора обычно составляет 128 байтов.Индексный дескриптор содержит информацию о расположении данных файла. Поскольку дисковые блоки хранения данных, в общем случае, располагаются не последовательно, индексный дескриптор должен хранить физические адреса всех блоков, принадлежащих данному файлу. Каждый дескриптор содержит 13 указателей. Первые 10 указателей непосредственно ссылаются на блоки данных файла. Если файл большего размера - 11-ый указатель ссылается на первый косвенный блок (indirection block) из 128 (256) ссылок на блоки данных. Если и этого недостаточно, 12-ый указатель ссылается на дважды косвенный блок, содержащий 128 (256) ссылок на косвенные блоки. Наконец последний, 13-ый указатель ссылается на трижды косвенный блок из 128 (256) ссылок на дважды косвенные блоки. Количество элементов в косвенном блоке зависит от его размера. Поддерживая множественные уровни косвенности, индексные дескрипторы позволяют отслеживать огромные файлы, не растрачивая дисковое пространство для небольших файлов. Синхронизация структуры файловой системы При открытии файла ядро помещает копию дискового индексного дескриптора в соответствующую таблицу в памяти, которая содержит дополнительные атрибуты. В дальнейшем изменение индексного дескриптора происходит в памяти, и измененная структура файловой системы сбрасывается на диск только при выполнении специальной команды, sync. Эта команда выполняется при штатной остановке системы или явно администратором. Если произошло нештатное прекращение работы системы, структура суперблока и массива индексных дескрипторов на диске не соответствует структуре блоков данных и может быть несогласованной. Отсутствие синхронизации между образом файловой системы в памяти и ее данными на диске (в случае аварийной остановки системы) может привести к появлению следующих ошибок в файловой системе: Один блок адресуется несколькими дескрипторами (принадлежит нескольким файлам). Блок помечен как свободный, но в тоже время занят (на него ссылается дескриптор). Блок помечен как занятый, но в то же время свободен (ни один дескриптор на него не ссылается). Неправильное количество ссылок в дескрипторе. Несовпадение между размером файла и суммарным размером адресуемых дескриптором блоков. Недопустимые адресуемые блоки (например, расположенные за пределами файловой системы). "Потерянные" файлы (правильные дескрипторы, на которые не ссылаються записи каталогов). Недопустимые номера дескрипторов в записях каталогов. Часть этих проблем может быть устранена специальной утилитой, fsck (см. далее в разделе, посвященном управлению файловой системой). Но Файлы и каталоги Операционная система выполняет две основные задачи: манипулирование данными и их хранение. Большинство программ в основном манипулирует данными, но, в конечном счете, они где-нибудь хранятся. В системе UNIX таким местом хранения является файловая система. Более того, в UNIX все устройства, с которыми работает операционная система, также представлены в виде специальных файлов в файловой системе. Понятие логической файловой системы Логическая файловая система в ОС UNIX (или просто файловая система) - это иерархически организованная структура всех каталогов и файлов в системе, начинающаяся с корневого каталога. Файловая система UNIX обеспечивает унифицированный интерфейс доступа к данным, расположенным на различных носителях, и к периферийным устройствам. Логическая файловая система может состоять из одной или нескольких физических файловых (под)систем, являющихся разделами физических носителей (дисков, CD-ROM или дискет). Файловая система контролирует права доступа к файлам, выполняет операции создания и удаления файлов, а также выполняет запись/чтение данных файла. Поскольку большинство прикладных функций выполняется через интерфейс файловой системы, следовательно, права доступа к файлам определяют привилегии пользователя в системе. Файловая система обеспечивает перенаправление запросов, адресованных периферийным устройствам, соответствующим модулям подсистемы ввода-вывода. Ориентация и навигация в файловой системе Иерархическая структура файловой системы UNIX упрощает ориентацию в ней. Каждый каталог, начиная с корневого (/), в свою очередь, содержит файлы и другие каталоги (подкаталоги). Каждый каталог содержит также ссылку на родительский каталог (для корневого каталога родительским является он сам), представленную каталогом с именем две точки (..) и ссылку на самого себя, представленную каталогом с именем точка (.). Каждый процесс имеет текущий каталог. Сразу после регистрации текущим каталогом пользователя (на самом деле, процесса - начальной программы, обычно, командного интерпретатора) становится начальный каталог, указанный в файле /etc/passwd. Каждый процесс может сослаться (назвать) на любой файл или каталог в файловой системе по имени. Способам задания имен файлов посвящен следующий подраздел. Имена файлов в ОС UNIX В ОС UNIX поддерживается три способа указания имен файлов: Краткое имя. Имя, не содержащее специальных метасимволов косая черта (/), является кратким именем файла. По краткому имени можно сослаться на файлы текущего каталога. Например, команда ls -l .profile требует получить полную информацию о файле .profile в текущем каталоге. Относительное имя. Имя, не начинающееся с символа косой черты (/), но включающее такие символы. Оно ссылается на файл относительно текущего каталога. При этом для ссылки на файл или каталог в каком-то другом каталоге используется метасимвол косой черты (/). Например, команда ls -l ../.profile требует получить полную информацию о файле .profile в родительском каталоге текущего каталога, а команда vi doc/text.txt требует открыть в редакторе vi файл text.txt в подкаталоге doc текущего каталога. Полное имя. Имя, начинающееся с символа косой черты (/). Оно ссылается на файл относительно корневого каталога. Это имя еще называют абсолютным, так как оно, в отличие от предыдущих способов задания имени, ссылается на один и тот же файл независимо от текущего каталога. Например, команда ls -l /home/user01/.profile требует получить полную информацию о файле .profile в каталоге /home/user01 независимо от того, в каком каталоге выполняется. Другие символы, кроме косой черты, не имеют в именах файлов UNIX особого значения (это не метасимволы). В частности, нет системного понятия расширения файла. В ОС UNIX нет теоретических ограничений на количество вложенных каталогов. Тем не менее, в каждой реализации имеются практические ограничения на максимальную длину имени файла, которое указывается в командах (как и на длину командной строки в целом). Оно задается константой PATH_MAX в заголовочном файле /usr/include/limits.h. Так, в ОС Solaris 8 имя файла не может быть длиннее 1024 символов.

Комментариев нет: