ЗНАЕТЕ ЛИ ВЫ?

Эффективность и применимость виртуальной памяти



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

Пример.

Пусть размер страницы равен 128 слов. Рассмотрим два варианта Pascal-программы, обнуляющей двумерный массив размерностью 128 на 128.

Вариант 1

var A: array [1..128] of array [1..128] ofinteger;

for j := 1 to 128 do

for i := 1 to 128 do

A[i][j] := 0;

Массив хранится в памяти построчно. И, следовательно, каждая строка размещается в одной странице.

Вариант 2

var A: array [1..128] of array [1..128] ofinteger;

for i := 1 to 128 do

for j := 1 to 128 do

A[i][j] := 0;

В том случае, если операционная система выделит для хранения массив меньше 128 страничных блоков, выполнение варианта 1 может вызывать 128 ´ 128 = 16386 страничных отказов, а в варианте 2 не более 128 .

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

Контрольные вопросы

1. Поясните, с какой целью применяется виртуальная память. В чем состоит эффективность ее применения?

2. Опишите схему подкачки страниц.

3. Что происходит при вытеснении страниц? Какие правила вытеснения вам известны?

4. Что такое трэшинг? Каковы причины возникновения этого явления?

 

 

ИНТЕРФЕЙС ФАЙЛОВОЙ СИСТЕМЫ

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

Понятие файла. Атрибуты файла и операции с файлами

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

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

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

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

­ Тип.Информация, необходимая для управления файлами.

­ Расположение.Указатель на внешнее устройство и на местонахождения файла на этом внешнем устройстве.

­ Размер.Текущий размер (в байтах, словах или блоках) и, возможно, максимально допустимый размер.

­ Защита.Информация управления доступом, управляющая уровнем доступа (чтение, запись, выполнение и т.д.)

­ Время, дата и идентификатор пользователя.Эта информация может характеризовать: создание, последнюю модификацию, последнее обращение.

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

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

­ Создание файла (creating a file). Для создания файла требуется выполнение двух шагов:

1) в файловой системе должно быть найдено свободное пространство для нового файла;

2) в соответствующем каталоге создается точка входа (регистрационная запись) для нового файла. Она должна содержать имя файла и информацию о расположении файла в файловой системе.

­ Запись файла (writing a file). Для записи файла системному вызову передаются имя файла и информация, записываемая в файл. Получив имя файла, система просматривает каталог, чтобы узнать расположение файла. Система может поддерживать специальный указатель записи, чтобы сохранять позицию, в которую нужно будет писать при следующей записи.

­ Чтение из файла(reading a file). Для чтения файла используется системный вызов, параметрами которого являются имя файла и указатель на место в основной памяти, куда должна быть помещена прочитанная из файла информация. Действует этот системный вызов аналогично предыдущему. Система может поддерживать специальный указатель чтения. Поскольку, вообще говоря, операции чтения и записи могут чередоваться, большинство систем поддерживает текущий указатель позиции в файле (current file position pointer).

­ Позиционирование(reposition within a file). Текущий указатель устанавливается в соответствии с полученным значением. Эта операция не требует выполнения ввода-вывода

­ Удаление файла (deleting a file). Подразумевает не «стирание» информации, хранящейся в файле, освобождение пространства, занимаемое данным файлом, для дальнейшего использования другими файлами и уничтожение соответствующей записи в каталоге.

­ Усечение файла (truncate). Иногда необходимо, оставив неизмененными атрибуты файла, удалить его содержимое. Вместо того, чтобы удалять файл и создавать его заново, можно просто установить его длину, равной нулю.

Эти шесть операций образуют минимальный набор операций, требующихся для работы с файлами. Могут быть предусмотрены и другие операции, например, переименование файла (renaming a file) или добавление информации в конец существующего файла (append). Как правило, они могут быть реализованы в виде комбинации выражены через базовые операции. Например, операция копирования (copy) может быть выполнена путем создания нового файла и последующей записи в него содержимого существующего файла.

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

Большинство операций с файлами, как мы видели, включает поиск в каталоге точки входа, ассоциированной с файлом. Чтобы избежать одинаковых действий, большинство ОС предусматривают операцию открытия файла (opening a file). Для этого операционная система поддерживает таблицу, содержащую информацию об открытых файлах. Такая таблица называется таблицей открытых файлов (open – file table). Открытие файла сводится к занесению данных о нем в таблицу и возврату номера строки (индекса) в таблице. Другие файловые операции используют этот индекс и, в результате, не производится никакого поиска. Когда файл больше не нужен, процесс может его закрыть, в этом случае запись из таблицы будет удалена.

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

Реализация системных вызовов открытия и закрытия файлов (open и close) в многопользовательских системах (типа UNIX), более сложна. В таких системах разрешен одновременный доступ к файлам нескольким пользователям. Обычно ОС используют два уровня внутренних таблиц: таблицу открытых файлов для каждого процесса и общесистемную таблицу открытых файлов. Первая таблица содержит информацию об использовании файлов процессом. Здесь, например, находится текущий указатель. Каждая строка этой таблицы ссылается на общесистемную таблицу открытых файлов. Здесь хранится информация о расположении файла на диске, даты доступа и размер файла. Обычно общесистемная таблица содержит еще и счетчик ссылок на файл. При открытии файла счетчик увеличивается, при закрытии уменьшается. Если счетчик равен нулю, то запись в общесистемной таблице уничтожается.

Типы файлов

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

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

Например, в MS DOS имя может состоять из восьми букв, расширение из трех. Система использует расширение для определения типа файла и типов операций, которые с ним можно производить. Например, файлы с расширениями com, exe или bat могут быть исполнены. MS DOS распознает только несколько расширений, но приложения могут использовать расширения для распознавания типов файлов.

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

Рассмотрим теперь ОС Apple Macintosh. В этой системе каждый файл имеет тип, например «text» или «appl». Каждый файл имеет также атрибут создателя, содержащий имя программы, создавшей этот файл. Этот атрибут устанавливается при выполнении системного вызова create и поддерживается системой. Когда пользователь открывает файл двойным щелчком мыши, соответствующая программа, например, word, активизируется для обработки этого файла.

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

Структура файлов

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

Такой подход имеет и недостатки. Главным из них является то, что результирующий размер ОС чересчур велик, она становится слишком громоздкой. Если система поддерживает несколько типов структур, то она должна содержать обслуживающий код для каждой структуры. Кроме того, каждый файл должен быть определяемым как относящийся к одной из этих структур. Проблемы возникнут, если приложениям потребуется структурировать информацию другим способом. Например, если система поддерживает только текстовые и исполняемые файлы, трудности возникнут даже, если мы захотим всего лишь шифровать информацию. Некоторые ОС поддерживают минимальное число файловых структур, например, UNIX, MS DOS, Windows и др.

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

Другим примером ОС с минимальным числом файловых структур является MAC OS, которая ожидает, что все файлы содержат две части: ветвь ресурсов (resource fork) и ветвь данных (data fork). Первая содержит информацию об интересах пользователя. Например, она хранит метки всех кнопок, используемых программой. Поскольку объекты в этой ветви MAC OS позволяет редактировать, то перевести программу на другой язык очень просто. Вторая ветвь содержит текст программ и данные – традиционное содержимое файлов.

Методы доступа

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





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

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