1. semop() - это не POSIX, а семафоры System V, это для Linux, скорее, экзотика, чем норма - это включено больше для совместимости с программами, написанными для ... Solaris, например.
2. детально про все операции синхронизации (и semop в том числе) можете почитать:

(можете найти и скачать, её много где есть)
3. Стивенс пишет:
Весь массив операций, передаваемый функции semop, выполняется ядром как одна операция; атомарность при этом не гарантируется. Ядро выполняет все указанные операции, или ни одну из них.