==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== You can decompress Drawing data with the command palette: ‘Decompress current Excalidraw file’. For more info check in plugin settings under ‘Saving’

Excalidraw Data

Text Elements

设计数据结构 ^w0HsRYws

如何避免系统调用 ^kVIRlNRo

<- ^vMUqn9nW

如何减少数据拷贝 ^oYq7Ojvr

<- ^W1kb1r4j

1 ^CZwwcbIZ

2 ^guCqgMmg

class io_uring ^W4yYb9W8

实现算法 ^rX1Caviw

面试要点 ^UIuT07Io

  1. 能够解释 io_uring 的基本结构和工作原理 ^or32CkRs

  2. 理解它与传统同步 I/O 和 Linux AIO 的区别 ^PC77WZxh

  3. 能够分析其性能优势和适用场景 ^UQqcax3C

  4. 了解其实现中的关键技术点(共享内存、内存屏障、无锁编程等) ^HwxYgujK

  5. 能够讨论其在实际系统中的应用和潜在挑战 ^5GTCy0OS

通过对 io_uring 的深入理解,可以展示您对现代高性能 I/O 系统设计的掌握,这在架构面试中是非常有价值的 ^UaRVarTe

3 ^K0Ma2QLw

三个工作模式? ^kEunxRHU

<- ^bXuCQZcT

4 ^uA7q82AW

中断,轮询,内核轮询 ^f0GXCD26

<- ^NV9YQcPj

poll轮询机制代替中断驱动 ^DndzCZxD

Embedded Files

a529ac15077675f2559495029bfbdfdd589da17f: [[Pasted Image 20250613103540_367.svg]]

%%

Drawing

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
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

%%