多路复用是一种技术,允许多个输入或输出流共享一个单一的通信信道或计算资源。通过多路复用,多个数据流可以同时在同一个通道上传输,提高了通信效率和资源利用率。
在计算机网络中,多路复用常用于实现同时传输多个数据流,避免资源浪费和提高传输效率。常见的多路复用技术包括:
-
时分多路复用(TDM):将时间分割成若干个时隙,不同数据流在不同时隙传输,实现多路复用。在传统的电话通信中广泛应用
-
频分多路复用(FDM):将信道分成不同的频率带宽,每个数据流占据不同的频率带宽进行传输。在移动通信,卫星通信,广播电视上广泛应用
-
码分多路复用(CDM):通过不同的编码技术将不同数据流区分开来,实现多路复用。移动网络,无线局域网,蓝牙中应用广泛
-
波分多路复用(WDM):利用不同波长的光信号在同一光纤中传输多个数据流。海底通信,城域网,长途通信中应用广泛
多路复用技术在通信领域广泛应用,能够提高通信效率、降低成本,并且能够满足多个用户同时访问同一资源的需求。
扩展: 多路复用的select和epoll的区别
多路复用的select和epoll都是用于处理大量并发连接的网络I/O模型
不同点:
-
底层实现:
select
是基于轮询的机制,它通过遍历文件描述符集合来检查哪些文件描述符可以进行 I/O 操作。而epoll
是基于事件通知的机制,它通过注册文件描述符并等待事件的发生来进行 I/O 操作。 -
性能:由于
epoll
采用了事件通知的机制,因此在处理大量文件描述符时具有更高的性能。它不需要遍历整个文件描述符集合,只需要关注发生了事件的文件描述符,从而减少了无谓的系统开销。 -
最大文件描述符数量:
select
的最大文件描述符数量通常受到系统限制,一般为 1024 或 2048。而epoll
没有这个限制,可以处理大量的文件描述符。 -
水平触发和边缘触发:
select
支持水平触发模式,即只要文件描述符可读或可写,就会触发事件。而epoll
支持水平触发和边缘触发两种模式,边缘触发模式只在文件描述符发生状态变化时触发事件。 -
可扩展性:
epoll
提供了更多的可扩展性,例如通过EPOLL_CTL_ADD
和EPOLL_CTL_MOD
等函数可以动态地添加、修改和删除文件描述符的关注事件。