Управление виртуальной памятью

SWAP SPASE
4 Гб

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

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

Если задача одна и очень большая: адресуемое пространство продолжается на физическом устройстве, например, жестком диске.

Эта задача также разбивается на страницы, которые могут быть valid - правильные (загружаются в ОП), invalid – неправильные (лежат на внешней памяти).

При установки ОС, она автоматически создает .swp-файл.

Механизм работы .swp-файла:

Если не хватает места для .swp-файла, ОС добавляет ему памяти.

Рекомендуется делать .swp-файл размером 1.2-1.3 от ОП. Это позволяет ускорить доступ к .swp-файлу.

.swp-файл только нарастает, уменьшить его нельзя.

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

 

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

 

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

Если же задача одна, но очень большая (например, расположение объемного изображения в Автокаде под разными углами), то адресуемое пространство продолжается на каком-либо физическом устройстве (например, на жестком диске). Эта задача точно также разбивается на страницы. Эти страницы могут быть valid – правильные (загруженные в оперативную память) и invalid – не загруженные в оперативную память, а лежащие на внешней памяти. Эту внешнюю память называют Swap Space.

Механизм работы .swap-файла: .swap-файл лежит где-то на диске. Если не хватает памяти, то ОС постепенно добавляет для .swap-файла еще где-то место на диске.

Swap Space рекомендуется делать размером 1.2-1.3 от размера оперативной памяти.

Если Swap Space лежит на диске в одном месте непрерывно, а не «раскидано» по диску, то обращение к Swap Space дает более быстрый доступ.

.swap-файл можно только увеличить, уменьшить нельзя, также .swap-файл является неперемещаемым.

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

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

Рис 5.1

30. Механизм работы при использовании виртуальной памяти: имеется некоторая область, где расписаны сегменты задачи (любым образом распределенная логическая память), таблица страниц, которая при работе с виртуальной памятью таблица имеет еще один бит (valid или invalid). Еще одна используемая таблица – это таблица страниц процесса, которая отображается на физической памяти.

Как только процесс обращается к какой-либо странице памяти, то обязательно определяется его физический адрес в ОП.

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

Второй вариант – это, когда процесса в таблице страниц нет, тогда происходит обращение к таблице процессов, если адреса нет и там, то происходит его поиск в ОП. Если адрес найден, то он вписывается в таблицу страниц процессов, которая дублируется в таблицу страниц и бит invalid меняется на valid (сегмент В на рис 5.1). После появления сегмента В, которую мы рассматриваем, в физической памяти, появляется доступ к физической памяти.

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

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

Пусть, например, требуется загрузить сегмент Е в ОП и получить доступ к его логическому адресу. Первый вопрос, который встает перед ОП – это куда загружать С. После обращения к С, происходит поиск свободных страниц в физической памяти, затем С записывается в таблицу процессов (в очередной адрес, при этом добавляется смещение), затем С записывается в таблицу страниц и invalid меняется на valid.

Замещение страниц.

Эффект замещения страниц возникает тогда, когда оказывается, что вся физическая память занята. Т.е. при очередном обращении к логическому адресу не находится ни одного свободного места, куда мог бы войти очередной процесс. Тогда возникает ситуация страничной недостаточности. Разрешается она следующим образом: проверяется наличие бита invalid (valid). Если страница доступна, то идет обращение к физической памяти через базовый адрес. Если оказалось, что данная память не может быть загружена (все занято), тогда из таблицы страниц выбирается страница, которая выгружается из ОП в SWAP file.

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

Возможен и другой вариант: когда выгрузили, например, сегмент В, он уже в SWAP file, но не выполняется в данный момент (в таблице страниц он помечен как invalid), тогда при обращении к логическому адресу В проверяется его наличие, если его нет, но есть информация, что он в SWAP, тогда его адрес корректируется во всех таблицах и invalid меняется valid, и сегмент В становится доступным.

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

Если страница модифицировалась, то тогда получается двойная загрузка. Сначала из ОЗУ выгружается «страница-жертва» в SW, другая же страница загружена в ОЗУ, и ее адрес модифицируется в таблице страниц.

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

32. Алгоритм выбора «жертвы»(замещаемой страницы).

 

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

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

Замечание: этот алгоритм очень тяжел при реализации, поэтому его используют в основном для тестирования других алгоритмов.

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

Второй вариант – использование стека. В стек заносятся только номера страниц.

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

Критические ресурсы.

Ресурсами системы являются ОП, порты, принтеры, жесткие диски и т.д.

Критические ресурсы – это ресурсы, которые в какой-то момент требуются

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

Ресурсы бывают буферизированные и не буферизированные.

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

Буфер у клавиатуры – всего 32 символа.

Совершенно не буферизированное устройство – это последовательный порт.

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

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

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

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

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

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

У файловой системы минимальный объект – это сектор:

 

 

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

 

Свойства файла.

1) Файл – это некоторый объект, который имеет содержимое, располагающееся на диске, и имя, которое позволяет осуществить доступ к этому содержимому.

2) Содержимое файла не зависит от его месторасположения на диске, и доступ к нему осуществляется на уровне ОС по имени или по дескриптору – описателю файла. Второй уровень доступа осуществляется с использованием драйвера соответствующего устройства, который считывает физическое состояние последовательности секторов на диске.

3) Файлы должны поддерживать некоторый набор функций ввода-вывода. К этим функциям относятся:

3.1) функция «открыть файл».

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

3.2) Чтение/запись.

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

Сейчас каждый сектор на диске имеет размер 512 б. Сектора объединяются в кластеры, при этом 1 кластер=2,4,8,16 секторов.

Буфер организуется либо операционной системой, либо буфером диска (КЭШ диска).

 

Все записи пишутся в буфер, размер которого зависит от того, как сформирована ОС.

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

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

3.3) Указатели.

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

Прикладные программы могут (должны) управлять этим указателем.

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

 

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

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

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

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

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

Сейчас можно фиксировать произвольный размер записи.

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

Если, например, указать 30-й байт в 23-ей записи, то с диска информация сначала отправится в буфер (все содержимое записи), а затем из буфера считается 30-й байт.

3.4) Закрытие файла.

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

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

Указанные выше три свойства файла есть в FAT и FAT 32. В NTFS появилось еще одно свойство.

4) Защита данных подразумевает сохранение данных в мультипрограммной многопользовательской среде.

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

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

- администраторов

- продвинутых пользователей

- создателей архивов

. . .

- гостей.

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

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

2)Персональная политика безопасности – пользователь может сам назначить права доступа к своим папкам (чтение, чтение и запись, только просмотр, доступно всем).

Типы файловых систем.

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

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

Недостатки: если будет много мелких файлов, возникает фрагментация диска.

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

последовательность

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

б) быстрый доступ к последовательности чтения файла.

Недостаток: фрагментация.

3) Иерархическая файловая система.

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

 

 

Количество ENTRY ограничено. В дискете их 256 шт., для жесткого диска (FAT) – 255 шт.

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

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

Например, C:\program file\1C-бух\1C.exe

 

Файл на диске.

 

Вне зависимости от количества поверхностей, такова физическая емкость диска.

Сейчас объемы диска увеличились до 40Мб, однако размер диска остался прежним. Также сейчас диск разбивается не на 17 секторов, а на 53-57, цилиндров сейчас 80, поверхностей – от двух до четырех, плотность записи на каждом цилиндре и в каждый сектор возросла. За счет этого растут объемы диска.

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

 

 

вытянутые в одну последовательность сектора, начиная с нулевого

 

В нулевом секторе хранится вся информация о структуре диска. Далее размещена FAT-таблица (таблица размещения файлов), которая занимает фиксированное значение. Затем идет корневой каталог.

Замечание 1: корневой каталог всегда создается при форматировании диска.

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

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

Обычно ОС работает с оригиналом FAT-таблицы, однако если выясняется, что в ней есть ошибка, то ОС обращается к копии FAT-таблицы.

FAT – это отображение пространства под файлы.