Вопрос 1. Логическая организация файлов. Атрибуты и данные файла. Типы файлов. Операции с файлами. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Вопрос 1. Логическая организация файлов. Атрибуты и данные файла. Типы файлов. Операции с файлами.



Вопрос 1. Логическая организация файлов. Атрибуты и данные файла. Типы файлов. Операции с файлами.

Определение файла

Файл = атрибуты + данные + операции с файлами

Логическая организация файлов.

Файлы могут быть структурированы несколькими различными способами.

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

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

2. файл представляет собой последовательность логических записей фиксированной длины, каждая со своей внутренней структурой.

Операция чтения возвращает одну запись, а операция записи перезаписывает или дополняет одну запись. Доступ к n- ной записи осуществляется путем последовательного чтения (n-1) предшествующих записей, либо прямо по адресу, вычисленному по ее порядковому номеру.

3. файл представляет собой последовательность логических записей разной длины.

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

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

Основной файловой операцией здесь является получение записи с указанным значением ключа.

При добавлении новых записей операционная система, а не пользователь, должна решать, куда ее поместить

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

В последнем случае говорят, что файл имеет индексно-последовательную организацию, так как поиск включает два этапа:

прямой доступ по индексу к указанной области диска,

а затем последовательный просмотр записей в указанной области.

Атрибуты файла.

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

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

Данные файла.

Поле(field) – основной элемент данных. Содержит единственное значение. Характеризуется длиной и типом данных (например, строка ASCII, десятичное число и т.п.).

Запись(record) – набор связанных между собой полей, которые могут быть обработаны как единое целое некоторой прикладной программой.

Файл(file) - набор данных, организованных в виде совокупности записей одинаковой структуры (однородных записей).

Типы файлов.

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

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

Каталоги — это системные файлы, обеспечивающие поддержку структуры файловой системы.

Регулярные файлы в основном являются либо ASCII-файлами, либо двоичными файлами.

Операции с файлами.

Наиболее часто встречающиеся системные вызовы, относящиеся к файлам.

1. Create (создание). Файл создается без данных. Этот системный вызов объявляет о появлении нового файла и позволяет установить некоторые его атрибуты.

2. Delete (удаление). Когда файл уже более не нужен, его удаляют, чтобы освободить пространство на диске.

3. Open (открытие). Прежде чем использовать файл, процесс должен его открыть. Системный вызов open позволяет системе прочитать в оперативную память атрибуты файла и список дисковых адресов для быстрого доступа к содержимому файла при последующих вызовах.

4. Close (закрытие). Когда все операции с файлом закончены, атрибуты и дисковые адреса более не нужны, поэтому файл следует закрыть, чтобы освободить пространство во внутренней таблице.

5. Read (чтение). Чтение данных из файла. Обычно байты поступают с текущей позиции в файле. Вызывающий процесс должен указать количество требуемых данных и предоставить для них буфер.

6. Write (запись). Запись данных в файл, также в текущую позицию в файле. Если текущая позиция находится в конце файла, размер файла автоматически увеличивается. В противном случае запись производится поверх существующих данных, которые теряются навсегда.

7. Append (добавление). Он может только добавлять данные к концу файла.

8. Seek (поиск). Данный системный вызов устанавливает файловый указатель в определенную позицию в файле. После выполнения данного системного вызова данные могут читаться или записываться в этой позиции.

9. Get attributes (получение атрибутов).

10. Set attributes (установка атрибутов).

11. Rename (переименование).

 

Вопрос 2.Модели хранения информации в файловых системах. Надежность и непротиворечивость файловой системы. Решение проблемы непротиворечивости файловых систем.

Модели хранения информации в файловых системах

Базовая модель. На основе одного физического устройства и разделов.

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

1. Модель на основе пулов устройств хранения данных.

Эта модель объединяет устройства в пул устройств хранения данных, который описывает физические характеристики хранения (размещение устройств т.д.) и выступает в качестве хранилища данных для создания файловых систем. Файловые системы больше не ограничиваются отдельными устройствами, что позволяет им совместно использовать пространство в пуле. При добавлении нового хранилища все файловые системы в пуле могут немедленно начать использование дополнительного пространства без вмешательства администратора.

Непрерывные файлы

Простейшей схемой выделения файлам определенных блоков на диске является система, в которой файлы представляют собой непрерывные наборы соседних блоков диска. У непрерывных файлов есть два существенных преимущества.

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

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

К сожалению, у такого способа распределения дискового пространства имеется серьезный недостаток: со временем диск становится фрагментированным.

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

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

Связные списки.

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

В отличие от систем с непрерывными файлами, такой метод позволяет использовать каждый блок диска. Нет потерь дискового пространства на фрагментацию. Кроме того, в каталоге нужно хранить только адрес первого блока файла. С другой стороны, хотя последовательный доступ к такому файлу несложен, произвольный доступ будет довольно медленным. Чтобы получить доступ к блоку n, операционная система должна сначала прочитать первые n-1 блоков по очереди. Очевидно, такая схема оказывается очень медленной.

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

I-узлы

Последний метод отслеживания принадлежности блоков диска файлам состоит в связывании с каждым файлом структуры данных, называемой i-узлом (index node —• индекс-узел), содержащей атрибуты файла и адреса блоков файла.

При наличии i-узла можно найти все блоки файла.

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

Если каждый i-узел занимает n байт, а одновременно открыто может быть k файлов, то для массива i-узлов потребуется в памяти всего k*n байтов.

 

 

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

файловая система FAT12 файловая система FAT16 файловая система FAT32

Файловая система FAT32

Основное отличие файловой системы FAT32 заключается в том, что в самой таблице размещения файлов на номер кластера отводится не 2 байта как в FAT16(или 1.5 байта в FAT12), а четыре. Хотя это и увеличивает размер самой таблицы, но это позволило эффективнее использовать дисковое пространство, за счет уменьшения размера кластера и соответственно уменьшения потерь в “хвостах” кластеров (для файлов, чей размер не кратен размеру кластеров).

Основные преимущества системы FAT32 над другими версиями FAT:

· Поддержка дисков размером до 2х терабайт

· Более эффективное использование дискового пространства

· Высокая устойчивость за счет наличия в файловой системе специальных резервных областей. Автоматическое использование второй копии FAT, если первая повреждена.

· Большая гибкость. В FAT32 нет ограничения на число элементов в корневом каталоге, как это было в прежних версиях FAT.

 

Структура записи MFT.

Потоки данных

Файл в системе NTFS состоит из множества атрибутов, каждый из которых представляется в виде потока байтов.

Большинство файлов имеет несколько коротких потоков, таких как имя файла и его 64-битовый идентификатор, плюс один длинный (неименованный) поток с данными.

Однако у файла может быть и несколько длинных потоков данных. При обращении к каждому потоку после имени файла через двоеточие указывается имя потока, например foo:stream1. У каждого потока своя длина. Каждый поток может блокироваться независимо от остальных потоков.

Максимальная длина потока составляет 264 байт.

Имя потока данных располагается в заголовке атрибута.

Следом за этим заголовком располагается либо список дисковых адресов, определяющий положение файла на диске, либо - для файлов длиной всего в несколько сотен байтов (а таких файлов довольно много) - сам файл. Метод помещения самого содержимого файла в запись MFT называется непосредственным файлом.

Жесткие ссылки

Жесткие ссылки можно создавать только для файлов (а не для файлов и каталогов) и только в пределах одной файловой системы (внешнего накопителя).

Жесткие ссылки для операционной системы UNIX и реальное имя файла идентичны, после создания жесткой ссылки нельзя определить, какое имя первоначально являлось оригиналом(поэтому любой файл всегда имеет как минимум одну жесткую ссылку – его имя, под которым он был создан.).

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

Индексные узлы

Основная особенность физической организации – отделение имени файла от его характеристик, хранящихся в отдельной структуре, называемой индексным дескриптором (индексным узлом - inode).

Структура индексного узла:

· идентификатор владельца;

· разрешенные способы доступа,

· время последнего обращения с использованием каждого вида доступа,

· тип файла (обычного типа, каталог, спец.файл, конвейер, символьная связь)

· число ссылок на данный индексный дескриптор, равный количеству псевдонимов файла;

· адреса дисковых блоков, содержащих данные файла

· размер файла.

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

Для специализированных файлов дисковые блоки не выделяются, а их i-узлы идентифицируют соответствующие им устройства.

При вызове API из прикладной программы, DLL клиентской стороны обращаются к локальным процедурам(Local Process Communication-LPC), которые передают вызов в совершенно изолированное адресное пространство, где содержится собственно системный код.

Между отметками 2 и 4 Гбайт расположены низкоуровневые системные компоненты Windows NT кольца 0, в том числе ядро, диспетчер потоков и диспетчер виртуальной памяти.

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

● При запуске приложения создается процесс со своей информационной структурой.

● В рамках процесса запускается поток.

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

Основные понятия.

Каждый процесс содержит, по крайней мере, один поток, содержащий, в свою очередь, как минимум одно волокно (облегченный поток).

Для управления определенными ресурсами процессы могут объединяться в задания. Все вместе - задания, процессы, потоки и волокна - образует общий набор инструментов для управления ресурсами и реализации параллельного выполнения, как на однопроцессорных, так и на многопроцессорных машинах.

Краткое описание этих четырех понятий приведено в. табл. 13.2.

Табл. 13.2. Основные понятия, используемые для управления процессами и ресурсами

системы Windows 2000

Процессы.

Процессы представляют собой контейнеры для ресурсов.

У каждого процесса есть 4-гигабайтное адресное пространство, в котором пользователь занимает нижние 2 Гбайт (в версиях Windows 2000 Advanced Server и Datacenter Server этот размер может быть по желанию увеличен до 3 Гбайт), а операционная система занимает остальную его часть.

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

У процесса есть

Идентификатор процесса,

Один или несколько потоков,

список дескрипторов объектов (управляемых в режиме ядра),

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

У каждого потока есть два стека, один используется в режиме ядра, а другой в режиме пользователя.

Помимо состояния, идентификатора и двух стеков, у каждого потока есть

○ контекст (в котором сохраняются его регистры, когда он не работает),

○ приватная область для локальных переменных,

Когда поток завершает свою работу, он может прекратить свое существование.

Когда прекращает существование последний активный поток, процесс завершается.

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

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

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

Обычно в UNIX-системах определены приоритеты прерываний. Например, если нужно без помех обрабатывать важные для системы прерывания от таймера, можно так определить приоритеты, чтобы во время обработки другого прерывания, скажем, от сетевого устройства, было разрешено поступление прерываний от таймера, но не наоборот.

Вопрос 1. Логическая организация файлов. Атрибуты и данные файла. Типы файлов. Операции с файлами.

Определение файла

Файл = атрибуты + данные + операции с файлами



Поделиться:


Последнее изменение этой страницы: 2016-08-16; просмотров: 578; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.217.144.32 (0.05 с.)