Cтраница 3
Как только пользователь регистрируется в системе, выполняется операция защиты при открытии объекта. Для каждого вызова ОрепХХХ требуется имя открываемого объекта и набор прав доступа к нему. Во время обработки процедуры открытия объекта менеджер безопасности ( см. рис. 11.2) проверяет наличие у вызывающего процесса соответствующих прав доступа. Для этого он просматривает все маркеры доступа вызывающего процесса, а также список DACL, ассоциированный с объектом. Он просматривает по очереди элементы списка ACL. Как только он находит запись, соответствующую идентификатору SID вызывающего процесса или одной из его групп, поиск прав доступа считается законченным. Если вызывающий процесс обладает необходимыми правами, объект открывается, в противном случае в открытии объекта отказывается. [31]
Первая группа в табл. 1.1 управляет процессами. Системный вызов fork ( разветвление) является единственным способом создания нового процесса в UNIX. После вызова fork исходный процесс и его копия ( родительский и дочерний) развиваются по отдельности друг от друга. Все переменные имеют одинаковые величины во время вызова fork, но как только родительские данные скопированы для создания дочернего процесса, последующие изменения в одном из них уже не влияют на другой. Вызов fork возвращает величину, равную нулю в дочернем процессе и равную идентификатору дочернего процесса или PID в родительском. Используя возвращенный PID, два процесса могут различить, какой из них родительский, а какой - дочерний. [32]
Первая группа в табл. 1.1 управляет процессами. Системный вызов fork ( разветвление) является единственным способом создания нового процесса в UNIX. После вызова fork исходный процесс и его копия ( родительский и дочерний) развиваются по отдельности друг от друга. Все переменные имеют одинаковые величины во время вызова fork, но как только родительские данные скопированы для создания дочернего процесса, последующие изменения в одном из них уже не влияют на другой. Вызов fork возвращает величину, равную нулю в дочернем процессе и равную идентификатору дочернего процесса или PID в родительском. Используя возвращенный PID, два процесса могут различить, какой из них родительский, а какой - дочерний. [33]
Поскольку в приведенном примере первый параметр содержит только простое имя исполняемого файла, то этот файл должен быть расположен в текущем каталоге. Кроме того, так как второму параметру присвоено значение NULL, то командная строка, передаваемая в дочерний процесс, состоит только из имени исполняемого файла PAYROLL. Последний получает доступ к полной командной строке с помощью вызова функции Win32 API: : GetCommandLine либо с помощью параметра IpCmdLine, передаваемого в функцию WinMain. Для параметров с третьего по девятый в нашем примере передаются стандартные значения. Десятый ( последний) параметр задает адрес неинициализированной структуры Processlnfo типа PROCESS INFORMATION. Функция: : CreateProcess присваивает этой структуре дескриптор, а также идентификаторы дочернего процесса и его первичного потока. [34]
Система PRIME содержит механизм посылки / получения, который позволяет процессу одного пользователя послать сообщение процессу другого пользователя. Для этого процесс-отправитель передает своему ЕСМ это сообщение и идентификатор процесса-получателя. ЕСМ добавляет идентификатор отправителя и передает сообщение ССМ. Тот передает сообщение ЕСМ процессора, содержащего процесс-получатель, а ЕСМ наконец передает сообщение указанному процессу пользователя. В этой последовательности выполняются три проверки с целью обнаружения ошибки. ССМ проверяет, правильный ли идентификатор процесса-отправителя добавлен ЕСМ; он может это сделать, поскольку известно, какому пользователю выделен процессор. ЕСМ адресата проверяет, тому ли процессору ССМ направил сообщение; он выполняет это, сравнивая идентификатор процесса в сообщении с идентификатором процесса, которому в данный момент выделен процессор. Третья проверка делается для обеспечения сохранности сообщения при транзите. ЕСМ-отправитель формирует для сообщения контрольную сумму и передает ее вместе с сообщением. ЕСМ-получатель вычисляет контрольную сумму доставленного сообщения и сравнивает с извлеченной из сообщения. [35]
Система PRIME содержит механизм посылки / получения, который позволяет процессу одного пользователя послать сообщение процессу другого пользователя. Для этого процесс-отправитель передает своему ЕСМ это сообщение и идентификатор процесса-получателя. ЕСМ добавляет идентификатор отправителя и передает сообщение ССМ. Тот передает сообщение ЕСМ процессора, содержащего процесс-получатель, а ЕСМ наконец передает сообщение указанному процессу пользователя. В этой последовательности выполняются три проверки с целью обнаружения ошибки. ССМ проверяет, правильный ли идентификатор процесса-отправителя добавлен ЕСМ; он может это сделать, поскольку известно, какому пользователю выделен процессор. ЕСМ адресата проверяет, тому ли процессору ССМ направил сообщение; он выполняет это, сравнивая идентификатор процесса в сообщении с идентификатором процесса, которому в данный момент выделен процессор. Третья проверка делается для обеспечения сохранности сообщения при транзите. ЕСМ-отправитель формирует для сообщения контрольную сумму и передает ее вместе с сообщением. ЕСМ-получатель вычисляет контрольную сумму доставленного сообщения и сравнивает с извлеченной из сообщения. [36]