Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
L_SPPO.doc
Скачиваний:
30
Добавлен:
04.11.2018
Размер:
522.24 Кб
Скачать
  1. Простое непрерывное распределение и распределение с перекрытием

Простое непрерывное распределение – это самое простая схема, при которой вся память условно разделена на три части:

  • область, занимаемая операционной системой:

  • область, в которой размещается исполняемая задача;

  • свободная область памяти.

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

Чтобы для задач отвести как можно больший объем памяти, ОС строится таким образом, что постоянно в оперативной памяти располагается самая нужная ее часть (ядро). Остальные модули ОС могут быть диск-резидентными, т.е. загружаются в память по необходимости, а после своего выполнения вновь освобождают память.

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

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

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

  1. Распределение статическими и динамическими разделами

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

Рис.2. Распределение памяти разделами с фиксированными границами

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

Основным недостатком такого способа распределения памяти является наличие достаточно большого объема неиспользуемой памяти ( рис. 2). Такие потери называют фрагментацией памяти. Избежать этого можно двумя способами:

  • выделять раздел ровно такого объема, который нужен под текущую задачу – разделы с подвижными границами. Диспетчер памяти ведет список адресов свободной памяти и выделяет под задачу раздел, равный или чуть больше объема задачи. При освобождении раздела диспетчер пытается объединить этот раздел со смежным свободным участком, если таковой имеется;

  • размещать задачу не в одной непрерывной области памяти, а в нескольких областях.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]