Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции 1-8 / ОС_04.doc
Скачиваний:
85
Добавлен:
04.04.2013
Размер:
179.2 Кб
Скачать

4.6 Стратегии размещения информации в памяти

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

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

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

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

Рис. 4.14 Стратегии размещения информации в памяти по принципу занятия первого подходящего, наиболее подходящего и наименее подходящего по размеру свободного участка

Выводы

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

Методы распределения и управления основной памятью компьютера в существенной степени определяли развитие операционных систем. Было рассмотрено несколько распространенных способов распределения основной памяти для следующих систем:

  • однопрограммных (однопользовательских);

  • мультипрограммных с фиксированными разделами, с трансляцией и загрузкой модулей в абсолютных адресах;

  • мультипрограммных с фиксированными разделами, с трансляцией и загрузкой перемещаемых модулей;

  • мультипрограммных с переменными разделами;

  • систем со свопингом.

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

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

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

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

В мультипрограммных системах с фиксированными разделами значительный объем основной памяти теряется, когда программы пользователя оказываются много меньшими, чем выделяемые для них разделы. В мультипрограммных системах с переменными разделами программа пользователя получает ровно столько памяти, сколько ей требуется (в пределах размера имеющейся основной памяти). Однако в этих системах после завершения выполнения программ пользователя по всей основной памяти остаются разбросанными многочисленные «дыры».

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

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

Стратегии размещения ставят своей целью определить, в какое место основной памяти следует помещать поступающую программу. Рассматривались три стратегии размещения:

  • «первый подходящий»;

  • «наиболее подходящий»;

  • «наименее подходящий».

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

Мультипрограммный режим можно реализовать также в системе со свопингом, где в основной памяти в каждый конкретный момент времени находится только одна программа пользователя. Эта программа пользователя выполняется до тех пор, пока это возможно. Затем она «выталкивается» из основной памяти и вместо нее «вталкивается» следующая программа пользователя, которая также выполняется до тех пор, пока это возможно. Такой метод свопинга эффективен, когда основная память имеет довольно ограниченные размеры. Он использовался во многих первых системах разделения времени с относительно небольшим числом пользователей. Более сложные системы со свопингом позволяют размещать в памяти сразу несколько программ.

24

Соседние файлы в папке Лекции 1-8