- •Челябинск
- •2002 Предисловие
- •От издательства
- •Часть 1 Операционные системы и среды
- •Глава 1 Основные понятия Понятие операционной среды
- •Понятия вычислительного процесса и ресурса
- •Диаграмма состояний процесса
- •Реализация понятия последовательного процесса в ос
- •Процессы и треды
- •Прерывания
- •Основные виды ресурсов
- •Классификация операционных систем
- •Контрольные вопросы и задачи Вопросы для проверки
- •Глава 2 Управление задачами и памятью в операционных системах
- •Планирование и диспетчеризация процессов и задач Стратегии планирования
- •Дисциплины диспетчеризации
- •Вытесняющие и не вытесняющие алгоритмы диспетчеризации
- •Качество диспетчеризации и гарантии обслуживания
- •Диспетчеризация задач с использованием динамических приоритетов
- •Память и отображения, виртуальное адресное пространство
- •Простое непрерывное распределение и распределение с перекрытием (оверлейные структуры)
- •Распределение статическими и динамическими разделами
- •Разделы с фиксированными границами
- •Разделы с подвижными границами
- •Сегментная, страничная и сегментно-страничная организация памяти
- •Сегментный способ организации виртуальной памяти
- •Страничный способ организации виртуальной памяти
- •Сегментно-страничный способ организации виртуальной памяти
- •Распределение оперативной памяти в современных ос для пк
- •Распределение оперативной памяти вMs-dos
- •Распределение оперативной памяти вMicrosoftWindows95/98
- •Распределение оперативной памяти вMicrosoftWindowsNt
- •Контрольные вопросы и задачи Вопросы для проверки
- •Глава 3 Особенности архитектуры микропроцессоровi80x86
- •Реальный и защищённый режимы работы процессора
- •Новые системные регистры микропроцессоров i80x86
- •Адресация в 32-разрядных микропроцессорахi80х86 при работе в защищённом режиме Поддержка сегментного способа организации виртуальной памяти
- •Поддержка страничного способа организации виртуальной памяти
- •Режим виртуальных машин для исполнения приложений реального режима
- •Защита адресного пространства задач
- •Уровни привилегий для защиты адресного пространства задач
- •Механизм шлюзов для передачи управления на сегменты кода с другими уровнями привилегий
- •Система прерываний 32-разрядных микропроцессоровi80x86
- •Работа системы прерываний в реальном режиме работы процессора
- •Работа системы прерываний в защищённом режиме работы процессора
- •Обработка прерываний в контексте текущей задачи
- •Обработка прерываний с переключением на новую задачу
- •Контрольные вопросы и задачи Вопросы для проверки
- •Глава 4 Управление вводом/выводом и файловые системы
- •Основные понятия и концепции организации ввода/вывода в ос
- •Режимы управления вводом/выводом
- •Закрепление устройств, общие устройства ввода/вывода
- •Основные системные таблицы ввода/вывода
- •Синхронный и асинхронный ввод/вывод
- •Кэширование операций ввода/вывода при работе с накопителями на магнитных дисках
- •Функции файловой системы ос и иерархия данных
- •Структура магнитного диска (разбиение дисков на разделы)
- •Файловая системаFat
- •Структура загрузочной записиDos
- •Файловые системыVfaTиFat32
- •Файловая система hpfs
- •Файловая система ntfs (New Technology File System)
- •Основные возможности файловой системы ntfs
- •Структура тома с файловой системой ntfs
- •Возможности файловой системыNtfSпо ограничению доступа к файлам и каталогам
- •Основные отличияFaTи ntfs
- •Контрольные вопросы и задачи Вопросы для проверки
- •Задания
- •Глава 5 Архитектура операционных систем и интерфейсы прикладного
- •Принцип функциональной избирательности
- •Принцип генерируемости ос
- •Принцип функциональной избыточности
- •Принцип виртуализации
- •Принцип независимости программ от внешних устройств
- •Принцип совместимости
- •Принцип открытой и наращиваемой ос
- •Принцип мобильности (переносимости)
- •Принцип обеспечения безопасности вычислений
- •Микроядерные операционные системы
- •Монолитные операционные системы
- •Требования, предъявляемые к ос реального времени
- •Мультипрограммность и многозадачность
- •Приоритеты задач (потоков)
- •Наследование приоритетов
- •Синхронизация процессов и задач
- •Предсказуемость
- •Принципы построения интерфейсов операционных систем
- •Интерфейс прикладного программирования
- •Реализация функцийApIна уровне ос
- •Реализация функцийApIна уровне системы программирования
- •Реализация функцийApIс помощью внешних библиотек
- •Платформенно-независимый интерфейс posix
- •Пример программирования в различныхApiос
- •Текст программы дляWindows(WinApi)
- •Текст программы дляLinux(posixapi)
- •Контрольные вопросы и задачи Вопросы для проверки
- •Глава 6 Проектирование параллельных взаимодействующих вычислительных процессов
- •Независимые и взаимодействующие вычислительные процессы
- •Средства синхронизации и связи при проектировании взаимодействующих вычислительных процессов
- •Использование блокировки памяти при синхронизации параллельных процессов
- •Возможные проблемы при организации взаимного исключения посредством использования только блокировки памяти
- •Алгоритм Деккера
- •Синхронизация процессов посредством операции «проверка и установка»
- •Семафорные примитивы Дейкстры
- •Мьютексы
- •Использование семафоров при проектировании взаимодействующих вычислительных процессов
- •Задача «поставщик – потребитель»
- •Пример простейшей синхронизации взаимодействующих процессов
- •Решение задачи «читатели – писатели»
- •Мониторы Хоара
- •Почтовые ящики
- •Конвейеры и очереди сообщений Конвейеры (программные каналы)
- •Очереди сообщений
- •Примеры создания параллельных взаимодействующих вычислительных процессов
- •Пример создания многозадачного приложения с помощью системы программированияBorlandDelphi
- •Пример создания комплекса параллельных взаимодействующих программ, выступающих как самостоятельные вычислительные процессы
- •Контрольные вопросы и задачи Вопросы для проверки
- •Глава 7 Проблема тупиков и методы борьбы с ними
- •Понятие тупиковой ситуации при выполнении параллельных вычислительных процессов
- •Примеры тупиковых ситуаций и причины их возникновения
- •Пример тупика на ресурсах типаCr
- •Пример тупика на ресурсах типаCRиSr
- •Пример тупика на ресурсах типаSr
- •1: P(s2); 5: p(s1);
- •Формальные модели для изучения проблемы тупиковых ситуаций
- •Сети Петри
- •Вычислительные схемы
- •Модель пространства состояний системы
- •Методы борьбы с тупиками
- •Предотвращение тупиков
- •Обход тупиков
- •Обнаружение тупика
- •Обнаружение тупика посредством редукции графа повторно используемых ресурсов
- •Методы обнаружения тупика по наличию замкнутой цепочки запросов
- •Алгоритм обнаружения тупика по наличию замкнутой цепочки запросов
- •Контрольные вопросы и задачи Вопросы для проверки
- •Глава 8 Современные операционные системы
- •Семейство операционных системUnix Общая характеристика семейства операционных систем unix, особенности архитектуры семейства осunix
- •Основные понятия системыUnix
- •Виртуальная машина
- •Пользователь
- •Интерфейс пользователя
- •Привилегированный пользователь
- •Команды и командный интерпретатор
- •Процессы
- •Функционирование системыUnix
- •Выполнение процессов
- •Подсистема ввода/вывода
- •Перенаправление ввода/вывода
- •Файловая система
- •Структура файловой системы
- •Защита файлов
- •Межпроцессные коммуникации вUnix
- •Сигналы
- •Семафоры
- •Программные каналы
- •Очереди сообщений
- •Разделяемая память
- •Вызовы удаленных процедур (rpc)
- •Операционная системаLinux
- •Семейство операционных систем os/2WarpкомпанииIbm
- •Особенности архитектуры и основные возможности os/2Warp
- •Особенности интерфейса os/2Warp
- •Серверная операционная система os/2Warp4.5
- •Сетевая ос реального времениQnx
- •Архитектура системыQnx
- •Основные механизмы qnx для организации распредёленных вычислений
- •Контрольные вопросы и задачи Вопросы для проверки
- •Приложение а Тексты программы параллельных взаимодействующих задач
- •Приложение б Тексты программ комплекса параллельных взаимодействующих приложений
- •Текст программы а
- •Текст программы в
- •Текст программы d
- •Текст программы g
- •Список литературы
- •Часть 1 6
- •Глава 5 Архитектура операционных систем и интерфейсы прикладного 240
- •Глава 6 Проектирование параллельных взаимодействующих вычислительных 279
- •Глава 7 Проблема тупиков и методы 348
- •Глава 8 Современные операционные 391
Формальные модели для изучения проблемы тупиковых ситуаций
Проблема борьбы с тупиками становится всё более актуальной и сложной по мере развития и внедрения параллельных вычислительных систем. При проектировании таких систем разработчики стараются проанализировать возможные неприятные ситуации, используя специальные модели и методы.
Таких моделей много; к настоящему времени разработано несколько десятков различных моделей, предназначенных для анализа и моделирования систем с параллельными асинхронными процессами, для которых возможность возникновения тупиковых ситуаций является очень серьёзной проблемой. Изложение и сравнительный анализ этих моделей может составить большую монографию, поэтому здесь мы кратко рассмотрим только четыре из них – сети Петри, вычислительные схемы, модель пространства состояний и уже упомянутую нами модель Холта.
Сети Петри
Среди многих существующих методов описания и анализа параллельных систем уже более 35 лет значительное место занимают сетевые модели, восходящие к сетям специального вида, предложенных в 1962 году Карлом Петри для моделирования асинхронных информационных потоков в системах преобразования данных [64].
Взаимодействие событий в параллельных асинхронных дискретных системах имеет, как правило, сложную динамическую структуру. Эти взаимодействия описываются более просто, если указывать не непосредственные связи между событиями, а те ситуации, при которых данное событие может реализоваться. При этом глобальные ситуации в системе формируются с помощью локальных операций, называемых условиями реализации событий. Определённые сочетания условий разрешают реализоваться некоторому событию (предусловия события), а реализация события изменяет некоторые условия (постусловия события), то есть события взаимодействуют с условиями, а условия – с событиями. Таким образом, предполагается, что для решения задач достаточно представить системы как структуры, образованные из элементов двух типов – событий и условий. Удобный формальный механизм для этого, предложенный Петри, был развит А. Холтом, который назвал его сетью Петри.
В сетях Петри события и условия представлены абстрактными символами из двух непересекающихся алфавитов, называемых соответственно множеством переходов и множеством позиций. Имеется несколько формальных представлений сетей Петри:
теоретико-множественное;
графовое – бихроматический (двудольный ориентированный) граф и, соответственно, графическое;
матричное.
При использовании теоретико-множественного подхода к описанию сети Петри (поскольку эта модель представляет и структуру, и функционирование системы) она формально может быть определена как двойка вида: N=S,М0. Здесь S – это структура сети, которая представляется двудольным ориентированным мультиграфом S=(V, U),гдеV –вершины этого графа, U –его дуги. М0 –начальное состояние сети Петри, которое также называется начальной маркировкой. В силу того, что графSявляется двудольным, можно перейти к формальному описанию структуры сети Петри в виде тройки:
SP,T,Y,
где Р –конечное множество позиций,Р ={pi},i=;Т –конечное множество переходов,Т= {tj},j = ;ТР=V,ТР=, то естьТиР –это два типа вершин биграфаS;Y– конечное множество дуг, заданное отношениями между вершинами графаS : Y(Р * T)(T * Р).
Поскольку двудольный мультиграф Sявляется ориентированным, то любой переходtj, j= соединяется с позициямирiРчерез входные и выходные дуги, которые задаются через функцию предшествованияВ:(P * T){0,1, 2,...} и через функцию следованияЕ:(Т * Р) {0,1,2..}, являющиеся отображениями из множества переходов в комплекты позиций [64] (синонимом термина комплект является понятие мультимножества). Эти функции определяют комплекты позиций {рi}, связанных с переходомtj Тчерез множество дуг {(pi,tj)l}, гдеl{(pi,tj)l:i,j=const}W, и комплекты позиций {рk} , связанных с переходомtjТчерез множество_дуг {(tj,pk)l}, гдеl{(ti,pk)l: j,k=const}W. ЗдесьW– мультичисло графаS; –пространство комплектов, заданное на множестве функциямиЕиВ; {(pi,tj)v} – v-я дуга, выходящая из позицииpiи входящая в переходtj, {(ti,pk)v–v-я дуга, выходящая из переходаtjи входящая в позициюpk .
Таким образом, теперь структура Sсети ПетриNможет быть представлена как четверка:S(P,T,B,E). Представим множество позицийРкак объединение двух пересекающихся множеств:P=IO;IO. Здесь мы черезIиОобозначим следующие множества:
I = I(tj);O = O(tj),
где I(tj) = {pi:B(pi ,tj)1,i= },j=;O(tj) = {pk:E(tj ,pk) 1k= },j=;
(pi ,tj) – дуга с весомw W,выходящая из вершиныpiи входящая в вершинуtj
(tj ,pk) –дуга с весомwW,выходящая из вершиныtjи входящая в вершинуpk то естьI(tj) иO(tj) –комплекты соответственно входных и выходных позиций переходаtj.
Элементы множества Tобычно представляют собой те возможности (возможные ситуации, условия), при которых могут быть реализованы интересующие нас процессы (действия).
Начальная маркировка М0(как и текущая маркировкаМ, которая соответствует некоторому состоянию сети в текущий момент модельного времени) определяется одномерной матрицей (вектором), число компонентов которого равно числу позиций сетип, п =|Р |, а значениеi-го компонента, 1i . п,есть натуральное числоm(pi),которое определяет количество маркеров (меток) в позициирiто есть
М0= (m0(p1),m0(p2), … ,m0(pn));
М = (m(p1),m(p2), … ,m(pn)),
где m(p1)m(pi)Z; Z –множество неотрицательных целых чисел. МаркировкуМможно представлять и как множество или комплект с той лишь только разницей, что отсутствие некоторого элемента в множестве будем обозначать специальным элементом – нулём. В этом случае запись видаMi = Mi-1 – I(t) означает разность множеств и такое изменение маркировки, при котором на соответствующих местах вектораМiбудут уменьшенные значения.
Передвижение маркеров по сети осуществляется посредством срабатывания её переходов. Срабатывание возбужденного перехода, являющееся локальным актом, в целом ведёт к изменению маркировки сети, то есть к изменению её состояния. Таким образом, если в сети задано начальное маркирование М0, при котором хотя бы один переход возбуждён, то в ней начинается движение маркеров, отображающее смену состояний сети. Переходtj может сработать, если
piI(tj): m(pi) (рi , I(tj)) – w.
Переход, для которого выполняется это условие, называется возбуждённым. Здесь запись вида #(рi,I(tj)) означает число появлений позиций рiво входном комплекте переходаtjоно, естественно, равно весуw,если вместо мультиграфа рассматривать взвешенный граф. При срабатывании переходаtjмаркировкаМ0 изменяется на маркировкуM1следующим образом:M1=М0 – I(tj) +О(tj). Иначе говоря,
piP:тi(рi) –т0(рi) - #(рi, I(tj)) + #(рi, О(tj)).
Из последнего выражения видно, что количество маркеров, которое переход tj изымает из своих входных позиций, может не равняться количеству маркеров, которое этот переход помещает в свои выходные позиции, так как совсем не обязательно, чтобы число входных дуг перехода равнялось числу его выходных дуг.
В графическом представлении сетей (оно наиболее наглядно и легко интерпретируемо) переходы изображаются вертикальными (или горизонтальными) планками (чёрточками), а позиции – кружками (рис. 7.5). Условия–позиции и события–переходы связаны отношением непосредственной зависимости (непосредственной причинно-следственной связи), которое изображается с помощью направленных дуг, ведущих из позиций в переходы и из переходов в позиции. Позиции, из которых ведут дуги на данный переход, называются его входными позициями, а позиции, на которые ведут дуги из данного перехода, – выходными позициями.
Выполнение условия изображается разметкой соответствующей позиции, а именно помещением числа nили изображениемnмаркеров (фишек) в то место, гдеп > 0– ёмкость условия.
Сети Петри могут быть использованы с точки зрения анализа системы на возможность возникновения в ней тупиковых ситуаций. Этот анализ проводится посредством исследования пространства возможных состояний сети Петри. При этом под последним понимается множество возможных маркировок сети. Анализ сетей посредством матричных методов имеет множество проблем, поэтому в основном используется подход, основанный на построении редуцированного до дерева1графа возможных маркировок [49]. В таком дереве вершины графа – это состояния (маркировки) сети, а ветви дерева, помеченные соответствующими переходами сети, – это возможные изменения состояний сети, то есть срабатывания её переходов. Если взять любую вершину в таком дереве (за исключением корневой), то путь к этой вершине от корня дерева (путь из начальной маркировки к заданной) будет представлять собой последовательность срабатывания переходов.
Говорят, что переход tjдля разметкиМявляетсяживым,если для всех разметокМ' (М) существует последовательность срабатывания переходов, которая приводит к маркировкеМ'при которой переходtjможет сработать. Сеть Петри называетсяживой,если все её переходы живы; живучая разметка – это разметка, при которой каждый из её переходов сможет запускаться бесконечное число раз. Когда достигнута такая разметка, при которой ни один из переходов не может быть запущен, говорят, что сеть Петри завершилась (достигнута желаемая конечная маркировка) или же зависла (то есть имеет место тупиковая ситуация).
Сети Петри очень удобны для описания процессов синхронизации и альтернатив. Например, семафор может быть представлен входной позицией, связанной с несколькими взаимоисключающими переходами (критическими секциями). Сети Петри позволяют моделировать асинхронность и недетерминизм параллельных независимых событий, параллелизм конвейерного типа, конфликтные взаимодействия между процессами. Сети Петри очень удобны для описания процессов синхронизации и альтернатив. Например, семафор может быть представлен входной позицией, связанной с несколькими взаимоисключающими переходами (критическими секциями). Говорят, что два перехода конфликтуют, если они взаимно исключают друг друга, то есть они не могут быть оба запущены одновременно. Два перехода, готовые к срабатыванию, находятся в конфликте, если они связаны с общей входной позицией.
Вкачестве примера рассмотрим рис. 7.5.
Рис. 7.5.Сеть Петри для системы двух взаимодействующих процессов
Эта сеть соответствует рассмотренному нами ранее примеру тупиковой ситуации (см. рис. 7.2), которая возникает при взаимодействии процессов ПР1 и ПР2 во время передачи сообщений и потреблении ресурса Rкаждым из процессов. Начальная маркировка для сети, показанной на рис. 7.5, будет равна (1,0,0,0,0,4, 0,0,1,0,0,0,0). Здесь позицияp2означает, что процесс ПР1 получил три единицы ресурса R. Дуга, соединяющая позициюp6 (число маркеров в ней соответствует количеству доступных единиц ресурса R), имеет вес 3 и при срабатывании переходаt1процесс ПР1 получает затребованные 3 единицы ресурса. Переходt2представляет посылку процессом ПР1 сообщения для ПР2; переходtj– приём этого сообщения. Появление маркера в позицииp7означает, что процесс ПР2 обработал сообщение и послал ответ процессу ПР1. Срабатывание переходаtj представляет возврат в систему трёх единиц ресурса, которыми владел процесс ПР1. Рассмотренная сеть не является живой, так как в ней всегда будут мертвы переходыt3 ,tj , t6 , t7 и t8.
Рис. 7.6.Сеть Петри для тупиковой ситуации на ресурсах типаSR
Примеру тупиковой ситуации, возникающему при работе с ресурсами типа SR, который мы также уже рассматривали ранее (см. рис. 7.3), соответствует сеть Петри, показанная на рис. 7.6.
В этой сети номера переходов соответствуют отмеченным номерам операторов, которые выполняют процессы ПР1 и ПР2, а позиции p1ир2– семафорамS1иS2, над которыми выполняются Р- и V-операции. Сеть на рис. 7.6 также не является живой, хотя для неё и существуют такие последовательности срабатывания переходов, что тупиковой ситуации не наступит.
Алгоритм построения дерева достижимости изложен, например, в работе [64].