中科院实习(2)

早上7点起床,困……

8点整到达实验室,除了马老师,基本没人。道了声早便开始工作了。今天还是承接昨天的工作,以老师的博士论文为切入点来学习通信协议正确性的证明。

Google到了几份论文,发现以学习Promela语言和Spin工具为切入点应该会比较有头绪。很幸运地找到了一篇名为《SPIN Beginners' Tutorial》的入门教程,简明清晰,十分适合入门。于是下面一天的事情都是围绕这个教程展开的。

Promela语言是一种十分适合描述多进程系统内相互通信的语言,Spin是它的编译工具(准确地说是Simulator,模拟器)。利用 Spin可以发现通信协议中存在的漏洞,缺陷等,而这些漏洞缺陷通过人脑分析一般很难找全。比如说ABP(Alternating Bit Protocol)协议是一个有问题的协议:一旦信道不稳定,出现传输错误,整个通信过程就会陷入死锁。通过下面的Promela小程序就可以自动发现 ABP中存在的问题,并且,利用XSpin还可以以图形界面的方式显示出协议中到底问题出在哪里:

mtype {msg,err,ack};
chan S = [2] of {mtype,bit}
chan R = [2] of {mtype,bit}


proctype Sender(chan in,out){
 
 bit bitsend=0;
 bit bitrecv;
 
 do
 ::out!msg,bitsend ->
  in ? ack,bitrecv;
  if
  ::bitrecv == bitsend ->
   bitsend = 1 - bitsend;
   out!msg,bitsend;
  ::else /* 什么也不做,自动重发 */
   printf("Sender:err. Re_send!/n");
  fi
 od
}

proctype Receiver(chan in,out){
 bit bitrecv;
 do
 ::in?msg,bitrecv ->
  out!ack,bitrecv;
 od 
}


init{
 atomic{
  run Sender(S,R);
  run Receiver(R,S);
 }  
}

图中的循环便是问题所在

 

上午下午都在学习Promela和Spin。

由于安全显示,实验室的机器上不能装CYGWIN,XSpin缺少Cpp.exe,无法进行预处理,导致XSpin无法执行。明天还是把本子带过去,在自己的机器上测试。

 

马老师考虑到我住的比较远,对我就没有作时间上的限制,外部环境还是很宽松滴~这几天都是6点就回来了,下周起确定了项目估计就不能这么早了。不过,有了明确目标,应该很有意思!

现在我什么都不懂,但我有信心:过了下周,我就能够获得问题的整体轮廓了,再过下周,我就可以解决部分问题了,再然后,我就可以比较nice地解决问题了。

哈哈,YY而已~实际还是十分困难的,心里没底 :(

--------------------------------------------------------------

突然想到一个问题:放暑假了,为什么研究生们都在实验室???!!! 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值