В основной памяти может поддерживаться большее количество процессов.
Поскольку в основную память загружаются только некоторые из блоков каждого процесса, мы можем разместить в ней большее количество процессов. Это, в свою очередь, приводит к более эффективному использованию процессора, поскольку повышается вероятность наличия активных процессов в любой момент времени.
2. Процесс может быть больше, чем вся основная память. Преодолено одно из наиболее существенных ограничений в программировании. Обычно программист должен изначально рассчитывать, какое количество памяти потребуется его программе. Если разработанная программа окажется слишком большой, программист должен принять соответствующие меры по разделению программы на части, которые могли бы быть загружены в память в отдельности, с использованием той или иной оверлейной стратегии. В случае использования виртуальной памяти на основе страничной организации или сегментации эта функция передается операционной системе и аппаратному обеспечению. Программе (и программисту) при этом доступен огромный объем памяти, по сути, представляющий собой размер дискового пространства. Операционная система при необходимости автоматически загружает нужные блоки процесса в память.
Поскольку процесс выполняется только в основной памяти, эта память называется такжереальной (real memory). Однако программист или пользователь имеют дело с потенциально гораздо большей памятью — выделенной на диске. Эта память известна каквиртуальная (virtual memory). Виртуальная память обеспечивает очень эффективную многозадачность и облегчает работу пользователя, снимая жесткие ограничения относительно объема основной памяти. В табл. 8.1 приведены основные характеристики страничной организации и сегментации с использованием виртуальной памяти ибез нее.
Таблица 8.1. Характеристики страничной организации и сегментации
Простая страничная организация | Страничная организация с виртуальной памятью | Простая сегментация | Сегментация с виртуальной памятью |
Основная память разделена на небольшие блоки фиксированного размера, именуемые кадрами | Основная память разделена на небольшие блоки фиксированного размера, именуемые кадрами | Основная память не разделена | Основная память не разделена |
Программа разбита на страницы компилятором или системой управления памятью | Программа разбита на страницы компилятором или системой управления памятью | Сегменты программы определены программистом при компиляции (решение о разбивке на сегменты принимается программистом) | Сегменты программы определены программистом при компиляции (решение о разбивке на сегменты принимается программистом) |
Внутренняя фрагментация в кадрах | Внутренняя фрагментация в кадрах | Внутренняя фрагментация отсутствует | Внутренняя фрагментация отсутствует |
Внешняя фрагментация отсутствует | Внешняя фрагментация отсутствует | Внешняя фрагментация | Внешняя фрагментация |
Операционная система должна поддерживать таблицу страниц для каждого процесса, указывающую, какой кадр занят данной страницей процесса | Операционная система должна поддерживать таблицу страниц для каждого процесса, указывающую, какой кадр занят данной страницей процесса | Операционная система должна поддерживать таблицу сегментов для каждого процесса, указывающую адрес загрузки и длину каждого сегмента | Операционная система должна поддерживать таблицу сегментов для каждого процесса, указывающую адрес загрузки и длину каждого сегмента |
Операционная система должна поддерживать список свободных кадров | Операционная система должна поддерживать список свободных кадров | Операционная система должна поддерживать список свободных блоков памяти | Операционная система должна поддерживать список свободных блоков памяти |
Для вычисления абсолютного адреса процессор использует номер страницы и смещение | Для вычисления абсолютного адреса процессор использует номер страницы и смещение | Для вычисления абсолютного адреса процессор использует номер сегмента и смещение | Для вычисления абсолютного адреса процессор использует номер сегмента и смещение |
Для работы процесса все его страницы должны находиться в основной памяти (кроме случая использования оверлеев) | Для работы процесса не все его страницы должны находиться в основной памяти; они могут загружаться при необходимости | Для работы процесса все его сегменты должны находиться в основной памяти (кроме случая использования оверлеев) | Для работы процесса не все его сегменты должны находиться в основной памяти; они могут загружаться при необходимости |
Считывание страницы в основную память может требовать записи страницы на диск | Считывание сегмента в основную память может требовать записи одного или нескольких сегментов на диск |
Дата добавления: 2016-06-05; просмотров: 1569;