Linux是如何进行多线程调度的

19 views
Skip to first unread message

Michael W.S. Yee

unread,
Mar 21, 2012, 10:23:08 AM3/21/12
to linux...@googlegroups.com
邮件组似乎好久没有动静了,上来问个问题,望大牛给帮忙解答一下。
比如有个无线网络,网络中的终端上用的是嵌入式Linux,默认使用TCP/IP协议栈。每台终端既是服务器端又是客户端,这样就需要在每台终端上通过socket创建一个服务器监听线程和一个客户端监听线程。
在单信道的情况下,如果终端B和终端C同时向终端A发起TCP连接请求,终端A的服务器监听线程是如何向终端B和终端C进行数据分发的?是随机的向终端B和终端C发送数据还是先给终端B发送完数据,再给终端C发送数据?在只有一个信道的情况下,如果终端A同时需要同时发送数据和接收数据时,服务器线程和客户端线程的数据在MAC层又是如何共享信道的?

Best Regards,
Yee

Michael W.S. Yee

unread,
Mar 21, 2012, 10:27:37 AM3/21/12
to linux...@googlegroups.com
补充一下,无线网络是通过Wifi进行数据通信的。

冯建波

unread,
Mar 30, 2012, 12:41:28 AM3/30/12
to linux...@googlegroups.com
不知道我理解错没有。你的意思是不是说多个 ( 传输 ) 会话是怎么在单个无线(WIFI)信道中进行传输的?

如果是这样,我的理解如下:
1、应用层看上去并发的行为,在物理层是串行的。也就是说你多个会话的MAC数据包到MAC层后是通过排队依次进行处理的。

2、取决于信道编码及分配方式,这样可以(有限的)并发传输。这样的情况下,可能将多个信道分配给不同的终端(取决于WIFI接入时握手的选择)。

所以得出的结论是:

多个终端应用层并行发数据---->多个终端MAC层串行发---->多终端PHY层串行发---->服务器PHY层串行或并行收---->服务器MAC层串行收---->服务器应用层并行收

补充一下,无线网络是通过Wifi进行数据通信的。
--
_______________________________________________
Linux设备驱动开发邮件列表 linux...@googlegroups.com
http://groups.google.gr/group/linuxdriver?hl=zh-CN
退订请使用原订阅邮箱发邮件至:linuxdriver...@googlegroups.com

Michael W.S. Yee

unread,
Mar 30, 2012, 5:25:38 AM3/30/12
to linux...@googlegroups.com
嗯,差不多就是你说的意思了。所谓应用层并发是指根据传输层协议将用户数据并发缓存到缓冲区再等待MAC层的处理吧?IEEE 802.11的MAC层是周期性的将缓冲区的数据串行的发往网络,还是待缓冲区的数据满之后再一次性(此期间不允许对缓冲区进行写操作)的将缓冲区数据发往网络呢?
关于你说到第二点,一块网卡实现多信道通信的信道切换开销是不是太大了点,一般是在多网卡的情况下实现的多信道吧,但似乎现实应用中也很少见到这种多网卡多信道的应用,主要是成本制约其应用?
Regards,
易流平
Michael W.S. Yee@ Peking University, P.R. China
Contact details:
E-mail: hcysm...@gmail.com 
Skype ID: mylocky2009

Reply all
Reply to author
Forward
0 new messages