- •История операционных систем; понятия операционных систем (понятие Оперативной системы читай из первого вопроса (весь первый вопрос)
- •3) Технологии ввода/вывода, интерфейсы операционных систем; пакетная технология.
- •4 Виды операционных систем. Архитектура операционных систем.
- •5 Модели процессов и потоков.
- •2.1.2 Модель процесса
- •2.1.4 Завершение процесса
- •2.1.5 Иерархия процессов
- •2.1.6 Состояние процессов
- •2.2.2 Модель потока
- •2.2.3 Преимущества использования потоков
- •6 Управление процессами.
- •7Потоки в процессах и реализация многопоточности.
- •Типы реализации потоков
- •8 Гонки. Взаимное исключение и его реализация.
- •9 Виды и механизмы прерываний.
- •10Необходимость синхронизации и гонки, критическая секция
- •11 Блокирующие переменные, семафоры, мьютексы.
- •Семафоры
- •12 Мониторы, тупики, синхронизирующие объекты.
- •13 Задача об обедающих философов.
- •14 Задача о читателях и писателях.
- •16 Алгоритмы планирования процессов.
- •Алгоритмы планирования процессов
- •17 Фиксированное и динамическое распределение памяти.
- •18 Страницы и сегменты в памяти, адресация.
- •19 Кэширование данных, свопинг.
- •20 Виртуальная память: таблицы страниц. Оверлейные структуры
- •21 Файлы и их атрибуты.
- •11.1.5 Атрибуты файла
- •22 Каталоги и приемы их организации.
- •23 Методики размещения файлов.
- •24 Реализация файловых систем.
- •25 Надежность и производительность файловых систем.
- •26 Журнализация.
- •27 Файловая система fat.
- •28 Файловая система ntfs.
- •29 Файловые системы Ext2 и Ext3.
- •Система адресации данных
20 Виртуальная память: таблицы страниц. Оверлейные структуры
Виртуа́льная па́мять — технология управления памятью ЭВМ, разработанная для многозадачных операционных систем. При использовании данной технологии для каждой программы используются независимые схемы адресации памяти, отображающиеся тем или иным способом на физические адреса в памяти ЭВМ. Позволяет увеличить эффективность использования памяти несколькими одновременно работающими программами, организовав множество независимых адресных пространств, и обеспечить защиту памяти между разными приложениями. Также позволяет программисту использовать больше памяти, чем установлено в компьютере, за счет откачки неиспользуемых страниц на вторичное хранилище (см. Свопинг).
При использовании виртуальной памяти упрощается программирование, так как программисту больше не нужно учитывать ограниченность памяти, или согласовывать использование памяти с другими приложениями. Для программы выглядит доступным и непрерывным все допустимое адресное пространство, вне зависимости от наличия в ЭВМ соответствующего объема ОЗУ.
Применение механизма виртуальной памяти позволяет:
-
упростить адресацию памяти клиентским программным обеспечением;
-
рационально управлять оперативной памятью компьютера (хранить в ней только активно используемые области памяти);
-
изолировать процессы друг от друга (процесс полагает, что монопольно владеет всей памятью).
В настоящее время эта технология имеет аппаратную поддержку на всех современных бытовых процессорах. В то же время во встраиваемых системах и в системах специального назначения, где требуется либо очень быстрая работа, либо есть ограничения на длительность отклика (системы реального времени) виртуальная память используется относительно редко. Также в таких системах реже встречается многозадачность и сложные иерархии памяти.
Таблицы страниц. Организация таблицы страниц – один из ключевых элементов отображения адресов в страничной и сегментно-страничной схемах. Рассмотрим структуру таблицы страниц для случая страничной организации более подробно. виртуальный адрес состоит из виртуального номера страницы и смещения. Номер записи в таблице страниц соответствует номеру виртуальной страницы. Размер записи колеблется от системы к системе, но чаще всего он составляет 32 бит. Из этой записи в таблице страниц находится номер кадра для данной виртуальной страницы, затем прибавляется смещение и формируется физический адрес. Помимо этого запись в таблице страниц содержит информацию об атрибутах страницы. Это биты присутствия и защиты (например, 0 – read/write, 1 – read only...). Также могут быть указаны: бит модификации, который устанавливается, если содержимое страницы модифицировано, и позволяет контролировать необходимость перезаписи страницы на диск; бит ссылки, который помогает выделить малоиспользуемые страницы; бит, разрешающий кэширование, и другие управляющие биты. Заметим, что адреса страниц на диске не являются частью таблицы страниц. Основную проблему для эффективной реализации таблицы страниц создают большие размеры виртуальных адресных пространств современных компьютеров, которые обычно определяются разрядностью архитектуры процессора. Самыми распространенными на сегодня являются 32-разрядные процессоры, позволяющие создавать виртуальные адресные пространства размером 4 Гбайт (для 64-разрядных компьютеров эта величина равна 264 байт). . В оперативной памяти хранят лишь некоторые, необходимые для конкретного момента исполнения фрагменты таблицы страниц. В силу свойства локальности число таких фрагментов относительно невелико. Выполнить разбиение таблицы страниц на части можно по-разному. Наиболее распространенный способ разбиения – организация так называемой многоуровневой таблицы страниц. Для примера рассмотрим двухуровневую таблицу с размером страниц 4 Кбайт, реализованную в 32-разрядной архитектуре Intel. Количество уровней в таблице страниц зависит от конкретных особенностей архитектуры
Оверлейная структура
Так как размер логического адресного пространства процесса может быть больше чем размер выделенного ему раздела (или больше чем размер самого большого раздела), иногда используется техника, называемая оверлей (overlay) или организация структуры с перекрытием. Основная идея - держать в памяти только те инструкции программы, которые нужны в данный момент времени.
Потребность в таком способе загрузки появляется, если логическое адресное пространство системы мало, например 1 мегабайт или даже всего 64 килобайта , а программа относительно велика. На современных 32-разрядных системах, где виртуальное адресное пространство измеряется гигабайтами, проблемы с нехваткой памяти решаются другими способами .
Коды ветвей оверлейной структуры программы находятся на диске как абсолютные образы памяти и считываются драйвером оверлеев при необходимости. Для конструирования оверлеев необходимы специальные алгоритмы перемещения и связывания. Для описания оверлейной структуры обычно используется специальный несложный язык (overlay description language). Совокупность файлов исполняемой программы дополняется файлом (обычно с расширением .odl), описывающим дерево вызовов внутри программы.
Программист должен тщательно проектировать оверлейную структуру. Это требует полного знания структуры программы, кода, данных, языка описания оверлейной структуры. По этой причине применение оверлеев ограничено компьютерами с лимитами на память и т.д. Как мы увидим в дальнейшем проблема оверлейных сегментов, контролируемых программистом, отпадает благодаря появлению систем виртуальной памяти.