- •2. Теоретические основы построения операционных систем
- •Процессы и ресурсы
- •2.1.1. Определение процесса
- •Операционная система
- •П роцесс 1 Процесс 2 . . . Процесс n
- •2.1.2. Понятие ресурса
- •2.1.4. Планирование процессов
- •Центральный процессор
- •Центральный процессор
- •2.1.5. Классификация процессов
- •2.1.6. Классификация ресурсов
- •2.1.7. Структуры данных для управления процессами и ресурсами
- •2.1.8. Ядро операционной системы и реализация базовых функций ос
- •2.2. Проблема синхронизации и взаимное исключение
- •2.2.1. Определение и свойства критической секции
- •2.2.2. Программные методы реализации взаимного исключения
- •2.2.3. Синхронизация процессов с помощью семафоров
- •2.2.4. Реализация примитивов взаимоисключения
- •2.2.5. Параллельное программирование и мониторы
- •2.2.6. Рандеву как модель организации взаимодействия процессов
- •2.2.7. Система прохождения сообщений
- •2.2.8. Многозадачность и языки программирования
- •Взаимодействие процессов и синхронизация задач в os/2
- •2.2.10. Организация взаимодействия процессов и потоков в Win32
- •2.3. Проблема тупика
- •2.3.1. Определение тупика
- •Необходимые условия возникновения тупика и решение задачи предотвращения тупика
- •2.3.3. Модель системы для исследования проблемы тупика
- •2.3.4. Методы распознавания тупика
- •2.3.5. Выход из тупика и восстановление работоспособности системы
- •2.3.6. Методы обхода тупиков
2.1.7. Структуры данных для управления процессами и ресурсами
Для реализации функций управления процессами и ресурсами ОС должна хранить всю необходимую информацию обо всех компонентах системы в специальных системных таблицах, которые называют блоками управления процессами и ресурсами или дескрипторами процессов и ресурсов.
Ниже обсуждается набор структур данных и базовые операции, выполняемые над элементами системы, применяемые при организации вычислительного процесса в ВС.
Каждый процесс, существующий в ВС, и каждый ресурс, имеющийся в распоряжении программ управления ОС, имеет управляющий блок, описывающую его текущее состояние. Каждому классу ресурсов может соответствовать своя структура данных, используемая в качестве блока управления ресурсами этого класса.
Все таблицы, образованные дескрипторами компонентов системы, в совокупности представляют состояние ВС. Программы ОС обращаются к этим таблицам при выполнении всех операций над соответствующими элементами системы, изменение состояния элемента в результате выполнения операции над ним отражается в представляющем его управляющем блоке.
“Представителем” процесса в операционной системе, его “учетной карточкой” является блок управления процессом или дескриптор процесса.
Дескриптор процесса строится при создании (порождении) процесса и представляет процесс во время его существования в ВС до момента окончания. Обобщенная структура дескриптора процесса предполагает включение следующей информации:
идентификатор процесса;
данные для планирования процесса;
полномочия процесса;
информация о текущем состоянии процесса;
описание виртуального процессора, выделенного процессу:
процессор,
состояние процессора,
описание основной памяти, выделенной процессу,
список выделенных процессу ресурсов,
список созданных ресурсов,
список открытых файлов;
информация о “прямых родственниках” процесса:
“предок” процесса (процесс, породивший данный процесс),
список “потомков” процесса (список процессов, порожденных данным процессом);
учетная информация;
контекстная память процесса.
Каждый процесс (в мультипроцессной системе) имеет идентификатор (например, имя), используемый для представления информации о процессе во время его существования в системе. Внешние имена процессов могут повторяться. Для идентификации процесса во время выполнения ОС использует уникальный внутренний идентификатор, в качестве которого может использоваться число или ссылка на представляющий процесс управляющий блок.
Данные для планирования процесса - это информация, используемая планировщиком операционной системы. В качестве такой информации может использоваться тип процесса (реального времени, интерактивный или пакетный), назначенный процессу внешний приоритет или внутренний динамический приоритет, определенный системой на основании текущих характеристик процесса.
Кроме того, для каждого процесса могут определяться его полномочия. Полномочия процесса - это действия, которые процесс может производить над объектами в ВС (над процессами и ресурсами). Назначение полномочий процессам - элемент системы защиты. Полномочия процессов могут наследоваться при порождении процессов и передаваться другим процессам. При нарушении полномочий возникает ошибка, которая должна обрабатываться средствами ОС.
Полномочия процесса могут быть реализованы на основании специальных списков. Элементы таких списков указывают на объекты ВС, над которыми может выполнять операции данный процесс, и перечисляют допустимые операции над этими объектами.
Информация о текущем состоянии процесса показывает, в каком из возможных в данной ОС состояний находится процесс (активен (выполняется, готов или блокирован) или задержан (приостановлен в состоянии готовности или ожидания)). Кроме того, для процессов, находящихся в состоянии готовности или ожидания, хранятся ссылки на соответствующие очереди (списки процессов, ожидающих распределения им времени процессора или выделения какого-либо другого ресурса), используемые планировщиками процессов и программами распределения ресурсов ОС.
Информация о виртуальном процессоре, соответствующем данному процессу, дополняет информацию о состоянии процесса в системе. Здесь описано адресное пространство процесса и любые другие ресурсы, используемые процессом в данный момент. Процессор является главным ресурсом, распределяемым процессам, поэтому для каждого процесса, который в данный момент не выполняется на процессоре, сохраняется информация о состоянии процессора в момент прерывания выполнения на нем данного процесса (эта информация может также сохраняться в контекстной памяти процесса). В многопроцессорной системе может быть также необходимо хранить ссылку на процессор, распределяемый данному процессу.
Учетная информация необходима в коммерческих системах для ведения учета использования ресурсов ВС ее пользователями. Такая информация может содержать идентификатор пользователя, его шифр, счет и т.п.
Назначение контекстной памяти процесса рассматривалось выше, при введении понятия процесса.
Ресурсы различных классов в зависимости от их свойств требуют хранения информации с различной структурой. Ниже представлена структура обобщенного дескриптора ресурсов в ВС.
Каждый класс ресурсов требует описания по крайней мере следующих компонентов:
идентификатор ресурса;
состояние ресурса или опись доступных единиц ресурса;
список процессов, ожидающих распределения данного ресурса;
список процессов, которым выделен в данный момент ресурс;
ссылка на программу распределения ресурса;
прочая информация.
Дескрипторы или блоки управления ресурсами называют иногда семафорами соответствующих ресурсов, так как доступ к ресурсу процесс может получить только через его описатель.
Идентификатор ресурса используется для обозначения этого ресурса при выполнении операций над ним. Если ресурс создается каким-либо процессом-производителем этого ресурса, то дескриптор этого ресурса может содержать ссылку на соответствующий процесс в системе. Этот процесс вызывается при получении запросов на данный ресурс.
Состояние ресурса зависит от его типа.
Единичный повторно используемый ресурс может быть только в двух состояниях: свободен (доступен для распределения процессам) или занят (распределен какому-либо процессу). Кроме того, может храниться информация о возможности его параллельного использования другими процессами. Если параллельное использование запрещено, то новый запрос на данный ресурс блокирует работу процесса, обратившегося к нему, или вызывает ошибку.
Для составного ресурса необходимо хранить список (опись) доступных для распределения и использования единиц этого ресурса. Элементы этого списка могут представлять собой дескрипторы отдельных элементов, из которых состоит ресурс (например, описывать свободные блоки оперативной памяти, хранить коды символов, введенных с клавиатуры (в буфере клавиатуры), передаваемые сообщения).
В списке ожидающих процессов находятся ссылки на блоки управления всеми процессами, запросы на данный ресурс от которых не были удовлетворены. Запрос на ресурс может блокировать процесс, если в данный момент в системе нет доступного для распределения ресурса. Запись о каждом процессе в этом списке содержит также информацию о самом запросе (например, предполагаемый режим использования ресурса, для составного ресурса - количество запрашиваемых единиц, для потребляемого ресурса - идентификатор процесса-производителя), возможно, о времени поступления запроса. Элементы этого списка - “учетные карточки” запросов на ресурс.
Универсальной организацией для списка ожидания является структура обобщенной очереди. Независимо от особенностей ее организации, заголовок очереди может содержать следующую информацию:
ссылка на первый элемент, представляющий запрос процесса;
ссылка на последний элемент (запрос процесса);
точка входа в программу вставки элемента в очередь,
точка входа программы выбора элемента из очереди,
дополнительная информация.
Дополнительно может храниться информация о дисциплине организации очереди (FIFO, приоритетная), количестве элементов, находящихся в ней, и т.п.
Если процесс заблокирован после запроса на ресурс, то в дескрипторе процесса может быть указана ссылка на семафор соответствующего ресурса, то есть на очередь, в которой находится данный процесс. Эта информация избыточна, так как в самом блоке управления ресурсом есть ссылка на ожидающие его процессы. Избыточная информация позволяет ускорить работу программ управления, повысить устойчивость системы к ошибкам, связанным с разрушением системной информации.
Ссылка на список процессов, которым распределен данный ресурс, используется программой распределения ресурса при возникновении конфликтных ситуаций, для разрешения которых может потребоваться перераспределение ресурса. Для реализации этой возможности каждый элемент списка кроме ссылки на блок управления соответствующим процессом может содержать также объем распределенного процессу ресурса и режим его использования.
Если повторно используемый ресурс распределен процессу, то ссылка на блок управления этим ресурсом находится в дескрипторе процесса, так как ресурс может быть освобожден процессом после использования. Дополнительно эта ссылка может содержать информацию о количестве единиц ресурса (для составных ресурсов) и режиме его использования процессом (монопольно или допускается параллельное использование другими процессами).
Таким образом, в данном случае также может иметь место избыточность. Информация, связанная с блоком управления процессом, используется, в основном, для организации взаимодействия ОС с процессом, при выполнении операций над ним (например, при завершении процесса должны быть освобождены все занятые им ресурсы). Данные в дескрипторах ресурсов предназначены для использования программами распределения ресурсов ОС. Кроме того, дублирование информации в дескрипторах процессов и ресурсов - средство защиты от ошибок.
Для каждого ресурса в ВС существует своя программа управления этим ресурсом, учитывающая все особенности его организации. Возможна ситуация, когда одна и та же программа используется для управления несколькими ресурсами одного типа. Ссылка на точку входа в эту программу может также храниться в дескрипторе этого ресурса. Эта же программа может выполнять функции по ведению очереди к данному ресурсу.
Дополнительная информация зависит от типа ресурса и может быть различной в разных операционных системах.
Дескрипторы ресурсов, как и дескрипторы процессов, динамически создаются и уничтожаются в системе. Большинство дескрипторов (блоков управления) аппаратных ресурсов (hardware) создается при загрузке системы. Но ресурсы (software) могут создаваться и динамически при выполнении системных или пользовательских процессов. Соответственно строятся и уничтожаются и их дескрипторы. При создании ресурса создается его опись, а также инициализируются списки ожидания, указатели на программы распределения и освобождения этого ресурса. Уничтожить дескриптор ресурса может обычно только процесс, создавший его.
