Архитектура операционной системы UNIX   ::   Бах Морис Дж.

Страница: 604 из 715



Синтаксис вызова системной функции semctl:

semctl(id, number, cmd, arg);

Параметр arg объявлен как объединение типов данных:

union semunion {

 int val;

 struct semid_ds *semstat; /* описание типов см. в Приложении */

 unsigned short *array;

} arg;

Ядро интерпретирует параметр arg в зависимости от значения параметра cmd, подобно тому, как интерпретирует команды ioctl (глава 10). Типы действий, которые могут использоваться в параметре cmd: получить или установить значения управляющих параметров (права доступа и др.), установить значения одного или всех семафоров в наборе, прочитать значения семафоров. Подробности по каждому действию содержатся в Приложении. Если указана команда удаления, IPC_RMID, ядро ведет поиск всех процессов, содержащих структуры восстановления для данного семафора, и удаляет соответствующие структуры из системы. Затем ядро инициализирует используемые семафором структуры данных и выводит из состояния приостанова все процессы, ожидающие наступления некоторого связанного с семафором события: когда процессы возобновляют свое выполнение, они обнаруживают, что идентификатор семафора больше не является корректным, и возвращают вызывающей программе ошибку.



11.2.4 Общие замечания



Механизм функционирования файловой системы и механизмы взаимодействия процессов имеют ряд общих черт. Системные функции типа "get" похожи на функции creat и open, функции типа "control" предоставляют возможность удалять дескрипторы из системы, чем похожи на функцию unlink.

|< Пред. 602 603 604 605 606 След. >|

Java книги

Контакты: [email protected]