Управление процессом. Понятие процесса. Диаграмма состояний процесса. Контекст процесса
Одним из основных понятий, связанных с теорией ОС, является процесс.
Процесс – это выполняемая программа, включая текущее значение СК, регистров, переменных.
С каждым процессом связывается его адресное пространство, содержащее программу, данные, стек.
При использовании такой абстракции, как процесс – все, что происходит в ВС, можно рассматривать как исполнение процессов, как организацию их взаимодействия.
Встречается определение процесса как контейнера для ресурсов ВС, предназначенного для реализации процесса на ВС.
Реально на однопроцессорной ВС в каждый момент времени может выполняться только один процесс.
Для мультипрограммных ОС псевдопараллельная обработка процессов достигается переключением процессора с одного процесса на другой.
Пока один процесс исполняется, остальные ждут своей очереди на получение процессора.
Т. е. каждый процесс может находиться как минимум в двух состояниях:
· процесс исполняется;
· процесс не исполняется.
Процесс, который находится в состоянии исполнения, может:
· завершить работу и выйти из видимости ОС;
· быть приостановлен и переведен в состояние «процесс не исполняется».
При освобождении состояния «процесс исполняется», ОС по определенному алгоритму выбирает из очереди один из процессов, находящихся в состоянии «не исполняется» и переводит его в состояние «процесс исполняется».
Предложенная модель процесса не учитывает то обстоятельство, что неисполняемый процесс может быть не готов к исполнению.
Чтобы избежать такой ситуации, состояние «процесс не исполняется» разделяют на два состояния − «готовность» и «ожидание».
Непосредственное выполнение программного кода происходит, когда процесс находится в состоянии «исполнение».
Покинуть это состояние процесс может по трем причинам:
· процесс закончил свою деятельность (выход);
· процесс не может продолжить исполнение, пока не произойдет некое событие;
· в результате возникновения прерывания (например от таймера).
В полученной модели процесса не отражены следующие состояния:
· рождение процесса (возникновение);
· закончил исполнение (выход).
Добавив указанные состояния к существующим, получим модель процесса, которая может быть использована при анализе работ практически любой ОС.
Для того чтобы ОС могла выполнять операции над процессом (создание-завершение, и др.) ОС должна его идентифицировать (отличать от других) и контролировать (иметь информацию о состоянии процесса).
Это достигается путем отражения процесса некоторой структурой данных (обычно таблицей процесса).
Такая таблица доступна ОС и хранится в структуре данных PCB (ProcessControlBlock) – блок управления процессом.
РСВ содержит (зависит от ОС):
· состояние, в котором находится процесс;
· счетчик команд процесса;
· содержимое регистров;
· данные для планирования и управления памятью (приоритет, размер и др.);
· учетные данные (номер и др.);
· информацию об устройствах ввода/вывода;
· таблицу файлов.
Информацию РСВ разделяют на три части:
· содержимое всех регистров – называют регистровым контекстом;
· код и данные, находящиеся в адресном пространстве, – называют пользовательским контекстом;
· остальную часть контекста – называют системным контекстом.
Совокупность регистрового, системного и пользовательского контекста принято называть просто контекстом процесса.
В любой момент времени процесс полностью характеризуется своим контекстом.
При приостановке исполнения некоторого процесса ОС обязана сохранить его контекст (чтобы в дальнейшем продолжить его исполнение начиная с момента приостановки). Выбор следующего для исполнения процесса является результатом планирования, однако прежде чем запустить процесс в исполнение, ОС обязана полностью восстановить его контекст.
Процедуры сохранения/восстановления контекста получили название переключения контекста.
Время, затрачиваемое ОС на переключение контекстов, снижает эффективность функционирования ОС (является накладными расходами, потерями).
Вопросы для самопроверки по теме 3.1
1. Что понимают под процессом в операционной системе компьютера?
2. В каких состояниях может находиться любой процесс ОС?
3. Каковы основные операции, производимые ОС с контекстом процесса при остановке выполнения этого процесса и при продолжении исполнения процесса?
4. Назовите основные составляющие структуры контекста процессов.
5. Назовите причины, по которым ОС может перевести процесс из состояния «исполнение» в состояние «готовность».
Реализация потоков. Планирование и диспетчеризация процессов
Усилия, направленные на ускорение решения задач в рамках ОС, привели к появлению новых абстракций внутри понятия «процесс» − это «нити исполнения» («нити») или «потоки».
Потоки являются объектами, поочередно работающими с процессором ВС (т. е. потоки исполняет процессор).
У каждого потока есть свой счетчик команд, отслеживающий порядок выполнения программы, есть стек, содержащий протокол исполнения программы, есть регистры, в которых хранятся текущие переменные программы (потока).
Несколько потоков, работающих параллельно в одном процессе, аналогичны нескольким процессам, работающим на одном компьютере.
Взаимодействие потоков в пределах одного процесса осуществляется гораздо проще и быстрее, чем взаимодействие между процессами.
Например, если один из потоков открывает файл, то этот файл тут же становится, виден для всех остальных потоков этого процесса.
Концепция потоков состоит в обеспечении возможности использования набора ресурсов процесса несколькими потоками этого процесса для выполнения общей задачи.
Создание потоков требует от ОС меньших накладных расходов, чем при создании процессов.
Существует два основных способа реализации потоков:
· в пространстве пользователя;
· в пространстве ядра.
Выбор между этими способами – вопрос достаточно сложный. В принципе, возможна смешанная реализация потоков.
В первом случае пакет потоков размещается целиком в пространстве пользователя. Ядро о потоках ничего не знает и управляет обычными процессами.
К преимуществам такого метода относится возможность реализации пакета потоков в ОС не поддерживающей технологию потоков.
В пространстве пользователя организуются таблицы потоков. Причем в каждом процессе организуется своя таблица потоков.
Эти таблицы аналогичны таблицам процессов, но поддерживают только характеристики потоков.
Когда поток переходит из состояния в состояние, то вся информация, необходимая для повторного запуска потока, хранится в таблице потока.
При такой организации прикладная часть может сама сохранять информацию о потоке в соответствующей таблице, вызвать планировщик, чтобы он запустил на исполнение другой поток. И все это делается без обращения к ядру (т. е. без переключения режимов работы ОС).
Еще одно преимущество такого способа реализации потоков – каждый процесс может иметь собственный алгоритм планирования потоков (высокий уровень степени адаптации программ к условиям решаемых задач).
К недостаткам метода относятся:
1. Сложность реализации.
2. При запуске одного потока в процессе − ни один другой поток не может быть запущен в этом же процессе, пока первый поток добровольно не отдаст процессор.
Внутри одного процесса нет прерываний по таймеру (следовательно, нет возможности создать планировщик, обеспечивающий поочередное выполнение потоков внутри одного процесса).
При реализации пакета потоков внутри ядра ОС подразумевается, что ядро знает о существовании потоков и управляет ими.
Нет необходимости в наличии таблиц потоков в каждом процессе.
Вместо этого в ядре организуется единая таблица, отслеживающая все потоки в ОС.
При блокировании какого-либо потока ядро может запустить другой поток из этого же или из другого процесса.
Т. е. система управления потоками оказывается более гибкой.
Однако все запросы для управления потоками оформляются как системные вызовы, что ведет к необходимости переключения режимов ОС и, как следствие, к увеличению накладных расходов ОС.
При функционировании ОС выполнение процессов может быть многократно прервано и продолжено.
Переход от выполнения одного процесса к другому осуществляется в результате выполнения операций планирования и диспетчеризации.
Планирование заданий (запуск задания на выполнение порождает процесс) появилось в пакетных системах после того, как для хранения сформированных пакетов заданий начали использовать магнитные диски. Магнитные диски являются устройствами прямого доступа и позволяют загружать задания в компьютер в произвольном порядке. Изменяя порядок загрузки заданий, можно существенно повысить эффективность использования ВС. Процедуру выбора очередного задания для загрузки в ВС называют долгосрочным планированием (планированием заданий).
Долгосрочное планирование отвечает за порождение процессов и определяет степень мультипрограммирования ВС. Если степень мультипрограммирования поддерживается постоянной, то новые процессы могут появиться только после завершения ранее загруженных процессов. Поэтому долгосрочное планирование осуществляется достаточно редко (между появлением новых процессов могут проходить минуты). Решение о выборе процесса для запуска оказывает влияние на функционирование ВС достаточно длительное время, отсюда и название – долгосрочное планирование.
Планирование использования процессора ВС рассматривается как краткосрочное планирование процессов. Оно проводится, как правило, не реже одного раза в сто миллисекунд и осуществляется всякий раз, когда процесс покидает состояние «исполнение» (освободился процессор – его необходимо загрузить новым процессом). Выбор нового процесса для загрузки процессора оказывает влияние на ВС достаточно короткое время (до наступления очередного аналогичного события), отсюда и название – краткосрочное планирование.
Планирование процессов включает в себя решение следующих задач:
1. Определение момента времени для смены текущего активного процесса.
2. Выбор для выполнения процесса из очереди готовых процессов.
Диспетчеризация заключается в реализации найденного в результате планирования решения, т. е. непосредственно в выполнении переключения процессора с одного процесса на другой.
Диспетчеризация сводится к следующему:
· сохранение контекста текущего процесса, который требуется сменить;
· загрузка контекста нового процесса, выбранного в результате планирования;
· запуск нового процесса на выполнение.
Все алгоритмы планирования можно разделить на два класса: вытесняющие (preemptive) и невытесняющие (non-preemptive).
Невытесняющие алгоритмы основаны на том, что активному процессу позволяется выполняться до тех пор, пока он сам не отдаст управление ОС, чтобы она выбрала из очереди другой, готовый к выполнению процесс
Вытесняющие алгоритмы − это способы планирования, в которых решение о переключении процессора с выполнения одного процесса на выполнение другого процесса выполняется ОС, а не активным процессом.
Невытесняющее планирование эффективно использовалось в ОСWindows 3.x, NetWare 3.x, 4.x.
Этот метод просто реализуется, достаточно эффективен, так как минимизирует время на переключение контекстов. Однако в этом случае возможно возникновение проблемы захвата ресурса одним процессом, который вследствие какой-либо ошибки может зациклиться и не передать управление другому процессу.
В такой ситуации выход из зависания – перезагрузка системы.
Большинство современных ОС (Unix, Windows NT, 2000, OS/2) реализованы с использованием вытесняющих алгоритмов планирования.
В некоторых ВС для повышения их производительности бывает выгодно удалить частично выполненные процессы из оперативной памяти на магнитный диск, а позже вернуть его в оперативную память для дальнейшего исполнения. Такая процедура получила название свопинга. Когда и какой из процессов следует выгрузить на магнитный диск и вернуть обратно в оперативную память, решается на промежуточном уровне планирования процессов, который получил название среднесрочного планирования.
При изучении материала данного раздела следует рассмотреть работу простейших алгоритмов планирования процессов, таких как «Первым пришел – первым обслужился» (FIFO) для случаев невытесняющего и вытесняющего планирования.
Вопросы для самопроверки по теме 3.2
1. Почему планирование заданий появилось при использовании для хранения заданий магнитных дисков?
2. Какой вид планирования относится к долгосрочному?
3. Чем отличается вытесняющее планирование от невытесняющего?
4. Назовите основные задачи, которые решаются при диспетчеризации.
5. Какой вид планирования относится к среднесрочному?