Эта организация памяти обладает достоинствами обоих способов реализации виртуальной памяти. Сегменты обычно содержат целое число страниц, причем не обязательно, чтобы все страницы сегмента находились в первичной памяти одновременно. В системе со странично-сегментной организацией применяется трёхкомпонентная организация, т.е. адрес виртуальной памяти V определяется как упорядоченная тройка V=(s,p,d), где s – номер сегмента, p – номер страницы, d – смещение в рамках страницы, по которому находится нужный адрес.
Рассмотрим динамическое преобразование виртуальных адресов в реальные в странично-сегментной системе с применением комбинированного ассоциативно-прямого отображения. Система проводит ассоциативный поиск, пытаясь найти строку с параметрами (s,p) в ассоциативной таблице. Если такая строка обнаруживается, то адрес страничного кадра p¢ соединится со смещением d, образуя реальный адрес R. Если требуемого адреса в ассоциативной таблице нет, то преобразование осуществляется способом полного отображения.
ОС должна предусматривать обработку всех возможных ситуаций в процессе преобразования виртуальных адресов в реальные.
Виртуальный адрес V=(s,p,d)
S,p p’
S’ p’
Стратегии вталкивания. Их цель – определить, в какой момент следует переписать страницу или сегмент из вторичной памяти в первичную. Вталкивание по запросу (по требованию) предполагает, что система ждёт ссылки на страницу или сегмент от выполняющегося процесса и только после её появления начинает переписывать данную страницу или сегмент в первичную память. Вталкивание с упреждением (опережением) предполагает, что система пытается заблаговременно определить к каким страницам или сегментам будет обращаться процесс.
Стратегии размещения. Их цель – определить, в какое место первичной памяти помещать поступающую страницу или сегмент. В системах со страничной организацией страница может быть помещена в любой свободный страничный кадр. Система с сегментной организацией требует стратегий размещения, аналогичных тем, которые применяются в системах мультипрограммирования с переменными разделами.
Стратегии выталкивания. Их цель – решить, какую страницу или сегмент следует удалить из первичной памяти, чтобы освободить место для помещения поступающей страницы или сегмента, если первичная память полностью занята.
Стратегии выталкивания страниц. Рассмотрим следующие стратегии:
1. – принцип оптимальности;
2. – выталкивание случайной страницы;
3. – первой выталкивается первая пришедшая страница;
4. - первой выталкивается дольше всего не использовавшаяся страница;
5. - первой выталкивается наименее часто использовавшаяся страница;
6. - первой выталкивается не использовавшаяся в последнее время страница.
1) принцип оптимальности говорит о том, что для обеспечения оптимальных скоростных характеристик и эффективного использования ресурсов следует заменять ту страницу, к которой в дальнейшем не будет новых обращений в течение наиболее длительного времени. Однако, реализовать её естественно нельзя, но будем наиболее близко подходить к принципу оптимальности применяя различные методы выталкивания страниц.
2) Эта стратегия характеризуется малыми издержками. В этом случае все страницы, находящиеся в основной памяти, могут быть выбраны для выталкивания с равной вероятностью. В реальных системах она применяется редко.
3) При выталкивании страниц по этому принципу мы присваиваем каждой странице в момент поступления в основную память временную метку. В случае необходимости удаления из основной памяти какой-либо страницы выбирается та, которая находилась в памяти дольше других. Однако эта стратегия с достаточно большой вероятностью будет приводить к замещению активно используемых страниц, поскольку тот факт, что страница находится в основной памяти в течение длительного времени, вполне может означать, что она постоянно в работе.
4) Эта стратегия предусматривает, что для выталкивания следует выбирать ту страницу, которая не использовалась дольше других. Эта стратегия требует, чтобы при каждом обращении к странице её временная метка обновлялась. Это может быть сопряжено с существенными издержками и поэтому в современных системах используются редко.
5) В этом случае необходимо контролировать интенсивность использования каждой страницы. Выталкивается та, обращения к которой наименее часты. Однако такой подход тоже может быть нерациональным. Например, наименее интенсивно используемой может оказаться та страница, которую только что переписали в основную память и к которой успели обратиться только один раз, в то время как к другим уже могли обращаться большее число раз.
6) Один из распространённых алгоритмов – алгоритм выталкивания страницы, не использовавшейся в последнее время. К страницам, которые последнее время не использовались, вряд ли будут обращения в ближайшем будущем, так что их можно заменять на вновь поступающие страницы. Поскольку желательно заменять ту страницу, которая в период нахождения в основной памяти не изменилась, то реализация этой стратегии предусматривает введение двух аппаратных битов-признаков на страницу. Это а) – бит-признак обращения = 0, если к странице не было обращений; = 1, если были обращения.
б) – бит-признак модификации = 0, если страница не изменялась; = 1, если страница изменялась. В многоабонентских системах основная память, естественно работает активно, так что рано или поздно у большинства страниц бит-признак обращения будет установлен в 1, и мы не сможем отличить те страницы, которые вытолкнуть наиболее целесообразно. Один из широко распространенных способов решения этой проблемы заключается в том, что все биты-признаки обращений периодически сбрасываются в 0. В этом случае существует опасность того, что могут быть вытолкнуты даже активные страницы, однако только в течение короткого периода после сброса битов-признаков, поскольку почти немедленно биты-признаки обращений для этих страниц будут снова установлены в 1. Описанный алгоритм предусматривает существование 4 групп страниц:
1) Обращений не было, модификаций не было.
2) Обращений не было, модификация была.
3) Обращения были, модификаций не было.
4) Обращения были, модификация была.
Страницы групп с меньшим номером следует выталкивать в первую очередь.