Cтраница 2
Процесс может быть создан только системным вызовом fork. При создании процесс получает уникальный целочисленный идентификатор, по которому система находит дескриптор процесса - структуру данных, расположенную в ядре и хранящую информацию о состоянии процесса. [16]
Выполняемый в данное время, обычно в центральном процессоре. Ясно, что при откладывании процесса по какой-либо причине, бит активности в дескрипторе процесса будет сброшен в нуль. [17]
Так, обработка некоторого текста программой-редактором является процессом, а редактирование другого текста с помощью этой же программы представляет собой другой процесс, даже если при этом используется одна и та же копия программы. Процесс определяется соответствующей программой, набором данных, которые в ходе реализации процесса могут считываться, записываться и использоваться, а также дескриптором процесса, который описывает текущее состояние любого выделенного процессу ресурса ЭВМ. [18]
Так как собственно выполняются не процессы, а потоки, есть смысл говорить лишь о взаимодействии и синхронизации именно потоков, принадлежащих как одному процессу, так и разным. Только в одном случае можно упомянуть о взаимодействии именно процессов - когда один процесс ожидает завершения другого. При этом дескриптор процесса является объектом синхронизации, о чем будет подробно рассказано ниже. [19]
Пользователи могут создавать новые объекты или открывать уже существующие объекты при помощи вызовов Win32, таких как CreateSemaphore и OpenSemaphore. Эти вызовы являются библиотечными процедурами, которые в конечном итоге обращаются к настоящим системным вызовам. При успешном выполнении первый вызов создает, а второй открывает объект, создавая в результате 64-разрядную запись в таблице дескрипторов, хранящуюся в приватной таблице дескрипторов процесса в памяти ядра. Пользователю для последующей работы возвращается 32-разрядный индекс, указывающий положение дескриптора в таблице. [20]
Когда в системе реализуется несколько процессов, любой из которых может быть активен в определенный промежуток времени, для каждого процесса имеется дескриптор, описывающий его состояние. В пределах дескриптора индикатор готовности показывает, может ли данный процесс выполняться или он должен ожидать завершения какого-либо другого действия перед обработкой в процессоре. Для процессов, не готовых к выполнению, дескриптор указывает причины, по которым тот или иной из них приостановлен, и должны содержать указатели соответствующих очередей и семафоры. Дескриптор процесса включает в себя также копию содержимого регистров процессора, которые должны восстанавливаться с повторным запуском процесса. Когда процесс выполняется, дескриптор процесса, называемый ресурсным, должен содержать информацию о ресурсах, предоставленных процессу и о разрешенных операциях использования этих ресурсов. [21]
Когда в системе реализуется несколько процессов, любой из которых может быть активен в определенный промежуток времени, для каждого процесса имеется дескриптор, описывающий его состояние. В пределах дескриптора индикатор готовности показывает, может ли данный процесс выполняться или он должен ожидать завершения какого-либо другого действия перед обработкой в процессоре. Для процессов, не готовых к выполнению, дескриптор указывает причины, по которым тот или иной из них приостановлен, и должны содержать указатели соответствующих очередей и семафоры. Дескриптор процесса включает в себя также копию содержимого регистров процессора, которые должны восстанавливаться с повторным запуском процесса. Когда процесс выполняется, дескриптор процесса, называемый ресурсным, должен содержать информацию о ресурсах, предоставленных процессу и о разрешенных операциях использования этих ресурсов. [22]