Методы оценки производительности ОС

Рис. 2. Типы адресов

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

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

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

 

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

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

 
 

 

 


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

 

Первичная Вторичная

 

Емкость и время доступа увеличивается, стоимость уменьшается


Стоимость увеличивается, время доступа уменьшается


Рисунок 3 Многоуровневая организация памяти

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

 

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

Кэш-памятью часто называют не только способ организации работы двух типов запоминающих устройств, но и одно из устройств - "быстрое" ЗУ. Оно стоит дороже и имеет сравнительно небольшой объем. Механизм кэш-памяти является прозрачным для пользователя, который не должен сообщать никакой информации об интенсивности использования данных и не должен никак участвовать в перемещении данных из ЗУ одного типа в ЗУ другого типа, все это делается автоматически системными средствами.

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

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

оперативной памяти", взятому из запроса

 


Рис. 4. Кэш-память

 

2. Если данные обнаруживаются в кэш-памяти, то они считываются из нее, и результат передается в процессор.

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

 

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

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

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

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

 

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

 

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

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

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

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

· Стратегии замещения (выталкивания) ставят своей целью определение блока памяти, который следует освободить для размещения поступающих программ или данных. (1. По принципу оптимальности- заменяется тот блок который не будет использоваться. 2. Случайной страницы- применяется для исключения дискриминации процессов. 3. Первой пришедшей.4. Дольше всего тне использовавшейся. 5. Реже всего использовавшейся и т. д.)

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

 

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

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

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

 

 

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

       
 
  ОС   Резидентная Часть     Область Оверлея   Vs    
 
Резидентная Часть   Оверлей A Va   Оверлей B Vb   Оверлей C Vc    
 


Vs>=Va

Vs>=Vb

Vs>=Vc

 

Vs <=( Va+ Vb+ Vc)

         
 
 
   
 
 

 


Программа пользователя

Рисунок 4. Организация оверлеев

 

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

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

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

 

 

Рис. 3 Распределение памяти фиксированными разделами:
а - с общей очередью; б - с отдельными очередями

 

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

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

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

Поэтому , в основном, используют разделы переменной длины.

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

В этом случае память машины не делится заранее на разделы. Сначала вся память свободна. Каждой вновь поступающей задаче выделяется необходимая ей память. Если достаточный объем памяти отсутствует, то задача не принимается на выполнение и стоит в очереди. После завершения задачи память освобождается, и на это место может быть загружена другая задача. Таким образом, в произвольный момент времени оперативная память представляет собой случайную последовательность занятых и свободных участков (разделов) произвольного размера. На рисунке 4 показано состояние памяти в различные моменты времени при использовании динамического распределения. Так в момент t0 в памяти находится только ОС, а к моменту t1 память разделена между 5 задачами, причем задача П4, завершаясь, покидает память. На освободившееся после задачи П4 место загружается задача П6, поступившая в момент t3.

 

 
 

Рис. 4. Распределение памяти динамическими разделами

 

Задачами операционной системы при реализации данного метода управления памятью является:

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

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

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

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

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

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

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

 

 

Рис. 5. Распределение памяти перемещаемыми разделами

 

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

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

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

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

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

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

Пространство ВА Пространство РА

 
 


Рисунок

 

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

 
 

 


Av=(NblS)

 

 

Для отображения адреса ВП в адрес РП каждый процесс должен иметь собственную таблицу отображения (ТО), физический адрес At которой загружается в регистр начального адреса таблицы отображения блоков (РНАТОБ). ТО содержит по одной строке для каждого блока процесса, строки располагаются в последовательном порядке, начиная с 0. Номер блока Nb суммируется с базовым адресом таблицы At, образуя физический адрес строки таблицы для блока Nb. Эта строка содержит реальный адрес Ar блока в оперативной памяти. К этому адресу прибавляется смещение S, образуя физический адрес памяти соответствующий ВА Av.

 

РНАТОБ Av=(NblS)

 
 

 


TO РП

 

  Ячека с адр Ar+ S
    Ячейка с адр At+Nb Ar
At

+ +

Nb

 

 

 

 
 

 


Рисунок

 

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

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

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

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

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

 

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

 

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

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

Размер страницы обычно выбирается равным степени двойки: 512, 1024 и т.д., это позволяет упростить механизм преобразования адресов.

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

 

 

Рис. 6. Страничное распределение памяти

 

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

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

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

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

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

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

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

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

 

 

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

 

При каждом обращении к оперативной памяти аппаратными средствами выполняются следующие действия:

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

2. из этой записи извлекается номер физической страницы,

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

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

На производительность системы со страничной организацией памяти влияют временные затраты, связанные с обработкой страничных прерываний и преобразованием виртуального адреса в физический. При часто возникающих страничных прерываниях система может тратить большую часть времени впустую, на свопинг страниц. Чтобы уменьшить частоту страничных прерываний, можно увеличивать размер страницы. Кроме того, увеличение размера страницы уменьшает размер таблицы страниц, а значит уменьшает затраты памяти. С другой стороны, если страница велика, значит велика и фиктивная область в последней виртуальной странице каждой программы. Время преобразования виртуального адреса в физический в значительной степени определяется временем доступа к таблице страниц. В связи с этим таблицу страниц стремятся размещать в "быстрых" запоминающих устройствах. Это может быть, например, набор специальных регистров или память, использующая для уменьшения времени доступа ассоциативный поиск и кэширование данных. Механизм преобразования ВА, при такой организации, называется ассоциативным отображением. При этом все ТОАС размещаются в ассоциативной памяти, которая на порядок быстрее обычной. При обращении к ВА (P,S) все строки таблицы одновременно сравниваются с адресом страницы P, ассоциативная память за один такт выдает адрес страничного кадра K, который суммируется со смещением S, образуя адрес ячейки в РП.

 

Av=(P,S) РП

           
   
     
  Кадр K   Ячейка k+s
 
 
 

Ассоциативная память

           
 
   
     
 
 

 


+

           
 
 
     
 
   
 
 

 

 


Рисунок

 

 

При комбинированном отображении, ассоциативная память используется для хранения тех частей таблиц отображения, к которым процесс обращался в последнее время, остальные части хранятся в обычной памяти. Когда процесс обращается к ВА Va(P,S), то механизм преобразования сначала пытается найти страницу P в ассоциативной таблице.

 

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

 

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

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

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

 

 

r a L W E A R S
Бит признак Адр во внеш пам Длина сегмента Писать Исполнять Дополнятьт Читать Адр в опер пам

 

Виртуальный адрес Av при сегментной организации памяти может быть представлен парой (g, s), где g - номер сегмента, а s - смещение в сегменте.

Система с сегментной организацией функционирует аналогично системе со страничной организацией: перед формированием физического адреса Ar s сравнивается с L, если d>L, то вырабатывается прерывание по выходу за границу сегмента и управление передается ОС, если d<L, то осуществляется контроль за битами защиты, и если текущая операция запрещена вырабатывается прерывание ОС. Если в ОП отсутствует нужный сегмент (анализ бита признака r), то вырабатывается прерывание и ОС загружает его из внешней памяти используя адрес S, при необходимости некоторые сегменты выгружаются из ОП.

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

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

 

 

 

Рис. 8. Распределение памяти сегментами

 

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

 

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

 

 

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

сегментно-страничной организации памяти

 

Защита ОС

 

Проблема безопасности включает 2 аспекта: внешняя безопасность- безопасность интерфейса с пользователем, физическая безопасность, наличие устройств обнаружения дефектов и сбоев и т.п.; внутренняя безопасность- всевозможные тесты и проверки ПО.

Для обеспечения безопасности при разработке ПО необходимо соблюдать следующие принципы:

· идентификации- пользователь должен быть уверен, что работает с той аппаратурой и ПО, которое ему необходимо;

· реализации- механизм защиты должен быть правильно реализован;

· недоверия- взаимодействующие программы должны проверять передаваемые параметры;

· общей памяти- программы не должны оставлять критическую информацию в общих областях памяти;

· законности- программы должны строго контролировать права пользователей и процессов;

· паролирования- пароль должен быть надежным;

· ловушек- ПО должно обладать средствами выполняющими роль приманки;

· привилегий- права доступа должны быть тщательно определены.

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

 

 

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

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

· Несанкционированный доступ (НСД) к средствам вычислительной техники. Это активные действия по созданию возможности распоряжаться информацией без согласия собственника.

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

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

3. “Компьютерный абордаж” - злоумышленник вручную или с использованием автоматической программы подбирает код (пароль) доступа к системе с спользованием обычного телефонного аппарата.

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

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

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

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

 

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

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

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

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

· Непредусмотренные параметры- передача ПО параметров, которые вводят ее в клинчевую ситуацию.

Методы оценки производительности ОС

Оценка эффективности ОС подразумевает, насколько эффективно она использует ресурсы ВК. Результаты оценки используются для улучшения характеристик ОС. Можно выделить три цели оценки производительности:

· Оценка для выбора системы- производительность исследуется, для того чтобы принять решение о покупке;

· Планирование производительности- для оценки производительности еще не существующей системы;

· Контроль производительности- производится сбор и накопление статистических данных об имеющейся системе или ее компонентах.

Перед разработкой новой системы разработчик должен предсказать:

1. характер прикладных задач;

2. ожидаемую рабочую нагрузку, определяемую этими задачами.

Это ему позволит определить:

1. оптимальную организацию аппаратуры;

2. стратегии управления ресурсами;

3. правильно оценить производительность.

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

Для оценки производительности используют:

· измерение элементарных времен- для быстрого сравнения различной аппаратуры;

· смеси команд- оценивается взвешенное среднее время выполнения различных команд, используется для прикидочных сравнений;

· образцовая программа- типичная для данной системы программа;

· измерительная программа- реальная программа, которая выполняется с целью оценки производительности (тесты);

· синтетическая программ- совмещает черты образцовых и измерительных программ;

· аналитическая модель- математическое представление вычислительной системы (достоверность зависит от квалификации разработчика).