Добавил:
Developerrnrn Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОС Нижний.pdf
Скачиваний:
34
Добавлен:
25.03.2023
Размер:
2.75 Mб
Скачать

Лабораторный практикум по курсу "Операционные системы"

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

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

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

 

 

 

Ядро

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Процесс1

 

 

 

 

Процесс1

 

Библиотека поддержки

 

 

Библиотека поддержки

исполнения потоков

 

 

исполнения потоков

Поток

Поток

Поток

 

 

Поток

Поток

Поток

Подпоток

Подпоток

Подпоток

 

 

Подпоток

Подпоток

Подпоток

Подпоток

Подпоток

Подпоток

 

 

Подпоток

Подпоток

Подпоток

 

 

 

 

 

 

 

 

 

 

Рис. 5 Несколько процессов, у каждого процесса - несколько потоков, у каждого потока – несколько пользовательских подпотоков

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

Состояния потока

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

Создание

 

 

 

 

 

 

 

 

 

 

1

 

2

 

 

 

 

 

 

 

 

 

Выполнение

 

 

 

Ожидание

 

 

 

 

 

3

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Завершение

 

 

 

 

 

 

 

 

 

 

Рис. 6 Диаграмма состояний потока в однозадачной ОС

Учебно-исследовательская лаборатория «Информационные технологии» 15

Лабораторный практикум по курсу "Операционные системы"

Поток переходит из состояния выполнения в состояние ожидания (2) посредством выполнения системного вызова, подразумевающего ожидание наступления какого-либо события, например, нажатия клавиши или истечения 10 с. При наступлении этого события происходит возврат из системного вызова и возвращение потока в состояние выполнения (3).

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

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

 

 

 

 

Создание

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Готов к выполнению

 

 

 

 

 

 

 

 

2

3

 

 

 

5

 

 

 

 

4

 

 

 

 

 

Выполнение

 

 

 

 

Ожидание

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

Завершение

Рис. 7 Диаграмма состояний потока в многозадачной ОС

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

Готов к выполнению – поток обладает всеми необходимыми для выполнения ресурсами за исключением ресурса «время центрального процессора».

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

Перевод потока из состояния «выполнение» в состояние «готов к выполнению» и обратно (2,3) осуществляется ядром операционной системы. Переход из состояния выполнения в состояние ожидания (4) может производиться в следующих случаях:

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

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

-поток затребовал недоступный в данный момент ресурс;

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

-поток заблокирован внешним по отношению к нему вызовом.

16 Учебно-исследовательская лаборатория «Информационные технологии»

Лабораторный практикум по курсу "Операционные системы"

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

Переход из состояния ожидания в состояние готовности к выполнению (5) производится ядром ОС в момент выполнения условия ожидания.

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

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

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

Дескрипторы процессов и потоков

Каким образом информация о процессах и потоках представлена в операционной системе в период их активности?

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

дескриптор процесса или блок управления процесса. Обычно он содержит данные, на основании которых операционная система осуществляет управление ресурсом «процесс». Перечислим типичные поля этой структуры:

1.Идентификатор процесса - уникален, используется для идентификации процесса.

2.Групповые параметры процесса – родительский процесс, дочерние процессы, процессы, принадлежащие одному заданию т.д.

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

4.Состояние процесса – термин «состояние» обычно относится к диаграмме состояний потока, однако можно выделить состояния, влияющие на все потоки процесса, например, состояние «отсутствует в памяти».

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

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

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

8.Контекст безопасности – информация, обрабатываемая подсистемой безопасности операционной системы при контроле правомочности функционирования потоков процесса;

Учебно-исследовательская лаборатория «Информационные технологии» 17

Лабораторный практикум по курсу "Операционные системы"

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

9.Текущие системные параметры выполнения – например, корневой и рабочий каталог.

10.Код завершения процесса.

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

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

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

1.Идентификатор потока.

2.Идентификатор процесса – владельца потока.

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

5.Статистические данные потока.

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

7.Код завершения потока.

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

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

18 Учебно-исследовательская лаборатория «Информационные технологии»

Соседние файлы в предмете Современные операционные системы