Для чего нужны программы управления памятью кратко. Реферат: Операционные системы

Жаропонижающие средства для детей назначаются педиатром. Но бывают ситуации неотложной помощи при лихорадке, когда ребенку нужно дать лекарство немедленно. Тогда родители берут на себя ответственность и применяют жаропонижающие препараты. Что разрешено давать детям грудного возраста? Чем можно сбить температуру у детей постарше? Какие лекарства самые безопасные?

Лекция 8. Управление памятью в ОС

4.4.3. Стратегии размещения

4.1. Понятие об организации и управлении физической памятью в операционных системах

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

В операционных системах различают два вида памяти: основная (первичная) и внешняя (вторичная).

Основная память (main storage) - оперативная память центрального процессора или ее часть, представляющее собой единое пространство памяти.

Внешняя память (external storage) - память, данные в которой доступны центральному процессору посредством операций ввода-вывода.

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

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

Все три перечисленных вида памяти образуют иерархию памяти вычислительной машины (см. рис.4.1).

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

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

Под организацией памяти понимается то, каким образом представляется и как используется основная память.

В операционных системах применяются следующие виды представления основной памяти:

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

Использование основной памяти может осуществляться следующими способами:

  • размещение в памяти единовременно только одной программы пользователей;
  • размещение в памяти одновременно нескольких программ пользователей;
  • размещение программ пользователей в конкретном заранее заданном разделе основной памяти;
  • размещение каждой программы пользователя в одном непрерывном (односвязном) пространстве основной памяти;
  • размещение программы пользователя в несмежных областях оперативной памяти (при этом ОС осуществляет разбиение размещаемых там программ на отдельные блоки и обеспечивает связь этих блоков между собой).

В операционных системах может применяться любая комбинация перечисленных видов представления и способов использования основной памяти ЭВМ.

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

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

· когда следует поместить новую программу в память;

· в какое место основной памяти будет размещаться очередная программа;

· как разместить очередную программу в памяти (с минимизацией потерь памяти или с максимизацией скорости размещения);

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

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

Стратегии управления памятью делятся на следующие категории:

· стратегии выборки;

· стратегии размещения;

· стратегии замещения.

В свою очередь стратегии выборки разделяют на две подкатегории:

· стратегии выборки по запросу (по требованию);

· стратегии упреждающей выборки.

Стратегии выборки ставят своей целью определить, когда следует “втолкнуть” очередную программу (или блок программы) или данные в основную память.

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

Стратегии замещения ставят своей целью определить, какой блок программы или данных следует вывести (“вытолкнуть”) из основной памяти, чтобы освободить место для размещения вновь поступающих программ или данных.

При реализации стратегий размещения операционные системы часто учитывают требования связного распределения памяти для программ и данных.

Связное распределение памяти - такое распределение основной памяти ЭВМ, при котором каждая программа занимает один непрерывный (связный) блок ячеек памяти.

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

Эффективность той или иной стратегии размещения можно оценить с помощью коэффициента использования памяти h

(4.1)

где V п - объем памяти, занимаемый программами пользователя; V оп - полный объем основной памяти; V ос - объем памяти, занимаемый операционной системой; V о - объем памяти, доступный для распределения.

4.2. Методы связного распределения основной памяти

4.2.1. Связное распределение памяти для одного пользователя

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

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

Организация памяти при связном распределении для одного пользователя показана на рис. 4.2.

Коэффициент использования памяти для рассматриваемого случая вычисляется по формуле

h с1 =V п /V o , (4.2)

где V п - размер программы пользователя; V о - объем доступной для распределения основной памяти ЭВМ.

Функциями ОС в данном случае являются:

· выделение программе необходимого пространства памяти;

· защита памяти;

· освобождение памяти.

Функция выделения памяти сводится к предоставлению программе всей доступной памяти ЭВМ.

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

4.2.2. Связное распределение памяти при мультипрограммной обработке

При мультипрограммной обработке в памяти компьютера размещается сразу несколько заданий. Распределение памяти между заданиями в этом случае может быть выполнено следующими способами:

· распределение фиксированными разделами;

· распределение переменными разделами;

· распределение со свопингом.

Распределение фиксированными разделами имеет две модификации:

а) с загрузкой программ в абсолютных адресах;

б) с загрузкой перемещаемых модулей.

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

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

В случае загрузки перемещаемых модулей раздел, в котором будет размещено задание, либо автоматически определяется операционной системой в соответствии с реализованной в нем стратегией выбора раздела (“первый подходящий”, “самый подходящий”, “самый неподходящий”), либо указывается операционной системе специальными командами языка управления заданиями.

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

Коэффициенты использования памяти при распределении с фиксированными разделами вычисляется по формулам:

(4.3)

(4.4)

где h СMi - коэффициент использования памяти i-го раздела; V Оi - размер i-го раздела; V Пi - длина программы, помещенной в i-ый раздел; N Ф - количество разделов; V О - общий объем оперативной памяти, доступной для распределения.

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

Способ распределения памяти фиксированными разделами используется в операционных системах ОС ЕС и IBM/360 в режиме MFT, в котором загрузка программ выполняется перемещаемыми модулями.

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

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

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

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

На рис.4.4. показано проявление фрагментации оперативной памяти.

Уровень фрагментации можно оценить коэффициентом фрагментации K ф, вычисляемый по формуле

(4.5)

Где V дi - размер i-ой “дыры”, т.е. i-го участка свободной памяти, ограниченного программами пользователей; N Д - количество “дыр”, т.е. участков свободной памяти, лежащих между программами пользователей; V o - объем оперативной памяти, доступной для распределения.

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

Распределение памяти переменными разделами предназначено для повышения эффективности использования оперативной памяти ЭВМ. Суть способа распределения памяти переменными разделами состоит в том, что заданиям, когда они поступают, выделяется такой объем памяти, который им требуется, т.е. размер раздела оперативной памяти, выделяемой каждому заданию, в точности соответствует размеру этого задания. Поэтому “перерасхода” памяти, как это происходит при распределении фиксированными разделами, в данном способе не наблюдается.

Имеется две модификации способа распределения переменными разделами:

· распределение переменными неперемещаемыми разделами;

· распределение переменными перемещаемыми разделами.

При распределении памяти переменными неперемещаемыми разделами (динамическими разделами) операционная система создает две таблицы: таблицу учета распределенных областей памяти и таблицу учета свободных областей памяти (“дыр”).

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

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

Рассмотрим следующий пример. Пусть начальное распределение памяти переменными разделами выполнено так, как показано в табл.4.1, 4.2 и на рис. 4.5а. После размещения заданий А, В, С и Д осталась свободная область такого размера, что ни одна из программ, продолжающих стоять в очереди, в эту область не помещается.

Таблица 4.1. Таблица распределенных областей

Номер раздела,

ключ защиты

Имя раздела

Размер

Адрес

Состояние

100К

200К

100К

400К

100К

50К

150К

350К

450К

850К

Распределен

Распределен

Распределен

Распределен

Распределен

Таблица 4.2. Таблица свободных областей

Номер свободной

области

Размер

Адрес

Состояние

100К

950К

Доступна

Предположим, что через некоторое время закончились задания А и С (см. рис.4.5б). Таблицы областей приобретают вид, показанный в табл. 4.3 и 4.4.

Таблица 4.3. Таблица распределенных областей: закончилось задание А

Номер раздела,

ключ защиты

Имя раздела

Размер

Адрес

Состояние

200К

400К

100К

150К

450К

850К

Пусто

Распределен

Пусто

Распределен

Распределен

Таблица 4.4. Таблица свободных областей: закончилось задание А

Номер свободной

области

Размер

Адрес

Состояние

100К

100К

100К

100К

350К

950К

Доступна

Доступна

Доступна



Можно видеть, что несмотря на наличие 274К свободной памяти, достаточной для размещения задания Е, стоящего первым в очереди, ОС не имеет возможности это сделать, т.к. свободная память разбита на два фрагмента по 100К каждый, в которых разместить программы, стоящие в очереди, невозможно. Этот пример иллюстрирует главный недостаток способа распределения переменными неперемещаемыми разделами - склонность к фрагментации основной памяти, что снижает эффективность работы вычислительной системы.

При распределении памяти переменными перемещаемыми разделами операционная система осуществляет действия, называемые уплотнением памяти, состоящими в перемещении всех занятых участков к одному или другому краю основной памяти. Благодаря этому вместо большого количества небольших “дыр”, образующихся при использовании распределения переменными неперемещаемыми разделами, формируется единый (связный) участок свободной памяти. На рис.4.5в показан результат уплотнения, когда находящиеся в основной памяти программы В, Д и Е перемещены на свободные участки после окончания работы программ А и С. Свободная память теперь представляет собой непрерывную область размером 274К, в которую ОС может поместить стоящее в очереди задание F. Этот процесс называют также дефрагментацией памяти.

Дефрагментация памяти, применяемая при распределении перемещаемыми разделами, имеет свои недостатки:

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

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

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

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

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

  • размещение с выбором первого подходящего (стратегия “первый подходящий”):
  • размещение с выбором наиболее подходящего (стратегия “самый подходящий”);
  • алгоритм с выбором наименее подходящего (стратегия “самый неподходящий”).

Стратегия “первый подходящий” состоит в выполнении следующих шагов:

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

Стратегия “самый подходящий” реализует следующую последовательность действий:

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

Стратегия “самый неподходящий” выполняет следующие действия:

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

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

4.3. Организация виртуальной памяти

4.3.1. Основные концепции виртуальной памяти

Термин виртуальная память обычно ассоциируется с возможностью адресовать пространство памяти, гораздо большее, чем емкость первичной (реальной, физической) памяти конкретной вычислительной машины. Концепция виртуальной памяти впервые была реализована в машине, созданной в 1960 г. в Манчестерском университете (Англия). Однако широкое распространение системы виртуальной памяти получили лишь в ЭВМ четвертого и последующих поколений.

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

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

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

Адреса, которые реально существуют в первичной памяти, называются реальными (физическими) адресами.

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

Диапазон реальных адресов, существующих в конкретной вычислительной машине, называется пространством реальных адресов R этой ЭВМ.

Несмотря на то, что процессы обращаются только к виртуальным адресам, в действительности они должны работать с реальной памятью. Для установления соответствия между виртуальными и реальными адресами разработаны механизмы динамического преобразования адресов ДПА (или ДАТ - от англ.Dynamics Adress Transformation), обеспечивающие преобразование виртуальных адресов в реальные во время выполнения процесса. Все подобные системы обладают общим свойством (см.рис.4.6) - смежные адреса виртуального адресного пространства процесса не обязательно будут смежными в реальной памяти.

Это свойство называют “искусственной смежностью”. Тем самым пользователь освобождается от необходимости рассматривать физическую память с ее уникальными характеристиками.

Виртуальная память строится, как правило, по двухуровневой схеме (см.рис.4.7).

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

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

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

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

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

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

Адреса в системе поблочного отображения являются двухкомпонентными (двумерными). Чтобы обратиться к конкретному элементу данных, программа указывает блок, в котором расположен этот элемент, и смещение элемента относительно начала блока (см.рис.4.8). Виртуальный адрес n указывает при помощи упорядоченной пары (b, d), где b- номер блока, в котором размещается соответствующий элемент данных, а d - смещение относительно начального адреса этого блока.

Преобразование адреса виртуальной памяти n =(b, d) в адрес реальной памяти r осуществляется следующим образом (см.рис.4.9). Каждый процесс имеет собственную таблицу отображения блоков, которую операционная система ведет в реальной памяти. Реальный адрес a этой таблицы загружается в специальный регистр центрального процессора, называемый регистром начального адреса таблицы отображения блоков процесса.


Таблицы отображения блоков содержат по одной строке для каждого блока процесса, причем эти блоки идут последовательно: сначала блок 0, затем блок 1 и т.д. Номер блока b суммируется с начальным адресом а таблицы, образуя реальный адрес строки таблицы для блока b. Найденная строка содержит реальный адрес b начала блока b в реальной памяти. К этому начальному адресу b прибавляется смещение d, так что образуется искомый реальный адрес r=b’+d.

Все методы поблочного отображения, применяемые в системах с сегментной, страничной и комбинированной странично-сегментной организациями, подобны схеме отображения, показанной на рис. 4.9, называемой схемой прямого отображения.

4.3.2. Страничная организация виртуальной памяти

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

Для обеспечения работы механизма отображения страниц формируется таблица отображения страниц, каждая строка которой содержит информацию об отображаемой странице виртуальной памяти:

r - признак наличия страницы в первичной памяти (r=0 - страницы в первичной памяти нет; 1 - страница находится в первичной памяти):

S - адрес страницы во внешней памяти (при r=0):

p’ - номер страничного кадра в первичной памяти, где размещена виртуальная страница с номером p.

4.3.3. Сегментная организация виртуальной памяти

Виртуальный адрес при сегментной организации виртуальной памяти - это упорядоченная пара n = (s, d) , где s - номер сегмента виртуальной памяти, а d - смещение в рамках этого сегмента. Процесс может выполняться только в том случае, если его текущий сегмент находится в первичной памяти, Сегменты передаются из внешней памяти в первичную целиком. Все ячейки, относящиеся к сегменту, занимают смежные адреса первичной памяти. Для размещения поступающих из внешней памяти сегментов в свободные участки первичной памяти применяются те же стратегии размещения, как и при распределении переменными неперемещаемыми разделами - “первый подходящий”, “самый подходящий”, “самый неподходящий” (см.п.4.2.3). Динамическое преобразование виртуальных адресов в реальные адреса осуществляется в соответствии со схемой прямого отображения, приведенной на рис. 4.9.

4.3.4. Странично-сегментная организация виртуальной памяти

Системы со странично-сегментной организацией обладают достоинствами обоих способов реализации виртуальной памяти. Сегменты обычно содержат целое число страниц, причем не обязательно, чтобы все страницы сегмента находились в первичной памяти одновременно, а смежные страницы виртуальной памяти не обязательно должны оказаться смежными в первичной памяти. В системе со странично-сегментной организацией применяется трехкомпонентная (трехмерная) адресация. Виртуальный адрес n здесь определяется как упорядоченная тройка n =(s, p, d), где s - номер сегмента, p - номер страницы, а d - смещение в рамках страницы, где находится нужный элемент.

Операционная система для каждого процесса формирует, во-первых, одну таблицу сегментов процесса, и, во-вторых, таблицы страниц сегментов (по одной на каждый сегмент процесса).

Таблица сегментов процесса содержит в своих строках информацию о количестве страниц в сегменте и о начальных адресах s’ размещения таблиц страниц сегментов в первичной памяти ЭВМ.

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

Динамическое преобразование виртуальных адресов в системах со странично-сегментной организацией отличается от преобразования по схеме наличием еще одного уровня вычисления адреса, как это показано на схеме рис.4.10, и появлением таблиц страниц для каждого сегмента процесса.

4.4. Управление виртуальной памятью

4.4.1. Стратегии управления виртуальной памятью

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

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

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

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

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

Свойство локальности проявляется как во времени, так и в пространстве.

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

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

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

Для оценивания эффективности стратегий управления памятью в операционных системах применяют показатель “пространство-время”, вычисляемый по формуле

S = VЧ T, (4.6)

где S - показатель “пространство-время”; V - объем первичной памяти, занимаемый процессом; T - длительность ожидания процессом подкачки необходимой страницы или сегмента.

Уменьшение значения показателя S за счет снижения периодов ожидания процессом нужных ему страниц или сегментов является важнейшей целью всех стратегий управления памятью.

4.4.2. Стратегии вталкивания (подкачки)

Для управления вталкиванием применяются следующие стратегии:

· вталкивание (подкачка) по запросу (по требованию);

· вталкивание (подкачка) с упреждением (опережением).

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

К положительным сторонам относятся:

  • гарантировано, что в первичную память будут переписываться только те страницы (сегменты), которые необходимы для работы процесса;
  • накладные расходы на то, чтобы определить, какие страницы или сегменты следует передавать в первичную память, минимальны.

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

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

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

4.4.3. Стратегии размещения

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

Для систем с сегментной организацией виртуальной памяти применяются такие же стратегии размещения, какие используются в системах распределения памяти переменными разделами (см. П.4.2), а именно:

· размещение с выбором первого подходящего свободного участка;

· размещение с выбором самого подходящего свободного участка;

· размещение с выбором наименее подходящего свободного участка.

Подробное описание действий для реализации перечисленных стратегий размещения приведено в п.4.2.3.

4.4.4. Стратегии выталкивания

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

  • выталкивание случайных страниц или сегментов;
  • выталкивание первой пришедшей страницы или сегмента (FIFO);
  • выталкивание дольше всего не использовавшихся страниц или сегментов (LRU);
  • выталкивание наименее часто использовавшихся страниц или сегментов (LFU);
  • выталкивание не использовавшихся в последнее время страниц или сегментов (NUR).

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

Стратегия выталкивания первой пришедшей страницы или сегмента (FIFO-стратегия) реализует принцип “первый пришел - первый ушел”. В этом случае в момент поступления каждой страницы (сегмента) в первичную память ей (ему) присваивается метка времени. Когда появляется необходимость удалить из первичной памяти какую-либо страницу (сегмент), выбирается та страница (сегмент), у которой метка времени имеет наименьшее значение. Аргументом в пользу такой стратегии выталкивания является довод, что у данной страницы уже были возможности “использовать свой шанс”, и пора дать подобные возможности другой странице. Однако стратегия FIFO с большой вероятностью будет приводить к удалению из первичной памяти активно используемых страниц (сегментов), поскольку тот факт, что страница (сегмент) находится в первичной памяти в течение длительного времени, вполне может означать, что эта страница или сегмент постоянно находится в работе.

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

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

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

Поскольку желательно заменять те страницы (сегменты), которые в период нахождения в основной памяти не изменялись, реализация NUR-стратегии предусматривает введение двух аппаратных бит-признаков на страницу (сегмент):

· бит-признак b 0 обращения к странице (сегменту);

· бит-признак b 1 модификации страницы (сегмента).

Первоначально все b 0 и b 1 устанавливаются в 0. При обращении к странице (сегменту) соответствующий бит-признак b 0 устанавливается в 1. В случае изменения содержимого страницы (сегмента) соответствующий бит-признак b 1 устанавливается в 1. NUR-стратегия предусматривает существование четырех групп страниц (сегментов), показанных в табл. 4.5.

Таблица 4.5. Группы страниц (сегментов)

Группа

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

Учет времени, в течение которого к страницам (сегментам) не было обращений, осуществляется периодическим сбрасыванием в 0 всех битов-признаков, выполняемым операционной системой.

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

Контрольные вопросы

1. Часто единственным достоинством виртуальной памяти называют возможность обеспечить для процесса объем виртуального адресного пространства, превышающий объем реальной памяти. Назовите другие достоинства виртуальной памяти.

2. В чем достоинства и недостатки преобразования виртуальных адресов в реальные во время выполнения программы? Какая часть работы по этому преобразованию выполняется аппаратным обеспечением, а какая - ОС?

3. Иногда считают, что виртуальная память может быть обеспечена только в системах с аппаратной поддержкой динамической трансляции адреса. Докажите, что это не так.

4. Почему при поиске свободной памяти стратегия "самый подходящий" оказывается хуже, чем "первый подходящий".

5. Сравните сегментную и страничную модели виртуальной памяти. Какая из них представляется Вам лучшей и почему?

6. Дополните приведенные в разделе 3.5. соображения по поводу выбора размера страницы.

7. Смоделируйте ситуацию применения дисциплины вытеснения FCFS, в которой увеличение числа реальных страниц приведет к увеличению числа страничных отказов.

8. Что такое кластерная подкачка страниц? Почему в современных ОС она становится все более популярной?

9. Каким образом ОС может определять, к каким страницам будут обращения в ближайшее время?

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

11. Каким образом снижение стоимости памяти влияет на дисциплины управления памятью?

12. Какие принципиальные изменения в концепции памяти может повлечь за собой увеличение разрядности адреса?

Лекция 8. Управление памятью в ОС

4.4.3. Стратегии размещения

4.1. Понятие об организации и управлении физической памятью в операционных системах

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

В операционных системах различают два вида памяти: основная (первичная) и внешняя (вторичная).

Основная память (main storage) - оперативная память центрального процессора или ее часть, представляющее собой единое пространство памяти.

Внешняя память (external storage) - память, данные в которой доступны центральному процессору посредством операций ввода-вывода.

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

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

Все три перечисленных вида памяти образуют иерархию памяти вычислительной машины (см. рис.4.1).

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

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

Под организацией памяти понимается то, каким образом представляется и как используется основная память.

В операционных системах применяются следующие виды представления основной памяти:

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

Использование основной памяти может осуществляться следующими способами:

  • размещение в памяти единовременно только одной программы пользователей;
  • размещение в памяти одновременно нескольких программ пользователей;
  • размещение программ пользователей в конкретном заранее заданном разделе основной памяти;
  • размещение каждой программы пользователя в одном непрерывном (односвязном) пространстве основной памяти;
  • размещение программы пользователя в несмежных областях оперативной памяти (при этом ОС осуществляет разбиение размещаемых там программ на отдельные блоки и обеспечивает связь этих блоков между собой).

В операционных системах может применяться любая комбинация перечисленных видов представления и способов использования основной памяти ЭВМ.

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

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

· когда следует поместить новую программу в память;

· в какое место основной памяти будет размещаться очередная программа;

· как разместить очередную программу в памяти (с минимизацией потерь памяти или с максимизацией скорости размещения);

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

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

Стратегии управления памятью делятся на следующие категории:

· стратегии выборки;

· стратегии размещения;

· стратегии замещения.

В свою очередь стратегии выборки разделяют на две подкатегории:

· стратегии выборки по запросу (по требованию);

· стратегии упреждающей выборки.

Стратегии выборки ставят своей целью определить, когда следует “втолкнуть” очередную программу (или блок программы) или данные в основную память.

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

Стратегии замещения ставят своей целью определить, какой блок программы или данных следует вывести (“вытолкнуть”) из основной памяти, чтобы освободить место для размещения вновь поступающих программ или данных.

При реализации стратегий размещения операционные системы часто учитывают требования связного распределения памяти для программ и данных.

Связное распределение памяти - такое распределение основной памяти ЭВМ, при котором каждая программа занимает один непрерывный (связный) блок ячеек памяти.

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

Эффективность той или иной стратегии размещения можно оценить с помощью коэффициента использования памяти h

(4.1)

где V п - объем памяти, занимаемый программами пользователя; V оп - полный объем основной памяти; V ос - объем памяти, занимаемый операционной системой; V о - объем памяти, доступный для распределения.

4.2. Методы связного распределения основной памяти

4.2.1. Связное распределение памяти для одного пользователя

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

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

Организация памяти при связном распределении для одного пользователя показана на рис. 4.2.

Коэффициент использования памяти для рассматриваемого случая вычисляется по формуле

h с1 =V п /V o , (4.2)

где V п - размер программы пользователя; V о - объем доступной для распределения основной памяти ЭВМ.

Функциями ОС в данном случае являются:

· выделение программе необходимого пространства памяти;

· защита памяти;

· освобождение памяти.

Функция выделения памяти сводится к предоставлению программе всей доступной памяти ЭВМ.

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

4.2.2. Связное распределение памяти при мультипрограммной обработке

При мультипрограммной обработке в памяти компьютера размещается сразу несколько заданий. Распределение памяти между заданиями в этом случае может быть выполнено следующими способами:

· распределение фиксированными разделами;

· распределение переменными разделами;

· распределение со свопингом.

Распределение фиксированными разделами имеет две модификации:

а) с загрузкой программ в абсолютных адресах;

б) с загрузкой перемещаемых модулей.

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

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

В случае загрузки перемещаемых модулей раздел, в котором будет размещено задание, либо автоматически определяется операционной системой в соответствии с реализованной в нем стратегией выбора раздела (“первый подходящий”, “самый подходящий”, “самый неподходящий”), либо указывается операционной системе специальными командами языка управления заданиями.

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

Коэффициенты использования памяти при распределении с фиксированными разделами вычисляется по формулам:

(4.3)

(4.4)

где h СMi - коэффициент использования памяти i-го раздела; V Оi - размер i-го раздела; V Пi - длина программы, помещенной в i-ый раздел; N Ф - количество разделов; V О - общий объем оперативной памяти, доступной для распределения.

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

Способ распределения памяти фиксированными разделами используется в операционных системах ОС ЕС и IBM/360 в режиме MFT, в котором загрузка программ выполняется перемещаемыми модулями.

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

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

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

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

На рис.4.4. показано проявление фрагментации оперативной памяти.

Уровень фрагментации можно оценить коэффициентом фрагментации K ф, вычисляемый по формуле

(4.5)

Где V дi - размер i-ой “дыры”, т.е. i-го участка свободной памяти, ограниченного программами пользователей; N Д - количество “дыр”, т.е. участков свободной памяти, лежащих между программами пользователей; V o - объем оперативной памяти, доступной для распределения.

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

Распределение памяти переменными разделами предназначено для повышения эффективности использования оперативной памяти ЭВМ. Суть способа распределения памяти переменными разделами состоит в том, что заданиям, когда они поступают, выделяется такой объем памяти, который им требуется, т.е. размер раздела оперативной памяти, выделяемой каждому заданию, в точности соответствует размеру этого задания. Поэтому “перерасхода” памяти, как это происходит при распределении фиксированными разделами, в данном способе не наблюдается.

Имеется две модификации способа распределения переменными разделами:

· распределение переменными неперемещаемыми разделами;

· распределение переменными перемещаемыми разделами.

При распределении памяти переменными неперемещаемыми разделами (динамическими разделами) операционная система создает две таблицы: таблицу учета распределенных областей памяти и таблицу учета свободных областей памяти (“дыр”).

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

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

Рассмотрим следующий пример. Пусть начальное распределение памяти переменными разделами выполнено так, как показано в табл.4.1, 4.2 и на рис. 4.5а. После размещения заданий А, В, С и Д осталась свободная область такого размера, что ни одна из программ, продолжающих стоять в очереди, в эту область не помещается.

Таблица 4.1. Таблица распределенных областей

Номер раздела,

ключ защиты

Имя раздела

Размер

Адрес

Состояние

100К

200К

100К

400К

100К

50К

150К

350К

450К

850К

Распределен

Распределен

Распределен

Распределен

Распределен

Таблица 4.2. Таблица свободных областей

Номер свободной

области

Размер

Адрес

Состояние

100К

950К

Доступна

Предположим, что через некоторое время закончились задания А и С (см. рис.4.5б). Таблицы областей приобретают вид, показанный в табл. 4.3 и 4.4.

Таблица 4.3. Таблица распределенных областей: закончилось задание А

Номер раздела,

ключ защиты

Имя раздела

Размер

Адрес

Состояние

200К

400К

100К

150К

450К

850К

Пусто

Распределен

Пусто

Распределен

Распределен

Таблица 4.4. Таблица свободных областей: закончилось задание А

Номер свободной

области

Размер

Адрес

Состояние

100К

100К

100К

100К

350К

950К

Доступна

Доступна

Доступна



Можно видеть, что несмотря на наличие 274К свободной памяти, достаточной для размещения задания Е, стоящего первым в очереди, ОС не имеет возможности это сделать, т.к. свободная память разбита на два фрагмента по 100К каждый, в которых разместить программы, стоящие в очереди, невозможно. Этот пример иллюстрирует главный недостаток способа распределения переменными неперемещаемыми разделами - склонность к фрагментации основной памяти, что снижает эффективность работы вычислительной системы.

При распределении памяти переменными перемещаемыми разделами операционная система осуществляет действия, называемые уплотнением памяти, состоящими в перемещении всех занятых участков к одному или другому краю основной памяти. Благодаря этому вместо большого количества небольших “дыр”, образующихся при использовании распределения переменными неперемещаемыми разделами, формируется единый (связный) участок свободной памяти. На рис.4.5в показан результат уплотнения, когда находящиеся в основной памяти программы В, Д и Е перемещены на свободные участки после окончания работы программ А и С. Свободная память теперь представляет собой непрерывную область размером 274К, в которую ОС может поместить стоящее в очереди задание F. Этот процесс называют также дефрагментацией памяти.

Дефрагментация памяти, применяемая при распределении перемещаемыми разделами, имеет свои недостатки:

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

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

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

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

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

  • размещение с выбором первого подходящего (стратегия “первый подходящий”):
  • размещение с выбором наиболее подходящего (стратегия “самый подходящий”);
  • алгоритм с выбором наименее подходящего (стратегия “самый неподходящий”).

Стратегия “первый подходящий” состоит в выполнении следующих шагов:

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

Стратегия “самый подходящий” реализует следующую последовательность действий:

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

Стратегия “самый неподходящий” выполняет следующие действия:

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

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

4.3. Организация виртуальной памяти

4.3.1. Основные концепции виртуальной памяти

Термин виртуальная память обычно ассоциируется с возможностью адресовать пространство памяти, гораздо большее, чем емкость первичной (реальной, физической) памяти конкретной вычислительной машины. Концепция виртуальной памяти впервые была реализована в машине, созданной в 1960 г. в Манчестерском университете (Англия). Однако широкое распространение системы виртуальной памяти получили лишь в ЭВМ четвертого и последующих поколений.

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

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

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

Адреса, которые реально существуют в первичной памяти, называются реальными (физическими) адресами.

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

Диапазон реальных адресов, существующих в конкретной вычислительной машине, называется пространством реальных адресов R этой ЭВМ.

Несмотря на то, что процессы обращаются только к виртуальным адресам, в действительности они должны работать с реальной памятью. Для установления соответствия между виртуальными и реальными адресами разработаны механизмы динамического преобразования адресов ДПА (или ДАТ - от англ.Dynamics Adress Transformation), обеспечивающие преобразование виртуальных адресов в реальные во время выполнения процесса. Все подобные системы обладают общим свойством (см.рис.4.6) - смежные адреса виртуального адресного пространства процесса не обязательно будут смежными в реальной памяти.

Это свойство называют “искусственной смежностью”. Тем самым пользователь освобождается от необходимости рассматривать физическую память с ее уникальными характеристиками.

Виртуальная память строится, как правило, по двухуровневой схеме (см.рис.4.7).

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

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

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

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

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

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

Адреса в системе поблочного отображения являются двухкомпонентными (двумерными). Чтобы обратиться к конкретному элементу данных, программа указывает блок, в котором расположен этот элемент, и смещение элемента относительно начала блока (см.рис.4.8). Виртуальный адрес n указывает при помощи упорядоченной пары (b, d), где b- номер блока, в котором размещается соответствующий элемент данных, а d - смещение относительно начального адреса этого блока.

Преобразование адреса виртуальной памяти n =(b, d) в адрес реальной памяти r осуществляется следующим образом (см.рис.4.9). Каждый процесс имеет собственную таблицу отображения блоков, которую операционная система ведет в реальной памяти. Реальный адрес a этой таблицы загружается в специальный регистр центрального процессора, называемый регистром начального адреса таблицы отображения блоков процесса.


Таблицы отображения блоков содержат по одной строке для каждого блока процесса, причем эти блоки идут последовательно: сначала блок 0, затем блок 1 и т.д. Номер блока b суммируется с начальным адресом а таблицы, образуя реальный адрес строки таблицы для блока b. Найденная строка содержит реальный адрес b начала блока b в реальной памяти. К этому начальному адресу b прибавляется смещение d, так что образуется искомый реальный адрес r=b’+d.

Все методы поблочного отображения, применяемые в системах с сегментной, страничной и комбинированной странично-сегментной организациями, подобны схеме отображения, показанной на рис. 4.9, называемой схемой прямого отображения.

4.3.2. Страничная организация виртуальной памяти

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

Для обеспечения работы механизма отображения страниц формируется таблица отображения страниц, каждая строка которой содержит информацию об отображаемой странице виртуальной памяти:

r - признак наличия страницы в первичной памяти (r=0 - страницы в первичной памяти нет; 1 - страница находится в первичной памяти):

S - адрес страницы во внешней памяти (при r=0):

p’ - номер страничного кадра в первичной памяти, где размещена виртуальная страница с номером p.

4.3.3. Сегментная организация виртуальной памяти

Виртуальный адрес при сегментной организации виртуальной памяти - это упорядоченная пара n = (s, d) , где s - номер сегмента виртуальной памяти, а d - смещение в рамках этого сегмента. Процесс может выполняться только в том случае, если его текущий сегмент находится в первичной памяти, Сегменты передаются из внешней памяти в первичную целиком. Все ячейки, относящиеся к сегменту, занимают смежные адреса первичной памяти. Для размещения поступающих из внешней памяти сегментов в свободные участки первичной памяти применяются те же стратегии размещения, как и при распределении переменными неперемещаемыми разделами - “первый подходящий”, “самый подходящий”, “самый неподходящий” (см.п.4.2.3). Динамическое преобразование виртуальных адресов в реальные адреса осуществляется в соответствии со схемой прямого отображения, приведенной на рис. 4.9.

4.3.4. Странично-сегментная организация виртуальной памяти

Системы со странично-сегментной организацией обладают достоинствами обоих способов реализации виртуальной памяти. Сегменты обычно содержат целое число страниц, причем не обязательно, чтобы все страницы сегмента находились в первичной памяти одновременно, а смежные страницы виртуальной памяти не обязательно должны оказаться смежными в первичной памяти. В системе со странично-сегментной организацией применяется трехкомпонентная (трехмерная) адресация. Виртуальный адрес n здесь определяется как упорядоченная тройка n =(s, p, d), где s - номер сегмента, p - номер страницы, а d - смещение в рамках страницы, где находится нужный элемент.

Операционная система для каждого процесса формирует, во-первых, одну таблицу сегментов процесса, и, во-вторых, таблицы страниц сегментов (по одной на каждый сегмент процесса).

Таблица сегментов процесса содержит в своих строках информацию о количестве страниц в сегменте и о начальных адресах s’ размещения таблиц страниц сегментов в первичной памяти ЭВМ.

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

Динамическое преобразование виртуальных адресов в системах со странично-сегментной организацией отличается от преобразования по схеме наличием еще одного уровня вычисления адреса, как это показано на схеме рис.4.10, и появлением таблиц страниц для каждого сегмента процесса.

4.4. Управление виртуальной памятью

4.4.1. Стратегии управления виртуальной памятью

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

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

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

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

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

Свойство локальности проявляется как во времени, так и в пространстве.

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

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

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

Для оценивания эффективности стратегий управления памятью в операционных системах применяют показатель “пространство-время”, вычисляемый по формуле

S = VЧ T, (4.6)

где S - показатель “пространство-время”; V - объем первичной памяти, занимаемый процессом; T - длительность ожидания процессом подкачки необходимой страницы или сегмента.

Уменьшение значения показателя S за счет снижения периодов ожидания процессом нужных ему страниц или сегментов является важнейшей целью всех стратегий управления памятью.

4.4.2. Стратегии вталкивания (подкачки)

Для управления вталкиванием применяются следующие стратегии:

· вталкивание (подкачка) по запросу (по требованию);

· вталкивание (подкачка) с упреждением (опережением).

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

К положительным сторонам относятся:

  • гарантировано, что в первичную память будут переписываться только те страницы (сегменты), которые необходимы для работы процесса;
  • накладные расходы на то, чтобы определить, какие страницы или сегменты следует передавать в первичную память, минимальны.

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

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

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

4.4.3. Стратегии размещения

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

Для систем с сегментной организацией виртуальной памяти применяются такие же стратегии размещения, какие используются в системах распределения памяти переменными разделами (см. П.4.2), а именно:

· размещение с выбором первого подходящего свободного участка;

· размещение с выбором самого подходящего свободного участка;

· размещение с выбором наименее подходящего свободного участка.

Подробное описание действий для реализации перечисленных стратегий размещения приведено в п.4.2.3.

4.4.4. Стратегии выталкивания

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

  • выталкивание случайных страниц или сегментов;
  • выталкивание первой пришедшей страницы или сегмента (FIFO);
  • выталкивание дольше всего не использовавшихся страниц или сегментов (LRU);
  • выталкивание наименее часто использовавшихся страниц или сегментов (LFU);
  • выталкивание не использовавшихся в последнее время страниц или сегментов (NUR).

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

Стратегия выталкивания первой пришедшей страницы или сегмента (FIFO-стратегия) реализует принцип “первый пришел - первый ушел”. В этом случае в момент поступления каждой страницы (сегмента) в первичную память ей (ему) присваивается метка времени. Когда появляется необходимость удалить из первичной памяти какую-либо страницу (сегмент), выбирается та страница (сегмент), у которой метка времени имеет наименьшее значение. Аргументом в пользу такой стратегии выталкивания является довод, что у данной страницы уже были возможности “использовать свой шанс”, и пора дать подобные возможности другой странице. Однако стратегия FIFO с большой вероятностью будет приводить к удалению из первичной памяти активно используемых страниц (сегментов), поскольку тот факт, что страница (сегмент) находится в первичной памяти в течение длительного времени, вполне может означать, что эта страница или сегмент постоянно находится в работе.

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

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

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

Поскольку желательно заменять те страницы (сегменты), которые в период нахождения в основной памяти не изменялись, реализация NUR-стратегии предусматривает введение двух аппаратных бит-признаков на страницу (сегмент):

· бит-признак b 0 обращения к странице (сегменту);

· бит-признак b 1 модификации страницы (сегмента).

Первоначально все b 0 и b 1 устанавливаются в 0. При обращении к странице (сегменту) соответствующий бит-признак b 0 устанавливается в 1. В случае изменения содержимого страницы (сегмента) соответствующий бит-признак b 1 устанавливается в 1. NUR-стратегия предусматривает существование четырех групп страниц (сегментов), показанных в табл. 4.5.

Таблица 4.5. Группы страниц (сегментов)

Группа

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

Учет времени, в течение которого к страницам (сегментам) не было обращений, осуществляется периодическим сбрасыванием в 0 всех битов-признаков, выполняемым операционной системой.

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

Контрольные вопросы

1. Часто единственным достоинством виртуальной памяти называют возможность обеспечить для процесса объем виртуального адресного пространства, превышающий объем реальной памяти. Назовите другие достоинства виртуальной памяти.

2. В чем достоинства и недостатки преобразования виртуальных адресов в реальные во время выполнения программы? Какая часть работы по этому преобразованию выполняется аппаратным обеспечением, а какая - ОС?

3. Иногда считают, что виртуальная память может быть обеспечена только в системах с аппаратной поддержкой динамической трансляции адреса. Докажите, что это не так.

4. Почему при поиске свободной памяти стратегия "самый подходящий" оказывается хуже, чем "первый подходящий".

5. Сравните сегментную и страничную модели виртуальной памяти. Какая из них представляется Вам лучшей и почему?

6. Дополните приведенные в разделе 3.5. соображения по поводу выбора размера страницы.

7. Смоделируйте ситуацию применения дисциплины вытеснения FCFS, в которой увеличение числа реальных страниц приведет к увеличению числа страничных отказов.

8. Что такое кластерная подкачка страниц? Почему в современных ОС она становится все более популярной?

9. Каким образом ОС может определять, к каким страницам будут обращения в ближайшее время?

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

11. Каким образом снижение стоимости памяти влияет на дисциплины управления памятью?

12. Какие принципиальные изменения в концепции памяти может повлечь за собой увеличение разрядности адреса?

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

    В качестве примера представим себе неимоверно слабый компьютер с оперативной памятью в 1 мегабайт, который примем за 1000 килобайт, чтобы избежать сложных расчетов, которые никак не помогут нам понять суть рассматриваемого вопроса. В процессе загрузки, операционная система этого воображаемого компьютера «откусывает» столько памяти, сколько нужно ей. Операционная система имеет приоритет перед другими программами. Представим себе, что операционной системе, чтобы загрузиться, нужно всего 300 килобайт памяти.

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

    Когда в память начинают загружаться приложения, каждое из них занимает в ОЗУ определенное количество блоков, размер которого назначается операционной системой. Если размер блока 2 килобайта, каждый процесс занимает участок памяти, размер которого кратен двум килобайтам. То есть сколько-то раз по 2 килобайта. Приложения загружаются в эти блоки фиксированного размера. Каждый блок начинается и заканчивается словом-ограничителем, длиной от 4 до 8 байт. Блоки и ограничители исключают ситуацию, при которой одно приложение могло бы наложиться в памяти на другое. Ведь для того, чтобы случилось такое наложение порой достаточно ошибиться одним или двумя битами. Но что же делать, когда отведенное под приложения 500-килобайтное пространство оперативной памяти заполнено?

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

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

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

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

    Продолжение следует…

    По материалам computer.howstuffworks.com

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

1. Отслеживание свободной и занятой памяти

2. Выделение памяти процессам и освобождение памяти при завершении процессов

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

4. Настройка адресов программ на конкретную область физической памяти

Качество операционной системы, в первую очередь, можно оценить по тому, насколько эффективно она предоставляет процессам требуемую память.

Типы адресов

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

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

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

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

Классификация методов распределения памяти

Методы распределения делятся на две группы:

1. Без использования внешней памяти

a. Фиксированными разделами

b. Динамическими разделами

c. Перемещаемыми разделами

2. С использованием внешней памяти

a. Страничное распределение

b. Сегментное распределение

c. Сегментно-страничное распределение

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

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

Подсистема управления памятью в данном методе выполняет следующие задачи:

1. Сравнивая размер программы поступившей на выполнение и размер свободных разделов выбирает подходящий раздел

2. Осуществляет загрузку программы в этот раздел и настройку адресов

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

Распределение памяти разделами переменной величины

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

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

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

4. После завершения задачи корректировка таблиц свободных и занятых областей

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

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

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

Перемещаемые разделы

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

Методы распределения памяти с использованием дискового пространства.

Понятие виртуальной памяти

Развитие методов организации вычислительного процесса привело к появлению метода известного под названием «виртуальная память». Виртуальным называется ресурс который пользователю или пользовательской программе представляется обладающим свойствами которыми он в действительности не обладает. Так пользователю может быть предоставлена виртуальная оперативная память размер которой превосходит имеющуюся в системе реальную память. Таким образом виртуальная память – совокупность программно-аппаратных средств позволяющих пользователям писать программы размер которых превосходит имеющуюся оперативную память. Для этого система виртуальной памяти решает следующие задачи:

1. Размещает данные в запоминающих устройствах разного типа. Например часть программы в оперативной памяти, а часть на диске.

2. Перемещает по мере необходимости данные между устройствами разного типа

3. Преобразует виртуальные адреса в физические

Все эти действия выполняются автоматически, то есть механизм виртуальной памяти является прозрачным по отношению к пользователю.

Наиболее распространенными реализациями виртуальной памяти являются:

1. Страничная

2. Сегментная

3. Странично-сегментное распределение памяти

Страничное распределение

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

Вся физическая оперативная память машины так же делится на части такого же разделами, называемые физическими страницами или блоками. Размер страницы обычно выбирается равным степени двойки. Это позволяет упростить механизм преобразования адресов. При загрузке процесса часть его виртуальных страниц помещается в оперативную память, остальные страницы на диск. При этом смежные виртуальные страницы не обязательно располагаются в смежных физических страницах. При загрузке операционная система создает для каждого процесса информационную структуру – таблицу страниц, в которых устанавливается соответствие между номерами виртуальных и физических страниц, для страниц загруженных в оперативную память или делается отметка о том, что виртуальная страница делается отметка о том, что страница выгружена на диск. Кроме того, в таблице страниц содержится управляющая информация, такая как признак модификации страницы, признак невыгружаемости – выгрузка некоторых страниц может быть запрещена, признак обращения к странице (используется для подсчета количества обращений за определенный период времени) и другие данные формируемые и используемые механизмом виртуальной памяти. При активизации очередного процесса специальный регистр процессора загружается адрес таблицы страниц данного процесса. Далее при каждом обращении к памяти происходит чтение из таблицы страниц информации о виртуальной странице к которой произошло обращение. Если данная виртуальная страница находится в оперативной памяти, то выполняется преобразование виртуального адреса в физически, если же нужная виртуальная страница в данный момент недоступна то происходит так называемая страничное прерывание. Выполняющийся процесс переводится в состояние ожидания и активизируется другой процесс из очереди готовых. Параллельно программа обработки страничного прерывания находит на диске требуемую виртуальную страницу и пытается загрузить ее в оперативную память. Если в памяти имеется свободная физическая страница, загрузка выполняется немедленно, если свободных страниц нет – принимается решение о том, какую страницу выгрузить из оперативной памяти. Может быть использовано много разных критериев, наиболее популярными являются следующие:

1. Дольше всего не использовавшаяся страница

2. Страница к которой в последнее время было меньше всего обращений

3. Первая попавшая страница.

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

1. На основании начального адреса торицы страниц (содержимое регистра адреса таблицы страниц)номер виртуальной страницы(стар) Длины записи в таблицы страниц

2. Определяется адрес нужной записи в таблицы. Из этой записи извлекается номер физической страницы

3. К номеру физической страницы присоединяется смещение (младшие разряды виртуального адреса)

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

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

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

Сегментное распределение

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

Странично-сегментное распределение

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

Иерархия запоминающих устройств. Принцип кеширования данных.

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

Файловая система

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

1. совокупность всех файлов на диске

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

3. Комплекс системных программных средств реализующих управление файлами в частности: создание, уничтожение, чтение, запись, именование, поиск и другие операции над файлами

Имена файлов

Файлы идентифицируются именами. Пользователи дают файлам символьные имена. При этом учитываются ограничения Операционной системы как на используемые символы, так и на длину имени. До относительно недавнего времени эти границы были весьма узкими. Обычно разные файлы могут иметь одинаковые символьные имена, в этом случае файл однозначно идентифицируется составным именем представляющим из себя символьным имен каталога.

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

Виды файлов

Файлы бывают разных видов. Обычные файлы, специальные файлы, файлы-каталоги. Обычные файлы в свою очередь разделяются на текстовые и двоичные. Текстовые файлы состоят из строк символов – это могут быть документы или какие-нибудь исходные тексты программ, конфигурационные файлы и так далее. Двоичные файлы часто имеют сложную внутреннюю структуру. Например объектный код программа или архивный файл. Специальные файлы – файлы ассоциированные с устройствами ввода/вывода, которые позволяют выполнять операции ввода-вывода используя обычные команды записи в файл или чтения из файла. Эти команда обрабатываются сначала программами файловой системы, а затем преобразуются в команды управления соответствующим устройствам.

Каталог – это группа файлов объединенных пользователем, либо системой, с другой стороны это файл содержащий системную информацию о группе файлов его составляющих. В каталоге содержится список файлов входящих в него и устанавливается соответствие между файлами и их характеристиками (Атрибутами).

В разных файловых системах могут использоваться в качестве атрибутов разные характеристики, например:

1. Информация о разрешенном доступе

3. Владелец файла

4. Создатель файла

5. Признак “только для чтения”

6. Признак “скрытый”

7. Признак “системный файл”

8. Признак “временный файл”

9. Признак блокировки

10. Времена создания, последнего доступа, последнего изменения

11. Текущий размер файла

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

Логическая организация файлов

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

Физическая организация и адрес файлов

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

1. во время создания файла не известна его длина неизвестно сколько памяти нужно резервировать

2. при таком порядке размещения неизбежно возникает фрагментация.

Следующий способ физической организации – размещение в виде связанного диска блоков дисковой памяти. При таком способе в начале каждого блока содержится указатель на следующий блок. В этом случае адрес файла может быть задан одним числом – номером первого блока и каждый блок может быть присоединен в цепочку какого-либо файла, а файл может изменяться во время своего существования наращивая количество блоков. Недостатком является сложность реализации доступа к произвольно заданному месту файла. Например, что бы прочитать 10-ый по порядку блок необходимо последовательно просмотреть первые 9 блоков, прослеживая цепочку номеров блоков. Кроме того при этом способе количество данных файла содержащихся в одном блоке не равно степени двойки, а многие программы читают данные блоками, размер которых равен степени двойки. Следующим способом является использование связанного списка индексов. С каждым блоком связывается некоторый элемент – индекс. Индексы располагаются в отдельной области диска. Если некоторый блок распределен файлу, то индекс этого блока содержит номер следующего блока данного файла. При такой физической организации сохраняются достоинства предыдущего способа, и снимаются недостатки: для доступа к произвольному месту файлов достаточно прочитать только блок индексов, отсчитать нужное количество файлов по цепочке и определить номер нужного блока. Во-вторых данные файлы занимают блок целиком, а значит имею объем равный степени двойки.

Задание физического расположения файла простым перечислением номеров блоков занимаемым этим файлом. Операционная система UNIX использует вариант данного способа, позволяющий обеспечить фиксированную длину адреса независимо от размера файла. Для хранения адреса файла выделено 13 полей. Если размер файла меньше или равен 10 блокам, то номера этих блоков непосредственно перечислены в первых 10 полях адреса. Если размер файла больше 10 блоков, то следующее 11 поле содержит адрес блока в котором могут быть расположены еще 128 номеров следующих блоков файла. Если файл больше 10 + 128 блоков, то используется 12 поле в котором находится номер блока содержащего 128 номеров блоков которые содержат еще 128 номеров блоков данного файла. Если файл больше даже этого размера, то используется последнее 13 поле для тройной косвенной адресации.

Права доступа к файлу

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

1. Создание файла

2. Уничтожение файла

3. Открытие файла

4. Закрытие файла

5. Чтение файла

6. Запись в файл

7. Дополнение файла

8. Поиск в файле

9. Получение атрибутов файла

10. Установление новых значений атрибутов

11. Переименование файлов

12. Выполнение файла

13. Чтение каталога

14. И другие операции с файлами и каталогами

В самом общем случае права доступа могут быть получены матрицей прав доступа, в которой столбцы соответствуют файлам, строки – пользователям. На пересечении строк и столбцов указываются разрешенные операции. В некоторых системах пользователи могут быть разделены на отдельные категории. Для всех пользователей одной категории определяются единые права доступа. Например в системе UNIX все пользователи разделяются на три категории: владельца файла, членов его группы и всех остальных.

Раздевают два основных подхода к определению прав доступа:

1. Избирательный подход – каждый файл и каждый пользователь сам владелец может определить допустимые операции

2. Мандатный подход – система наделяет пользователями определёнными правами по отношению к каждому разделяемому ресурсу. В данном случае к файлу, в зависимости от того к какой группе пользователь отнесен.

Кеширование диска

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

Общая модель файловой системы

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

Уровни снизу вверх

1. Физический уровень – обращается только к подсистеме ввода/вывода. Его задача определение номера физического блока содержащего логическую запись

2. Логический уровень – Обращается к физическому, его функция – определение координат логической записи в файле

3. Уровень проверки прав доступа – его задача проверка допустимости заданной операции к заданному файлу

4. Базовый уровень – определение по уникальному имени характеристик файла

5. Символьный уровень – определение по символьному имени файла его уникального имени

Отображаемая в память файлы

По сравнению с доступом к памяти традиционный доступ к файлам выглядит неудобным. По этим причинам некоторые операционные системы обеспечивают отображение файлов в адресное пространство выполняемого процесса. Это выражается в появлении специальных системных вызовов – map (отобразить) и unmap (отменить отображение), в то же время отпадает необходимость многочисленных специальных вызовов подсистемы ввода/вывода.

Современная архитектура файловых систем

Разработчики новых операционных систем стремятся обеспечить пользователя возможностью работать сразу с несколькими файловыми системами. В новом понимании файловая система состоит из многих составляющих в число которых входит и файловая система в традиционном понимании. Новая файловая система имеет многоуровневую структуру, на верхнем уровне которой распологается так называемый переключатель файловых систем. В Windows он называется устанавливаемый диспетчер файловой системы или IFS, он обеспечивает интерфейс между запросами приложения и конретной файловой системой. Переключатель файловых систем преобразует запросы в формат воспринимаемый следующим уровнем – уровнем файловых систем.Каждый компонент уровня файловых систем. Каждый компонет файловых систем выполнен в виде драйвера соответсвующей файловой системы и поддерживает определенную организацию файловой системы. Переключатель является единственным модулем, который может обращаться к драйверу файловой системы. Для выполнения своих функций драйверы файловых систем обращаются к подсистеме ввода/вывода образующей следующий слой файловой системы новой артитектуры. Подсистема ввода/вывода это составная часть файловой системы которая отвечает за загрузку, инициализацию и управление всеми модулями низших уровней файловой системы.

Большое число уровней архитектуры файловой системы обеспечивает гибкость и независимость уровней между собой. Он реализуется посредствам цепочек системных вызовов, что позволяет скрывать от пользователей и разработчиков сложности организации файловой системы.

Под памятью здесь подразумевается оперативная память.

Основные функции ОС по управлению памятью:

1. отслеживание свободной и занятой памяти

2. выделение памяти процессам и освобождение памяти пи их завершении

3. вытеснение кодов и данных процесса из ОП на жесткий диск, когда размера ОП не достаточно для размещения всех процессов, и возвращение этих процессов в ОП при освобождении места

4. настройка адресов программ на конкретную область физической памяти

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

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

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

ЭТАПЫ РАЗВИТИЯ КОМПЬЮТЕРОВ И ОС, ОХАРАКТЕРИЗОВАТЬ КАЖДЫЙ ЭТАП

Т.к. ОС появилась и развивалась в процессе конструирования компа, то эти события исторически связаны друг с другом. Выделяют четыре основных этапа:

1. Первое поколение (1945-55гг)

В качестве реле использовались электронные лампы. Управление основными функциями выполнялось при помощи соединения коммутационных панелей проводами. О наличии ОС не было и речи.

С выпуском перфокарт стало возможно записывать и считывать программы.

2. Второе поколение (1955-65гг)

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



Программирование на языках Фортран и Ассембрер

3. Третье поколение (1965-80гг)

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

4. Четвертое поколение (1980-наши дни)

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

РАЗДЕЛ I АРХИТЕКТУРА ЭВМ

1 Общая структурная схема ЭВМ. Типы и классы ЭВМ. Устройство персональных ЭВМ.

2 Понятие о многомашинных и многопроцессорных вычислительных системах.

3 Виды накопителей информации. Виртуальная память. Резервное копирование.

4 Системное программное обеспечение.

5 Типы операционных систем. Операционные системы для персональных компьютеров.

6 Типы дисковых накопителей. Физические и логические ошибки.

7 Виды и назначение прикладного программного обеспечения (текстовые редакторы, графические процессоры, утилиты, системы программирования).

8 Периферийные устройства для персональных компьютеров.

9 Сети передачи данных. Глобальные и локальные. Оборудование, необходимое для создания локальной сети (кабели, коннекторы, коммутирующие устройства, маршрутизаторы).

10 Программные сетевые протоколы. Модель OSI (hardware level, transport level, user level). Подробности о протоколах транспортного уровня на примере NetBEUI, IPX/SPX и TCP/IP.

11 Основные услуги сети Интернет. Web-страницы (HTTP), передача файлов (FTP), электронная почта (SMTP, POP3), удаленное управление ресурсами (Telnet, SSH). Система доменных имен (DNS).

12 Информационная безопасность. Системы парольной и биометрической аутентификации. Несанкционированный доступ к данным.

13 Сетевые атаки на отказ в обслуживании (DOS, DDOS),

14 Атаки на «срыв стэка».

15 Компьютерные вирусы, программы типа “троянский конь”

ОПЕРАЦИОННЫЕ СИСТЕМЫ

16 ОС реального времени, описание и назначение.

17 Основные функции ОС, дать описание.

18 Определение планирования. Основные задачи

19 Описание алгоритма, основанного на приоритетах. Привести граф

20 Понятие процесса и потока. Виртуальное адресное пространство

21 Описание алгоритма, основанного на квантовании. Привести граф

22 Определение диспетчеризации. Основные задачи

23 Вытесняющие и невытесняющие алгоритмы планирования. Перечислить достоинства и недостатки

24 Определение свопинга и виртуальной памяти. Достоинства и недостатки

25 Понятия конфиденциальности, целостности и доступности данных

26 Основы симметричного алгоритма шифрования. Пример

27 Основы не симметричного шифрования. Пример

28 Основные подходы к созданию резервной копии реестра

29 Функции ОС по управлению памятью

30 Этапы развития компьютеров и ОС, охаракт-ать каждый этап

Поддержите проект — поделитесь ссылкой, спасибо!
Читайте также
Как починить смартфон и планшет своими руками: основные тонкости ремонта Как починить смартфон и планшет своими руками: основные тонкости ремонта 5 отличий коллекция животные черепаха 5 отличий коллекция животные черепаха Выбираем кинескопный телевизор Выбираем кинескопный телевизор