加入收藏 | 设为首页 | 会员中心 | 我要投稿 新余站长网 (https://www.0790zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 动态 > 正文

初创公司需要注意这个关键问题

发布时间:2021-02-11 17:28:34 所属栏目:动态 来源:互联网
导读:当用户进程调用了recv()/recvfrom()这个系统调用,kernel就开始了IO的第一个阶段:准备数据(对于网络IO来说,很多时候数据在一开始还没有到达。比如,还没有收到一个完整的UDP包。这个时候kernel就要等待足够的数据到来)。这个过程需要等待,也就是说数据被

当用户进程调用了recv()/recvfrom()这个系统调用,kernel就开始了IO的第一个阶段:准备数据(对于网络IO来说,很多时候数据在一开始还没有到达。比如,还没有收到一个完整的UDP包。这个时候kernel就要等待足够的数据到来)。这个过程需要等待,也就是说数据被拷贝到操作系统内核的缓冲区中是需要一个过程的。而在用户进程这边,整个进程会被阻塞(当然,是进程自己选择的阻塞)。

第二个阶段:当kernel一直等到数据准备好了,它就会将数据从kernel中拷贝到用户内存,然后kernel返回结果,用户进程才解除block的状态,重新运行起来。

所以,blocking IO的特点就是在IO执行的两个阶段都被block了。

优点:

1. 能够及时返回数据,无延迟;

2. 对内核开发者来说这是省事了;

缺点:

对用户来说处于等待就要付出性能的代价了;

非阻塞IO

指调用者在调用某一个函数后,不等待该函数的返回值,线程继续运行其他程序(执行其他操作或者一直遍历该函数是否返回了值)。好比你要喝水,水还没烧开,你就隔段时间去看一下饮水机,直到水烧开为止。(复制数据时阻塞)
 

网络IO的本质是socket的读取,socket在linux系统被抽象为流,IO可以理解为对流的操作。对于一次IO访问(以read举例),数据会先被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝到应用程序的地址空间。

所以说,当一个recv操作发生时,它会经历两个阶段:

  • 第一阶段:等待数据准备 (Waiting for the data to be ready)。
  • 第二阶段:将数据从内核拷贝到进程中 (Copying the data from the kernel to the process)。

对于socket流而言:

  • 第一步:通常涉及等待网络上的数据分组到达,然后被复制到内核的某个缓冲区。
  • 第二步:把数据从内核缓冲区复制到应用进程缓冲区。

阻塞IO(Blocking IO)

指调用者在调用某一个函数后,一直在等待该函数的返回值,线程处于挂起状态。好比你去商场试衣间,里面有人,那你就一直在门外等着。(全程阻塞)
 

为让用户能够在无线网络中漫游一从 一个AP漫游到另一个AP,且不会中断网络连接,相邻AP的蜂窝必须至少重叠10%~ 20%。为此,必须让每个AP使用不同的频道(频率)。

6. 在WLAN中支持IP语音(VoIP)

VoIP在当今世界中不可或缺,其应用范围在不断扩大,因此了解VoIP对有线和无线网络的影响至关重要。

有关其配置和详情不在CCENT和CCNA考试范围内,因此这里只讨论需要牢记的需求。

必须明白VoIP电话对网络的要求:

  • VoIP数据流有特殊要求,如带宽、优先级和延迟;
  • 为避免冲突,应为IP电话数据流和数据分别配置VLAN。
  • 思科IP电话通常采用PoE,因此必须在网络中使用合适的交换机;
  • 设计WLAN时,必须考虑VoIP设备及其带宽需求;
  • 要支持VoIP,必须在WLAN VLAN中实现QoS。

LAN和WLAN包含很多设备,但不要忘记VoIP设备。设计WLAN时,网络管理员必须考虑VoIP的独特要求,如带宽、优先级、延迟、为VoIP配置独立的VLAN并实现QoS以及供电方面的要求。

(编辑:新余站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读