??xml version="1.0" encoding="utf-8" standalone="yes"?>国产精品成人99久久久久,国内精品九九久久精品,久久精品欧美日韩精品http://www.shnenglu.com/franksunny/category/4835.html获得人生中的成功需要的专注与坚持不懈多q天才与Z(x)? ——C.W. Wendtezh-cnThu, 27 Nov 2008 18:46:11 GMTThu, 27 Nov 2008 18:46:11 GMT60Nucleus PLUS介绍http://www.shnenglu.com/franksunny/archive/2008/11/27/68036.htmlfrank.sunnyfrank.sunnyThu, 27 Nov 2008 14:37:00 GMThttp://www.shnenglu.com/franksunny/archive/2008/11/27/68036.htmlhttp://www.shnenglu.com/franksunny/comments/68036.htmlhttp://www.shnenglu.com/franksunny/archive/2008/11/27/68036.html#Feedback0http://www.shnenglu.com/franksunny/comments/commentRss/68036.htmlhttp://www.shnenglu.com/franksunny/services/trackbacks/68036.htmlNucleus PLUS介绍

 

今天在公司看?/span>VIA?/span>CBPpdCDMA手机Ҏ(gu)用到?/span>Nucleus +OSQ说实话q是W一ơ听_(d)所以查?jin)些资料Q引用别人的ȝ做个癄文Q原文链接如下:(x)

http://www.upsdn.net/html/2005-01/250.html

 

一?/span>Nucleus PLUS嵌入式操作系l的单介l?/span>

Nucleus PLUS嵌入式操作系l是目前最受欢q的操作pȝ之一Q是源代码操作系l商ATI公司为实时嵌入式应用而设计的一?span style="COLOR: red">抢先式多d操作pȝ内核Q其95Q的代码是用ANSIC写成的,因此非常便于ULq能够支持大多数cd的处理器?/span>

从实现角度来看,Nucleus PLUS 是一l?/span>C函数库,应用E序代码与核?j)函数库q接在一P生成一个目标代码,下蝲到目标板?/span>RAM中或直接烧录到目标板?/span>ROM中执行?/span>

Nucleus Plus内核在典型的CISC体系l构上占据大U?/span>20kI间Q而在典型?/span>RISC体系l构上占据空间ؓ(f)40k左右Q其内核数据l构占据1.5k字节的空间?/span>Nucleus Plus以其实时响应、抢先、多d以及(qing)源代码开?/span>Ҏ(gu)获得在通讯、国阌Ӏ工业控制、航I?/span>/航天、铁路、网l?/span>POS、自动化控制、智能家늭领域的广泛应用?/span>

Nucleus PLUS 采用?span style="COLOR: red">软glg的方?/span>。每个组件具?span style="COLOR: red">单一而明的目的Q通常由几?/span>C?qing)汇~语a模块构成Q提供清晰的外部接口Q对lg的引用就是通过q些接口完成的。除?jin)少C些特D情况外Q不允许从外部对lg内的全局q行讉K。由于采用了(jin)软glg的方法,Nucleus PLUS各个lg非常易于替换和复?/span>?/span>Nucleus PLUS的组件包括Q务控制、内存管理、Q务间通信、Q务的同步与互斥、中断管理、定时器?/span>I/O驱动{?/span>

 

二?/span>Nucleush的优点:(x)

1、提供源代码

Nucleus PLUS提供注释严格?/span>C源代码l每一个用戗这P用户能够深入C(jin)解底层内核的q作方式Qƈ可根据自qҎ(gu)要求删减或改动系lYӞq对软g的规范化理?qing)系lY件的试都有极大的帮助。另外,׃提供?/span>RTOS的源U代码,用户不但可以q行 RTOS 的学?fn)和研究Q而且产品在量产时也不必支?/span> LicenseQ可以省d量的费用。对于军Ҏ(gu)_(d)׃提供?jin)源代码Q用户完全可以控制内核而不必担?j)操作系l中可能?x)存在异怓Q务导致系l崩溃?/span>

2、性h(hun)比高

Nucleus PLUS׃采用?jin)先q的微内?/span> ( Micro-kernel ) 技术,因而在优先U安排,d调度QQ务切换等各个斚w都有相当大的优势。另外,?/span>C++语言的全面支持又使得Nucleus PLUS ?/span> Kernel 成ؓ(f)名副其实的面向对象的实时操作pȝ内核。然而,其h(hun)格却比较合理。所以,Ҏ(gu)被广大的研发单位接受?/span>

3、易学易?/span>

Nucleus PLUS 能够l合 ParadigmQ?/span>SDS以及(qing) ATI自己的多d调试器组成功能强大的集成开发环境,配合相应的编译器和动态联l库以及(qing)各类底层驱动软gQ用户可以轻村֜q行 RTOS 的开发和调试。另外,׃q些集成开发环?/span> ( IDE ) 为所有的开发工E师所熟?zhn)Q因而,Ҏ(gu)学习(fn)和用?/span>

4、功能模块丰?/span>

Nucleus PLUS除提供功能强大的内核操作pȝ外,q提供种cM富的功能模块。例如用于通讯pȝ的局域和q域|络模块Q支持图形应用的实时?/span>Windows模块Q支?/span>Internet|的WEB产品模块Q工控机实时BIOS模块Q图形化用户接口以及(qing)应用软g性能分析模块{。用户可以根据自q应用来选择不同的应用模块?/span>

 

Nucleus PLUS?/span>RTOS内核可支持如下类型的CPUQ?/span>x86,68xxx,68HCxx,NEC V25, ColdFire, 29K,i960, MIPS, SPARClite, TI DSP, ARM6/7, StrongARM, H8/300H, SH1/2/3, PowerPC, V8xx, Tricore, Mcore, Panasonic MN10200, Tricore, Mcore{。可以说NUCLEUS+?span style="COLOR: red">支持CPUcd最丰富的实时多d操作pȝ。针对各U嵌入式应用Q?/span>Nucleus PLUS q?span style="COLOR: red">提供相应的网l协?/span>Q如TCP/IPQ?/span>SNMP{)(j)Q以满用户寚w讯pȝ的开发要求。另外,可重入的文gpȝ、可重入?/span>C函数库以?qing)图形化界?/span>{也l开发者提供了(jin)方便。针对不同的CPUcdQ?/span>Nucleus q提供编译器、动态连接库、多d调试器等相应的工h配置用户的开发环境?/span>

值得提出的是ATI公司最q还发表?jin)基?/span>Microsoft Developers Studio的嵌入式集成开发环境-NUCLEUS EDE。从而率先将嵌入式开发工具与Microsoft的强大开发环境结合v来,提供l工E师们强大的开发手Dc(din)?/span>

 

三?/span> 源代码带来的优势众所周知Q?/span>Nucleus实时多Q务操作系l提供给用户源代码?/span>

q除商务上给用户带来巨大益处Q免?/span>RoyaltyQ外Q还在技术方面给用户极大的方便,x需~写和调?/span>BSPQ从而达到易学易用的目的Q加速品上?jng)。对RTOS有一定知识的工程师一定清楚,使用RTOS最大的障碍在于~写和调?/span>BSP。大家知道,在调试目标系l的软g之前Q必d目标与主接v来ƈ建立通讯。ؓ(f)此,我们可以~写一D늛控程序(MonitorQ。然而,如果要调试基?/span>RTOS内核的程序,L上的调试器(DebuggerQ除要与目标建立通讯外,更重要的是必识?/span>RTOS的Q务,q样才能q行dU调试(Task-aware DebuggerQ。因此,只有Monitor是不够的。如果我们选用?/span>RTOS不提供源代码Q那么,L上的调试器(DebuggerQ就只有通过用户~写?/span>BSP来了(jin)?/span>Kernel在现有硬件^C对各个Q务进行调度的情况。显?dng)~写BSP必须?/span>CPU目标pȝ的硬件以?qing)应用Y件等有全面而深入的?jin)解。一般说来,对于一个有一定硬件开发经验的工程师来_(d)~写一个新?/span>BSP要花的^均时间ؓ(f)两个月左叟뀂这对于一个新手来说可是比较困隄。对于编?/span>BSP的工E师来说Q另外一个更大的挑战是如何调试BSPQ即如何验证所~写?/span>BSP是否正确。通常刚刚焊接安装好的PCB板中Q硬件或软g的故障(BugsQ是比较多的。甚x常见的是CPU部分都没有运作正常。有时时序错误和ȝ错误都还存在。在(zhn)把写好?/span>BSP烧入EPROMQ或FLASHQ中试图目标与L建立联系Ӟ(zhn)几?/span>100%C(x)发现Ҏ(gu)无法通讯Q眼前一团漆黑,不知是Y件有错误q是g不运转?/span>BSP在正常运行吗Q不得而知。在焦急和摸烦(ch)中?zhn)可能发现几个月已?zhn)然而过。对于早期的实时操作pȝ来说Q?/span>BSP是必׃路。然而,C代的RTOS-Nucleus PLUS则避免了(jin)BSP带来的痛苦过E。因?/span>Nucleus的调试是Z全新的动态连接库Q?/span>DLLQ。用户只通过监控E序Q?/span>MonitorQ或?/span>BDM调试口(或?/span>JTAG调试口)(j)建立目标pȝQ?/span>TargetQ与LQ?/span>HostQ之间的通讯Qƈl主Z?/span>Debugger初始化特性中加入Nucleus的动态连接库Q?/span>DLLsQ,q时Q调试器p够自动地去识别运行在目标pȝ中的Nucleus内核和各个应用Q务,从而完成Q务调试。上q的动态连接库Q?/span>DLLsQ是?/span>RTOS厂商?/span>Debugger厂商合作完成的,用户无须自行~写。因此,Nucleus的用户只需要将_֊攑֜ZNucleus的编E工作中。对于一个新手,往往l过一天到两天的学?fn)和培训Q就可以投入到应用程序编制工作中去,无需花大量的旉ȝI?/span>CPUQ特定的g{?/span>

另外Q由于有?jin)源E序Q用户在调试E序时可以清楚地通过STEP INTO命o(h)Q追t到RTOS的内层中去,观看和学?/span>Kernel对Q务的理和调度机制。对于有志研I?/span>RTOS深层技术的工程师来说极为方ѝ对?/span>Motorola 68K?/span>PowerPCQ用户可以利?/span>GreenHill公司?/span>Mutil调试器或TRACE-ICD来完?/span>Nucleus PLUS的调试;对于ARM?/span>StrongARMQ用户可以利?/span>ARM公司?/span>SDT251调试器或TRACE-ICD来完?/span>Nucleus PLUS的调试;对于Intel x86实模式,用户可以利用Paradigm公司的调试器?qing)?/span>DLL来进行Q务调试Q对?/span>Intel x86保护模式则可以利?/span>SSI公司Softprobe调试器和SSI DLL来调试;对于i960Q?/span>SH3/4Q?/span>ARM6/7Q?/span>MIPS{芯片,则可以?/span>ATI公司自己?/span>UDB调试器来q行d的调试。结论:(x)动态连接库Q?/span>DLLQ是?/span>RTOS工具中新出现的应用趋势,通过q种方式Q用户可以免?/span>BSP带来的麻?ch),灉|方便地进行开发和调试Q大大加速开发进度?/span>Nucleus实时操作pȝ提供源代码,支持丰富?/span>CPUU类Q配合各c?/span>DLL动态连接库Qؓ(f)使用和研I?/span>RTOS技术的工程带来极大的利益?/span>

 q行ARMpd的开发需要大量的讑֤投入Q另外如果做比较大型的系l,q必要操作pȝQ购?span style="COLOR: red">一个好的操作系l也是需要几十万?/span>?/span>ARM?span style="COLOR: red">应用层研发可以徏立在CQ?/span>CQ+?qing)其他的大多数开发语a上,q对于Y件公司来说是很方便的Q只要准备好g?qing)操作系l,其他的工作就可以分模块给N个h来进行。而对于底层的东西Q?/span>ARM公司也可以有比较大力度的支持Q因此如果需要用ARMpd开发高端品,可行性是比较高的Q开发周期也不会(x)很长。当?dng)对?/span>arm芯片Q还是有一定的限制Q比如没有除法指令,q样在编E时p量避免用除法,否则?x)带来程序代码的增加和执行速度的降低。一般说Q除法还是可以通过UM和乘法来代替?br>

另外Q好久没上来码字?jin),上周l束׃Q估计金融危机对我的影响暂时l束一下了(jin)吧?/span>



frank.sunny 2008-11-27 22:37 发表评论
]]>
IP地址与子|掩?/title><link>http://www.shnenglu.com/franksunny/archive/2007/08/05/29403.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Sun, 05 Aug 2007 14:03:00 GMT</pubDate><guid>http://www.shnenglu.com/franksunny/archive/2007/08/05/29403.html</guid><wfw:comment>http://www.shnenglu.com/franksunny/comments/29403.html</wfw:comment><comments>http://www.shnenglu.com/franksunny/archive/2007/08/05/29403.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.shnenglu.com/franksunny/comments/commentRss/29403.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/franksunny/services/trackbacks/29403.html</trackback:ping><description><![CDATA[     摘要:   IP地址与子|掩?  一般考试中都?x)给定一个IP地址和对应的子网掩码Q让你计?、子|数?、网l号3、主机号4、广播地址5、可用IP地址范围到q类题,我们应该怎么h解题呢。方法如下:(x) 首先Q不要管q个IP是Ac还是Bc还是Cc,IP是哪一cd于解题是没有M意义的,因ؓ(f)在很多题中BcL码和AcL是Ccȝl一起出玎ͼ不要把这认ؓ(f)是一个错误,很多时候都是这样出?..  <a href='http://www.shnenglu.com/franksunny/archive/2007/08/05/29403.html'>阅读全文</a><img src ="http://www.shnenglu.com/franksunny/aggbug/29403.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/franksunny/" target="_blank">frank.sunny</a> 2007-08-05 22:03 <a href="http://www.shnenglu.com/franksunny/archive/2007/08/05/29403.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于C51内的codeQidataQxdatahttp://www.shnenglu.com/franksunny/archive/2007/08/05/29393.htmlfrank.sunnyfrank.sunnySun, 05 Aug 2007 10:19:00 GMThttp://www.shnenglu.com/franksunny/archive/2007/08/05/29393.htmlhttp://www.shnenglu.com/franksunny/comments/29393.htmlhttp://www.shnenglu.com/franksunny/archive/2007/08/05/29393.html#Feedback0http://www.shnenglu.com/franksunny/comments/commentRss/29393.htmlhttp://www.shnenglu.com/franksunny/services/trackbacks/29393.html 

关于C51内的codeQ?/span>idataQ?/span>xdata

 

以前没搞q?/span>C51Q大学时代跟单片师的时候也是捣鼓下汇编Q现在重新搞单片机,因ؓ(f)手头资料不多Q找C?/span>C51的程序,发现里面有这些关键字Q不甚明?jin),没办法只好找了(jin)下Q发现如下描qͼ(x)


   从数据存储类型来_(d)
8051pd?span style="COLOR: red">片内、片外程序存储器Q片内、片外数据存储器Q片内程序存储器q分直接d区和间接dcdQ分别对?/span>code?/span>data?/span>xdata?/span>idata以及(qing)Ҏ(gu)51pd特点而设定的pdatacdQ用不同的存储器,ɽE序执行效率不同Q在~写C51E序Ӟ最好指定变量的存储cdQ这样将有利于提高程序执行效?/span>(此问题将在后面专门讲q?/span>)。与ANSI-CE有不同Q它只分SAMLL?/span>COMPACT?/span>LARGE模式Q各U不同的模式对应不同的实际硬件系l,也将有不同的~译l果?/span>

 

?/span>51pd?/span>data,idata,xdata,pdata的区?/span>

data:固定指前?/span>0x00-0x7f?/span>128?/span>RAMQ可以用acc直接d的,速度最快,生成的代码也最?/span>

idata:固定指前?/span>0x00-0xff?/span>256?/span>RAM,其中?/span>128?/span>data?/span>128完全相同Q只是因问的方式不同?/span>idata是用cMC中的指针方式讉K的。汇~中的语句ؓ(f)Q?/span>mox ACC,@Rx.(不重要的补充Q?/span>c?/span>idata做指针式的访问效果很?/span>)

xdata:外部扩展RAMQ一般指外部0x0000-0xffffI间Q用DPTR讉K?/span>

pdata:外部扩展RAM的低256个字节,地址出现在A0-A7的上时读写,用movx ACC,@Rxd。这个比较特D,而且C51好象有对此BUGQ徏议少用。但也有他的优点Q具体用法属于中U问题,q里不提?/p>

 

 



frank.sunny 2007-08-05 18:19 发表评论
]]>
[转]重入和不可重入函数概忉|?/title><link>http://www.shnenglu.com/franksunny/archive/2007/08/03/29269.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Fri, 03 Aug 2007 04:56:00 GMT</pubDate><guid>http://www.shnenglu.com/franksunny/archive/2007/08/03/29269.html</guid><wfw:comment>http://www.shnenglu.com/franksunny/comments/29269.html</wfw:comment><comments>http://www.shnenglu.com/franksunny/archive/2007/08/03/29269.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.shnenglu.com/franksunny/comments/commentRss/29269.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/franksunny/services/trackbacks/29269.html</trackback:ping><description><![CDATA[<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p> </o:p></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center><span style="FONT-SIZE: 16pt; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">可重入函C不可重入函数</span><span lang=EN-US style="FONT-SIZE: 16pt"><o:p></o:p></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><span lang=EN-US><o:p> </o:p></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">主要用于多Q务环境中Q一个可重入的函数简单来说就是可以被中断的函敎ͼ也就是说Q可以在q个函数执行的Q何时M断它Q{?span lang=EN-US>OS</span>调度下去执行另外一D代码,而返回控制时不会(x)出现什么错误;而不可重入的函数׃使用?jin)一些系l资源,比如全局变量区,中断向量表等Q所以它如果被中断的话,可能?x)出现问题,q类函数是不能运行在多Q务环境下的?span lang=EN-US><o:p></o:p></span></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">也可以这L(fng)解,重入卌C重复进入,首先它意味着q个函数可以被中断,其次意味着它除?jin)用自己栈上的变量以外不依赖于M环境Q包?span lang=EN-US>static</span>Q,q样的函数就?span lang=EN-US>purecode</span>Q纯代码Q可重入Q可以允许有该函数的多个副本在运行,׃它们使用的是分离的栈Q所以不?x)互相干扰。如果确实需要访问全局变量Q包?span lang=EN-US>static</span>Q,一定要注意实施互斥手段。可重入函数在ƈ行运行环境中非常重要Q但是一般要问全局变量付出一些性能代h(hun)?span lang=EN-US><o:p></o:p></span></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">~写可重入函数时Q若使用全局变量Q则应通过关中断、信号量Q即<span lang=EN-US>P</span>?span lang=EN-US>V</span>操作Q等手段对其加以保护?span lang=EN-US><o:p></o:p></span></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes"> </span></span><span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">说明Q若Ҏ(gu)使用的全局变量不加以保护,则此函数׃h可重入性,卛_多个q程调用此函数时Q很有可能有关全局变量变ؓ(f)不可知状态?span lang=EN-US><o:p></o:p></span></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt"><o:p> </o:p></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">CZQ假?span lang=EN-US>Exam</span>?span lang=EN-US>int</span>型全局变量Q函?span lang=EN-US>Squre_Exam</span>q回<span lang=EN-US>Exam</span>qx倹{那么如下函Ch可重入性?span lang=EN-US><o:p></o:p></span></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">unsigned int example( int para ) <o:p></o:p></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">{<o:p></o:p></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">    unsigned int temp;<br>        Exam = para; // </span><span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">Q?span lang=EN-US>**</span>Q?span lang=EN-US><br>        temp = Square_Exam( );<br>        return temp;<br>    }<br>    </span>此函数若被多个进E调用的话,其结果可能是未知的,因ؓ(f)当(<span lang=EN-US>**</span>Q语句刚执行完后Q另外一个用本函数的进E可能正好被Ȁz,那么当新Ȁzȝq程执行到此函数Ӟ<span lang=EN-US>Exam</span>赋与另一个不同的<span lang=EN-US>para</span>|所以当控制重新回到<span lang=EN-US>“temp = Square_Exam( )”</span>后,计算出的<span lang=EN-US>temp</span>很可能不是预想中的结果。此函数应如下改q?span lang=EN-US><br><br>    unsigned int example( int para ) {<br>        unsigned int temp;<br>        [</span>甌信号量操?span lang=EN-US>] //(1)<br>        Exam = para;<br>        temp = Square_Exam( );<br>        [</span>释放信号量操?span lang=EN-US>]<br>        return temp;<br>    }<br>    (1)</span>若申请不?span lang=EN-US>“</span>信号?span lang=EN-US>”</span>Q说明另外的q程正处于给<span lang=EN-US>Exam</span>赋值ƈ计算其^方过E中Q即正在使用此信P(j)<span lang=EN-US>,</span>本进E必ȝ待其释放信号后,才可l箋执行。若甌CP则可l箋执行Q但其它q程必须{待本进E释放信号量后,才能再用本信号?span lang=EN-US><br><br>    </span>保证函数的可重入性的Ҏ(gu)Q?span lang=EN-US><br>    </span>在写函数时候尽量用局部变量(例如寄存器、堆栈中的变量)(j)Q对于要使用的全局变量要加以保护(如采取关中断、信号量{方法)(j)Q这h成的函数׃定是一个可重入的函数?span lang=EN-US><br>    VxWorks</span>中采取的可重入的技术有Q?span lang=EN-US><br>    * </span>动态堆栈变量(各子函数有自q立的堆栈I间Q?span lang=EN-US><br>    * </span>受保护的全局变量和静(rn)态变?span lang=EN-US><br>    * </span>d变量<span lang=EN-US><br><br><br>--------------------------------------------------<br>    </span>在实时系l的设计中,l常?x)出现多个Q务调用同一个函数的情况。如果这个函Cq被设计成ؓ(f)不可重入的函数的话,那么不同d调用q个函数时可能修改其他Q务调用这个函数的数据Q从而导致不可预料的后果。那么什么是可重入函数呢Q所谓可重入函数是指一个可以被多个d调用的过E,d在调用时不必担心(j)数据是否?x)出错。不可重入函数在实时pȝ设计中被视ؓ(f)不安全函数。满下列条件的函数多数是不可重入的Q?span lang=EN-US><br>    1) </span>函数体内使用?jin)?rn)态的数据l构Q?span lang=EN-US><br>    2) </span>函数体内调用?span lang=EN-US>malloc()</span>或?span lang=EN-US>free()</span>函数Q?span lang=EN-US><br>    3) </span>函数体内调用?jin)标?span lang=EN-US>I/O</span>函数?span lang=EN-US><br><br>    </span>下面举例加以说明?span lang=EN-US><br>    A. </span>可重入函?span lang=EN-US><br>    void strcpy(char *lpszDest, char *lpszSrc)<o:p></o:p></span></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes"> </span>{<br>        while(*lpszDest++=*lpszSrc++);<br>        *dest=0;<br>    }<br><br>    B. </span><span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">不可重入函数<span lang=EN-US>1<br>    charcTemp;//</span>全局变量<span lang=EN-US><br>    void SwapChar1(char *lpcX, char *lpcY)<o:p></o:p></span></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes"> </span>{<br>        cTemp=*lpcX;<br>        *lpcX=*lpcY;<br>        lpcY=cTemp;//</span><span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">讉K?jin)全局变量<span lang=EN-US><br>    }<br><br>    C. </span>不可重入函数<span lang=EN-US>2<br>    void SwapChar2(char *lpcX,char *lpcY)<o:p></o:p></span></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt"><span style="mso-spacerun: yes"> </span>{<br>        static char cTemp;//</span><span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">?rn)态局部变?span lang=EN-US><br>        cTemp=*lpcX;<br>        *lpcX=*lpcY;<br>        lpcY=cTemp;//</span>使用?jin)?rn)态局部变?span lang=EN-US><br>    }<br><br>    </span>问题<span lang=EN-US>1</span>Q如何编写可重入的函敎ͼ<span lang=EN-US><br>    </span>{:(x)在函C内不讉K那些全局变量Q不使用?rn)态局部变量,坚持只用局部变量,写出的函数就是可重入的。如果必访问全局变量Q记住利用互斥信号量来保护全局变量?span lang=EN-US><br><br>    </span>问题<span lang=EN-US>2</span>Q如何将一个不可重入的函数改写成可重入的函敎ͼ<span lang=EN-US><br>    </span>{:(x)把一个不可重入函数变成可重入的唯一Ҏ(gu)是用可重入规则来重写它。其实很单,只要遵守?jin)几条很?gu)理解的规则,那么写出来的函数是可重入的?span lang=EN-US><br>    1) </span>不要使用全局变量。因为别的代码很可能覆盖q些变量倹{?span lang=EN-US><br>    2) </span>在和g发生交互的时候,切记执行cM<span lang=EN-US>disinterrupt()</span>之类的操作,是关闭g中断。完成交互记得打开中断Q在有些pd上,q叫?span lang=EN-US>“</span>q入<span lang=EN-US>/</span>退出核?span lang=EN-US>”</span>?span lang=EN-US><br>    3) </span>不能调用其它M不可重入的函数?span lang=EN-US><br>    4) </span>谨慎使用堆栈。最好先在用前?span lang=EN-US>OS_ENTER_KERNAL</span>?span lang=EN-US><br><br>    </span>堆栈操作涉及(qing)内存分配Q稍不留就?x)造成益出D覆盖其他d的数据,所以,误}慎用堆栈!最好别用!很多黑客E序利用了(jin)q一点以便系l执行非法代码从而轻松获得系l控制权。还有一些规则,MQ时刻记住一句话Q保证中断是安全的!<span lang=EN-US><br><br>    </span>实例问题Q曾l设计过如下一个函敎ͼ在代码检视的时候被提醒?span lang=EN-US>bug</span>Q因个函数是不可重入的,Z么?<span lang=EN-US><br>    unsigned int sum_int( unsigned int base ) <o:p></o:p></span></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt; mso-char-indent-count: 2.0"><span lang=EN-US style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">{<br>        unsigned int index;<br>        static unsigned int sum = 0; // </span><span style="COLOR: black; FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt">注意Q是<span lang=EN-US>static</span>cd<span lang=EN-US><br>        for (index = 1; index <= base; index++)<br>            sum += index;<br>        return sum;<br>    }<br><br>    </span>分析Q所谓的函数是可重入的(也可以说是可预测的)(j)Q即只要输入数据相同应产生相同的输出。这个函C所以是不可预测的,是因ؓ(f)函数中用了(jin)<span lang=EN-US>static</span>变量Q因?span lang=EN-US>static</span>变量的特征,q样的函数被UCؓ(f)Q带<span lang=EN-US>“</span>内部存储?span lang=EN-US>”</span>功能的的函数。因此如果需要一个可重入的函敎ͼ一定要避免函数中?span lang=EN-US>static</span>变量Q这U函C?span lang=EN-US>static</span>变量Q用原则是Q能不用量不用?span lang=EN-US><br>    </span>上面的函数修改为可重入的函敎ͼ只要声?span lang=EN-US>sum</span>变量中的<span lang=EN-US>static</span>关键字去掉,变量<span lang=EN-US>sum</span>卛_Z?span lang=EN-US>auto</span>cd的变量,函数卛_Z个可重入的函数?span lang=EN-US><br>    </span>当然Q有些时候,在函C是必要使用<span lang=EN-US>static</span>变量的,比如当某函数的返回gؓ(f)指针cdӞ则必L<span lang=EN-US>static</span>的局部变量的地址作ؓ(f)q回|若ؓ(f)<span lang=EN-US>auto</span>cdQ则q回为错指针?/span><span lang=EN-US style="FONT-FAMILY: 宋体; mso-bidi-font-size: 10.5pt"><o:p></o:p></span></p> <img src ="http://www.shnenglu.com/franksunny/aggbug/29269.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/franksunny/" target="_blank">frank.sunny</a> 2007-08-03 12:56 <a href="http://www.shnenglu.com/franksunny/archive/2007/08/03/29269.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于变量的存储问?/title><link>http://www.shnenglu.com/franksunny/archive/2007/06/01/25277.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Fri, 01 Jun 2007 07:00:00 GMT</pubDate><guid>http://www.shnenglu.com/franksunny/archive/2007/06/01/25277.html</guid><wfw:comment>http://www.shnenglu.com/franksunny/comments/25277.html</wfw:comment><comments>http://www.shnenglu.com/franksunny/archive/2007/06/01/25277.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.shnenglu.com/franksunny/comments/commentRss/25277.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/franksunny/services/trackbacks/25277.html</trackback:ping><description><![CDATA[     摘要:   关于变量的存储问?  以前从事上位机程序代码的~写Q压根不用很具体的考虑变量的具体存放位|,只知道以下概念就行了(jin)Q?1. 堆区Q?heap Q:(x)q序员甌分配和释放,属动态内存分配方式,变量存放于动态存储区Q若E序员不释放Q程序结束时可能?x)?OS 回收。不q这个内存分配很Ҏ(gu)引v问题Q如果申L(fng)内存不释攑ְ?x)造成内存泄漏Q如果释攄不是所要释攄内存Q则轻者引...  <a href='http://www.shnenglu.com/franksunny/archive/2007/06/01/25277.html'>阅读全文</a><img src ="http://www.shnenglu.com/franksunny/aggbug/25277.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/franksunny/" target="_blank">frank.sunny</a> 2007-06-01 15:00 <a href="http://www.shnenglu.com/franksunny/archive/2007/06/01/25277.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转蝲]socket 各种头数据结构及(qing)要说?/title><link>http://www.shnenglu.com/franksunny/archive/2007/01/11/17537.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Thu, 11 Jan 2007 15:16:00 GMT</pubDate><guid>http://www.shnenglu.com/franksunny/archive/2007/01/11/17537.html</guid><wfw:comment>http://www.shnenglu.com/franksunny/comments/17537.html</wfw:comment><comments>http://www.shnenglu.com/franksunny/archive/2007/01/11/17537.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.shnenglu.com/franksunny/comments/commentRss/17537.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/franksunny/services/trackbacks/17537.html</trackback:ping><description><![CDATA[     摘要: socket 各种头数据结构及(qing)要说?   发布者:(x) 许超   发表日期Q?2006-06-12 18:44:51.153 原作者:(x) supermgr   socket  各种头数据结构,?qing)简要说明? //DATATYPE typedef signed char       ...  <a href='http://www.shnenglu.com/franksunny/archive/2007/01/11/17537.html'>阅读全文</a><img src ="http://www.shnenglu.com/franksunny/aggbug/17537.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/franksunny/" target="_blank">frank.sunny</a> 2007-01-11 23:16 <a href="http://www.shnenglu.com/franksunny/archive/2007/01/11/17537.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转蝲]|络理之TCP/UDP协议?/title><link>http://www.shnenglu.com/franksunny/archive/2007/01/11/17535.html</link><dc:creator>frank.sunny</dc:creator><author>frank.sunny</author><pubDate>Thu, 11 Jan 2007 14:50:00 GMT</pubDate><guid>http://www.shnenglu.com/franksunny/archive/2007/01/11/17535.html</guid><wfw:comment>http://www.shnenglu.com/franksunny/comments/17535.html</wfw:comment><comments>http://www.shnenglu.com/franksunny/archive/2007/01/11/17535.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/franksunny/comments/commentRss/17535.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/franksunny/services/trackbacks/17535.html</trackback:ping><description><![CDATA[<p style="LINE-HEIGHT: 150%; TEXT-ALIGN: center" align=center><font face=宋体><strong><span style="FONT-SIZE: 13.5pt; COLOR: black; LINE-HEIGHT: 150%">|络理?span lang=EN-US>TCP/UDP</span>协议?/span> </strong><span lang=EN-US style="FONT-SIZE: 13.5pt; COLOR: black; LINE-HEIGHT: 150%"><o:p></o:p></span></font></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 150%"><span lang=EN-US style="DISPLAY: none; FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 150%; mso-hide: all"><o:p> </o:p> </span></p> <div id="cyaouug" class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 14pt; TEXT-ALIGN: center" align=center><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: #404e60"> <hr align=center width="100%" color=gray noShade SIZE=1> </span></div> <p class=MsoNormal style="MARGIN: 0cm 0cm 12pt; LINE-HEIGHT: 14pt; TEXT-ALIGN: center" align=center><span style="FONT-SIZE: 9pt; COLOR: #404e60; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">发表旉Q?/span> <span lang=EN-US style="FONT-SIZE: 9pt; COLOR: #404e60">2003-6-13 18:53:48 </span> <span style="FONT-SIZE: 9pt; COLOR: #404e60; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">来源Q中国电(sh)脑教育报</span> <span lang=EN-US style="FONT-SIZE: 9pt; COLOR: #404e60"> </span> <span style="FONT-SIZE: 9pt; COLOR: #404e60; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">作者:(x)双木</span> <span lang=EN-US style="FONT-SIZE: 9pt; COLOR: #404e60">  </span> <span style="FONT-SIZE: 9pt; COLOR: #404e60; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">点击</span> <span lang=EN-US style="FONT-SIZE: 9pt; COLOR: #404e60">1 </span><span style="FONT-SIZE: 9pt; COLOR: #404e60; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span> <span lang=EN-US style="FONT-SIZE: 9pt; COLOR: #404e60; FONT-FAMILY: 宋体"><o:p></o:p></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 150%"><span lang=EN-US style="DISPLAY: none; FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 150%; mso-hide: all"><o:p> </o:p> </span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 12pt; LINE-HEIGHT: 16pt"><span lang=EN-US style="FONT-SIZE: 11pt; COLOR: #222222">?/span> <span style="FONT-SIZE: 11pt; COLOR: #222222; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">我们学习(fn)q什么是</span> <span lang=EN-US style="FONT-SIZE: 11pt; COLOR: #222222">“</span> <span style="FONT-SIZE: 11pt; COLOR: #222222; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">数据?/span> <span lang=EN-US style="FONT-SIZE: 11pt; COLOR: #222222">”</span> <span style="FONT-SIZE: 11pt; COLOR: #222222; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">。理解数据包Q对于网l管理的|络安全h臛_重要的意义。比如,防火墙的作用本质是(g)网l中的数据包Q判断其是否q反?jin)预先设|的规则Q如果违反就加以L。图</span> <span lang=EN-US style="FONT-SIZE: 11pt; COLOR: #222222">1</span> <span style="FONT-SIZE: 11pt; COLOR: #222222; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是瑞星个h版防火墙软g讄规则的界面。细?j)的读者会(x)发现Q图</span> <span lang=EN-US style="FONT-SIZE: 11pt; COLOR: #222222">1</span> <span style="FONT-SIZE: 11pt; COLOR: #222222; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">中的</span> <span lang=EN-US style="FONT-SIZE: 11pt; COLOR: #222222">“</span> <span style="FONT-SIZE: 11pt; COLOR: #222222; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">协议</span> <span lang=EN-US style="FONT-SIZE: 11pt; COLOR: #222222">”</span> <span style="FONT-SIZE: 11pt; COLOR: #222222; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">栏中?/span> <span lang=EN-US style="FONT-SIZE: 11pt; COLOR: #222222">“TCP”</span> <span style="FONT-SIZE: 11pt; COLOR: #222222; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span> <span lang=EN-US style="FONT-SIZE: 11pt; COLOR: #222222">“UDP”</span> <span style="FONT-SIZE: 11pt; COLOR: #222222; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">{名词,它们是什么意思呢Q现在我们就来讲讲什么是</span> <span lang=EN-US style="FONT-SIZE: 11pt; COLOR: #222222">TCP</span> <span style="FONT-SIZE: 11pt; COLOR: #222222; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span> <span lang=EN-US style="FONT-SIZE: 11pt; COLOR: #222222">UDP</span> <span style="FONT-SIZE: 11pt; COLOR: #222222; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">?/span> <span lang=EN-US style="FONT-SIZE: 11pt; COLOR: #222222"><br style="mso-special-character: line-break"><br style="mso-special-character: line-break"><o:p></o:p></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 12pt; LINE-HEIGHT: 16pt"><span lang=EN-US style="FONT-SIZE: 11pt; COLOR: #222222"></span> <strong><span style="FONT-SIZE: 11pt; COLOR: #222222; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">面向q接?/span> </strong><strong><span lang=EN-US style="FONT-SIZE: 11pt; COLOR: #222222">TCP</span> </strong><span lang=EN-US style="FONT-SIZE: 11pt; COLOR: #222222"><br>“</span> <span style="FONT-SIZE: 11pt; COLOR: #222222; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">面向q接</span> <span lang=EN-US style="FONT-SIZE: 11pt; COLOR: #222222">”</span> <span style="FONT-SIZE: 11pt; COLOR: #222222; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">是在正式通信前必要与对方徏立vq接。比如你l别人打?sh)话Q必ȝU\接通了(jin)、对Ҏ(gu)赯{才能相互通话?/span> <span lang=EN-US style="FONT-SIZE: 11pt; COLOR: #222222"><br><br style="mso-special-character: line-break"><br style="mso-special-character: line-break"><o:p></o:p></span></p> <p style="LINE-HEIGHT: 16pt; TEXT-ALIGN: center" align=center><span lang=EN-US style="FONT-SIZE: 11pt; COLOR: #222222"><img height=243 src="file:///D:/Temp/msohtml1/01/clip_image001.jpg" width=320 v:shapes="_x0000_i1026"> <o:p></o:p></span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 12pt; LINE-HEIGHT: 16pt"><span lang=EN-US style="FONT-SIZE: 11pt; COLOR: #222222"><o:p> </o:p> </span></p> <p style="LINE-HEIGHT: 16pt; TEXT-ALIGN: center" align=center><span style="FONT-SIZE: 11pt; COLOR: #222222"><font face=宋体>?span lang=EN-US>1<o:p></o:p></span></font> </span></p> <p style="LINE-HEIGHT: 16pt"><font face=宋体><span lang=EN-US style="FONT-SIZE: 11pt; COLOR: #222222">TCP</span> <span style="FONT-SIZE: 11pt; COLOR: #222222">Q?span lang=EN-US>Transmission Control Protocol</span>Q传输控制协议)(j)是基于连接的协议Q也是_(d)在正式收发数据前Q必dҎ(gu)建立可靠的连接。一?span lang=EN-US>TCP</span>q接必须要经q三?span lang=EN-US>“</span>对话<span lang=EN-US>”</span>才能建立hQ其中的q程非常复杂Q我们这里只做简单、Ş象的介绍Q你只要做到能够理解q个q程卛_。我们来看看q三ơ对话的单过E:(x)L<span lang=EN-US>A</span>向主?span lang=EN-US>B</span>发出q接h数据包:(x)<span lang=EN-US>“</span>我想l你发数据,可以吗?<span lang=EN-US>”</span>Q这是第一ơ对话;L<span lang=EN-US>B</span>向主?span lang=EN-US>A</span>发送同意连接和要求同步Q同步就是两CZ个在发送,一个在接收Q协调工作)(j)的数据包Q?span lang=EN-US>“</span>可以Q你什么时候发Q?span lang=EN-US>”</span>Q这是第二次对话Q主?span lang=EN-US>A</span>再发Z个数据包认L<span lang=EN-US>B</span>的要求同步:(x)<span lang=EN-US>“</span>我现在就发,你接着吧!<span lang=EN-US>”</span>Q这是第三次对话。三?span lang=EN-US>“</span>对话<span lang=EN-US>”</span>的目的是使数据包的发送和接收同步Q经q三?span lang=EN-US>“</span>对话<span lang=EN-US>”</span>之后Q主?span lang=EN-US>A</span>才向L<span lang=EN-US>B</span>正式发送数据?span lang=EN-US><o:p></o:p></span></span> </font></p> <p style="MARGIN-BOTTOM: 12pt; LINE-HEIGHT: 16pt"><font face=宋体><span lang=EN-US style="FONT-SIZE: 11pt; COLOR: #222222">TCP</span> <span style="FONT-SIZE: 11pt; COLOR: #222222">协议能ؓ(f)应用E序提供可靠的通信q接Q一台计机发出的字节流无差错地发往|络上的其他计算机,对可靠性要求高的数据通信pȝ往往使用<span lang=EN-US>TCP</span>协议传输数据?span lang=EN-US><o:p></o:p></span></span> </font></p> <p style="LINE-HEIGHT: 16pt; TEXT-ALIGN: center" align=center><span lang=EN-US style="FONT-SIZE: 11pt; COLOR: #222222"><font face=宋体><img height=110 src="file:///D:/Temp/msohtml1/01/clip_image002.jpg" width=200 v:shapes="_x0000_i1027"> <o:p></o:p></font></span></p> <p style="LINE-HEIGHT: 16pt; TEXT-ALIGN: center" align=center><span style="FONT-SIZE: 11pt; COLOR: #222222"><font face=宋体>?span lang=EN-US>2<o:p></o:p></span></font> </span></p> <p style="MARGIN-BOTTOM: 12pt; LINE-HEIGHT: 16pt"><font face=宋体><span lang=EN-US style="FONT-SIZE: 11pt; COLOR: #222222"></span> <span style="FONT-SIZE: 11pt; COLOR: #222222">我们来做一个实验,用计机<span lang=EN-US>A</span>Q安?span lang=EN-US>Windows 2000 Server</span>操作pȝQ从<span lang=EN-US>“</span>|上d<span lang=EN-US>”</span>上的一台计机<span lang=EN-US>B</span>拯大小?span lang=EN-US>8,644,608</span>字节的文Ӟ通过状态栏右下角网卡的发送和接收指标׃(x)发现Q虽然是数据是p机<span lang=EN-US>B</span>向计算?span lang=EN-US>A</span>Q但是计机<span lang=EN-US>A</span>仍发送了(jin)<span lang=EN-US>3,456</span>个数据包Q如?span lang=EN-US>2</span>所C。这些数据包是怎样产生的呢Q因为文件传输时使用?span lang=EN-US>TCP/IP</span>协议Q更切地说是用了(jin)面向q接?span lang=EN-US>TCP</span>协议Q计机<span lang=EN-US>A</span>接收数据包的时候,要向计算?span lang=EN-US>B</span>回发数据包,所以也产生?jin)一些通信量?span lang=EN-US><o:p></o:p></span></span> </font></p> <p style="LINE-HEIGHT: 16pt; TEXT-ALIGN: center" align=center><span lang=EN-US style="FONT-SIZE: 11pt; COLOR: #222222"><font face=宋体><img height=128 src="file:///D:/Temp/msohtml1/01/clip_image003.jpg" width=125 v:shapes="_x0000_i1028"> <o:p></o:p></font></span></p> <p style="LINE-HEIGHT: 16pt; TEXT-ALIGN: center" align=center><span style="FONT-SIZE: 11pt; COLOR: #222222"><font face=宋体>?span lang=EN-US>3<o:p></o:p></span></font> </span></p> <p style="MARGIN-BOTTOM: 12pt; LINE-HEIGHT: 16pt"><span lang=EN-US style="FONT-SIZE: 11pt; COLOR: #222222"><font face=宋体></font> </span><span style="FONT-SIZE: 11pt; COLOR: #222222"><font face=宋体>如果事先用网l监视器监视|络量Q就?x)发现由此生的数据量?span lang=EN-US>9,478,819</span>字节Q比文g大小多出<span lang=EN-US>10.96%</span>Q如?span lang=EN-US>3</span>所C)(j)Q原因不仅在于数据包和本n占用?jin)一些空_(d)而且也在?span lang=EN-US>TCP</span>协议面向q接的特性导致了(jin)一些额外的通信量的产生?/font> <span lang=EN-US><br><font face=宋体><o:p></o:p></font> </span></span></p> <p style="MARGIN-BOTTOM: 12pt; LINE-HEIGHT: 16pt"><strong><span style="FONT-SIZE: 11pt; COLOR: #222222"><font face=宋体>面向非连接的<span lang=EN-US>UDP</span>协议</font> </span></strong><span lang=EN-US style="FONT-SIZE: 11pt; COLOR: #222222"><br><br><br><font face=宋体>“</font> </span><span style="FONT-SIZE: 11pt; COLOR: #222222"><font face=宋体>面向非连?span lang=EN-US>”</span>是在正式通信前不必与Ҏ(gu)先徏立连接,不管Ҏ(gu)状态就直接发送。这与现在风行的手机短信非常怼Q你在发短信的时候,只需要输入对Ҏ(gu)机号?span lang=EN-US>OK</span>?jin)?/font> <span lang=EN-US><br><br><font face=宋体>UDP</font> </span><font face=宋体>Q?span lang=EN-US>User Data Protocol</span>Q用h据报协议Q是?span lang=EN-US>TCP</span>相对应的协议。它是面向非q接的协议,它不与对方徏立连接,而是直接把数据包发送过去!<span lang=EN-US><o:p></o:p></span></font> </span></p> <p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 16pt"><span lang=EN-US style="FONT-SIZE: 11pt; COLOR: #222222"><o:p> </o:p> </span></p> <p style="LINE-HEIGHT: 16pt; TEXT-ALIGN: center" align=center><span lang=EN-US style="FONT-SIZE: 11pt; COLOR: #222222"><img height=101 src="file:///D:/Temp/msohtml1/01/clip_image004.jpg" width=200 v:shapes="_x0000_i1029"> <o:p></o:p></span></p> <p style="LINE-HEIGHT: 16pt; TEXT-ALIGN: center" align=center><span style="FONT-SIZE: 11pt; COLOR: #222222"><font face=宋体>?span lang=EN-US>4<o:p></o:p></span></font> </span></p> <p style="MARGIN-BOTTOM: 12pt; LINE-HEIGHT: 16pt"><span lang=EN-US style="FONT-SIZE: 11pt; COLOR: #222222"><font face=宋体>UDP</font> </span><span style="FONT-SIZE: 11pt; COLOR: #222222"><font face=宋体>适用于一ơ只传送少量数据、对可靠性要求不高的应用环境。比如,我们l常使用<span lang=EN-US>“ping”</span>命o(h)来测试两CZ?span lang=EN-US>TCP/IP</span>通信是否正常Q其?span lang=EN-US>“ping”</span>命o(h)的原理就是向Ҏ(gu)L发?span lang=EN-US>UDP</span>数据包,然后Ҏ(gu)L认收到数据包,如果数据包是否到辄消息?qing)时反馈回来Q那么网l就是通的。例如,在默认状态下Q一?span lang=EN-US>“ping”</span>操作发?span lang=EN-US>4</span>个数据包Q如?span lang=EN-US>2</span>所C)(j)。大家可以看刎ͼ发送的数据包数量是<span lang=EN-US>4</span>包,收到的也?span lang=EN-US>4</span>包(因ؓ(f)Ҏ(gu)L收到后会(x)发回一个确认收到的数据包)(j)。这充分说明?span lang=EN-US>UDP</span>协议是面向非q接的协议,没有建立q接的过E。正因ؓ(f)<span lang=EN-US>UDP</span>协议没有q接的过E,所以它的通信效果高;但也正因为如此,它的可靠性不?span lang=EN-US>TCP</span>协议高?span lang=EN-US>QQ</span>׃?span lang=EN-US>UDP</span>发消息,因此有时?x)出现收不到消息的情c(din)?/font> <span lang=EN-US><br><br><font face=宋体></font> </span><font face=宋体><strong>附表Q?span lang=EN-US>tcp</span>协议?span lang=EN-US>udp</span>协议的差?/strong> <span lang=EN-US><o:p></o:p></span></font></span></p> <p style="LINE-HEIGHT: 16pt; TEXT-ALIGN: center" align=center><span lang=EN-US style="FONT-SIZE: 11pt; COLOR: #222222"><font face=宋体><img height=104 src="file:///D:/Temp/msohtml1/01/clip_image005.jpg" width=226 v:shapes="_x0000_i1030"> <o:p></o:p></font></span></p> <p style="LINE-HEIGHT: 16pt"><font face=宋体><span lang=EN-US style="FONT-SIZE: 11pt; COLOR: #222222">TCP</span> <span style="FONT-SIZE: 11pt; COLOR: #222222">协议?span lang=EN-US>UDP</span>协议各有所ѝ各有所短,适用于不同要求的通信环境?span lang=EN-US>TCP</span>协议?span lang=EN-US>UDP</span>协议之间的差别如附表所C?span lang=EN-US><o:p></o:p></span></span> </font></p> <img src ="http://www.shnenglu.com/franksunny/aggbug/17535.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/franksunny/" target="_blank">frank.sunny</a> 2007-01-11 22:50 <a href="http://www.shnenglu.com/franksunny/archive/2007/01/11/17535.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <p>лǵվܻԴȤ</p> <a href="http://www.shnenglu.com/" title="精品视频久久久久">精品视频久久久久</a> <div class="friend-links"> </div> </div> </footer> <a href="http://www.abroadapp.cn" target="_blank">Ů޾Ʒþþۺ </a>| <a href="http://www.dpbz.net.cn" target="_blank">þþþĻƷ</a>| <a href="http://www.obsessions.cn" target="_blank">þþþþ</a>| <a href="http://www.gxsc.net.cn" target="_blank">þþƷƷ</a>| <a href="http://www.goodleg.cn" target="_blank">պƷþþþþþõӰ</a>| <a href="http://www.sheersky.cn" target="_blank">Ʒþ</a>| <a href="http://www.xkr-bsc.cn" target="_blank">þþþ߽ۺϳ</a>| <a href="http://www.99j9.cn" target="_blank">91޹˾þþƷ</a>| <a href="http://www.hxstone.com.cn" target="_blank">þþƷУСŮ</a>| <a href="http://www.4wfgg.cn" target="_blank">Ʒþþþþ</a>| <a href="http://www.92kv.cn" target="_blank">ɫۺϾþþþһ</a>| <a href="http://www.51uhq.cn" target="_blank">Ʒþùһ㽶</a>| <a href="http://www.hunan168.cn" target="_blank">vaþþþúݺ</a>| <a href="http://www.piaozen.cn" target="_blank">þ99Ʒþþþþò</a>| <a href="http://www.toy365.cn" target="_blank">Ʒ԰״̼þþ</a>| <a href="http://www.bev5l.cn" target="_blank">97Ʒ˾þþô߽97</a>| <a href="http://www.sanbaotong.cn" target="_blank">þ99þëƬһ</a>| <a href="http://www.rongchenjiaxiao.cn" target="_blank">þҹ³Ƭ</a>| <a href="http://www.tjpengzhi.cn" target="_blank">2021Ʒҹþ</a>| <a href="http://www.0513act.cn" target="_blank">ۺϾƷþ</a>| <a href="http://www.galrw.cn" target="_blank">ĻƷѾþ5151</a>| <a href="http://www.urzf.cn" target="_blank">þˬˬƬAV </a>| <a href="http://www.shop219.cn" target="_blank">ŮþþŮ</a>| <a href="http://www.pf925.cn" target="_blank">777þþƷһ</a>| <a href="http://www.500866.cn" target="_blank">޾þþһ</a>| <a href="http://www.xfidc.com.cn" target="_blank">ɫþ</a>| <a href="http://www.omsf.cn" target="_blank">պݺݾþ͵͵ɫۺ96</a>| <a href="http://www.jsjingkou.cn" target="_blank">þseƷһƷ</a>| <a href="http://www.fti1st.com.cn" target="_blank">ƷӰӾþۺ</a>| <a href="http://www.suvvoza.cn" target="_blank">þþƷ99þ㽶ɫ</a>| <a href="http://www.lsdkgoio8843.cn" target="_blank">޾Ʒþǧն</a>| <a href="http://www.iceplaza.cn" target="_blank">þþþ޾Ʒվ</a>| <a href="http://www.smxsj.cn" target="_blank">þˬˬƬav鷳</a>| <a href="http://www.auto-insurance.cn" target="_blank">Ƭѹۿþ</a>| <a href="http://www.tst5.cn" target="_blank">һۺϾþù</a>| <a href="http://www.lawyer010.cn" target="_blank">þĻ</a>| <a href="http://www.0769zc.net.cn" target="_blank">þҹ³˿Ƭϼ</a>| <a href="http://www.sfsqw.cn" target="_blank">͵þþþƷר</a>| <a href="http://www.9a0g.cn" target="_blank">˾þþùۿëƬ</a>| <a href="http://www.essledyntp.com.cn" target="_blank">þùƷ99</a>| <a href="http://www.ijesus.com.cn" target="_blank">ƷŮþþ</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>