Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lektsii_po_OSyam.doc
Скачиваний:
27
Добавлен:
27.09.2019
Размер:
493.06 Кб
Скачать

11. Управление файлами

Вопрос№69 11.1. Накопители на жестких магнитных дисках

Жесткие диски, стержень, магнитные головки, стержень

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

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

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

Группа дорожек, находящихся под всеми магнитными головками в каком-то конкретном положении стержня с магнитными головками, называется цилиндром.

Доступ к данным

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

Чтобы получить доступ к данным на магнитом диске, необходимо выполнить следующие операции:

- установить магнитные головки на соответствуюший цилиндр;

- дождаться, пока под магнитной головкой окажется точка на вращающемся магнитном диске, с которой начинаются данные;

- прочитать или записать данные на магнитный диск во время его вращения.

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

Вопрос№70 11.2. Секторы и сегменты

Сегментом называется наименьшая область (дуга) одной дорожки магнитного диска, которая может быть записана или считана магнитной головкой диска за его один полный оборот. Размер сектора равен 512 байт. Обычно плотность записи данных на диск является одинаковой для всех дорожек. Поэтому дорожки, находящиеся ближе к центру диска, содержат меньше секторов, чем дорожки, находящиеся ближе к краю диска. Одна дорожка жесткого диска может содержать от 380 до 700 секторов. Секторы каждой дорожки перенумерованы, причем эта нумерация начинается с 1.

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

Зоны

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

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

Кластеры

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

Вопрос№71 11.3. Форматирование дисков

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

- физическое форматирование или форматирование низкого уровня;

- разбиение диска на разделы;

- логическое форматирование или форматирование высокого уровня.

Форматирование низкого уровня

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

Разбиение диска на разделы

При разбиении диска на разделы диск разбивается на области, которые также называются разделами или логическими дисками. В каждом разделе может быть установлена своя файловая система. В настоящее время ОС Windows чаще всего используют файловые системы FAT-16, FAT-32 и NTFS.

Форматирование высокого уровня

При форматировнии высокого уровня ОС записывает в раздел структур данных, необходимые для работы с файлами. В каждый раздел записывается загрузочный сектор (Boot Sector), который используется для загрузки ОС, таблицы размещения файлов и корневой каталог (Root Directory).

Вопрос№72 11.4. Функции файловой системы

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

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

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

Доступ к файлам

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

Функции файловой системы

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

- создание файла,

- удаление файла,

- открытие доступа к существующему файлу,

- закрытие доступа к существующему файлу,

- запись данных в файл,

- чтение данных из файла,

- установка указателя файла на нужную запись.

Вопрос№73 11.5. Каталоги

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

Функции файловой системы

Файловая система обеспечивает следующие функции для работы с каталогами:

- создание каталога,

- удаление каталога,

- включение подкаталога в каталог,

- исключение подкаталога из каталога,

- включание файла в каталог,

- исключение файла из каталога.

Вопрос№74 11.6. Буферизация ввода-вывода

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

Буферы ввода-вывода предназначены для решения двух задач:

- устранение несоответствия между размером логической записи файла, определяемым в приложении, и размером кластера, который записывается на диск;

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

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

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

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

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

Вопрос№75 11.6. Кэширование ввода-вывода

Рассмотрим два соседних уровня иерархии памяти:

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

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

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

В ОС Windows 2000 кэшированием ввода данных с диска занимаются специальные программы ядра ОС, которые называются менеджером кэширования (Cash Manager).

Вопрос№76 11.7. Работа с файлами в Windows

Для работы с файлами в Windows предназначены следующие функции:

- CreateFile – создание нового или открытие уже существующего файла;

- WriteFile – запись данных в файл, эта функция может использоваться как для синхронной, так и для асинхронной записи данных;

- ReadFile – чтение данных из файла, эта функция может использоваться как для синхронного, так и асинхронного чтения данных;

- SetFilePointer – установка указателя позиции файла;

- FlushFileBuffers – освободить буфер от записей;

- CloseHandle – закрытие доступа к файлу;

- DeleteFile – удаление файла с диска.

Функции для копирования файлов

- CopyFile – копирование файла;

- MoveFile – перемещение файла.

Перемещение файла отличается от копирования файла только тем, что старый файл после его перемещения удаляется.

ReplaceFile – замещение файла.

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

Функции для работы с атрибутами файла.

- GetFileAttributes – определить атрибуты файла;

- SetFileAttributes – изменить атрибуты файла;

- GetFileInformationByHandle – получить информацию о файле;

- GetFileType – определить тип файла;

- GetBinaryType – определить, является ли файл исполняемым;

- GetFileSize – определить размер файла;

- SetEndOfFile – изменить размер файла.

Функции для блокировки доступа к файлу.

LockFile – блокирование доступа к файлу для монопольного использования;

UnlockFile – разблокирование доступа к файлу

Вопрос№77 11.8. Отображение файлов в память

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

Файл, который отображен на адресное пространство процесса, называется отображаемым в память файлом. Отображение файла в адресном пространстве называется также представлением или видом файла (file view). После отображения файла в адресное пространство процесса, доступ к файлу может осуществляться через указатель как к обычным данным в адресном пространстве процесса.

Конкретность данных

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

Назначение механизма отображения файлов в память

- загрузка программы на выполнения в адресном пространстве процесса;

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

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

Порядок работы с файлом, отображаемым в память

1. Открыть файл, который будет отображаться в память.

2. Создать объект ядра, который выполняет отображение файла.

3. Отобразить файл или его часть на адресное пространство процесса.

4. Выполнить необходимую работу с видом файла.

5. Отменить отображение файла

6. Закрыть объект ядра для отображения файла.

7. Закрыть файл, который отображается в память.

Функции для отображения файла в память

- CreateFileMapping – создать объект ядра для отображения файла в память;

- MapViewOfFile – отобразить файл в память;

- UnmapViewOfFile – отменить отображение файла в память;

- FlushViewOfFile – сброс содержимого вида на диск.

Вопрос№78 11.9. Динамически подключаемые библиотеки

Динамически подключаемая библиотека или DLL (Dynamic Link Library) представляет собой программный модуль, который может быть загружен в виртуальную память процесса как статически во время создания исполняемого модуля процесса, так и динамически во время исполнения процесса операционной системой.

Слушаете меня?

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

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

Создание DLL

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

В отличие от исполняемых модулей, в которых эта функция называется main, в DLL главная функция называется DLLMain. Функция DLLMain вызывается операционной системой при загрузке DLL в адресное пространство процесса и при создании этим процессом нового потока. Главное назначение функции DLLMain:

- инициализация DLL при ее загрузке;

- захват и освобождение ресурсов при созданиии завершении нового потока в процессе.

Функции, предназначенные для работы с DLL

LoadLibrary – загрузка DLL;

FreeLibrary – отключение DLL;

GetProcAddress – доступ к импортируемым из DLL функциям и переменным.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]