Skip to content

如何拓展lazy_io的范围 #93

@wangzhankun

Description

@wangzhankun

我今天在学习io_uring时,发现其设计与我在用户态实现的异步IO几乎完全一致。进程间的异步IO是为了实现异步远程函数调用:

  1. 在两个进程之间通过共享内存的方式传输数据
  2. 共享内存被分为两个区域,A进程可读可写但B进程只读(类似io_uring的SQ);A进程可读但B进程可读可写(类似io_uring的CQ)
  3. 这两个队列是单生产者、单消费者模型,提供无锁接口,内部使用内存屏障做同步
  4. 当A进程发起RPC时,需要将参数以及要调用的函数ID写入到共享内存中,B进程在通过某种方法监测到有调用发生时,就会从共享内存中提取数据然后调用函数,之后将函数返回值写入到CQ
  5. A进程与B进程可以通过用户态中断(可以理解为signal机制,但是不需要Linux 内核参与,而是硬件实现的跨核中断)相互进行通知。(这样实现出来的就类似于io_uring的中断驱动机制)
  6. A进程和B进程也可以通过轮询的方法监测共享内存,类似于io_uring的轮询模式
  7. A进程异步,B进程轮询监测内存,类似于io_uring的内核轮询模式

请问我该如何适配co_context,时其支持我的设计方案呢?如果您方便的话,我想参考一下您的论文,如果不方便公开的话,可以发送到我的邮箱:bitwangzhankun@gmail.com

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions