精华内容
下载资源
问答
  • 2021-07-27 08:22:53

    多路复用技术是把多个低速信道组合成一个高速信道的技术,它可以有效的提高数据链路的利用率,从而使得一条高速的主干链路同时为多条低速的接入链路提供服务,也就是使得网络干线可以同时运载大量的语音和数据传输。多路复用技术是为了充分利用传输媒体,人们研究了在一条物理线路上建立多个通信信道的技术。多路复用技术的实质是,将一个区域的多个用户数据通过发送多路复用器进行汇集,然后将汇集后的数据通过一个物理线路进行传送,接收多路复用器再对数据进行分离,分发到多个用户。多路复用通常分为频分多路复用、时分多路复用、波分多路复用、码分多址和空分多址。

    中文名

    多路复用技术分    类

    通信

    应    用

    数据传输

    多路复用技术基本信息

    编辑

    语音

    我们平时上网最常用的电话线就采取了多路复用技术,所以你在上网的时候,家人也可以打电话了。

    多路复用最常用的两个设备是:

    多路复用技术多路复用器

    在发送端根据约定规则把多个低带宽信号复合成一个高带宽信号;

    多路复用技术多路分配器

    根据约定规则再把高带宽信号分解为多个低带宽信号。这两种设备统称为多路器(MUX)。

    常见的多路复用技术包括频分多路复用(FDM)、时分多路复用(TDM)、波分多路复用(WDM)和码分多路复用(CDMA)其中时分多路复用又包括同步时分复用和统计时分复用。.

    多路复用技术技术分类

    编辑

    语音

    多路复用技术频分多路复用

    频分多路复用技术FDM(Frequency Division Multiplexing)。

    频分多路复用利用通信线路的可用带宽超过了给定的带宽这一优点。频分多路复用的基本原理是:如果每路信号以不同的载波频率进行调制,而且各个载波频率是完全独立的,即各个信道所占用的频带不相互重叠,相邻信道之间用“警戒频带”隔离,那么每个信道就能独立地传输一路信号。

    频分多路复用的主要特点是,信号被划分成若干通道(频道,波段),每个通道互不重叠,独立进行数据传递。每个载波信号形成一个不重叠、相互隔离(不连续)的频带。接收端通过带通滤波器来分离信号。频分多路复用在无线电广播和电视领域中的应用较多。ADSL也是一个典型的频分多路复用。ADSL用频分多路复用的方法,在PSTN使用双绞线上划分出三个频段:0~4kHz用来传送传统的语音信号;20~50kHz用来传送计算机上载的数据信息;150~500kHz或140~1100kHz用来传送从服务器上下载的数据信息。

    多路复用技术时分多路复用

    时分多路复用技术TDM(Time Division Multiplexing)

    时分多路复用是以信道传输时间作为分割对象,通过为多个信道分配互不重叠的时间片段的方法来实现多路复用。时分多路复用将用于传输的时间划分为若干个时间片段,每个用户分得一个时间片。时分多路复用通信,是各路信号在同一信道上占有不同时间片进行通信。由抽样理论可知,抽样的一个重要作用,是将时间上连续的信号变成时间上的离散信号,其在信道上占用时间的有限性,为多路信号沿同一信道传输提供条件。具体说就是把时间分成一些均匀的时间片,通过同步(固定分配)或统计(动态分配)的方式,将各路信号的传输时间配分在不同的时间片,以达到互相分开,互不干扰的目的。

    至2011年9月,应用最广泛的时分多路复用是贝尔系统的T1载波。T1载波是将24路音频信道复用在一条通信线路上,每路音频信号在送到多路复用器之前,要通过一个脉冲编码调制编码器,编码器每秒抽样8000次。24路信号的每一路,轮流将一个字节插入到帧中,每个字节的长度为8位,其中7位是数据位,1位用于信道控制。每帧由24×8=192位组成,附加1bit作为帧的开始标志位,所以每帧共有193bit。由于发送一帧需要125us,一秒钟可以发送8000帧。因此T1载波数据传输速率为:

    193bit×8000=1544000bps=1544Kbps=1.544Mbps

    多路复用技术波分多路复用

    波分多路复用技术WDM(Wavelength Division Multiplexing)

    波分复用用同一根光纤内传输多路不用波长的光信号,以提高单根光纤的传输能力。因为光通信的光源在光通信的“窗口”上只占用了很窄的一部分,还有很大的范围没有利用。

    也可以这样认为WDM是FDM应用于光纤信道的一个变例。如果让不用波长的光信号在同一根光纤上传输而互不干扰,利用多个波长适当错开的光源同时在一根光纤上传送各自携带的信息,就可以增加所传输的信息容量。由于是用不同的波长传送各自的信息,因此即使在同一根光纤上也不会相互干扰。在接收端转换成电信号时,可以独立地保持每个不同波长的光源所传送的信息。这种方式就叫做“波分复用”。

    如果将一系列载有信息的不同波长的光载波,在光领域内以1至几百纳米的波长间隔合在一起沿单根光纤传输,在接收器再一一定的方法,将各个不同波长的光载波分开。在光纤上的工作窗口上安排100个波长不同的光源,同时在一根光纤上传送各自携带的信息,就能使光纤通信系统的容量提高100倍。

    多路复用技术码分多址

    码分多址技术CDMA(Code Division Multiple Access)

    码分多址是采用地址码和时间、频率共同区分信道的方式。CDMA的特征是个每个用户有特定的地址码,而地址码之间相互具有正交性,因此各用户信息的发射信号在频率、时间和空间上都可能重叠,从而使用有限的频率资源得到利用。

    CDMA是在扩频技术上发展起来的无线通信技术,即将需要传送的具有一定信号带宽的信息数据,从一个带宽远大于信号带宽的高速伪随机码进行调制,使原数据信号的带宽被扩展,再经载波调制并发送出去。接收端也使用完全相同的伪随机码,对接受的带宽信号作相关处理,把宽带信号换成原信息数据的窄带信号即解扩,以实现信息通信。

    不同的移动台(或手机)可以使用同一个频率,但是每个移动台(或手机)都被分配带有一个独特的“码序列”,该序列码与所有别的“序列码”都不相同,因为是靠不同的“码序列”来区分不同的移动台(或手机),所以各个用户相互之间也没有干扰从而达到了多路复用的目的。

    多路复用技术空分多址

    空分多址技术SDMA(Space Division Multiple Access)

    这种技术是将空间分割构成不同的信道,从而实现频率的重复使用,达到信道增容的目的。举例来说,在一个卫星上使用多个天线,各个天线的波束射向地球表面的不同区域地面上不同区域的地球站,他们在同一时间,即使用相同的频率进行工作,它们之间也不会形成干扰。SDMA系统的处理程序如下:

    1、系统将首先对来自所有天线中的信号进行快照或取样,然后将其转换成数字形式,并存储在内存中。

    2、计算机中的SDMA处理器将立即分析样本,对无线环境进行评估,确认用户、干扰源及所在的位置。

    3、处理器对天线信号的组合方式进行计算,力争最佳地恢复用户的信号。借助这种策略,每位用户的信号接收质量将提高,而其他用户的信号或干扰信号则会遭到屏蔽。

    4、系统进行模拟计算,使天线阵列可以有选择地向空间发送信号。再次在此基础上,每位用户的信号都可以通过单独的通信信道空间-空间信道实现高效的传输。

    5、在上述处理的基础上,系统就能够在每条空间信道上发送和接受信号,从而使这些信号称为双向信道。

    利用上述流程,SDMA系统就能够在一条普通信道上创建大量的频分、时分或码分双向空间信道,没一条信道扣可以完全活的整个阵列的增益和抗干扰功能。从理论上而言,带m个单元的阵列能够在每条普通行道上支持m条空间信道。但在实际应用中支持的信道数量将略低于这个数目,具体情况则取决于环境。由此可见,SDMA系统可使系统容量成倍增加,使得系统在有限的频谱内可以支持更多的用户,从而成倍的提高频谱使用效率。

    自2011年9月,近几十年来,无线通信经历了从模拟到数字,从固定到移动的重大变革。而就移动通信而言,为了更有效地利用有限的无线频率资源,时分多址技术(TDMA)、频分多址技术(FDMA)、码分多址技术(CDMA)得到了广泛的应用,并在此基础上建立了GSM和CDMA(是区别于3G的窄带CDMA)两大主要的移动通信网络。就技术而言,现有的这三种多址技术已经得到了充分的应用,频谱的使用效率已经发挥到了极限。空分多址技术(SDMA)则突破了传统的三维思维模式,在传统的三维技术的基础上,在第四维空间上极大地拓宽了频谱的使用方式,使用移动用户仅仅由于空间位置的不同而复用同一个传统的物理信道称为可能,并将移动通信技术引入了一个更为崭新的领域。[1]

    多路复用技术采用原因

    编辑

    语音

    一是通信工程中用于通信线路架设的费用相当高,需要充分利用通信线路的容量;二是网络中传输介质的传输容量都会超过单一信道传输的通信量,为了充分利用传输介质的带宽,需要在一条物理线路上建立多条通信信道。

    多路复用技术基本原理

    编辑

    语音

    FDM、TDM、WDM、CDMA的基本原理

    频分多路复用的基本原理是在一条通信线路上设置多个信道,每路信道的信号以不同的载波频率进行调制,各路信道的载波频率互不重叠,这样一条通信线路就可以同时传输多路信号。

    时分多路复用是以信道传输时间作为分割对象,通过多个信道分配互不重叠的时间片的方法来实现,因此时分多路复用更适用于数字信号的传输。它又分为同步时分多路复用和统计时分多路复用。

    波分多路复用是光的频分多路复用,它是在光学系统中利用衍射光栅来实现多路不同频率光波信号的合成与分解。

    码分多路复用也是一种共享信道的方法,每个用户可在同一时间使用同样的频带进行通信,但使用的是基于码型的分割信道的方法,即每个用户分配一个地址码,各个码型互不重又叠,通信各方之间不会相互干扰,且抗干扰能力强.码分多路复用技术主要用于无线通信系统,特别是移动通信系统.它不仅可以提高通信的话音质量和数据传输的可靠性以及减少干扰对通信的影响,而且增大了通信系统的容量.笔记本电脑或个人数字助理(Personal Data Assistant, PDA) 以及掌上电脑(Handed Personal COmputer,HPC)等移动性计算机的联网通信就是使用了这种技术。

    参考资料

    1.

    严体华 张志新 主编 网络管理员教程 清华大学出版社 第9-13页

    更多相关内容
  • 该项目的想法不是要创建可调节的可编程LED多路复用器设备,而是要学习开发可制造(即在工厂中)消费电子设备所需的过程和裸机电子技术以及软件技能。我选择了LED多路复用器作为一个电路,该电路很简单,不会妨碍实现...
  • 8、多路复用技术

    2021-06-24 15:11:01
    多路复用技术 先从字面上来理解,多路复用,大概的意思就是,把多路来源的信号通过一定的技术处理,让它们在同一条信道上传输而不产生相互的干扰。 我们想象这样一种情况,有6个用户,用户1、用户2、用户3,分别要...

    这一节,我们介绍信道的多路复用,作为数据通信基础的收尾知识点,这个知识点并没有特别复杂的地方,主要是理解不同的复用技术的特点,在一些考试中也没有多少考点,或者说不做重点。


    多路复用技术

    先从字面上来理解,多路复用,大概的意思就是,把多路来源的信号通过一定的技术处理,让它们在同一条信道上传输而不产生相互的干扰。

    我们想象这样一种情况,有6个用户,用户1、用户2、用户3,分别要和用户4、用户5、用户6进行通信,那么在用户1和4、2和5、3和6之间都要单独使用一条信道,这样总共就需要三条信道。

    虽然上面的例子,看起来没有不合理的地方,但是如果用户数不止6个呢,有10个、20个、30个,那么总共算起来就需要十几条信道了,如果用户数量更多,那么需要的信道也就更多了,如果这其中有某几对用户,需要通信的次数很少,那么他们之间的这条信道资源就被浪费了。

    所以,针对这种问题,提出了多路复用的解决方案,就是在发送端使用一个复用器,把多路来源的信号复用到一起,让多个用户合起来使用一个共享信道进行通信,在接收端使用一个分用器,把合起来传输的信息分别送到相应的目的端

    当然也不是所有情况下都要复用,复用技术适合用在用户数很多,也就是信号来源很多的情况下。如果就只有两对用户要通信,还要安装专门的复用器、分用器、共享信道,付出的费用代价就得不偿失了。

    下面我们介绍常见的多路复用技术,理解它们的特点。


    频分复用(FDM)

    频分复用技术是最简单的复用方法,它的基本思想是:把一条共享的信道,按照频率范围划分为多个固定的频带,每个频带都有固定的频率范围。用户在分配到一定的频带后,在通信过程中自始至终都占用这个频带。

    时分复用(TDM)

    时分复用技术是基于时间片对信道进行划分的,将时间划分为一段段等长的TDM帧,每一个时分复用的用户在每一个TDM帧中占用固定序号的时间片,每一个用户所占用的时间片周期性的在信道上出现

    如果感觉理解不了上面那段话,可以这样想象:有4个用户,他们每个人都占用共享信道上一毫秒的时间片,第一个毫秒的时候,用户1发送一个数据,第二毫秒的时候轮到用户2发送,以此类推,到第5毫秒的时候就又轮回来,用户1、用户2……

    下面,我们给出示意图,观察FDM和TDM技术:

    统计时分复用(STDM)

    STDM是在TDM技术的基础上发展而来的,主要是解决了TDM技术的一个弊端。

    在TDM的思想中,每个用户都占有一个等长的时间片,轮流使用信道资源,但是计算机发送数据有一个特点叫突发性,或者叫异步性,就是说用户也不能确定在什么时候发送一次数据,这样的话,如果在一段时间内,某个用户没有数据要发送,而在属于此用户使用时间之内,其它用户也不能抢占这个资源,那么分配给此用户的时间片资源就被浪费了。

    针对这个弊端,提出了统计时分复用,各用户准备好要发送数据之后,随时就可以发往复用器中的缓存,然后复用器依次扫描缓存,把缓存中的数据放入STDM帧中,对没有用户数据的缓存就跳过去,等到一个STDM帧放慢了数据,就放到信道上发送出去

    因此,我们看出,STDM帧不是固定分配时间片,而是按需动态分配时间片,大大提高了信道的利用率

    波分复用(WDM)

    波分复用是针对于光纤介质专用的复用技术,是利用光波的不同波长来划分信道的。在波分复用中,用到的设备被称作光复用器和光分用器,或者称为合波器、分波器。

    随着光纤线路的普及,波分复用技术也随之发展,最初人们只能在一根光纤上复用两路光信号,后来可以做到复用几十路甚至更多,我们把这种称作密集波分复用(DWDM),被广泛应用到各个领域。

    关于多路复用技术,我们就先介绍这么多,其实还有其它的复用技术,我们以后放到无线网专栏中再详细的学习。至此,数据通信基础知识已经全部讲完,下一节我们将开启TCP/IP的最底层——物理层的知识学习。


    参考教材:谢希仁《计算机网络》第七版

    展开全文
  • Java IO多路复用技术详解

    万次阅读 2017-04-28 09:49:58
    服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种: (1)同步阻塞IO(Blocking IO):即传统的IO模型。 (2)同步非阻塞IO(Non-blocking IO):默认创建的...(3)IO多路复用(IO Multiplexi

    服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种:

    (1)同步阻塞IO(Blocking IO):即传统的IO模型。

    (2)同步非阻塞IO(Non-blocking IO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的NIO并非Java的NIO(New IO)库。

    (3)IO多路复用(IO Multiplexing):即经典的Reactor设计模式,有时也称为异步阻塞IO,Java中的Selector和Linux中的epoll都是这种模型。

    (4)异步IO(Asynchronous IO):即经典的Proactor设计模式,也称为异步非阻塞IO。

     

    同步和异步的概念描述的是用户线程与内核的交互方式:同步是指用户线程发起IO请求后需要等待或者轮询内核IO操作完成后才能继续执行;而异步是指用户线程发起IO请求后仍继续执行,当内核IO操作完成后会通知用户线程,或者调用用户线程注册的回调函数。

    阻塞和非阻塞的概念描述的是用户线程调用内核IO操作的方式:阻塞是指IO操作需要彻底完成后才返回到用户空间;而非阻塞是指IO操作被调用后立即返回给用户一个状态值,无需等到IO操作彻底完成。

     

    另外,Richard Stevens 在《Unix 网络编程》卷1中提到的基于信号驱动的IO(Signal Driven IO)模型,由于该模型并不常用,本文不作涉及。接下来,我们详细分析四种常见的IO模型的实现原理。为了方便描述,我们统一使用IO的读操作作为示例。

     

    一、同步阻塞IO

     

    同步阻塞IO模型是最简单的IO模型,用户线程在内核进行IO操作时被阻塞。

    图1 同步阻塞IO

    如图1所示,用户线程通过系统调用read发起IO读操作,由用户空间转到内核空间。内核等到数据包到达后,然后将接收的数据拷贝到用户空间,完成read操作。

    用户线程使用同步阻塞IO模型的伪代码描述为:

    {

    read(socket, buffer);

    process(buffer);

    }

    即用户需要等待read将socket中的数据读取到buffer后,才继续处理接收的数据。整个IO请求的过程中,用户线程是被阻塞的,这导致用户在发起IO请求时,不能做任何事情,对CPU的资源利用率不够。

     

    二、同步非阻塞IO

     

    同步非阻塞IO是在同步阻塞IO的基础上,将socket设置为NONBLOCK。这样做用户线程可以在发起IO请求后可以立即返回。

     

    图2 同步非阻塞IO

    如图2所示,由于socket是非阻塞的方式,因此用户线程发起IO请求时立即返回。但并未读取到任何数据,用户线程需要不断地发起IO请求,直到数据到达后,才真正读取到数据,继续执行。

    用户线程使用同步非阻塞IO模型的伪代码描述为:

    {

    while(read(socket, buffer) != SUCCESS)

    ;

    process(buffer);

    }

    即用户需要不断地调用read,尝试读取socket中的数据,直到读取成功后,才继续处理接收的数据。整个IO请求的过程中,虽然用户线程每次发起IO请求后可以立即返回,但是为了等到数据,仍需要不断地轮询、重复请求,消耗了大量的CPU的资源。一般很少直接使用这种模型,而是在其他IO模型中使用非阻塞IO这一特性。

     

    三、IO多路复用

    IO多路复用模型是建立在内核提供的多路分离函数select基础之上的,使用select函数可以避免同步非阻塞IO模型中轮询等待的问题。

    图3 多路分离函数select

    如图3所示,用户首先将需要进行IO操作的socket添加到select中,然后阻塞等待select系统调用返回。当数据到达时,socket被激活,select函数返回。用户线程正式发起read请求,读取数据并继续执行。

    从流程上来看,使用select函数进行IO请求和同步阻塞模型没有太大的区别,甚至还多了添加监视socket,以及调用select函数的额外操作,效率更差。但是,使用select以后最大的优势是用户可以在一个线程内同时处理多个socket的IO请求。用户可以注册多个socket,然后不断地调用select读取被激活的socket,即可达到在同一个线程内同时处理多个IO请求的目的。而在同步阻塞模型中,必须通过多线程的方式才能达到这个目的。

    用户线程使用select函数的伪代码描述为:

    {

    select(socket);

    while(1) {

    sockets = select();

    for(socket in sockets) {

    if(can_read(socket)) {

    read(socket, buffer);

    process(buffer);

    }

    }

    }

    }

    其中while循环前将socket添加到select监视中,然后在while内一直调用select获取被激活的socket,一旦socket可读,便调用read函数将socket中的数据读取出来。

     

    然而,使用select函数的优点并不仅限于此。虽然上述方式允许单线程内处理多个IO请求,但是每个IO请求的过程还是阻塞的(在select函数上阻塞),平均时间甚至比同步阻塞IO模型还要长。如果用户线程只注册自己感兴趣的socket或者IO请求,然后去做自己的事情,等到数据到来时再进行处理,则可以提高CPU的利用率。

    IO多路复用模型使用了Reactor设计模式实现了这一机制。

    图4 Reactor设计模式

    如图4所示,EventHandler抽象类表示IO事件处理器,它拥有IO文件句柄Handle(通过get_handle获取),以及对Handle的操作handle_event(读/写等)。继承于EventHandler的子类可以对事件处理器的行为进行定制。Reactor类用于管理EventHandler(注册、删除等),并使用handle_events实现事件循环,不断调用同步事件多路分离器(一般是内核)的多路分离函数select,只要某个文件句柄被激活(可读/写等),select就返回(阻塞),handle_events就会调用与文件句柄关联的事件处理器的handle_event进行相关操作。

    图5 IO多路复用

    如图5所示,通过Reactor的方式,可以将用户线程轮询IO操作状态的工作统一交给handle_events事件循环进行处理。用户线程注册事件处理器之后可以继续执行做其他的工作(异步),而Reactor线程负责调用内核的select函数检查socket状态。当有socket被激活时,则通知相应的用户线程(或执行用户线程的回调函数),执行handle_event进行数据读取、处理的工作。由于select函数是阻塞的,因此多路IO复用模型也被称为异步阻塞IO模型。注意,这里的所说的阻塞是指select函数执行时线程被阻塞,而不是指socket。一般在使用IO多路复用模型时,socket都是设置为NONBLOCK的,不过这并不会产生影响,因为用户发起IO请求时,数据已经到达了,用户线程一定不会被阻塞。

    用户线程使用IO多路复用模型的伪代码描述为:

    void UserEventHandler::handle_event() {

    if(can_read(socket)) {

    read(socket, buffer);

    process(buffer);

    }

    }

     

    {

    Reactor.register(new UserEventHandler(socket));

    }

    用户需要重写EventHandler的handle_event函数进行读取数据、处理数据的工作,用户线程只需要将自己的EventHandler注册到Reactor即可。Reactor中handle_events事件循环的伪代码大致如下。

    Reactor::handle_events() {

    while(1) {

    sockets = select();

    for(socket in sockets) {

    get_event_handler(socket).handle_event();

    }

    }

    }

    事件循环不断地调用select获取被激活的socket,然后根据获取socket对应的EventHandler,执行器handle_event函数即可。

    IO多路复用是最常使用的IO模型,但是其异步程度还不够“彻底”,因为它使用了会阻塞线程的select系统调用。因此IO多路复用只能称为异步阻塞IO,而非真正的异步IO。

     

    四、异步IO

     

    “真正”的异步IO需要操作系统更强的支持。在IO多路复用模型中,事件循环将文件句柄的状态事件通知给用户线程,由用户线程自行读取数据、处理数据。而在异步IO模型中,当用户线程收到通知时,数据已经被内核读取完毕,并放在了用户线程指定的缓冲区内,内核在IO完成后通知用户线程直接使用即可。

    异步IO模型使用了Proactor设计模式实现了这一机制。

    图6 Proactor设计模式

    如图6,Proactor模式和Reactor模式在结构上比较相似,不过在用户(Client)使用方式上差别较大。Reactor模式中,用户线程通过向Reactor对象注册感兴趣的事件监听,然后事件触发时调用事件处理函数。而Proactor模式中,用户线程将AsynchronousOperation(读/写等)、Proactor以及操作完成时的CompletionHandler注册到AsynchronousOperationProcessor。AsynchronousOperationProcessor使用Facade模式提供了一组异步操作API(读/写等)供用户使用,当用户线程调用异步API后,便继续执行自己的任务。AsynchronousOperationProcessor 会开启独立的内核线程执行异步操作,实现真正的异步。当异步IO操作完成时,AsynchronousOperationProcessor将用户线程与AsynchronousOperation一起注册的Proactor和CompletionHandler取出,然后将CompletionHandler与IO操作的结果数据一起转发给Proactor,Proactor负责回调每一个异步操作的事件完成处理函数handle_event。虽然Proactor模式中每个异步操作都可以绑定一个Proactor对象,但是一般在操作系统中,Proactor被实现为Singleton模式,以便于集中化分发操作完成事件。

    图7 异步IO

    如图7所示,异步IO模型中,用户线程直接使用内核提供的异步IO API发起read请求,且发起后立即返回,继续执行用户线程代码。不过此时用户线程已经将调用的AsynchronousOperation和CompletionHandler注册到内核,然后操作系统开启独立的内核线程去处理IO操作。当read请求的数据到达时,由内核负责读取socket中的数据,并写入用户指定的缓冲区中。最后内核将read的数据和用户线程注册的CompletionHandler分发给内部Proactor,Proactor将IO完成的信息通知给用户线程(一般通过调用用户线程注册的完成事件处理函数),完成异步IO。

    用户线程使用异步IO模型的伪代码描述为:

    void UserCompletionHandler::handle_event(buffer) {

    process(buffer);

    }

     

    {

    aio_read(socket, new UserCompletionHandler);

    }

    用户需要重写CompletionHandler的handle_event函数进行处理数据的工作,参数buffer表示Proactor已经准备好的数据,用户线程直接调用内核提供的异步IO API,并将重写的CompletionHandler注册即可。

    相比于IO多路复用模型,异步IO并不十分常用,不少高性能并发服务程序使用IO多路复用模型+多线程任务处理的架构基本可以满足需求。况且目前操作系统对异步IO的支持并非特别完善,更多的是采用IO多路复用模型模拟异步IO的方式(IO事件触发时不直接通知用户线程,而是将数据读写完毕后放到用户指定的缓冲区中)。Java7之后已经支持了异步IO,感兴趣的读者可以尝试使用。

    展开全文
  • 多路复用和多路分解

    2021-07-14 13:41:22
    我们知道,传输层位于端系统之间,在应用程序与网络接口之间要进行多路复用的功能,让应用层传下来的数据在传输层之间要进行多路复用,到了另一端之后,网络层的数据传到了传输层之后要进行多路分解,将分解后的数据...

    我们知道,传输层位于端系统之间,在应用程序与网络接口之间要进行多路复用的功能,让应用层传下来的数据在传输层之间要进行多路复用,到了另一端之后,网络层的数据传到了传输层之后要进行多路分解,将分解后的数据传入应用层。如下图所示:
    在这里插入图片描述
    那么到底是如何进行多路复用与多路分解的呢?
    在接收主机多路分解:将接收到的数据段传递到正确的套接字。
    在发送主机多路复用:从多个套接字收集数据,用首部封装数据,然后将报文段传递到网络层。
    过程如图所示:
    在这里插入图片描述
    多路分解如何工作呢?
    (1)主机收到IP数据报:每个数据报有源IP地址、目的IP地址,每个数据报搬运一个数据段,每个数据段有源端口号和目的端口号。
    (2)主机用IP地址的端口号指明数据段属于哪个合适的套接字。
    TCP/UDP报文段格式如下图所示:
    在这里插入图片描述

    一、无连接多路分解

    分解的过程中有无连接的多路分解。
    (1)用端口号创建套接字:
    DatagramSocket ServerSocket1=new DatagramSocket (9911);
    DatagramSocket ServerSocket2=new DatagramSocket (9922)
    UDP套接字由目的IP地址和目的端口号指定
    (2)当主机收到UDP数据段时检查数据段中的目的端口号,用端口号指示UDP数据段属于哪个套接字。
    (3)具有不同的源IP地址且/或源端口号,但具有相同目的的IP地址和目的端口号的IP数据报指向同样的套接字。
    详细过程如图所示:
    在这里插入图片描述

    二、面向连接的多路分解

    面向连接的多路分解中TCP套接字由4部分指定,分别为源IP地址、源端口号、目的IP地址和目的端口号。
    接收主机使用所有的4个值将数据段定位到合适的套接字。
    服务器主机支持很多同时使用的TCP套接字,每个套接字都用4部分来表示。Web服务器对每个连接的客户都有不同的套接字;非持久HTTP将对每个请求有一个不同的套接字。
    面向连接多路分解过程图如下:
    在这里插入图片描述

    展开全文
  • 多路复用技术(Multiplexing) 数据通信系统或计算机网络系统中,传输媒体的带宽或容量往往会大于传输单一信号的需求,为了有效地利用通信线路,希望一个信道同时传输多路信号,这就是所谓的多路复用技术...
  • 文章目录1 Redis为什么是单线程的1.1 官方解释1.2 Redis单线程优势1.3 Redis 不仅仅是单线程1.4 Redis的性能瓶颈2 IO多路复用2.1 文件描述符和文件句柄2.2 什么是IO多路复用?2.3 Redis的IO多路复用3 多线程IO多路...
  • TCP/IP多路复用

    千次阅读 2021-02-28 17:08:43
    所有网络通信的本质目标就是...因此这里需要用到一个叫作多路复用(Multiplex)的技术多路复用,就是多个信号,复用一个信道。 传输层多路复用 多个请求复用一个 TCP 连接。 多个请求相当于并行的发送请求。即使其
  • Redis I/O 多路复用

    万次阅读 多人点赞 2019-05-19 19:18:01
    为什么 Redis 中要使用 I/O 多路复用这种技术呢? 首先,Redis 是跑在单线程中的,所有的操作都是按照顺序线性执行的,但是由于读写操作等待用户输入或输出都是阻塞的,所以 I/O 操作在一般情况下往往不能直接返回...
  • 一文带你看懂多路复用与多路分解

    千次阅读 多人点赞 2020-04-16 08:14:49
    写在前面:这里是小王成长日志,一名普通在校大学生,想成学习之余将自己的学习笔记分享出来,记录自己的成长轨迹,帮助可能需要的人,平时博客内容主要是一些系统的学习笔记,项目实战笔记,一些技术的探究和自己的...
  • CSI笔记【2】:正交频分多路复用技术/OFDM相关知识与例子(MATLAB实现)。
  • NAT与PAT端口多路复用

    千次阅读 2022-03-15 20:16:06
    文章目录 NAT是什么 NAT概述 NAT的功能与分类 NAT工作原理 NAT的优缺点 NAT实现方式 PAT端口多路复用 PAT端口多路复用概述 PAT类型 总结 NAT是什么 NAT概述 NAT(Network Address Translation):又称为网络地址转换...
  • 答应我,这次搞懂 I/O 多路复用

    千次阅读 多人点赞 2021-04-12 13:46:45
    这次,我们以最简单 socket 网络模型,一步一步的过度到 I/O 多路复用。 但我不会具体细节说到每个系统调用的参数,这方面书上肯定比我说的详细。 好了,发车! 最基本的 Socket 模型 要想客户端和服务器能在网络...
  • 一文弄懂IO多路复用模型

    千次阅读 2019-02-02 17:52:43
    文章目录阻塞和非阻塞IO模型阻塞 io 模型 blocking IO非阻塞 io 模型 nonblocking IOIO多路复用模型select和pollepollIO多路复用模型应用场景 阻塞和非阻塞IO模型 操作系统在处理io的时候,主要有两个阶段: 1.等待...
  • redis多线程,io多路复用技术,删除清理操作异步线程,网络io读写多线程
  • 时分多路复用(TDM)

    千次阅读 2020-10-26 11:57:24
    时分多路复用(TDM)是按传输信号的时间进行分割的,它使不同的信号在不同的时间内传送,将整个传输时间分为许多时间间隔(Slot time,TS,又称为时隙),每个时间片被一路信号占用。TDM就是通过在时间上交叉发送每...
  • http/2.0“多路复用”实现原理 //转载

    千次阅读 2019-12-04 10:11:55
    1.HTTP/2较HTTP/1.1优化亮点HTTP/2是一个二进制协议,其基于“帧”的结构设计,改进了很多HTTP/1.1痛点问题。下面列举一些最常被津津乐道的改进之处:多路复用的流头部...
  • 我们提到了在netty的客户端通过使用Http2FrameCodec和Http2MultiplexHandler可以支持多路复用,也就是说在一个连接的channel基础上创建多个子channel,通过子channel来处理不同的stream,从而达到多路复用目的。...
  • 多路复用技术的基本原理是:各路信号在进入同一个有线的或无线的传输媒质之前,先采用调制技术把它们调制为互相不会混淆的已调制信号,然后进入传输媒质传送到对方,在对方再用解调(反调制)技术对这些信号加以区分...
  • 多路I/O复用模型

    千次阅读 2020-08-16 17:01:20
    一 概述 让应用程序可以同时对多个I/O端口进行监控以判断于其有关的操作是否可以进行,从而达到时间复用目的,例如:...类似于select或者epoll这样的多路I/O复用机制就如同摄像头,它们能够将多个I/O端口的状况反馈
  • 码分多路复用

    万次阅读 多人点赞 2018-04-30 21:45:39
    引子: CDMA是个很重要的通信概念,很的大学教科书上都会提到它,甚至我们今天可能都在使用它。然而提到cdma,很少有资料提到它的思想是多么的有创意,教科书上关于cdma的章节都过于复杂,过于数学化,虽然也有...
  • 在实际通信系统中,通常传输信道能够提供比单路或单...通过载波频率来区分子信道是一种常用的多路复用技术,即频分多路复用FDM技术。 所谓传统的频分复用FDM与解复用,是相对OFDM正交频分复用与解复用而言的。...
  • 1、IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合:  (1)当客户处理多个描述字时(一般是交互式输入和网络套接口),必须使用I/O复用。  (2)当...
  • 多路复用和伪随机序列 8.1 概述 多路复用 目的:在一条链路上传输多路独立信号 基本原理:正交划分方法 凡是理论上正交的多个信号,在同一条链路上传输到接收端后都可能利用其正交性完全区分开 多路复用基本...
  • 数字调制与多路复用 比特与代表他们的信号之间的转换过程称为数字调制。 数字调制的解决方案: 基带传输:即信号的传输占有传输介质上从零到最大值之间的全部频率,这是有线介质普遍使用的调制方法。近距离通信的...
  • 两种I/O多路复用模式:Reactor和Proactor。 一般地,I/O多路复用机制都依赖于一个事件多路分离器(Event Demultiplexer)。分离器对象可将来自事件源的I/O事件分离出来,并分发到对应的read/write事件处理器(Event ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 38,136
精华内容 15,254
关键字:

多路复用技术的目的是

友情链接: 第6单元(搜索).rar