协议rdt3.0接收方的有限状态机图怎么画

协议rdt3.0接收方的有限状态机图怎么画,第1张

因为它和rdt22一样,没有ack和nck的区别,而且也在传输中标了号(0号和1号),所以不怕重传的影响与超时重传的影响,所以,rtd30和rtd22是一样的接受方的图。

序号是为了防止冗余数据的产生的,而当发送发接收到需要的ACK后就会转入下一个状态。在下一个状态中,重复的ACK对于发送方是很明显的,不是发送方需要的信息,就会被忽略掉。所以没有必要为他标上序号。

扩展资料:

有限状态自动机还可以分成确定与非确定两种。非确定有限状态自动机可以转化为确定有限状态自动机。

有限状态自动机识别的语言是正规语言。

有限状态自动机除了它在理论上的价值,还在数字电路设计、词法分析、文本编辑器程序等领域得到了应用。

自动机接受的所有字串构成了自动机识别的语言 L(M)。

参考资料来源:百度百科-有限状态自动机

UiPath Studio 有 3 种类型的流程:序列(sequence),流程图(flowchart) 和 状态机(state machine)

框架包含了全部 3 种流程类型,我们选择了状态机作为 main 程序的主体,因为它提供了一种清晰的解决方案去表示我们所需的数据流。

维基百科就是这样定义有限状态机的:

“有限状态机(FSM)或有限状态机(FSA,复数:automata)、有限自动机或简单的状态机是计算的数学模型。它是一个抽象的机器,在任何给定的时间内都可以处于有限个状态中的一个。FSM 可以根据一些外部输入从一个状态更改为另一个状态;从一个状态更改为另一个状态称为转换。FSM 由其状态列表、初始状态和每个转换的条件定义。”

状态机的基本规则:

正如第一章所述,我们需要用这个模板解决的问题是:

关于状态机的一个极度确切的描述是它是一个有向图形,由一组节点和一组相应的转移函数组成。

状态机通过响应一系列事件而“运行”。

每个事件都在属于“当前” 节点的转移函数的控制范围内,其中函数的范围是节点的一个子集。

函数返回“下一个”(也许是同一个)节点。

这些节点中至少有一个必须是终态。

当到达终态, 状态机停止。

包含一组状态集(states)、一个起始状态(start state)、一组输入符号集(alphabet)、一个映射输入符号和当前状态到下一状态的转换函数(transition function)的计算模型。

当输入符号串,模型随即进入起始状态。

它要改变到新的状态,依赖于转换函数。

在有限状态机中,会有有许多变量,例如,状态 机有很多与动作(actions)转换(Mealy机)或状态(摩尔机)关联的动作,多重起始状态,基于没有输入符号的转换,或者指定符号和状态(非定有 限状态机)的多个转换,指派给接收状态(识别者)的一个或多个状态,等等。

传统应用程序的控制流程基本是顺序的:遵循事先设定的逻辑,从头到尾地执行。

很少有事件能改变标准执行流程;而且这些事件主要涉及异常情况。

“命令行实用程序”是这种传统应用程序的典型例子。

另一类应用程序由外部发生的事件来驱动——换言之,事件在应用程序之外生成,无法由应用程序或程序员来控制。

具体需要执行的代码取决于接收到的事件,或者它 相对于其他事件的抵达时间。

所以,控制流程既不能是顺序的,也不能是事先设定好的,因为它要依赖于外部事件。

事件驱动的GUI应用程序是这种应用程序的典 型例子,它们由命令和选择(也就是用户造成的事件)来驱动。

Web应用程序由提交的表单和用户请求的网页来驱动,它们也可划归到上述类 别。

但是,GUI应用程序对于接收到的事件仍有一定程度的控制,因为这些事件要依赖于向用户显示的窗口和控件,而窗口和控件是由程序员控制的。

Web应用 程序则不然,因为一旦用户采取不在预料之中的 *** 作(比如使用浏览器的历史记录、手工输入链接以及模拟一次表单提交等等),就很容易打乱设计好的应用程序逻辑。

显然,必须采取不同的技术来处理这些情况。

它能处理任何顺序的事件,并能提供有意义的响应——即使这些事件发生的顺序和预计的不同。

有限状态机正是为了满足这方面的要求而设计的。

有限状态机是一种概念性机器,它能采取某种 *** 作来响应一个外部事件。

具体采取的 *** 作不仅能取决于接收到的事件,还能取决于各个事件的相对发生顺序。

之所以能 做到这一点,是因为机器能跟踪一个内部状态,它会在收到事件后进行更新。

为一个事件而响应的行动不仅取决于事件本身,还取决于机器的内部状态。

另外,采取 的行动还会决定并更新机器的状态。

这样一来,任何逻辑都可建模成一系列事件/状态组合。

#include <STC12C52H>

#define uchar unsigned char

#define uint unsigned int

sbit key=P1^2;

sbit p1_6=P1^6;

void delay(uchar delay_time)

{

uchar n;

uint m;

for (n=0;n<delay_time;n++)

{

for(m=0;m<10000;m++);

}

}

void keyscan()

{

if(key==0)

{

delay(5);

if(key==0)

while(!key)

{

p1_6 = 0;

delay(20);

p1_6 = 1;

delay(20);

}

}

}

void main()

{

WDT_CONTR = 0x3C;

while(1)

{

keyscan();

WDT_CONTR = 0x3C;

}

}

这个功能可以用中断来实现,当然,现在我写的这个也可以实现。由于你用的晶振频率不知道,所以你自己修改一下延时时间,再把头文件改一下,就可以了,我试验了,可以实现改功能。

之前18年曾经写过一篇关于状态机的博客,链接如下:

>

以上就是关于协议rdt3.0接收方的有限状态机图怎么画全部的内容,包括:协议rdt3.0接收方的有限状态机图怎么画、【REFramework 中文文档】03 REFramework 简介、状态机的概念是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9611603.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存