Linux kernel sem_post/sem_wait如何区分基于内存和基于内核的信号量

Linux kernel sem_post/sem_wait如何区分基于内存和基于内核的信号量,linux-kernel,kernel,posix,Linux Kernel,Kernel,Posix,不知道sem_post/sem_wait函数如何区分传递给它们的基于内存和基于内核的信号量? 对于基于内核的信号量(称为信号量),需要系统调用来执行任何操作。 对于基于内存的,执行任何操作都不需要系统调用。 假设我们使用sem_open调用创建了一个命名信号量sem1。 然后在/dev/shm下显示一个文件,该文件针对该信号量ls-l/dev/shm/sem.*-rw-r-----1 root root 16 Jan 12 14:38 sem.sem1。 因为这是一个文件,所以当我们通过sem_

不知道sem_post/sem_wait函数如何区分传递给它们的基于内存和基于内核的信号量? 对于基于内核的信号量(称为信号量),需要系统调用来执行任何操作。 对于基于内存的,执行任何操作都不需要系统调用。 假设我们使用sem_open调用创建了一个命名信号量sem1。 然后在/dev/shm下显示一个文件,该文件针对该信号量ls-l/dev/shm/sem.*-rw-r-----1 root root 16 Jan 12 14:38 sem.sem1。 因为这是一个文件,所以当我们通过sem_post/sem_wait访问它时,我们需要执行系统调用。 或者,它们在sem_打开时映射到进程地址空间,这样我们就不需要在sem_post/sem_wait中进行系统调用。
那么命名信号量的正确方式是什么?

您所说的“基于内核的信号量”是什么意思?命名和未命名的信号量都放在可从用户空间应用程序访问的内存中。有了这些信息,这个问题就更有意义了。你能把这些信息整合到问题帖中吗?关于堆栈溢出,我们希望问题在不阅读注释的情况下可以理解。