为何IOCP能够同时处理成千上万个连接???(20分)

各位路过的,我没有针对谁攻击的意思,我学习一下方舟子打个假。

说错了还不让人纠正,一副学霸的样子,不晓得他们为什么叫这么多人来攻击我,结果一个比一个差,肚子没有什么墨水,而且越吹越厉害。

受业有先后,术业有专攻,不懂得东西就虚心学习啊,有容乃大,这些所谓的前辈被虚伪的包装了太久了,我揭开这些东西也可以让大家后来者知道自己也不差。

中国软件前些年的信息封闭让很多人成为了所谓的高手,但是事过境迁了,长江后浪推前浪,对于技术的过度追求让很多后来者误入歧途,其实他们遮遮掩掩的也就那点东西,你完全可以另辟蹊径,瞬间就能超越。

政府为什么封锁sourceforge,很多中国人盗窃了那些开源的东西,在骗国家的钱,这个遮羞布都不敢打开。那些所谓高手用开源的东西骗大家的钱,也骗了大家的信任,前些年能行,现在行不通了,我可以让大家见识他们的真实地能力和学历,没有什么好佩服的,因为这是06年了。
 
几千台机器一个管理员就够了,
-----------------------------------------
能不能说个企业让我了解一下、学习学习。我觉得自己管理几个服务器都管不过来了,我没什么学历,也没出过国,就请大师支持一下吧……
 
王府井说的,拿开源骗钱的事中国的确很多,最
有名的国产麒麟操作系统就是采用了的FreeBSD,
另外国内很多研究机构,利用国外的专业开源
软件来做工程项目,美其名曰是自主开发的,
他们连“自主开发”的东西都没吃透。
王府井所说的这些窃贼,只是国内部分现象(而且
不乏很多海龟干的),并不能代表全部。

在Delphibbs里主要讨论的是小的技术问题,
我相信jingtao,张无忌他们虽然是技术
高手,但是并不代表他们就只会这些技术,
几年个项目经验,我想他们应该
也能在项目的中起到举足轻重的作用。

另外,现在互联网发达,很多东西,信息
知识可以互联网获取,尤其是计算机技术,
因此在国外并没有什么优势,现在国内
软件开发主要集中在应用方面,如果需要
解决某个实际问题,我想若能找到解决
方案,具体实施技术,我想应该都可以在
网上找到,在中国缺的不是搞技术的人才。

每个人有自己的长处,王府井有你的长处,
他们有他们的长处,不可能谁能完全盖过
谁,大家在这里解答问题,起点都是好心
的,把问题解决好,才是关键。

另:sourceforge现在并没有被封锁。
 
[:D]我这个人不喜欢瞎说,懂韩文的话浏览一下www.nanumsoft.com
 
[:D]to Hexi:不太同意你的说法,呵呵

>>jingtao,张无忌是高手
吹牛高手,吹捧高手吧,不信你看看帖子,我又不骗你,帖子我不能改他们的,吹得多大啊,开奔驰坐宝马,高考拿全省第七,几台机器连几十万的机器,而且还是长期的连接,哈哈!

>>计算机技术国外并没有什么优势
又在意瘾了吧,走出去,看一看,你会有不同的见解的。爱国不是这么爱的,承认落后,摆正心态是奋起的前提,态度决定一切。

>>具体实施技术,我想应该都可以在网上找到
你前面说:只是国内部分现象,并不能代表全部,后面讲这句话就自相矛盾了。国内Dephi程序员解题的密码——抄,什么东西都等着互联网降代码,降控件,要么天天挂论坛上跪求。少数英语不错的,把人家的代码包装一下都敢卖,美其名曰出口转内销。

大家可以看这个帖子:http://www.delphibbs.com/delphibbs/dispq.asp?lid=3538325
jingtao带着小弟又在卖弄,都是车站骗人那一套,弄几个托,把遮遮掩掩的技术作为诱饵,然后吹嘘自己多好的技术,放置木马在程序里面,到处传播卖钱。我觉得某些人真的有地域特征的,不歧视没有办法。
 
严重鄙视疯狗一样到处咬人的家伙!
 
楼上的说得真好,骂jingtao就应该这么骂,谢谢你啊[:D]
 
看了贴子,在这里我倒是支持jingtao的,
王府井乱骂人算什么?你老说创新什么的,你所有的创新还不是基于前人的基础上,最多比别人多看了点windows的源代码,linux的代码,但你又自己独立做出来什么?

踩低别人的时候请看清楚你是站在谁的基础上

讨论技术就是讨论技术,随便乱漫骂那就不对了

其实有时候高手就是刚好自己的工作比别人更偏门一点,并不是说你的智商就天下无敌
 
一口气看完了帖子,我个人觉得爱元元的哥哥讲清楚了事情,他的思路是清晰。

网卡收到包会触发中断,根据中断优先级原则,CPU会查询8259芯片设置好的中断向量表,cpu进入中断处理例程,然后一般CPU会自旋缩定(其它处理到这里都会进入类似while(true)的死锁),目的一般是防止多次中断触发,每个CPU自旋缩定的话,可以单独处理一个中断,多个CPU就能处理多个中断,这也是上层的线程数为什么和CPU个数相关的原因,其实内部的处理能力也就这么多,开多的线程并不能提高内核的效率。

Windows内核就是异步执行(发出指令>立即返回>等待IRP状态)+同步执行(收到指令>处理IRP>结束返回),因此处理完中断后(当然还要走向ISO的好几层),系统利用完成端口指针直接就对完成标志进行设置,因此能最大程度的节省中间的传输消耗。

微软使用完成端口系统,类似于DirectX平台,脱离了GDI体系,直接给用户最快的处理显卡能力。完成端口就是加快了应用和内核的联系,展示了内核的本质,最大限度地建少中间环节消耗。

搞清楚了内核这个过程,就像我们看懂了VCL的代码,很多高手都会觉得VCL繁琐。KOL这些内核修改了原内核,FASTMM修改了VCL的内存管理,FastCode用MMX指令重写了很多基础函数,我们很多人也会修改那些著名的VCL控件给自己的项目服务,就是因为看懂了他们的实现原理。

本着这个原则,让win network的效率更高,其实就是在包传递的流程上减少更多的调用,最快的达到目的。关于在内核直接处理包的问题我说明几句,这个方法减少了很多ring0和ring3之间中断门的调用消耗的时间,例入linux的每次api函数调用,最终通过调用int 2e这个中断门,调用时要比较api caller的调用权限,保护现场和寄存器,将应用态地址锁定或者复制到内核态,而且最终内核完成后还有返回过程,这个时间还是会在一定程度上影响性能。

王府井引用的英文说明应该是瑞典bo的论文吧,这些学者研究的是超前的东西,从研究室到产业化还有路要走,你讲出来,这么多人听都没有听过,所以思维上会有抵触也会反感你的嚣张。在管理学上有一个东西叫做习惯成本,微软从win32平台把大家撵到.net平台好了4、5年,这个成本是不可忽略的,到现在很多程序员还不习惯.net平台,因为对他来说快乐的win32平台是无穷尽的,包括我在win上面开发了10年,得到了win源码研究了1年后我觉得还可以再吃10年饭。

大家有理说理,王府井年纪估计比较小,我从你这个年纪走过来的,得理不饶人是一个特点,挑战权威他觉得很开心是正常的,其实技术上没有什么权威,关键是谁看懂了九阴真经。
 
人贵有自知之明!连自知之明都没有,还在那自得其乐、妄自尊大的,无话可说!
 
to wbtvc:说我的人根本就不懂完成端口本质,也不能怪你们。几个所谓的高手说出的话漏洞百出,我来举例反驳,你们能理解为好,不能理解几年后再看这个帖子会理解我的。

jingtao原话:
自己直接收发数据效率绝对不可能比完成端口效率高

我的理解:
说这句话我相信连张无忌都不信,简直是空口说白话,说出绝对这个词的人估计没有读过大学。win用了应用层,解释层,会话层,传输层,网络层,链路层,物理层来实现他的TCP/IP。在应用层,解释层,会话层,传输层都能使用完成端口,数据少传输了几层的效率竟然都没有在应用层高,大家信吗?凭什么信?大家知道google的Gdriver和微软要推出的virtual driver吗?就是利用网络存储来实现的虚拟盘,这些都用TDI/NDIS层来直接收发数据,微软难道比jingtao还笨?

jingtao原话:
一般很少(几乎没有)人用它(wincap)来直接做通讯

我的理解:
libnet在国外举足轻重开源项目,CSICO的著名专家的项目哦,国内的安全小组也介绍过,中科院的学生在上面实现一个简单的TCP/IP栈的文章google里面全部都能搜到。snort是全球最著名的入侵检测项目,开源的,免费的,代码都可以看到,用的就是wincap来通讯的,
国内的网络执法官,国外的很多联动防火墙,网络克隆项目都用wincap来通讯。wincap可以发送链路层包,所以如果通讯的另一方是用网卡包驱动通讯的,用wincap是最好的选择。

jingtao原话:
如果说驱动效率高,除非你写的TCP协议栈比微软写的还高,否则,扯蛋.

我的理解:
驱动收发包需要重写TCP协议栈吗?可笑的很啊,几乎都不懂驱动的人才会说这样的话,还引用莫名其妙的一句:(陆麟就说过:驱动谁都会写,但写的象样的没几个),呵呵,一副流氓政治的说法。自己的研究一下ISO有几层,为什么写驱动就是指重写TCP/IP协议栈呢?难道我们Delphi developer改写一个Tbutton,要重写Tobject,继承一个基类就好了,傻子都知道阿。微软的驱动采用了的框架也是这样的构架,你继承一个驱动,就可以修改它的运行属性。还有那个GGCAT杞人忧天说我们写驱动会让网卡驱动都不能正常发挥性能,我想你继承Twincontrol的时候,考虑会让tobject不稳定了吗?
 
本人搜集jingtao在回复中展示的大量无知的说法,现反驳如下,如果你能理解,还允许它在这里跳梁小丑一般的表演,那就是你做人的不对了。

jingtao原话:
一般来说你实在无法做的比操作系统开发商更加有效率

我的理解:
它无知的很哪,它在那里吹嘘自己的远程抓屏是世界第一的时候,肯定觉得微软的netmeeting也没有必要放在眼里,为什么自相矛盾呢,你说话有自己的原则吗?

一个造钢琴并且谱曲的人(微软),为什么就一定不允许我们谱曲比他好听,微软恨不得自己的MSND没有讲清楚,导致大家开发的时候遇到障碍。微软提供平台,大家唱戏好听他自然高兴,win比lux牛的现在就是几十万的优秀程序阿,而且数字优势还在不断的扩大。

我们用Delphi来开发,很多人开发的程序比Borland作的程序更加牛X,那么多优化Delphi代码的项目都被borland肯定了,并且有些还被加入了Delphi新的版本。

jingtao原话:
TCP本身就有数据包确认重发机制,并不会存在真正的丢包现象

我的理解:
TCP协议的发明就是链路层会出现掉包才出现的,在CPU处理网卡中断的时候,新的网卡中断在处理的时候会被忽略的,如果网卡的缓冲满了的话,新的包就会丢掉。8259大家读书的时候应该都知道,可屏蔽中断是可以被忽略的,如果大量的积累,就会被丢弃,估计跟他是自考生有关吧。

举个最简单的例子,我们不停的打开程序,并不关掉,开到一定程度,再也打不开新的程序了。类似DOS的链路层攻击其实非常容易就能实现,两个机器的配置不一样,低配置的机器肯定处理不了高配置机器的快速发包,这时候重发会大量出现。

jingtao原话:
你能比WINDOWS处理的更好?操作系统都是人家写的,难道你的切换比人家的快?

我的理解:
这话基本上已经没有逻辑可言了,泼妇一样。windwos是一个可插拔系统,很多组件都可以换掉,可以patch,可以优化,甚至可以replace,这就是多内核系统的优势,linux也在学习这一点,搞动态加载模块,以弥补其微内核的缺陷。微软都在不停的给自己升级,jingtao不用担心我们做驱动的没有饭吃吧。微软收购杀毒软件公司,还原系统公司,难道你没有听过吗?

如果网络你们不熟悉,我举文件系统的例子,应用层readfile可以读写磁盘,内核曾zwReadfile也可以,那么文件是怎么读到的呢?首先查询文件的VCN,然后找到其VCN描述的所在的扇区,读取出来。知道了这个过程,有些作者在虚拟文件层驱动中实现把经常查询的VCN放置在内存里面,做一个looksidelist,或者叫做二级历史缓存,就实现了快读。有些作者用文件过滤系统一起性把整个文件读到内存,也可以实现读取加速。还有作者做内存虚拟磁盘,把数据直接放置到内存里面,读写全部在内存里面实现,ramdisk大家应该听说过。这些都能比微软的常规实现效率高,能理解不能呢?

jingtao原话:
其实ball_cao说到了本质.完成端口的就是为了减少线程。

我的理解:
一次次的展示无知,是无畏吗?完成端口是为了减少线程?大家理解完成端口的能坐得住吗?对完成端口理解到这个份上,也是中国人的壮举啊。socket也可以用bind message来实现收发,只用一个线程就够了哦,咋就没有效率呢?

看到好帖,我会好不吝啬的鼓掌,面对一二再再而三的满嘴胡话帖,俺脾气再好也坐不出了,你不懂这个不要装懂好不好,写个帖子跟谁喝茶都要显摆一下,至于吗?
 
to lichengbin:我发现你骂jingtao每次会准确哦。

最讨厌这个是网络专家,那个是图像专家,在中国,专家和妓女已经是一类的词了,这jingtao在政府里面混估计不错,信口雌黄,不着边际。不批之,会贻害多少初学者。
[:D]

论坛被几个所谓专家把持着,都是2000年左右加入的老家伙,现在不知道在什么地方打工,号称开奔驰宝马的,他们的简历在网上都能搜到,工资单也能在税务局查到,整天吹得不得了,有必要吗?
 
说实话我也不喜欢jingtao,或许因为很久以前的一个帖子,具体内容忘了
就像上面他骂爱元元的哥哥一样,有点......

但我说上面的那些话也是因为王府井说话的态度过于冲了, 我说支持jingtao也是因为上面的骂战,而具体的完成端口的问题我确实不懂,也没有自己的结论,所以看帖学习ing,有空再具体研究

我承认很多东东不懂,我的知识也都是从网上众多前辈的帖子、文章以及源代码学来的
事实上每个人都有个学习成长的过程,从不懂到懂,从菜鸟到所谓高手,只不过大家如果对
于偶菜鸟们有过帮助,偶就感激不尽

只是希望大家以讨论技术的方式来讨论而不是人身攻击
 
王府井口才实在不错,估计你就是爱哥哥吧!
估计这个也是你发的吧:
http://www.tomore.com/4/826.html

先研究一下,谢谢!
 
我站jintao这边。。。。
以前某个牛人说,在他机器上使用IOCP拷贝文件,速度是3XXX MBytes/s,用脚想了一想觉得国际硬盘巨头的董事长恐怕要出生在我伟大的祖国了。。。。。。
以前某个人在某个群上称,现在有某种技术,可以在1M bps的带宽下1分钟从WEB上拉50M数据(不管是否压缩),看来中国电信呀什么的快易主了。
个人认为,不要将技术宗教化。。。
 
看完,没有什么实质性的收获,还是不懂ICOP。
 
其实王府井和爱元元的哥哥都不怎么样,在我眼里最多是一对SB!!!!!
本人编程水平不高,DELPHI不是很熟,但本人不浮夸。
 
k,我看还是张无忌出来说说吧,人家是真正用这个来写游戏服务器的,别吓吵

个人对iocp的认为是,这两个线程是专门用于io读写对列处理的,和数据处理线程应该是分离的,并且在iocp中,一般原则都是小数据量的多次读写投递,比如一次一般1~2k左右,不断投递到队列中,既然在游戏中也是这种处理原则,不断去处理不同用户发来的数据包
 
顶部