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

Таблица открытых файлов.

Таблица файлов.

Таблица файлов содержит сведения о всех файловых дескрипторах открытых в системе файлов. Каждая запись ТФ соответствует открытому в системе файлу или точнее используемому файловому дескриптору (ФД). Каждая запись ТФ содержит указатели чтения/записи из/в файл. Рассмотрим правила установления соответствия между открытыми в процессах файлами и записями ТФ. При каждом новом обращении к функции открытия файла в таблице процессов образуется новая запись, таким образом если неоднократно в одном или нескольких процессах открывается один и тот же файл, то в каждом случае будет определяться свой независимый от других файловый дескриптор, в том числе со своим указателем чтения/записи. Если файловый дескриптор в процессе образуется за счет наследования, то в этом случае новые записи в ТФ не образуются, а происходит увеличение счетчика «наследственности» в записи, соответствующей файлу, открытому в прародителе. Таблица размещается в памяти ОС.

С каждым процессом связана таблица открытых файлов (ТОФ). Номер записи в данной таблице есть номер ФД, который может использоваться в процессе. Каждая строка этой таблицы имеет ссылку на соответствующую строку ТФ. Первые три строки этой таблицы используются для файловых дескрипторов стандартных устройств/файлов ввода вывода.


Для иллюстрации работы с данными таблицами рассмотрим следующий пример.

Пусть в системе сформирован процесс №1, в нем открыт файл с именем name (для простоты будем считать, то это единственное открытие файла с данным именем в данный момент времени), в таблице ТОФ№1 этого процесса будет образована соответствующая запись, которая будет ссылаться на запись в ТФ, которая, в свою очередь, ссылается на таблицу ТИДОФ. Счетчик наследственности ТФ и счетчик кратности ТИДОФ будут равны единице.

Далее, формируется процесс №2, который в свою очередь открывает файл с именем name, в результате чего в ТФ будет образована новая запись, которая будет ссылаться на запись ТИДОФ, соответствующую индексному дескриптору файла name, счетчик кратности этой записи увеличится на единицу.

Процесс №1 выполняет системный вызов fork() в результате чего образуется процесс №3 с открытым (унаследованным) файлом name. В таблице ТОФ№3 будет размещена копия таблицы ТОФ№2, счетчик наследственности соответствующей записи ТФ и счетчик кратности в записи ТИДОФ увеличатся на единицу.

Буферизация при блокориентированном обмене

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

«+» оптимизация и минимизация обмена с реальными устройствами.

«-» Существенная критичность к несанкционированному выключению машины

«-»проблемы разорванности во времени операции записи (поработал, ушел, а данные еще не записались.)

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

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

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

3. Осуществляется чтение N-ого блока устройства М в найденный буфер.

4. Происходит обнуление счетчика времени в данном буфере и увеличение на единицу счетчиков в других буферах.

5.Передаем в качестве результата чтения содержимое данного буфера.

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

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

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

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

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

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

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

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

Основные задачи:

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

2. Стратегия распределения памяти. Надо выбрать правила, по которым принимать решения: когда кому и сколько памяти должно быть выделено.

3. Выделение памяти. Принятие решения о выделении конкретного объема памяти для потребителя.

4. Стратегия освобождения памяти ( процесс освобождает, ОС “забирает” окончательно или временно). Одна из самых важных функций. Выбор стратегии, на основании которой система принимает решения о том, что память надо отобрать на время (при появлении более приоритетного процесса) или навсегда.

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

Стратегии и методы управления:

Одиночное непрерывное распределение.

Распределение разделами.

Распределение перемещаемыми разделами.

Страничное распределение.

Сегментное распределение.

Сегменто-страничное распределение.

План рассмотрения стратегий управления:

Основные концепции.

Необходимые аппаратные средства. (необходимое аппаратное обеспечение)

Основные алгоритмы.

Достоинства, недостатки.

Одиночное непрерывное распределение

             
   
     
Реально используется
 
Доступно (выделено)
 
     
Выделено, но не используется
 
 


ОП делится на 2 области. В одной находится ОС, другая предназначена для задач пользователя. (предполагается однопроцессная система.)

Необходимые аппаратные средства:

Регистр границ + режим ОС / режим пользователя. (В регистре границ находится граница между ОС и пользовательской частью ОП)

Если ЦП в режиме пользователя попытается обратиться в область ОС, то возникает прерывание.

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

Алгоритм – процесс заканчивается, мы меняем на следующий.

Достоинства: простота.

Недостатки:

Они следуют из организации.

1.Часть памяти просто не используется. (Внешняя фрагментация)

2.Процессом/заданием память занимается все время выполнения. Внутренняя фрагментация заключается в том, что вся область памяти, которую процесс занимает, занимается процессом на всё время его выполнения. Это означает, что достаточно большие области памяти, которые заняты процессом, не используются., т.к. обычно управление достаточно локализовано. Т.е. неэффективность работы с памятью.

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

Распределение неперемещаемыми разделами

       
   
 


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

Необходимые аппаратные средства:

Необходимо наличие 2 регистров границ, т.к. необходимо обеспечить корректность как по отношению к другим пользовательским разделам, так и по отношению к ОС.

Недостатки:

а. перегрузка регистра границ при каждой смене контекста;

б. сложности при использовании каналов/процессоров ввода/вывода. Если процесс попытается читать не из своей области, то это тяжело отловить

1.Ключи защиты (PSW). Каждый раздел имеет свой ключ защиты, который проверяется при всех операциях чтения\записи. Это решает проблему б).

Алгоритмы: Модель статического определения разделов

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

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

Алгоритмы: Модель статического определения разделов

Б. Одна входная очередь процессов.

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

Проблема: большие разделы маленькие процессы. Это несправедливо по отношению к большим процессам.

2. Освобождение раздела поиск процесса максимального размера, не превосходящего размер раздела.

Проблема: дискриминация “маленьких” процессов.

3. Оптимизация варианта 2. Каждый процесс имеет счетчик дискриминации. Если значение счетчика процесса ³ K, то обход его в очереди невозможен.

Достоинства:

Простое средство организации мультипрограммирования.

Простые средства аппаратной поддержки.

Простые алгоритмы.

Недостатки:

Внешняя Фрагментация.

Ограничение размерами физической памяти как внутри одного раздела, так и в целом

Весь процесс размещается в памяти – возможно неэффективное использование и внутренняя фрагментация.

Распределение перемещаемыми разделами

Система имеет фиксированное количество разделов. Через некоторое время ее использования начинается внешняя фрагментация.

Решение: перемещение разделов и освобождение одного большого куска. Но это требует очень больших затрат.

Необходимые аппаратные средства:

1.Регистры границ + регистр базы

2.Ключи + регистр базы

Алгоритмы: Аналогично предыдущему

Достоинства:

Потенциальная ликвидация внешней фрагментации

Недостатки:

Внутренняя фрагментация

Ограничение размером физической памяти

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: