Skip to content

Commit 9293ec4

Browse files
authored
Merge pull request #282 from kjasn/main
Fix typo in zero_copy.md
2 parents 1a60f6b + 406cdc9 commit 9293ec4

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

os/8_network_system/zero_copy.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ write(socket, tmp_buf, len);
7979
8080
我们回过头看这个文件传输的过程,我们只是搬运一份数据,结果却搬运了 4 次,过多的数据拷贝无疑会消耗 CPU 资源,大大降低了系统性能。
8181
82-
这种简单又传统的文件传输方式,存在冗余的上文切换和数据拷贝,在高并发系统里是非常糟糕的,多了很多不必要的开销,会严重影响系统性能。
82+
这种简单又传统的文件传输方式,存在冗余的上下文切换和数据拷贝,在高并发系统里是非常糟糕的,多了很多不必要的开销,会严重影响系统性能。
8383
8484
所以,**要想提高文件传输的性能,就需要减少「用户态与内核态的上下文切换」和「内存拷贝」的次数**。
8585
@@ -96,7 +96,7 @@ write(socket, tmp_buf, len);
9696
9797
而一次系统调用必然会发生 2 次上下文切换:首先从用户态切换到内核态,当内核执行完任务后,再切换回用户态交由进程代码执行。
9898
99-
所以,**要想减少上下文切换到次数,就要减少系统调用的次数**。
99+
所以,**要想减少上下文切换的次数,就要减少系统调用的次数**。
100100
101101
102102
@@ -243,7 +243,7 @@ sendfile 配置的具体意思:
243243

244244
我们都知道程序运行的时候,具有「局部性」,所以通常,刚被访问的数据在短时间内再次被访问的概率很高,于是我们可以用 **PageCache 来缓存最近被访问的数据**,当空间不足时淘汰最久未被访问的缓存。
245245

246-
所以,读磁盘数据的时候,优先在 PageCache 找,如果数据存在则可以直接返回;如果没有,则从磁盘中读取,然后缓存 PageCache 中。
246+
所以,读磁盘数据的时候,优先在 PageCache 找,如果数据存在则可以直接返回;如果没有,则从磁盘中读取,然后缓存到 PageCache 中。
247247

248248
还有一点,读取磁盘数据的时候,需要找到数据所在的位置,但是对于机械磁盘来说,就是通过磁头旋转到数据所在的扇区,再开始「顺序」读取数据,但是旋转磁头这个物理动作是非常耗时的,为了降低它的影响,**PageCache 使用了「预读功能」**
249249

0 commit comments

Comments
 (0)