io_uring
·
[ Laboratory ]/Advanced Operating System
io_uring은 syscall을 최대한 줄이고, 모든 I/O를 async하게 수행하고, 유저와 커널이 공유하는 ring buffer를 통해서 I/O를 교환한다. 두 개의 queue를 ring buffer로 사용하는데 SQ = submission queue에는 유저 프로그램이 이런 io를 해달라고 요청을 적는 공간이고 CQ = completion queue에는 커널이 I/O 끝났다고 완료 결과를 적는 공간이다. mmap으로 유저와 커널이 syscall 없이도 공유할 수 있다. 유저 스페이스에서 SQ entry들을 SQ에 push하면한 번의 syscall로 커널에 요청 처리 시작을 알리고 커널이 I/O를 수행하게 된다.완료되면 CQE가 CQ에 기록되고 유저는 CQ에서 바로 읽어서 결과를 확인할 수 있기 ..