Основные функции операционных систем, сред и оболочек 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Основные функции операционных систем, сред и оболочек



Классификация ОС

Для построения классификации ОС прежде всего необходимо выбрать основа-

ние классификации. Таких оснований множество, но наиболее существенными мож-

но считать следующие:

· область использования ОС;

· типы аппаратной платформы;

· методы проектирования;

· реализация внутренних алгоритмов управления ресурсами.

Классификация по области использования:

- настольные ОС (Desktop Operating System) – ОС, ориентированные на

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

программ, работа с документами и т.п.); основными чертами настольных ОС яв-

ляются универсальность и ориентированность на пользователя; представите-

ли – MacOS, Windows;

- серверные ОС, использующиеся в серверах сетей как центральное звено, а так-

же в качестве элементов систем управления; основной чертой серверных ОС явля-

ется надежность; представители – семейство UNIX, Windows NT;

- специализированные ОС, ориентированные на решение узких классов задач с

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

реальном времени); системы такого рода практически неразрывно связаны с аппарат-

ной платформой; представители – QNX, редуцированные и специализированные версии

UNIX, системы собственной разработки;

- мобильные ОС – вариант развития настольных ОС на аппаратной платформе

КПК; основные черты – удобство использования и компактность; представители –

PalmOS, Windows CE.

Безусловно, данная классификация не является абсолютно жесткой, т.е. одна и та

же система может исполнять различные функции. Примером тому служит использо-

вание Linux с графической оболочкой в качестве настольной ОС или Windows NT в

качестве серверной. Однако каждая ОС «сильна» только в своем классе.

Несложно заметить, что каждый класс ОС из приведенной классификации ра-

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

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

попытаться провести более строгую классификацию такого рода, выделив, в ча-

стности, в отдельные классы:

- ОС для платформы х86, однопроцессорные варианты;

- ОС для платформы х86, многопроцессорные варианты;

- ОС для RISC платформ;

- ОС для мобильных устройств;

- встраиваемые ОС (ОС таких устройств, как принтеры, ЦФК и т.п.).

По внутренним алгоритмам управления ресурсами можно создать несколько би-

нарных классификаций:

- многозадачные /однозадачные ОС

- многопользовательские /однопользовательские ОС и т.п.

Последняя классификация будет уточняться по мере рассмотрения механизмов

управления ресурсами.

Требования к современным ОС

Суть требований к функциональности ОС состоит в управлении ресурсами и обес-

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

Помимо этого, к операционным системам предъявляется целый ряд важных эксп-

луатационных требований.

· Расширяемость – возможность внесения изменений без нарушения целостности

системы. Расширяемость достигается за счет модульной структуры ОС: программы

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

нальный интерфейс.

· Переносимость. В идеале код ОС должен легко переноситься с процессора одного

типа на процессор другого типа и с аппаратной платформы одного типа на аппаратную

платформу другого типа. Поскольку переносимые ОС имеют несколько вариантов реали-

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

· Совместимость. Если ОС имеет средства для выполнения прикладных программ,

написанных для других операционных систем, то она обладает совместимостью с эти-

ми ОС. Различают: совместимость на уровне двоичных кодов (исполняемых программ);

на уровне исходных текстов; поддержку пользовательских интерфейсов других ОС.

· Надежность и отказоустойчивость. Система должна быть защищена от внут-

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

а приложения не должны иметь возможности наносить вред ОС.

Эти свойства обеспечиваются архитектурными решениями, положенными в осно-

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

аппаратных средств обеспечения отказоустойчивости (например, источников беспе-

ребойного питания).

· Безопасность. Заключается в защите данных и других ресурсов от несанк-

ционированного доступа. Обеспечивается средствами аутентификации (опреде-

ления легальности пользователя), авторизации (предоставления дифференци-

рованных прав доступа к ресурсам), аудита (фиксации «подозрительных» с точ-

ки зрения безопасности событий).

· Производительность – настолько хорошее быстродействие и время реакции, на-

сколько это позволяет аппаратная платформа. Определяется архитектурой ОС, много-

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

ной аппаратной платформы.

 

Понятие процессов и потоков

Управление процессами состоит в их создании и уничтожении; приостановлении и

возобновлении; изменении приоритета; переключении состояний.

При управлении процессами ОС использует два основных типа информационных

структур: дескриптор процесса и контекст процесса.

Дескриптор процесса (это термин, используемый в Unix, но ставший обще-

употребительным. Аналогичная структура в Windows называется объект-процессом)

содержит информацию о процессе, которая необходима ядру ОС в течение всего жиз-

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

Дескриптор содержит:

- идентификатор процесса;

- информацию о состоянии процесса;

- данные о степени привилегированности процесса;

- местоположение кодового сегмента;

- данные о родственных процессах;

- данные о событиях, которые ожидает процесс и др.

Дескрипторы отдельных процессов объединены в таблицу (очередь) процессов,

на основе которой ОС осуществляет планирование и синхронизацию процессов. Па-

мять для таблицы отводится динамически в области ядра ОС.

Контекст процесса содержит информацию, необходимую для возобновления вы-

полнения процесса после прерывания и поэтому сохраняемую перед прерыванием. Это:

- состояние аппаратуры компьютера:

- значение счетчика команд; содержимое регистров общего назначения;

- режим работы процессора;

- флаги;

- маски прерываний и др.;

- параметры операционной системы:

- указатели на открытые файлы;

- информация о незавершенных операциях ввода-вывода;

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

Контекст, как и дескриптор, доступен только программам ядра, но хранится не в

области ядра, а непосредственно примыкает к образу (совокупности кода и данных)

процесса и может быть перемещен вместе с ним (из ОП на диск и наоборот).

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

Создать процесс – это означает:

- создать информационные структуры, описывающие процесс, т.е. его дескриптор и

контекст;

- включить дескриптор нового процесса в очередь готовых процессов;

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

В многопоточных системах (с возможностью распараллеливания процессов) для

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

ОС генерирует описатель (дескриптор) потока.

Момент выборки процесса на выполнение осуществляется в соответствии с при-

нятой в ОС дисциплиной обслуживания.

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

иерархическая структура процессов. Отношения между потомками и родителями стро-

ятся по-разному в различных ОС.

В мультипрограммной системе процесс может находиться в одном из трех основ-

ных состояний:

· выполнение – активное состояние, во время которого процесс обладает всеми

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

· ожидание – пассивное состояние; процесс заблокирован, он не может выполняться

по своим внутренним причинам, ждет осуществления некоторого события, например,

завершения операции ввода-вывода, получения сообщения от другого процесса, ос-

вобождения какого-либо необходимого ему ресурса;

· готовность – также пассивное состояние; но в этом случае процесс заблокиро-

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

требуемые для него ресурсы, он готов выполняться, однако процессор занят выпол-

нением другого процесса.

В течение своей жизни каждый процесс переходит из одного состояния в другое

в соответствии с алгоритмом планирования процессов, принятым в данной опера-

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

тов к выполнению и ждет своей очереди. При активизации процесс переходит в со-

стояние выполнение и находится в нем до тех пор, пока либо он сам не освободит

Выполнение

Готовность Ожидание

Только что созданный процесс

Процесс выбран на

выполнение

Процесс завершен

или произошла ошибка

Процесс ожидает ввода-вывода

(или другого события)

Ввод-вывод завершен

(событие произошло)

Процесс

вытеснен

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

вытеснен из процессора (например, вследствие истечения отведенного данному про-

цессу кванта процессорного времени). В последнем случае процесс возвращается в

состояние готовность. В это же состояние процесс переходит из состояния ожида-

ния после того, как ожидаемое событие произойдет.

В состоянии выполнение в однопроцессорной системе может находиться только

один процесс, а в каждом из состояний ожидание и готовность – несколько процес-

сов. Эти процессы образуют очереди ожидающих и готовых процессов соответственно.

Очереди процессов представляют собой дескрипторы отдельных процессов, объе-

диненные в списки. Таким образом, каждый элемент списка содержит по крайней мере

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

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

переводить их из одного состояния в другое (удалять из одной и ставить в другую

очередь)

 

6) Алгоритмы планирования процессов и потоков

Планирование процессов включает в себя решение следующих задач:

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

· выбор процесса на выполнение из очереди готовых процессов.

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

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

жен гарантировать, что ни один процесс не будет занимать процессор дольше

определенного времени; другой обеспечивает максимально быстрое выполнение

«коротких» задач; третий обеспечивает преимущественное право на процессор-

ное время интерактивным приложениям. Именно особенности планирования про-

цессов в наибольшей степени определяют специфику ОС.

В большинстве ОС универсального назначения планирование осуществляется ди-

намически (on-line), то есть решения принимаются во время работы системы на ос-

нове анализа текущей ситуации. ОС не имеет никакой предварительной информа-

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

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

набор одновременно выполняемых задач определен заранее (например, в системах ре-

ального времени). Здесь решение о планировании принимается заранее (off-line).

Диспетчеризация заключается в реализации найденного в результате планиро-

вания решения, т.е. в переключении процессора с одного потока на другой, и сводит-

ся к следующему:

· сохранение контекста текущего процесса;

· загрузка контекста нового процесса;

· запуск нового процесса.

В отличие от планирования, осуществляемого программными средствами ОС, дис-

петчеризация реализуется совместно с аппаратными средствами процессора.

Примечание. В различных ОС компоненты, занимающиеся планированием, могут

называться по-разному: scheduler – распорядитель, или планировщик, – в Unix;

dispatcher – в Windows.

Вытесняющие и невытесняющие алгоритмы планирования

С самых общих позиций – по принципу освобождения процессора активным процессом

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

невытесняющие.

Невытесняющая многозадачность (non-preemptive multitasking) – способ планирова-

ния процессов, при котором активный процесс выполняется до тех пор, пока он сам, по

собственной инициативе, не отдаст управление планировщику операционной системы

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

При невытесняющем программировании механизм планирования распределен между

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

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

рого фиксированного набора задач (примером эффективного использования невытесня-

ющего планирования являются файл-серверы NetWare 3.x и 4.x, в которых благодаря

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

Вытесняющая многозадачность (preemptive multitasking) – способ, при котором ре-

шение о переключении процессора с выполнения одного процесса на выполнение дру-

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

При вытесняющем мультипрограммировании функции планирования процессов

целиком сосредоточены в операционной системе.

Почти во всех современных операционных системах, ориентированных на высоко-

производительное выполнение приложений (Unix, Windows NT/2000, OS/2, VAX/VMS),

реализованы вытесняющие алгоритмы планирования процессов, в которых механизм

планирования задач целиком сосредоточен в операционной системе. Программист пи-

шет свое приложение, не заботясь о том, что оно будет выполняться параллельно с

другими задачами. Операционная система определяет момент снятия с выполнения ак-

тивной задачи, запоминает ее контекст, выбирает из очереди готовых задач следую-

щую и запускает ее на выполнение, загружая ее контекст.

Алгоритмы, основанные на квантовании (классификация по принципу смены

активного процесса во времени)31

В соответствии с алгоритмами, основанными на квантовании, смена активного процесса

происходит, если исчерпан квант процессорного времени, отведенный данному процессу

(или процесс перешел в состояние ожидания, или произошла ошибка, или процесс завер-

шился и покинул систему).

Процесс, который исчерпал свой квант, переводится в состояние готовности и ожи-

дает, когда ему будет предоставлен новый квант процессорного времени, а на вы-

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

очереди готовых. Это – концепция разделения времени. Ниже изображен граф со-

стояний процесса, соответствующий описанному алгоритму.

Алгоритмы, основанные на приоритетах (классификация по принципу выбо-

ра процесса на выполнение из очереди)

· Приоритет – это число, характеризующее степень привилегированности про-

цесса при использовании ресурсов вычислительной машины, в частности, процессор-

ного времени. Чем выше приоритет процесса, тем значительнее его привилегии и

тем меньше времени он будет проводить в очередях.

Приоритет может выражаться целым или дробным, положительным или отрица-

тельным значением. В некоторых ОС принято, что большее число обозначает боль-

ший приоритет, в других – наоборот (большее число означает меньший приоритет).

Приоритет может назначаться директивно администратором системы, например, в за-

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

В зависимости от возможности изменения приоритета в течение жизни потока раз-

личаются динамические и фиксированные приоритеты. В системах с динамическими

приоритетами изменения приоритета могут происходить по инициативе процесса, об-

ращающегося с вызовом к операционной системе; по инициативе пользователя, вы-

полняющего соответствующую команду; по инициативе ОС в зависимости от ситуа-

ции, складывающейся в системе.

· Существует две разновидности алгоритмов приоритетного планирования: обслужи-

вание с относительными приоритетами и обслуживание с абсолютными приоритетами.

В обоих случаях выбор процесса на выполнение из очереди осуществляется оди-

наково: выбирается процесс, имеющий наивысший приоритет. По-разному решается

проблема определения момента смены активного процесса.

Смешанные алгоритмы планирования (квантование с приоритетами)

Во многих операционных системах алгоритмы планирования построены с исполь-

зованием как квантования, так и приоритетов. Например, в основе планирования ле-

жит квантование, но величина кванта и/или порядок смены процессов и выбора про-

цесса из очереди готовых определяется приоритетами процессов.

Синхронизация процессов

Потребность в синхронизации процессов возникает только в мультипрограммных

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

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

асинхронный характер, т.е. процессы выполняются независимо в том плане, что прак-

тически невозможно с полной определенностью сказать, на каком этапе выполнения

будет находиться определенный процесс в определенный момент времени.

Суть синхронизации процессов состоит в согласовании их скоростей путем приос-

тановки процесса до наступления некоторого события и последующей его активиза-

ции при наступлении этого события.

Синхронизация лежит в основе любого взаимодействия процессов, которое мо-

жет быть связано:

- с обменом данными (процесс-получатель должен обращаться за данными только

после их записи процессом-отправителем);

- с разделением ресурсов (например, если активному процессу требуется доступ к

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

быть приостановлен до освобождения ресурса);

- с синхронизацией процесса с внешними событиями (например, с нажатием ком-

бинации клавиш).

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

туаций при взаимодействии процессов. Пренебрежение вопросами синхронизации мо-

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

ми таких ситуаций являются гонки и тупики.

Гонками называются ситуации, когда в отсутствие синхронизации два (или более)

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

отношения скоростей процессов.

Тупики – это взаимные блокировки процессов, могущие возникать вследствие не-

достаточно корректного решения задачи синхронизации и состоящие в том, что ряд

процессов удерживает ресурсы, запрашиваемые другими процессами, и в то же вре-

мя запрашивает ресурсы, удерживаемые другими.

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

рого предприятия (рис. 2.12). Сведения о каждом клиенте представляют собой запись,

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

изменяется в двух случаях: когда клиент делает заказ и когда он его оплачивает.

Пусть приложение оформлено как единый процесс, имеющий два потока, А и В. Пусть

поток А заносит в базу данные о заказах, а поток В – данные об оплате. Оба потока совме-

стно работают над общим файлом базы данных по следующему общему алгоритму.

1. Считать из файла базы данных в буфер запись о клиенте.

2. Изменить запись (поток А заносит данные о заказе, поток В – об оплате).

3. Вернуть измененную запись в файл.

Предположим, что клиент, которому в базе уже соответствует запись, сделал за-

каз и сразу оплатил его, т.е. данные о заказе и об оплате должны поступить в базу

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

Пусть в некоторый момент поток А обновляет данные о заказе в записи о клиен-

те, выполняет шаги А1 и А2, но выполнить шаг А3 (занести содержимое буфера в

запись базы) не успевает вследствие завершения кванта времени.

Потоку В требуется внести сведения об оплате заказа этого же клиента. Предпо-

ложим, что, когда подходит очередь потока В, он успевает сделать шаги В1 и В2, а

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

относятся к старому заказу, а данные об оплате – к новому.

Далее поток А получает управление, выполняет шаг А3 – запись в базу содержи-

мого своего буфера – и завершается. Вслед за ним то же проделывает поток В.

Смена содержимого буферов и базы приведена на рис. 2.12. В итоге данные о но-

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

Приведенный вариант не является неизбежным. В силу нерегулярности возника-

ющих ситуаций при взаимодействии процессов (в данном случае потоков) возможно

и другие варианты развития событий (см. рис. 2.13). Все определяется взаимными

скоростями потоков и моментами их прерывания.

Критическая секция

Важным понятием синхронизации процессов является понятие критической сек-

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

Средства синхронизации процессов и потоков

Для синхронизации процессов, порождаемых прикладными программами, програм-

мист может использовать как собственные средства и приемы, так и средства опера-

ционной системы, предоставляемые в форме системных вызовов. Последние являют-

ся во многих случаях более эффективными или единственно возможными.

 

8) Специальные системные вызовы для работы с критическими секциями позволяют устранить такие ситуации простоя. В разных операционных системах соот-

ветствующие функции реализуется по-разному, но действия их и использование ана-

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

кий опрос, а вызывает системную функцию, переводящую его (процесс) в состояние

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

из критической секции выполняет системную функцию, переводящую первый про-

цесс, ожидающий ресурса, в состояние готовности.

На рисунке 2.15 показана реализация взаимного исключения при синхронизации

потоков с помощью таких функций в ОС Windows NT.

Каждый из потоков, претендующих на доступ к разделяемому ресурсу D, должен содер-

жать два системных вызова – для входа в критическую секцию с занятием ресурса, осво-

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

Поток, претендующий на доступ к критическим данным, для входа в критическую сек-

цию выполняет системный вызов EnterCriticalSection. В рамках этого вызова выполняется

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

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

освобождении ресурса (поток ставится в очередь ожидающих освобождения ресурса). Если

ресурс свободен, он занимается (F(D):=0), делается отметка о его принадлежности дан-

ному потоку и поток продолжает работу.

Поток, который использует ресурс, после выхода из критической секции должен

выполнить системный вызов LeaveCriticalSection. В результате отмечается, что ре-

сурс свободен (F(D):=1), и первый поток из очереди ожидающих ресурс переводит-

ся в состояние готовности.

Специфика метода. Если объем работы в критической секции небольшой и веро-

ятность в скором доступе к ресурсу велика, то экономнее окажется метод блокирую-

щих переменных (за счет затрат на вызов функций).

Семафоры Дейкстры – обобщение метода блокирующих переменных.

Вводятся два новых примитива. В абстрактной форме эти примитивы, тради-

ционно обозначаемые P и V, оперируют над целыми неотрицательными перемен-

ными, называемыми семафорами. Пусть S – такой семафор. Операции определя-

ются следующим образом.

V(S): переменная S увеличивается на 1 одним неделимым действием; выборка,

инкремент и запоминание не могут быть прерваны, и к S нет доступа другим процес-

сам во время выполнения этой операции.

P(S): уменьшение S на 1, если это возможно. Если S=0, то невозможно уменьшить

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

вызывающий P-операцию, ждет, пока это уменьшение станет возможным. Успешная

проверка и уменьшение также является неделимой операцией.

В частном случае, когда семафор S может принимать только значения 0 и 1, он пре-

вращается в блокирующую переменную. Операция P заключает в себе потенциальную

возможность перехода процесса, который ее выполняет, в состояние ожидания, в то вре-

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

цесс, приостановленный операцией P.

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

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

рых пишет данные в буферный пул, а другой считывает их из буферного пула (рис.

2.16). Пусть буферный пул состоит из N буферов, каждый из которых может содер-

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

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

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

активизируется при появлении хотя бы одной записи.

Введем два семафора: e – число пустых и f – число заполненных буферов. До

начала работы e=N, f=0.

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

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

чения взаимного исключения (т.е. этот семафор в данном качестве будет служить

блокирующей переменной). Оба процесса после проверки доступности буферов дол-

жны выполнить проверку доступности критической секции.

 

Типы адресов

Для идентификации переменных и команд на разных этапах обработки програм-

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

туальные адреса и в итоге – в физические адреса (рис. 3.1).

Виртуальное адресное пространство

Виртуальные адреса для различных программ назначаются транслятором независи-

мо. Диапазон виртуальных адресов определяется программно-аппаратным обеспечени-

ем компьютера, в частности, разрядностью его схем адресации. Совокупность всех воз-

можных адресов из этого диапазона называется виртуальным адресным пространством.

Так, 32-разрядный процессор семейства x86 дает возможность адресовать до 2

32байтов, т.е. до 4 Гбайт памяти с диапазоном виртуальных адресов от 00000000h до FFFFFFFFh.

Реальные процессы используют только часть доступного виртуального простран-

ства (на 1-2 порядка меньше максимума).

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

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

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

должны разделяться соответствующими процессами).

Образ процесса – термин, обозначающий содержимое назначенного процессу вир-

туального адресного пространства, т.е. коды команд и данные (исходные, промежуточ-

ные и результаты).

Кэширование данных

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

устройств (ЗУ) различных видов, может быть иерархизирована по следующим основ-

ным признакам:

· время доступа к данным;

· объем;

· стоимость хранения данных в расчете на один бит.

Конкретные значения этих характеристик изменяются очень быстро, поэтому в

данном случае важны не столько их абсолютные значения, сколько соотношение для

разных типов запоминающих устройств. Иерархия ЗУ приведена на рис. 3.9.

Закономерность такова: чем больше быстродействие, тем больше стоимость хра-

нения данных в расчете на один бит и меньше объем устройства. Кэш-память пред-

ставляет некоторое компромиссное решение этой проблемы.

· Кэш-память (cache) – это способ организации совместного функционирования

двух типов запоминающих устройств, отличающихся временем доступа и стоимос-

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

ным за счет динамического копирования в “быстрое” ЗУ наиболее часто используе-

мой информации из “медленного” ЗУ.

Механизм кэш-памяти прозрачен для пользователя: все перемещения данных де-

лаются автоматически системными средствами.

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

запоминающих устройств, но и одно из устройств – “быстрое” ЗУ. Оно стоит дороже

и, как правило, имеет сравнительно небольшой объем. Медленное ЗУ из этой пары

назовем основной памятью, быстрое представлено кэш-памятью.

· Кэширование – универсальный метод, пригодный для ускорения доступа к опе-

ративной памяти, к диску и другим видам ЗУ. Так, в качестве составляющих пары

«основная память – кэш-память» могут выступать: оперативная память – быстро-

действующая статическая память; система ввода-вывода – буферы в оперативной

памяти (или специальная кэш-память).

Функционирование кэш-памяти

Рассмотрим одну из возможных схем кэширования.

Содержимое кэш-памяти представляет собой совокупность записей обо всех заг-

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

те данных включает в себя:

- значение элемента данных;

- адрес, который этот элемент данных имеет в основной памяти;

- управляющую информацию для реализации алгоритма замещения, обычно – признак

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

При каждом обращении к основной памяти по физическому адресу просматрива-

ется содержимое кэш-памяти с целью определения, не находятся ли там нужные дан-

ные. Поиск нужных данных осуществляется по содержимому – взятому из запроса

значению поля адреса в оперативной памяти. Далее возможно одно из двух:

· произошло кэш-попадание – данные обнаружены в кэш-памяти; они считываются

из кэш-памяти и результат передается источнику запроса;

· произошел кэш-промах (cache-miss) – нужных данных нет; они считываются из ос-

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

Покажем, что среднее время доступа к данным зависит от вероятности попада-

ния в кэш.

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

к данным t1 и кэш-память, имеющая время доступа t2 (t2<t1). Обозначим через t сред-

нее время доступа к данным в системе с кэш-памятью, а через p -вероятность попа-

дания в кэш. По формуле полной вероятности имеем:

t = t1((1 – p) + t2p.

Видно, что среднее время доступа изменяется от среднего времени доступа в основ-

ное ЗУ (при р=0) до среднего времени доступа непосредственно в кэш-память (при р=1).

Таким образом, использование кэш-памяти имеет смысл только при высокой веро-

ятности кэш-попадания. Эта вероятность, в свою очередь, зависит от многих раз-

личных факторов. Тем не менее в реальных системах вероятность попадания в кэш

очень высока и составляет более 0.9. Такое высокое значение вероятности нахож-

дения данных в кэш-памяти связано с наличием у данных объективных свойств: про-

странственной и временной локальности.

Пространственная локальность. Если произошло обращение по некоторому ад-

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

соседним адресам.

Временная локальность. Если произошло обращение по некоторому адресу, то сле-

дующее обращение по этому же адресу с большой вероятностью произойдет в бли-

жайшее время.

На практике в кэш-память считывается не один элемент данных, к которому про-

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

кэш при последующих обращениях.

Проблемы кэширования

· Вытеснение данных их кэша в основную память

В процессе работы содержимое кэш-памяти постоянно обновляется, а значит, пе-

риодически данные должны из нее вытесняться. Вытеснение предполагает объявле-

ние соответствующей области кэша свободной (сброс бита действительности) и, если

вытесняемые данные за время нахождения в кэше были изменены, копирование дан-

ных в основную память.

Методы выбора данных для вытеснения зависят от способа отображения основной

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

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

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

Из-за непредсказуемости вычислительного процесса ни один алгоритм замещения

данных не может быть максимально быстрым и одновременно гарантировать макси-

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

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

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

КЭШе (если она там есть) становится недостоверной. Для решения этой проблемы типич-

ны два подхода.

Сквозная запись (write through). Если данные по запрашиваемому адресу отсут-

ствуют в кэше, то запись выполняется только в основную память, в противном слу-

чае – одновременно в кэш и основную память.

Обратная запись (write back). Если данные по запрашиваемому адресу отсут-

ствуют в кэше, то запись выполняется только в основную память, в противном слу-

чае – только в кэш-память. Во втором случае устанавливается признак модифика-

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

нении их из кэша.

Основные функции операционных систем, сред и оболочек

Операционная система (ОС) – система программ, реализующая интерфейс меж-

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

два вида взаимосвязанных функций и рассматривается в двух аспектах:

- управление распределением ресурсов вычислительной системы для обеспече-

ния ее эффективной работы; ОС является менеджером ресурсов;

- обеспечение пользователей набором средств для облегчения проектирования,

программирования, отладки и сопровождения программ; ОС является виртуальной

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



Поделиться:


Последнее изменение этой страницы: 2017-02-06; просмотров: 218; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 44.192.247.144 (0.299 с.)