⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000029.htm

📁 一份很好的linux入门资料
💻 HTM
字号:
<HTML><HEAD>  <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人:&nbsp;nudtbegger&nbsp;(军人),&nbsp;信区:&nbsp;Linux&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;Re:&nbsp;关于LINUX的质量质疑&nbsp;<BR>发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Thu&nbsp;Jul&nbsp;29&nbsp;13:05:39&nbsp;1999)&nbsp;WWW-POST&nbsp;<BR>&nbsp;<BR>【&nbsp;在&nbsp;mephisto&nbsp;(魔鬼*修心养性*重新做人)&nbsp;的大作中提到:&nbsp;】
&nbsp;<BR>∶<I>&nbsp;5000p/s&nbsp;是在计费的采集上,没有那么小的包.
&nbsp;</I><BR>但是,就是包大一点,也远不到100M呀
&nbsp;<BR>∶<I>&nbsp;100M是用两台host&nbsp;ping&nbsp;-f&nbsp;来测的,因为有碰撞,到底有多少包没有参考标准,
&nbsp;</I><BR>∶<I>&nbsp;是通过以ping方接受到和发送的包来算出包书目的上限,采集很靠近这个上限
&nbsp;</I><BR>∶<I>&nbsp;我没有试过.&nbsp;&gt;&nbsp;50%&nbsp;&lt;&nbsp;90%&nbsp;?
&nbsp;</I><BR>
&nbsp;<BR>理论上,一台发,一台受,假使每个包是64BYTE,那么,发一个包要512位时,
&nbsp;<BR>包间隙512位时,由于无碰撞,所以是50M,如果包大,那么可以接近100M,
&nbsp;<BR>100*1518/(1518+64)
&nbsp;<BR>
&nbsp;<BR>∶<I>&nbsp;10ms包括了切换.
&nbsp;</I><BR>∶<I>&nbsp;这个不能一下子说清楚.&nbsp;RT&nbsp;有实时部份和非实时的部分.看你需求是如何产生的
&nbsp;</I><BR>∶<I>&nbsp;不对.&nbsp;It&nbsp;depends.&nbsp;The&nbsp;IRQ&nbsp;respons&nbsp;have&nbsp;two&nbsp;part.&nbsp;the&nbsp;top&nbsp;half&nbsp;and&nbsp;the
&nbsp;</I><BR>∶<I>&nbsp;buttom&nbsp;half.&nbsp;The&nbsp;top&nbsp;half&nbsp;is&nbsp;short&nbsp;and&nbsp;not&nbsp;interruptable.&nbsp;The&nbsp;buttom&nbsp;half
&nbsp;</I><BR>∶<I>&nbsp;is&nbsp;long.&nbsp;I&nbsp;don't&nbsp;beleive&nbsp;OS&nbsp;do&nbsp;not&nbsp;have&nbsp;not&nbsp;interruptable&nbsp;part.
&nbsp;</I><BR>∶<I>&nbsp;Linux的提法不一样,我看功能是一样的.&nbsp;select()
&nbsp;</I><BR>
&nbsp;<BR>你说的是SELECT呀,关于SELECT,我想多说两句,这两天我特地回去看了看LINUX&nbsp;里异
&nbsp;<BR>步IO到底是怎么回事。在一个师兄的帮助下翻了翻SOURCE,就一些问题向他请教了一下。&nbsp;<BR>
&nbsp;<BR>后来我发现情况似乎不是很好,select是LINUX里主要支持异步
&nbsp;<BR>IO的API(若不对,请指正),如果要在一个现程里等待多个CLIENT的连接,更是
&nbsp;<BR>只有用它(也许是我孤陋寡闻)但是SELECT的实现方法简直是愚笨之极(个人看法),让&nbsp;<BR>
&nbsp;<BR>我这等在WIN32下享受了好处的人简直不能相信。
&nbsp;<BR>下面我慢慢谈谈我个人的一些看法。
&nbsp;<BR>什么时候我们要用异步IO?因为多现程的使用,原有的一些背景已经不存在了,你完全可&nbsp;<BR>以
&nbsp;<BR>另开一个现程去执行那个费事的IO,而且,如果象DISK&nbsp;IO,因为完成时间可预测,而且&nbsp;<BR>
&nbsp;<BR>次数不会太多,发生也是可预测的,所以,如果你不想用异步IO,用多现程的方法是可以&nbsp;<BR>
&nbsp;<BR>很好的解决这个问题的。在目前而言,异步IO的主要使用背景在于网络应用,而且是象
&nbsp;<BR>数据采集(本人对此很有兴趣),SERVER等数据量不可预测,BRUST流量大的应用。
&nbsp;<BR>比如说,在LINUX下做一个SERVER(WEB,FTP,TELNET&nbsp;ETC),我想没有人会同意对每
&nbsp;<BR>个连接都创建一个线程的苯方法吧?(创建一个进程更不在考虑之列)这样做,当然可
&nbsp;<BR>行,而且如果只有10个连接,只在自己实验机房,只有10台PC,当然没问题。但是,这个&nbsp;<BR>
&nbsp;<BR>方法显然太浪费资源,很难想象如果有一千人的同时连接会发生什么。首先是现程太多,&nbsp;<BR>
&nbsp;<BR>其次是CPU要花更多的时间去管理线程,还有就是编程者要用到更多的同步信号等核心对&nbsp;<BR>象。
&nbsp;<BR>于是,我们想到了异步IO,我们不用一个连接对于一个线程,可以一个线程对应多个连接&nbsp;<BR>。
&nbsp;<BR>线程发出异步IO后,只要等待事件就行了。但是SELECT有一个大问题在于,当事件到来时&nbsp;<BR>,
&nbsp;<BR>系统通知所有的等待该事件的线程,但是,事实却是,当来了一个新的连接时,只有一个&nbsp;<BR>
&nbsp;<BR>现程有必要被唤醒,其余的线程只有回到等待状态。这种实现方式将带来两大开销,第一&nbsp;<BR>,
&nbsp;<BR>所有的线程都被唤醒,到底哪一个去完成服务呢?在线程中要协调。第二,线程被唤醒了&nbsp;<BR>,
&nbsp;<BR>CPU又要分配时间给该线程,虽然它马上就又进入等待状态。可是该线程本不该被唤醒的&nbsp;<BR>。
&nbsp;<BR>这样一来,一个WEB&nbsp;SERVER的设计只好采用老套路,一个线程守着,当CLIENT来的时候,&nbsp;<BR>
&nbsp;<BR>它自己处理,同时唤醒或产生另外一个线程来守侯。或者当CLIENT来的时候,它自己不处&nbsp;<BR>理,
&nbsp;<BR>唤醒或产生一个线程来处理,自己仍然守侯。这种情况还是会带来一些开销,因为每当一&nbsp;<BR>个
&nbsp;<BR>CLIENT&nbsp;REQUEST到来的时候,守侯线程接到了请求,却要通知别的线程。
&nbsp;<BR>如果是在NT下,完全没有必要如此麻烦,NT里的同样情况,系统只要唤醒一个线程,尽管&nbsp;<BR>有多
&nbsp;<BR>个线程在等待同一个事件。NT下大家都很熟,相信大家不用我多说。
&nbsp;<BR>
&nbsp;<BR>关于SELECT的缺陷,先就敲到这里了,还有些话,还要把代码翻出来,再考虑考虑再说。&nbsp;<BR>
&nbsp;<BR>
&nbsp;<BR>另外,由于小弟我对LINUX实在是不太熟,属于初通皮毛的那种,才一级无,但是刚刚从&nbsp;<BR>
&nbsp;<BR>0级伸到1级,心情还是激动的。请各位高级玩家指正帮助。
&nbsp;<BR>
&nbsp;<BR>
&nbsp;<BR>
&nbsp;<BR>∶<I>&nbsp;不是发信号,是把进程叫醒
&nbsp;</I><BR>&nbsp;<BR>&nbsp;<BR>--&nbsp;<BR>※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;bbs.net.tsinghua.edu.cn·[FROM:&nbsp;202.197.0.1]&nbsp;&nbsp;<BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -