Основная память (ОП), в которой размещаются процессы и которая имеет ограниченный объем, представляет собой самый ограниченный и дорогостоящий ресурс. Поэтому организация и управле-ние ОП ЭВМ является одним из самых важнейших факторов, определяющих построение и развитие ОС. Именно организация и управление ОП во многом определяют фактический уровень мультипро-граммирования ОС, то есть возможности выполнения нескольких параллельных процессов. Функ-циями ОС по управлению памятью являются: отслеживание свободной и занятой памяти, выделение памяти процессам и освобождение памяти при завершении процессов, вытеснение процессов из опе-ративной памяти на диск, когда размеры основной памяти не достаточны для размещения в ней всех процессов, и возвращение их в оперативную память, когда в ней освобождается место, а также на-стройка адресов программы на конкретную область физической памяти. Основными задачами подсистемы управления памятью (УП) являются: 1.Эффективное размещение процессов в ОП. 2.Защита памяти процессов. Основная цель УП - обеспечить максимальный уровень мультипрограммирования и тем самым максимальную загрузку ЦП. Современные ЭВМ имеют 3-х уровневую, иерархическую организацию запоминающих уст-ройств (ЗУ) (внутренние регистры процессора, различные типы сверхоперативной и оперативной памяти, диски, ленты), отличающихся средним временем доступа и стоимостью хранения данных в расчете на один бит (рисунок 1). Пользователю хотелось бы иметь и недорогую и быструю память. Кэш-память представляет некоторое компромиссное решение этой проблемы. Кэш-память - это способ организации совместного функционирования двух типов запоминаю-щих устройств, отличающихся временем доступа и стоимостью хранения данных, который позволяет уменьшить среднее время доступа к данным за счет динамического копирования в "быстрое" ЗУ наи-более часто используемой информации из "медленного" ЗУ. Кэш-памятью часто называют не только способ организации работы двух типов запоминающих устройств, но и одно из устройств - "быстрое" ЗУ. Оно стоит дороже и, как правило, имеет сравни-тельно небольшой объем. Важно, что механизм кэш-памяти является прозрачным для пользователя, который не должен сообщать никакой информации об интенсивности использования данных и не должен никак участвовать в перемещении данных из ЗУ одного типа в ЗУ другого типа, все это дела-ется автоматически системными средствами. Рассмотрим частный случай использования кэш-памяти для уменьшения среднего времени дос-тупа к данным, хранящимся в оперативной памяти. Для этого между процессором и оперативной па-мятью помещается быстрое ЗУ, называемое просто кэш-памятью. В качестве такового может быть использована, например, ассоциативная память. Содержимое кэш-памяти представляет собой сово-купность записей обо всех загруженных в нее элементах данных. Каждая запись об элементе данных включает в себя адрес, который этот элемент данных имеет в оперативной памяти, и управляющую информацию: признак модификации и признак обращения к данным за некоторый последний период времени. В системах, оснащенных кэш-памятью, каждый запрос к оперативной памяти выполняется в со-ответствии со следующим алгоритмом: Просматривается содержимое кэш-памяти с целью определения, не находятся ли нужные дан-ные в кэш-памяти; кэш-память не является адресуемой, поэтому поиск нужных данных осуществля-ется по содержимому - значению поля "адрес в оперативной памяти", взятому из запроса. Если данные обнаруживаются в кэш - памяти, то они считываются из нее, и результат передает-ся в процессор. Если нужных данных нет, то они вместе со своим адресом копируются из оператив-ной памяти в кэш-память, и результат выполнения запроса передается в процессор. При копировании данных может оказаться, что в кэш-памяти нет свободного места, тогда выбираются данные, к кото-рым в последний период было меньше всего обращений, для вытеснения из кэш-памяти. Если вытес-няемые данные были модифицированы за время нахождения в кэш-памяти, то они переписываются в оперативную память. Если же эти данные не были модифицированы, то их место в кэш-памяти объ-является свободным. На практике в кэш-память считывается не один элемент данных, к которому произошло обраще-ние, а целый блок данных, это увеличивает вероятность так называемого "попадания в кэш", то есть нахождения нужных данных в кэш-памяти. В реальных системах вероятность попадания в кэш составляет примерно 0,9. Высокое значение вероятности нахождения данных в кэш-памяти связано с наличием у данных объективных свойств: пространственной и временной локальности. Пространственная локальность. Если произошло обращение по некоторому адресу, то с высо-кой степенью вероятности в ближайшее время произойдет обращение к соседним адресам. Временная локальность. Если произошло обращение по некоторому адресу, то следующее об-ращение по этому же адресу с большой вероятностью произойдет в ближайшее время. Все предыдущие рассуждения справедливы и для других пар запоминающих устройств, напри-мер, для оперативной памяти и внешней памяти. В этом случае уменьшается среднее время доступа к данным, расположенным на диске, и роль кэш-памяти выполняет буфер в оперативной памяти. Физически ОП имеет линейную организацию и представляет собой последовательность адре-суемых ячеек (байт, 1 байт = 8 бит) от 0 до N, которая делится на слова, блоки, сегменты. Номер явля-ется адресом ячейки памяти. Размер ОП определяется в килобайтах (1Кб=1024б), мегабайтах (1Мб=1024Кб), гигабайтах (1Гб=1024Мб), терабайтах (1Тб=1024 Гб) и т.д. Слово- это единица обмена ОП с ЦП, определяемое разрядностью с ЦП. Блок - это непрерывная область памяти с общим ключом защиты. В EC ЭВМ - размер блока 2К, поэтому процессом выдается память, кратная 2К. Сегмент - это некоторый участок памяти (для IBM PC от 16 б до 64Кб). Сегмент может содер-жать несколько блоков. Для эффективного использования ОП необходимо определить стратегию управления памятью. ОС постоянно приходится решать задачу: когда, куда и за счет кого ввести в ОП процесс и данные. Существует три стратегии управления ОП:
Стратегия выборки - определяет, когда разместить в ОП очередной блок программы или дан-ных. а) выборка по запросу (требованию), когда очередной блок загружается по требованию процес-са. При такой реализации невозможно в общем случае определить передачу управления в программе (настройка адресов должна быть выполнена после загрузки); б) упреждающая выборка, основанная на свойствах последовательного выполнения программы и локальности циклов. В настоящее время наиболее употребляемая стратегия. Стратегия размещения, определяющая, куда помещать поступающую программу. а) "первый подходящий" участок (эффективность по времени размещения); б) "наиболее подходящий" участок (эффективность по объему); в) "наименее подходящий" - странная стратегия со следующей аргументацией: после размеще-ния процесса в больший свободный участок, оставшееся место также велико и может быть достаточно для размещения еще одной программы. Псевдоэффективность по мультипро-граммированию. Стратегия замещения, определяющая какой блок/сегмент программы или данных следует вы-толкнуть из ОП для освобождения места для более приоритетных программ (в системах со свопин-гом). Естественно, что организация памяти тесно связана с мощностью ЦП, объемом ОП и режимом мультипрограммирования Существуют 4 вида организации реальной памяти: 1. Однопрограммная организация памяти с выделением непрерывной области одному пользователю. Это самая простая организация, которая использовалась на первых ЭВМ и на микро-ЭВМ, а также и на первых персональных компьютерах (PC)
Достоинства: простота защиты оперативной памяти. Для защиты требуется пара регистров, оп-ределяющих границы доступа ОП. Недостатки: Простаивает ЦП, а, следовательно, и ОП, и устройства ввода/вывода. Неэффек-тивное использование ЭВМ даже при наличии потока заданий, когда задания формируются в пакеты (режим PCP для ЕС ЭВМ). 2. Мультипрограммная организация с фиксированными разделами. ОП при загрузке ОС статически разбивается на ряд разделов фиксированного размера, в каждом из которых может выполняться одно задание (режим MFT OC в ЕС ЭВМ, MP?? фирмы Digital Research для 8 и 16 – разрядных процессоров Intel 8080, 8086).
Задание (программа) может помещаться в любой свободный раздел, размер которого это допус-кает. Защита памяти осуществляется парой регистров для каждого раздела ОП. Достоинства: большая загрузка ЦП и повышение пропускной способности. Недостатки: 1) Внешняя фрагментация, которая выражается в недостаточности разделов для боль-ших программ, что требует перезагрузки ОС для назначения больших разделов. 2) Внутренняя фрагментация, при которой совокупная неиспользованная память может быть достаточной для выполнения программы, но разделена на несвязные участки и не может быть задействована для размещения процессов и данных. 3) Мультипрограммированная организация с переменными разделами, при которой ОП разделяется динамически между процессами по запросам заданий (программ) пользова-телей. 3. Области памяти выделяются непрерывные из участков свободной памяти в соответствии с реализованными стратегиями размещения. При окончании заданий соседние свободные участки ОП объединяются. Защита памяти аналогичная режиму с фиксированными разделами. Достоинства: повышается уровень мультипрограммирования, исчезает внутренняя фрагмента-ция (выделяется памяти столько, сколько требуется). Недостатки: внешняя фрагментация памяти - образование неиспользованных участков в целом может давать большие потери объема и мультипрограммирования.
Проблема - совокупность свободных участков, достаточна для выполнения программы, а по-скольку они не смежные, то не могут быть использованы для размещения процессов или данных. Эта проблема, в частности, решается методом уплотнения памяти (сборки мусора). Такая проце-дура может выполняться либо при каждом завершении задачи, либо только тогда, когда для вновь поступившей задачи нет свободного раздела достаточного размера. В первом случае требуется меньше вычислительной работы при корректировке таблиц, а во втором - реже выполняется процедура сжатия. Так как программы перемещаются по оперативной памяти в ходе своего выполнения, то преобразование адресов из виртуальной формы представления в физическую должно выполняться динамически. Недостатками этого метода являются: а) используется время ЦП на уплотнение; б) во время уплотнения ОС прекращает выполнение процессов пользователей (непри-емлемо для СРВ). Страничная организация памяти реализует концепцию несвязного распределения памяти ЭВМ и означает а) разделение ОП ЭВМ на блоки фиксированной длины размером от 1 до 4 Kb б) разделение адресного пространства программы загрузчиком на страницы фиксиро-ванного размера, равного длине блока; в) динамически поблочно выдается память программам в любом месте ЭВМ;
г) аппаратная поддержка соответствия номеров блоков ОП ЭВМ и страниц процесса по соответствующей таблице отображения страниц. Достоинства: 1.Отсутствие внешней фрагментации (достаточно разделов для больших программ). 2.Внутренняя фрагментация ограничена размером блока ОП ЭВМ < 1 -4 кб.
Общий итог развития форм организации реальной ОП - практически полная ликвидация фраг-ментации. Общие недостатки реальной ОП: (Физический) ограниченный объем реальной памяти и, соответственно, максимального объема выполняемой программы. Адресное пространство ЭВМ определяется разрядностью адресов, допус-тимых в архитектуре ЭВМ, а программа не может быть размером больше чем объем ОП. ЕC ЭВМ – 24 - разрядные адресные регистры определяют допустимое адресное пространство размером 16 Мб, реально же устанавливается объем памяти 512 Кб - 8 Мб.
Pentium может адресовать своими 32-разрядными регистрами 4 Gb ОП, реально на компьютере устанавливается значительно меньший объем памяти (32-192 Mb). Не трудно представить какой ог-ромный размер виртуальной ОП будет доступен с использованием анонсированного фирмой Intel 64 - разрядного процессора Merced. (Логический) неэффективное использование РОП ввиду необходимости загрузки в ОП задания пользователя целиком, в то время как 85 процентов времени выполнения программ реализуется обычно 5-10% команд программ. Все проблемы привели к появлению концепции виртуальной памяти как воплощения идеи вир-туализации ресурсов.