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

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

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

3. Множество ресурсов, используемых потоком или принадлежащих потоку, и их состояния.

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

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

Таким образом, мы видим, что возможность восстановление процесса или потока после того как он был прерван или уничтожен, зависит от возможности восстановления выше перечисленных параметров. Наибольшую сложность в данном случае представляет собой восстановления состояния аппаратных устройств, поскольку алгоритмы восстановления состояния аппаратуры могут быть чрезвычайно сложны или принципиально не реализуемы (попробуйте составить алгоритм, в результате выполнения которого жесткий диск примет желаемые параметры S.M.A.R.T.)

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

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

Классификация ОС по признаку поддержки процессов и потоков

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

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

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

1. Однозадачные ОС

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

Ядро

Процесс

Поток

Рис. 1 Однозадачная ОС

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

2. Многозадачные ОС без поддержки многопоточности

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

Ядро

Процесс1 Процесс2 ПроцессK

Поток1 Поток2 ПотокK

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

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

3. Многозадачные ОС с поддержкой многопоточности

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

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

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

Ядро

Процесс1

 

Процесс2

 

ПроцессK

Поток11

 

Поток21

 

ПотокK1

Поток12

 

Поток22

 

ПотокK2

 

 

Поток1M1

 

Поток2M2

 

ПотокKMk

 

 

 

 

 

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

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

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

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

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

 

 

Ядро

 

 

 

 

 

 

 

 

 

 

Процесс1

 

 

ПроцессN

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

 

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

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

 

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

Поток11 Поток12 Поток1M1

 

ПотокN1 ПотокN2 ПотокNMn

 

 

 

 

 

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

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

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

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