В.Д. Валединский - Краткий конспект курса лекций «Работа на ЭВМ и программирование» (1119512), страница 6
Текст из файла (страница 6)
Если же выделить под служебную областьдостаточно много памяти, то она большей частью будет невостребована и не будетиспользоваться (очевидно, что изменять границы служебной области памяти мы нее можем).Тем не менее, чаще всего используется именно этот способ, наиболее быстрый и надежный.Лекции по ЭВМ. Конспект. Лектор В.Д. Валединский.Группа 208, 3 семестр, 2002 год20Альтернативный способ – хранить служебные данные вместе с данными хранящихся вконтейнере объектов. Ограничения, связанные с памятью здесь снимаются, однако наподобную организацию данных может потребоваться связывание данных с помощьюссылок, а это медленнее, чем организация служебных данных в одном месте и требуетнекоторого количества памяти; кроме того, система в этом случае получается менеенадежной – выйдя за пределы предоставленной ему памяти пользователь может запростоиспортить данные контейнера, что приведет к катастрофе для контейнера в целом (а не длячасти данных контейнера, как было бы в другом способе).1.6.
Файловые контейнеры (хранение данных в файловых системах)Файловая система FAT.В файловой системе FAT диск первоначально делится на 4 области:FATDIRDATABOOTВ первой области – BOOT содержится загрузчик операционной системы и всенеобходимые данные о структуре FAT, DIR и DATA. Данный раздел, вообще говоря,является общим для всех файловых систем в силу особенностей устройства PC (при загрузкеPC первым управление получает BIOS, проводящий первоначальную инициализацию всехбазовых систем компьютера (BIOS = Base Input / Output System), в том числеинициализирующий базовые прерывания, через которые происходит работа свводом/выводом информации. По окончании этой инициализации BIOS должен передатьуправление операционной системе, установленной на компьютере.
Что это за системазаранее неизвестно, поэтому по общепринятому соглашению в начале загрузочногоустройства (диска, дискеты, CD – неважно) по заранее определенному адресу располагаетсязагрузчик ОС, который, естественно, должен знать в т.ч. и про установленную файловуюсистему. Поэтому в начале любого диска в любой файловой системы расположен разделBOOT одинакового назначения. Точно так же после записей файловой системы идутнепосредственно данные, хранящиеся в этой файловой системе (в том числе, возможно, ислужебные данные) – это раздел Data.Вернемся к файловой системе.
Диск в FAT разбивается на т.н. кластеры – блоки данныхфиксированной длины (обычно длина кластера варьируется от 1 КБ до 32 КБ). Файлы (какраз те самые данные, контейнером для которых служит файловая система) представляютсякак цепочка кластеров. В разделе DIR для каждого файла заведена единственная запись суказанием имени файла (в более старых FAT12 и FAT16 – формата 8.3; в FAT32 – можетбыть, и большего размера), его атрибутов (возможны атрибуты d – директория, r – толькодля чтения, h – спрятанный (игнорируемый обычными программами), a – архивный и т.д.),размера файла, даты последнего его изменения и номера первого по счету кластера в файле.Выяснение всей цепочки кластеров, принадлежащих файлу, по первому кластеру,проводится через FAT (File Allocation Table).
FAT представляет собой таблицу из n записей,в которой k-й записи по счету соответствует k-й кластер на диске. Число бит в каждойзаписи определяется типом FAT: в FAT12 (используемой на дискетах) это 12 бит, в FAT16(системы MS-DOS) – 16 бит, в FAT32 (системы MS Windows 9x) – 32 бита, а записан в нейадрес кластера, следующего за текущим, либо служебное значение.
Например, в FAT32числа 2-FFF6 в записи FAT соответствуют номеру следующего кластера, число 0 означает,что кластер свободен, число 1 обозначает конец файла (текущий кластер является концомфайла); записью FFF7 помечаются дефектные кластеры. При работе с файлом ОС выясняетв DIR по имени файла первый кластер в файле, затем по FAT выстраивает цепочкупринадлежащих файлу кластеров, после чего уже спокойно работает с файлом, преобразуясмещение от начала файла в реальный физический адрес данных на диске.Директории в FAT являются обычными файлами, для которых установлен атрибут d(directory, для всех других файлов он обязан быть сброшен) и которые просто содержатраздел DIR для этой директории.
Запись DIR в начале диска определяет так называемуюкорневую директорию, остальные записи DIR – поддиректории.Лекции по ЭВМ. Конспект. Лектор В.Д. Валединский.Группа 208, 3 семестр, 2002 год21Обычно на диске хранится несколько копий FAT, поскольку разрушение этойструктуры приводит к полной потере данных, хранившихся в этой файловой системе. Изограничений на длину записи в FAT вытекают и ограничения данной файловой системы.Например, FAT12 позволяет адресовать лишь 212 4096 кластеров, что при длине кластерав 1 КБ дает ограничение на размер диска в 4Mb. Понятно, что такая файловая системаприменима только для дискет. Для FAT16 и кластера в 1 Kb размер диска был ограничен64Mb, поэтому применялись большие размеры кластеров, вплоть до 32 Kb (больше ужесмысла делать не было – сильно падала эффективность работы файловой системы),соответствующее ограничение составило как раз известные 2Гб.
Современная же FAT32 приразмере кластера в 1 Kb ограничивает размер диска 4 терабайтами, чего хватает длябольшинства современных машин. Другое ограничение – эффективность работы. Прикластере в 1Kb на 1 Kb места на диске приходится 4 Bt FAT, что при общих размерах диска,скажем в 40Gb дает размер FAT в 160Mb (!). Учитывая, что на диске хранятся несколькокопий FAT, неэффективность подобной системы очевидна.Добавление файла в FAT происходит очевидно – файловая система выбирает наиболееподходящую цепочку свободных кластеров, чтобы уместить в нее файл, и создаетсоответствующие записи в DIR и FAT. Удаление столь же просто – в DIR всоответствующей записи в первый символ имени записывается 0 (это служит пометкой, чтосоответствующий файл удален), а в FAT в соответствующие кластерам файла ячейкизаписываются нули.Таким образом, FAT – очень простая (и, как следствие, довольно быстрая) файловаясистема, но весьма неэффективная по занимаемому месту и надежности, к тому же несодержащая средств разделения прав доступа к файлам.Рассмотрим более продвинутую и часто используемую файловую систему, базовую длябольшинства Unix-систем – EXT FS (EXTended File System), в частности, EXT2.В Unix – системах введено понятие прав доступа.
У операционной системы есть т.н.пользователи – это могут быть как реальные люди, так и специальные записи, например,запись суперпользователя (root), позволяющая совершать любые действия. Пользователиобладают определенными правами – возможностями совершать в системе те или иныедействия. Пользователи могут объединяться в группы (причем один пользователь можетпринадлежать нескольким различным группам).
Для каждого файла в такой системеопределен владелец этого файла и группа, которой он принадлежит, а также права доступана этот файл. Права доступа бывают 3х типов: на чтение, на запись и на исполнение, каждоеиз которых задается независимо друг от друга, и определяются эти права пользователя для3х категорий пользователей: пользователя, создавшего файл; пользователей группы, которойпринадлежит файл и всех пользователей. Обычно это записывают в виде rwxrwxrwx, где r –право на чтение, w – на запись, x – на исполнение, первыми идут права создателя файла,вторыми – права группы и третьими – права всех пользователей.
Менять эти права можеттолько создатель и суперпользователь. Например, с файлом с правами 111101001 создательможет делать что угодно – читать, писать и исполнять, пользователи группы этого файламогут только читать этот файл (и, соответственно, копировать его) и исполнять его, ну а всеостальные – только исполнять.Вернемся к EXT2. Эта файловая система имеет следующую структуру (упрощенно):BOOTsuperblockInodeDataНазначение разделов BOOT и Data мы уже обсудили. Раздел superblock в EXT2 поназначению аналогичен FAT в одноименной системе, Inode – разделу DIR, но устроены онисовсем по другому.Данные о файлах, хранящихся в файловой системе, содержатся в разделе Inode (IndexNode).
Этот раздел представляет из себя набор записей следующего вида:Идентификатор (id) владельца файлаid группы файлатип файлаЛекции по ЭВМ. Конспект. Лектор В.Д. Валединский.Группа 208, 3 семестр, 2002 год22метки времени (timestamps) – время и дата последнего обращения к файлу, последнегоизменения файла, создания файла и удаления данного файла.права доступа на файлразмер файла в байтахколичество ссылок на файлтаблица ссылок на блоки данныхтекущая позиция.Разберем подробнее все эти записи. id владельца/группы и права доступа ужеобсуждались, с метками времени тоже все понятно – они служат для контроля за обращенийк файлу.
Тип файла в EXT2 может бытьобычный файлкаталогканал (pipe)блочное устройствосимвольное устройствоПервые 2 типа понятны и соотносятся с соответствующими понятиями в FAT.Последние 2 типа являются «служебными» и связаны с тем, что в идеологии Unix-системлюбое устройство, доступное системе, появляется и в файловой системе в виде отдельногофайла, работая с которым мы можем работать с устройством. Файл – канал служит длясообщения файлов друг с другом (он является т.н.