Изменение состояния процесса
Понятно, что переключение режима работы процессора и переключение процессов — это не одно и то же.10 Переключение режима может, происходить без изменения состояния процесса, выполняющегося в данное время. В этом случае сохранение контекста и его последующее восстановление не приведет к большим накладным расходам. Однако если выполняющийся в текущий момент времени процесс нужно перевести в другое состояние (состояние готовности,
10 В литературе по операционным системам часто встречается термин переключение контекста (context switch). К сожалению, хотя в большинстве изданий этот термин используется для обозначения действия, которое в нашей книге называется переключением процессов, в других источниках он используется для обозначения переключения режима работы процессора или даже переключения потоков (о котором пойдет речь в следующей главе). Поэтому термин переключение контекста в данной книге во избежание его неоднозначного понимания не используется.
Ядро вне процессов
Один из традиционных подходов, который применялся во многих ранних операционных системах, состоит в том, чтобы выполнять ядро операционной системы вне всяких процессов (рис. 3.12,а). При таком подходе прерывание выполняющегося в данное время процесса или вызов управляющей программы приводит к сохранению контекста данного процесса и передаче управления ядру. Операционная система имеет свою собственную область памяти и свой собственный системный стек, который используется для управления вызовами процедур и возвратами из них. Операционная система может выполнить все необходимые функции и восстановить контекст прерванного процесса, после чего выполнение этого процесса будет продолжено. После завершения сохранения контекста данного процесса операционная система может также перейти к планированию и диспетчеризации другого процесса. Случится это или нет — зависит от того, что именно послужило причиной прерывания, и от ряда других обстоятельств.
В любом случае основным моментом такой схемы является то, что концепция процесса рассматривается в ней лишь применительно к пользовательским программам. Код операционной системы выполняется как некий отдельный объект, работающий в привилегированном режиме.
Дата добавления: 2016-06-05; просмотров: 1576;