برای کار با io توی لینوکس از سیستم کال استفاده میکنیم. یه دسته از این سیستمکال ها io_uring نام دارن که به ما امکان پروسس async رو میدن. خلاصهش به این شکله که دو تا صف حلقوی مشترک بین user space و kernel space داریم که توی یکی درخواست های io رو مینویسیم و نتیجه توی یک صف دیگه قرار میگیره.
نکته جالب اول اینه که میتونیم چند تا درخواست رو بنویسیم و بعد به kernel بگیم همه رو پردازش کن و یه حالت batching پیش میاد.
نکته جالب دوم اینه که میتونیم به کرنل بگیم که خودت به شکل polling صف درخواستها رو بررسی کن و خودت کار رو شروع کن، بدون این که حتی نیاز باشه سیستمکال بزنیم. البته که برای همهی برنامهها میتونه مناسب نباشه چون پردازنده رو درگیر میکنه.
https://unixism.net/loti/what_is_io_uring.html
Post #3234
2.65K
- 👎 20
- 👍 9
- 😁 1
- 🤬 1