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