
Список вопросов:
Разделы фиксированного размера.
Разделы переменного размера.
ВАП на основе страничного преобразования — общая идея.
Блок-схема обработки страничного сбоя.
Алгоритмы замещения. + Linux + основанное на рабочих множествах.
Типы объектов ФС.
Атрибуты суперблока ФС.
Атрибуты i-node.
Структура таблицы каталога.
Хранение информации о размещении данных объектов на ФС.
Структуры данных, используемые ОС для организации доступа к объектам ФС. open(...), close(), A+B, A+C и т. д.
Задачка: посчитать количество чтений для выполнения.
Управление памятью
Модель адресации.
Тип ВАП.
Структура ВАП.
«Надстройка» адресов при загрузке программы.
Фрагментация памяти (внутренняя и внешняя).
Распределение RAM между процессами.
Вытеснение блоков памяти на HDD (paging & swapping).
1. Схема с фиксированным разделением.
На этапе компиляции и загрузки ОС физическая память делится на несколько разделов фиксированного размера.
Один из них занимает ОС. Остальные выделяются по принципу «один процесс — один раздел».
Модель адресации
Линейная.
Сегментная.
Тип ВАП
Если линейная МА, то программа технически может использовать всю ВАП.
Если сегментная — линейное непрерывное адресованное пр-во.
Структура ВАП
Шесть типичных регионов: аргументы командной строки, стек, данные, переменная окружения, куча, код.
«Надстройка» адресов при загрузки программы
int A, B=1;
int main(void) {
int C, D=1;
return 0;
}
void f(void) int E;
Compile → Link → Load.
Вместо A, B, C, D, E используются адреса в ВАП. Адрес E будет определен в момент, когда вызываем функцию. То есть, локальные переменные при каждом вызове функции могут находиться по разным адресам. На этапе Link можем определить адреса глобальных переменных, если мы точно знаем диапазон адресов, доступных в ВАП.
1. При линейной адресации конечные адреса неизвестны. При формировании двоичного файла:
Известно только начало. Адреса станут известны при загрузке в RAM. В бинарнике указываются все места, где должны стоять
виртуальные адреса всех переменных. Как только стал известен адрес, он ставится в эти места — это и есть «надстройка» адресов.
2. При сегментной МА — смещение в сегменте (от 0 до MAX) структуру ВАП можем сформировать на этапе Link и возможны два варианта:
ВАП умещается в регион.
ВАП не умещается в регион.
Фрагментация
Внутренняя фрагментация — ситуация, когда выделенные блоки памяти используются не полностью.
Внешняя фрагментация — ситуация, когда блоки свободной памяти не могут быть объединены для удовлетворения запроса.
Распределение RAM (мультиплексирование)
Когда не хватает разделов:
К каждому разделу своя очередь.
Одна очередь ко всем разделам.
Paging & Swapping
Swapping — выгрузка на HDD логических блоков памяти.
При линейной МА допускается swapping загрузки в тот же раздел.
При сегментной МА допускается swapping с загрузкой в раздел такого же или большего размера.
2.Схема с разделами переменного размера (variable size partitions).
При загрузке:
Модель адресации
Линейная.
Сегментная.
Тип ВАП: один процесс — один раздел.
Структура ВАП обсуждается только на конкретных примерах.
«Надстройка» адресов при загрузки программы
Как и в схеме с фиксированным размером.
Фрагментация
Внутренней нет. Способ борьбы с внешней — перепаковка. Например, перемещение всех процессов к младшим адресам. Возможна только при сегментной модели адресации.
«Правило 50%»: при достаточно долгой работе кол-во свободных блоков примерно равно половине кол-ва используемых блоков.
Мультиплексирование
Стратегии выбора свободного блока для размещения нового процесса:
First Fit (первый подходящий).
Best Fit (наиболее подходящий) — выбирается блок минимального размера, достаточно большой, чтобы в него поместился новый процесс. Минус: получается много кусочков маленького размера.
Worst Fit (наименее подходящий) — новый поток размещается в наимольшем блоке свободной памяти.
Paging & Swapping
Paging не применим.
В линейной МА swapping в принципе возможен. Но чтобы вернуться в тот же блок, придется выгружать дольше, т. к. свободное место могло быть уже занято.
В сегментной МА swapping возможен. При выгрузке процесса его блок памяти помечается свободным. При загрузке используется та же стратегия, что и при запуске нового процесса.
Overlay используется в случае, когда памяти не хватает для размещения процесса.
Очень много данных. Создается внешнее хранилище.
Процесс не помещается в память.
В ОП будем хранить те функции, которые используем. Оставшаяся часть делится на блоки. Функции тоже разделяются по блокам. Все вызовы производятся через резидентную часть. Если функции нет в RAM, то она подгружается.
3. ВАП на основе страничного преобразования, общая идея.
Модель адресации страничная.
Надстройка адресов
На этапе Link всегда можно указать лин. адреса → надстройка не нужна.
Фрагментация
Внутренняя возможна технически, практически — нет, потери невелики. Внешней нет.
Мультиплексирование
Стратегия исп-я переуправления памяти.
1. Стратегия выборки: определять момент, когда страница загружается с HDD в RAM (когда нет страницы в RAM и она нужна).
По требованию — долго ждать.
Можно читать несколько страниц, а не одну.
В Data инициализируется переменная. В Code откомпилир. код. Swap — пр-во подкачки.
У каждой страницы из RAM есть образ в HDD.
Data в Swap вообще сначала не выделяется, а выделяется только тогда, когда обращаются к этой странице.
2. Стратегия размещения определяет, в какую страницу RAM будет считана страница, загружаемая с диска.
3. Стратегия замещения используется при выборе страницы, которая будет вытеснена из RAM.
ТУТ РИСУНОК