Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Линейное упорядочение ресурсов. Пусть все ресурсы полностью упорядочены от 1 до r



Пусть все ресурсы полностью упорядочены от 1 до r. Мы можем наложить следующее ограничение: процесс не может запрашивать ресурс Rk, если он удерживает ресурс Rh и при этом k < h.

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

Приведем пример того, как применяется это правило. Пусть есть процесс, который использует ресурсы, упорядоченные как A, B, C, D, E, следующим способом:

 

 

Тогда процесс может делать следующее:

 

захватить (A); захватить (B); захватить (C);

использовать C;

использовать A, C;

использовать A, B, C;

освободить (A); освободить (B); захватить (E);

использовать C и E;

освободить (C); освободить (E); захватить (D);

использовать D;

освободить (D);

Стратегия этого типа может использоваться, когда мы имеем несколько ресурсов. Эту стратегию просто применять, при этом степень параллелизма уменьшается не слишком сильно.

 

Иерархическое упорядочение ресурсов

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

 

Тогда если процесс хочет использовать ресурсы e, f, i, k он должен использовать команды в следующей последовательности:

 

блокировка (a);

блокировка (b);

блокировка (h);

освобождение (a);

блокировка (d);

освобождение (b);

блокировка (i);

блокировка (j);

освобождение (h);

блокировка (k);

освобождение (j);

блокировка (e);

блокировка (f);

освобождение (d);

Алгоритм банкира

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

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

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

Алгоритм симулирует предоставление запрошенного ресурса и затем просматривает возникающее в результате выполнения запроса состояние системы.

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

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

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

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

Защита информации

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

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

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

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

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

Наиболее важные требования к подсистеме безопасности таковы:

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

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

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

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

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

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

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


Литература

 

1. “Вычислительные комплексы, системы и сети”
А. М. Ларионов, С. А. Майоров, Г. И. Новиков
Ленинград, ЭНЕРГОАТОМИЗДАТ, 1987
(к разделу “Структурная схема МПВК”)

2. “The design of the UNIX operating system”
Maurice J. Bach
Prentice-Hall, 1986, ISBN 0-13-201757-1  025
(к разделу “Семафоры”)

3. “Сетевые операционные системы”
Н. А. Олифер, В. Г. Олифер,
Информационно-аналитические материалы Центра Информационных Технологий
(к разделу “Тупики”)

4. Курс лекций “Introduction to Distributed Systems and Networks” (CIS 307)
Giorgio Ingargiola, Associate Professor of Computer and Information Science Department.
Университет г. Темпль (шт. Филадельфия, США)
(к разделу “Предотвращение тупиков”)

5. “Операционная система UNIX”
С. Д. Кузнецов
Информационно-аналитические материалы Центра Информационных Технологий
(к разделу “Нити”)

6. “Сетевые ОС для SMP-платформ”
Е. Ленгрен
“Открытые Системы” № 2(10)/95 стр. 16
(к разделу “Симметричная многопроцессорная обработка”)

7. “Спецификация многопроцессорных систем компании Intel”
А.А. Мячев
“Открытые Системы” № 3(11)/95 стр. 56
(к разделу “Симметричная многопроцессорная обработка”)

8. “Ресурсы Windows NT Server и Workstation версия 3.5”
Microsoft Press, 1995
(к разделу “Защита информации”)


Поделиться:



Последнее изменение этой страницы: 2020-02-17; Просмотров: 52; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.025 с.)
Главная | Случайная страница | Обратная связь