Современные операционные системы

Современные операционные системы
Управление памятью / Работа системы с использованием свопинга

Работа системы с использованием свопинга




Работа системы с использованием свопинга показана на рис. 3.4. Изначально в памяти присутствует только процесс А. Затем создаются или появляются в памяти путем свопинга с диска процессы В и С. На рис. 3.4, г процесс А за счет свопинга выгружается на диск. Затем появляется процесс D и выгружается из памяти процесс 5. И наконец, снова появляется в памяти процесс А. Поскольку теперь процесс А находится в другом месте, содержащиеся в нем адреса должны быть перестроены либо программным путем, при загрузке в процессе свопинга, либо (скорее всего) аппаратным путем в процессе выполнения программы. К примеру, для этого случая хорошо подойдут механизмы базового и ограничительного регистров.

Когда в результате свопинга в памяти создаются несколько свободных областей, их можно объединить в одну большую за счет перемещения при первой же возможности всех процессов в нижние адреса. Эта технология известна как уплотнение памяти. Но зачастую она не производится, поскольку отнимает довольно много процессорного времени. К примеру, на машине, оснащенной 1 Гбайт памяти, способной скопировать 4 байта за 20 не, на уплотнение всего объема памяти может уйти около 5 с.

Стоит побеспокоиться о том, какой объем памяти нужно выделить процессу при его создании или загрузке в процессе свопинга. Если создаваемый процесс имеет вполне определенный неизменный объем, то выделение упрощается: операционная система предоставляет процессу строго необходимый объем памяти, ни больше ни меньше.

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



Полное описание: Работа системы с использованием свопинга




С этим описанием рассматриваются следующие темы:


Большинство процессов
Если предполагается, что большинство процессов по мере выполнения будут разрастаться, то, наверное, будет лучше распределять небольшой объем дополнительной памяти при каждой загрузке из области свопинга на диске в память или перемещении процесса, чтобы сократить потери, связанные со свопингом или перемещением процессов, которые больше не помещаются в отведенной им памяти. Но свопингу на диск должна подвергаться только реально задействованная память, копировать при этом еще и дополнительно выделе ... Читать

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

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

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

Адресные пространства
Каждый компьютер обладает определенным объемом оперативной памяти, используемой для хранения исполняемых программ. В самых простых операционных системах в памяти присутствует только одна программа. Для запуска второй программы сначала нужно удалить первую, а затем загрузить в память вторую на её место. Более изощренные операционные системы позволяют одновременно находиться в памяти нескольким программам. Чтобы исключить взаимные помехи (и помехи работе операционной системы), нужен какой-то защит ... Читать