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