Индустрия программирования


Семафоры - часть 2


  • обратившийся процесс переводится в состояние
    ожидания (усыпляется)

    Значение поля операции отрицательно
    (1) его абсолютное значение меньше или равно значению
    семафора

    • это отрицательное значение прибавляется к значению
      семафора
    • если значение семафора стало нулевым, то ядро
      активизирует все процессы, ожидающие нулевого значения этого семафора

    (2) значение семафора меньше абсолютной величины
    поля операции

    • число процессов, ожидающих увеличения значения
      семафора увеличивается на единицу
    • текущий процесс откладывается

    Стремление добиться возможности избегать тупиковых
    ситуаций
    Системный вызов semop
    выполняется как атомарная операция
    Флаг IPC_NOWAIT заставляет
    ядро ОС UNIX не блокировать текущий процесс

    • лишь сообщать в ответных параметрах о возникновении
      ситуации, приведшей бы к блокированию процесса

    semctl(id, number, cmd,
    arg);

    • id
      - это дескриптор группы семафоров
    • number
      - номер семафора в группе
    • cmd
      - код операции
    • arg - указатель
      на структуру, содержимое которой интерпретируется в зависимости
      от операции

    Можно уничтожить индивидуальный семафор в указанной
    группе



    Начало  Назад  Вперед



    Книжный магазин