Функции ОС по управлению памятью

Операционная система

Служебное ПО, отвечающее за распределение ресурсов железа для прикладного ПО.

Основные функции:

· Исполнение запросов программ

· Загрузка программ в оперативную память и их выполнение

· Стандартизованный доступ к периферийным устройствам

· Управление файловыми системами

· Обеспечение пользовательского интерфейса

· Параллельное или псевдопараллельное выполнение задач

· Эффективное распределение ресурсов вычислительной системы между процессами.

· Разграничение доступа различных процессов к ресурсам.

· Взаимодействие между процессами.

· Защита самой системы, а также пользовательских данных и программ от действий пользователей или приложений.

· Многопользовательский режим работы и разграничение прав

Виды ОС:

· Пользовательская ОС (Windows, Linux, Mac, … )

· ОС реального времени (дают гарантии на время выполнения операции)

o В повседневной жизни не применяются.

o Трудности в разработки ПО для данных операционных систем

Unixодна из первых ОС написанная на языке высокого уровня (Си), что дало возможность поддерживать разные архитектуры ЭВМ.

Составляющие ОС:

API

Драйвера (часть, контролирующее железо)

Ядра ОС:

· Микроядро (модульное) – ядро, максимально разложенное на модули

+ ядро имеет небольшой размер

+ простота в разработке компонентов ядра

- быстродействие

· Макроядро (монолитное) – большая монолитная часть ядра с небольшим количеством модулей

+ скорость работы

- малая отказоустойчивость

- сложность в написании отдельных модулей

Процесс

выполняющаяся программа, находящаяся в оперативной памяти. Единица выделения системных ресурсов

Программа

Файл с набором команд

Ресурсы процессора:

· Процессорное время

· Оперативная память

Редкое переключение процессов – низкая отказоустойчивость

Частое переключение процессов – неэффективное использование ресурсов

Чем меньше переключений контекста, тем меньше используются системные ресурсы процессора, а следовательно и энергии

Системные ресурсы:

· Мьютексы – ресурсы меж процессного состояния

· Служебная информация – информация о процессе

o Права доступа

o Тред (нить, поток)

Распределение памяти

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

Разграничение памяти между процессами – защита от ошибок и вирусов

Подсистема безопасности управляет правами в ОС

Процессы и потоки

Режим пакетной обработки:

· Распределение задач для максимального использования железа

· Одновременное выполнение нескольких задач

· В результате выполнения прерываний увеличивается время выполнения

Тяжелое взаимодействие между задачами

Система распределения времени

· Переход от задачи к задаче за заданный период

· Равномерное распределение времени для процессов

Так устроено большинство современных операционных систем

Задача: создание удобного управления несколькими процессами

Относительный проигрыш во времени

Системы реального времени:

Наличие гарантии выполнения операции за гарантированное время

Использование ресурсов не на полную мощность. Система строится с запасом.

Механизм прерывания: ускорения работы с устройствами работающих с меньшей частотой

Таймер прерываний:

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

Невытесняющая многозадачность – отдача управления ос по выполнению задачи

Многоядерность и многопоточность

Разброс процесса по нескольким ядрам

ОС

Симметричныя ядра (одинаковые ядра)

Ассиметричные ядра

Процесс:

Адресное пространство

Данные синхронизации

Процессорное время

Информация безопасности

Процесс с потоками – единица, отвечающая за все, кроме процессорного времени

За процессорное время отвечают потоки.

Вытесняющая многозадачность

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

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

Распределение процессорного времени осуществляется планировщиком процессов.

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

Преимущества:

· возможность полной реализации многозадачного ввода-вывода в ядре ОС

· Сильное повышение надежности системы в целом

· Возможность полного использования многопроцессорных и многоядерных систем.

Недостатки:

· необходимость особой дисциплины при написании кода, особые требования к его реентрантности, к защите всех разделяемых и глобальных данных объектами типа критических секций и mutex’ов.

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

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

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

Размер страницы обычно выбирается равным степени двойки: 512, 1024 и т.д., это позволяет упростить механизм преобразования адресов.

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

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

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

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

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

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

Операционная система

Служебное ПО, отвечающее за распределение ресурсов железа для прикладного ПО.

Основные функции:

· Исполнение запросов программ

· Загрузка программ в оперативную память и их выполнение

· Стандартизованный доступ к периферийным устройствам

· Управление файловыми системами

· Обеспечение пользовательского интерфейса

· Параллельное или псевдопараллельное выполнение задач

· Эффективное распределение ресурсов вычислительной системы между процессами.

· Разграничение доступа различных процессов к ресурсам.

· Взаимодействие между процессами.

· Защита самой системы, а также пользовательских данных и программ от действий пользователей или приложений.

· Многопользовательский режим работы и разграничение прав

Виды ОС:

· Пользовательская ОС (Windows, Linux, Mac, … )

· ОС реального времени (дают гарантии на время выполнения операции)

o В повседневной жизни не применяются.

o Трудности в разработки ПО для данных операционных систем

Unixодна из первых ОС написанная на языке высокого уровня (Си), что дало возможность поддерживать разные архитектуры ЭВМ.

Составляющие ОС:

API

Драйвера (часть, контролирующее железо)

Ядра ОС:

· Микроядро (модульное) – ядро, максимально разложенное на модули

+ ядро имеет небольшой размер

+ простота в разработке компонентов ядра

- быстродействие

· Макроядро (монолитное) – большая монолитная часть ядра с небольшим количеством модулей

+ скорость работы

- малая отказоустойчивость

- сложность в написании отдельных модулей

Процесс

выполняющаяся программа, находящаяся в оперативной памяти. Единица выделения системных ресурсов

Программа

Файл с набором команд

Ресурсы процессора:

· Процессорное время

· Оперативная память

Редкое переключение процессов – низкая отказоустойчивость

Частое переключение процессов – неэффективное использование ресурсов

Чем меньше переключений контекста, тем меньше используются системные ресурсы процессора, а следовательно и энергии

Системные ресурсы:

· Мьютексы – ресурсы меж процессного состояния

· Служебная информация – информация о процессе

o Права доступа

o Тред (нить, поток)

Распределение памяти

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

Разграничение памяти между процессами – защита от ошибок и вирусов

Подсистема безопасности управляет правами в ОС

Процессы и потоки

Режим пакетной обработки:

· Распределение задач для максимального использования железа

· Одновременное выполнение нескольких задач

· В результате выполнения прерываний увеличивается время выполнения

Тяжелое взаимодействие между задачами

Система распределения времени

· Переход от задачи к задаче за заданный период

· Равномерное распределение времени для процессов

Так устроено большинство современных операционных систем

Задача: создание удобного управления несколькими процессами

Относительный проигрыш во времени

Системы реального времени:

Наличие гарантии выполнения операции за гарантированное время

Использование ресурсов не на полную мощность. Система строится с запасом.

Механизм прерывания: ускорения работы с устройствами работающих с меньшей частотой

Таймер прерываний:

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

Невытесняющая многозадачность – отдача управления ос по выполнению задачи

Многоядерность и многопоточность

Разброс процесса по нескольким ядрам

ОС

Симметричныя ядра (одинаковые ядра)

Ассиметричные ядра

Процесс:

Адресное пространство

Данные синхронизации

Процессорное время

Информация безопасности

Процесс с потоками – единица, отвечающая за все, кроме процессорного времени

За процессорное время отвечают потоки.

Вытесняющая многозадачность

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

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

Распределение процессорного времени осуществляется планировщиком процессов.

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

Преимущества:

· возможность полной реализации многозадачного ввода-вывода в ядре ОС

· Сильное повышение надежности системы в целом

· Возможность полного использования многопроцессорных и многоядерных систем.

Недостатки:

· необходимость особой дисциплины при написании кода, особые требования к его реентрантности, к защите всех разделяемых и глобальных данных объектами типа критических секций и mutex’ов.

Функции ОС по управлению памятью

Функциями ОС по управлению памятью в мультипрограммной системе являются:

· отслеживание свободной и занятой памяти;

· выделение памяти процессам и освобождение памяти по завершении процессов;

· вытеснение кодов и данных процессов из оперативной памяти на диск (полное или частичное), когда размеры основной памяти не достаточны для размещения в ней всех процессов, и возвращение их в оперативную память, когда в ней освобождается место;

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

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

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

Типы адресов |

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

· Символьные имена присваивает пользователь при написании программы на алгоритмическом языке или ассемблере.

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

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

Совокупность виртуальных адресов процесса называется виртуальным адресным пространством.

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

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

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

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

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

Размер страницы обычно выбирается равным степени двойки: 512, 1024 и т.д., это позволяет упростить механизм преобразования адресов.

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

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

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

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

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

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

Наши рекомендации