capability
是一个保护引用的概念。把指定和授权结合在一起,防劫持。这种能力通常由系统内核(通常是微内核)提供的软件形式实现。计算成本和硬件实现复杂度相比可忽略不计。
mach port
mach port是capability. 本质上和unix的pipe管道类似。是由系统内核(通常微内核)实现的不可伪造的通信管道。
这个port和我们平时的端口Port基本一致。端口其实可以理解为管道。就是一种能力,由内核提供,不可伪造。
每个port都关联了一个接收权限和一个或多个发送权限以及发送一次的权限。也就是有一个reciever,一个或多个sender(sender数组),是个单向通信通道。只有使用相应的port权限,才能访问port.这个由mach内核强制规定。
内核队列虽然可以存放很多消息,但也有满的时候。如果满了,则send操作被阻塞,直到队列有空间。(这个阻塞可以通过超时机制中断。中断后比如执行丢弃)
接收权指定一个队列,并授权队列持有者从队列中取出消息。创建群发权限和发送一次权限。
发送和一次发送权限指定一个队列,并授权保留将消息放入队列(在一次发送权限的情况下,是一条消息)。 使消息入队等效于调用功能。
port在没有权限绑定时,自动销毁。
端口全局唯一。
参考
https://www.gnu.org/software/hurd/capability.html
https://www.gnu.org/software/hurd/microkernel/mach/port.html
网友评论