24、SCI Sockets 库:功能、实现与优化

SCI Sockets 库:功能、实现与优化

1. 数据复制与接收缓冲

在数据传输过程中,接收方通常需要一个中间缓冲区。在传统的 TCP/IP 中,这个中间缓冲区位于内核空间;而在 SSLib 里,这个缓冲区是 RRB(Receive Ring Buffer)。避免额外复制数据的唯一情况是,接收方在数据到达之前就发起了接收调用并处于阻塞状态,这在相关文献中被称为接收预发布。但这种方式会使 SCI Sockets 的设计和实现变得复杂,并且每次接收调用都需要操作系统支持,这与低延迟的要求相悖。因此,数据总是通过 RRB 进行复制。

2. 连接建立

连接由 SSD(SCI Sockets Daemon)建立,需要区分 TCP 类和 UDP 类连接,即流套接字和数据报套接字。
- TCP 类连接 :两个节点上的应用程序分别调用 listen/accept 和 connect 函数。涉及的 SSLib 通知各自节点上的 SSD,SSD 通过预先建立的 DSM 段映射相互联系。每个 SSD 创建并导出一个 DSM 段(DSMS)来容纳用于数据接收的 RRB。交换一些信息(如创建的 DSMS 的 ID 和端口号)后,SSD 将信息传递给各自的应用程序(SSLib)。这些应用程序相互映射 DSMS,此时数据传输可以开始。早期的读写操作会推迟到这一步之后。整个过程仅基于 SCI 通信,不需要辅助的 TCP 连接。

以下是 TCP 连接建立的流程:

graph LR
    A[Application i] -->|connect()| 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值