
- •4.1 Понятие памяти и функции ос по управлению памятью
- •4.2 Иерархия памяти
- •4.3 Связное и несвязное распределение памяти
- •4.3.1 Связное распределение памяти в однопрограммных системах
- •4.3.2 Организация мультипрораммного режима: распределение статическими разделами
- •4.3.3 Организация мультипрораммного режима: распределение переменными разделами
- •4.4 Объединение соседних свободных участков памяти
- •4.5 Уплотнение памяти
- •4.6 Стратегии размещения информации в памяти
Какую работу нужно написать?
4.2 Иерархия памяти
Чтобы программы можно было выполнять, а к данным можно было обращаться, они должны размещаться в основной памяти. Программы и данные, которые в настоящий момент не нужны, можно хранить во внешней памяти, а затем, когда в этом возникает необходимость, переписывать в основную память для выполнения или использования.
Системам с несколькими уровнями иерархии памяти свойственна высокая интенсивность челночных обменов программами и данными между устройствами памяти различных уровней. Такие обмены отнимают системные ресурсы, например дорогое время центрального процессора.
В 60-х годах стало ясно, что иерархию памяти можно расширить еще на один уровень, что позволит получить громадный выигрыш в скоростных характеристиках и эффективности использования памяти. Этот дополнительный уровень — так называемая кэш память (cache), которая обладает гораздо большим быстродействием, чем основная память. Однако по сравнению с основной памятью кэш память стоит дороже, и поэтому в реальных системах применяются кэш памяти относительно небольшого объема. Отношения между кэш памятью, основной (первичной) памятью и внешней (вторичной) памятью иллюстрируются рис. 4.1.
Рис. 4.1. Иерархическая организация памяти
В настоящее время широко используется кэш память второго уровня (кэш L2). По сравнению с кэш памятью первого уровня (L1) кэш L2 имеет еще большее быстродействие (время доступа порядка наносекунды), и большую стоимость. Соответственно, используются меньшие объемы этой памяти.
4.3 Связное и несвязное распределение памяти
Под распределением памяти будем понимать то, каким образом представляется и используется основная память различными процессами. Располагается ли в ней несколько программ одновременно или только одна? Если в основной памяти размещается несколько пользовательских программ сразу, то предоставляется ли каждой из них одинаковое количество ячеек или основная память разбивается на части, так называемые разделы, различных размеров? Разбивается ли основная память жестким образом, когда разделы определяются на достаточно длительные периоды времени, либо предусмотрено более динамичное разбиение, позволяющее вычислительной машине быстро реагировать на изменения потребностей процессов в ресурсах? Должна ли программа помещаться в одном непрерывном разделе памяти или может занимать несколько различных областей?
Самые первые вычислительные машины требовали связного распределения памяти, при котором каждая программа должна занимать один сплошной блок ячеек памяти.
При несвязном распределении памяти программа разбивается на ряд блоков, или сегментов, которые могут размещаться в основной памяти в участках, не обязательно соседствующих друг с другом. Операционной системе гораздо сложнее обеспечить несвязное распределение памяти, однако подобный подход обладает важным преимуществом: если основная память имеет ряд небольших свободных участков вместо одного большого, то, как правило, операционная система все же может загрузить и выполнить программу, которой в противном случае пришлось бы ждать.