1 前置知识
1.1 socket是什么?
就是传输控制层tcp连接通信。
1.2 fd是什么? fd既file descriptor-文件描述符。Java中用对象代表输入输出流等...在Linux系统中不是面向对象的,是一切皆文件的,拿文件来代表输入输出流。其实是一个数值,例如1,2,3,4...0是标准输入,1是标准输出,2是错误输出...
相关视频讲解:
任何进程在操作系统中都有自己IO对应的文件描述符,参考如下:
[root@iZj6c1dib207c054itjn30Z ~]# ps -ef | grep redis
root 20688 1 0 Nov23 ? 00:01:01 /opt/redis/bin/redis-server 127.0.0.1:6379
root 20786 1 0 Nov23 ? 00:01:00 /opt/redis/bin/redis-server 127.0.0.1:6380
root 30741 30719 0 12:26 pts/1 00:00:00 grep --color=auto redis
[root@iZj6c1dib207c054itjn30Z ~]# cd /proc/20688/fd
[root@iZj6c1dib207c054itjn30Z fd]# ll
total 0
lrwx------ 1 root root 64 Nov 23 21:50 0 -> /dev/null
lrwx--

本文介绍了网络IO的发展历程,从传统的BIO讲到NIO和Epoll。BIO在高并发下存在线程阻塞问题,而NIO通过非阻塞IO减少切换损耗。Epoll进一步优化,利用mmap实现用户态和内核态共享,降低了通信成本。Epoll广泛应用于高性能服务器如redis和nginx。
最低0.47元/天 解锁文章
585

被折叠的 条评论
为什么被折叠?



