程序验证的基本方法

程序验证的基本方法,第1张

下面的框图代表一个非负整数的除法程序。x1是被除数;x2是除数;z1中存放程序加工后得到的商;z2中存放得到的余数y1、y2是程序加工时使用的工作单元。START 表示程序的起始,HALT表示程序的终止。方框中是同时赋值语句,如(y1,y2):=(O,x1)

表示将y1置0值的同时,将y2的值置为x1。圆框内是测试语句,用于控制程序加工的流程。如框图中的语句y2≥x2

表示当y2的值大于等于x2时,程序按yes的箭头继续执行;否则按no的箭头继续执行。 为验证程序,必须首先将程序所要实现的目标形式化,即使用数学公式表达程序加工的初始数据的范围(称作输入谓词)和程序加工的结果(称作输出谓词)。

若约定各个变量的取值都是整数,上述除法程序的输入谓词和输出谓词分别为 在用归纳断言方法证明程序正确性时,还必须在程序的框图中设置一些数学公式,称作断言,表示程序执行到该处时,程序中变量应满足的数学关系。输入谓词可选作起点处的断言,而输出谓词可选作终止点处的断言。

在除法程序中设置三个断言,A处和C处的断言分别为上述输入和输出谓词,B处断言为(x1=y1x2+y2)&(y2≥0) (1)

反映了y1、y2中存放商数和余数的中间结果值。

验证程序的正确性,就是证明在程序的任何一种可能的加工过程中所设置的断言都是成立的。程序的一个加工过程就是框图中的一个流程。除法程序的所有可能的流程都是由图上的三条路径组合而成:由A至B由B出发回到B由B至C。这样,验证程序的正确性,就是证明对任一条路径,只要起点的断言成立,则终点的断言也成立。

以第二条路径为例,它是一条环路。要证明下列命题:若程序执行到环路的起点B时,断言(1)成立,则程序执行一周,再达到B点时,断言(1)仍然成立。

环行该圈,就是在(y2≥x2)成立的条件下,执行赋值语句(y1,y2):=(y1+1,y2-x2)

而上述语句的执行结果是使 y1的取值为执行前y1的值加1,y2的取值为执行前y2的值与x2的差,其他变量的值不变。为保证执行该赋值语句后断言(1)仍然成立,就要求将断言(1)中的y1代为(y1+1),y2代为(y2-x2)后得到的公式在执行该语句前成立。即(x1=(y1+1)x2+(y2-x2))&(y2-x2≥0) (2)

在执行上述赋值语句前成立。但已知执行该语句前断言①和测试条件(y2≥x2)均成立。由此推断公式②是成立的。这样就完成了对第二条路径的验证。对其余两条路径的验证也是类似的。从而可以证明除法程序的正确性。

归纳断言方法是由建立断言和对各条路径逐条验证两部分组成的。建立断言是一种创造性的工作,而验证路径的工作尽管繁琐,却是机械的。如何由计算机系统协助用户归纳出合适的断言,是程序验证研究中的重要课题。

用上述方法只能证明在输入谓词成立的前提下,程序终止时输出谓词一定成立。但不能证明在输入谓词成立时,程序一定能终止。不讨论程序终止性的程序验证称为程序部分正确性的验证。包括终止性的验证,则称为程序完全正确性的验证。

程序验证技术除了用于证明程序的正确性,或辅助用户编制正确程序外,还可从程序正确性角度评价程序设计方法和程序设计语言的优劣。但是,保证程序正确性的有效办法,不是在编制程序后再去验证,而是设法在编制过程中,使用适当的技术,使产生的程序是正确无误的。这类技术叫作程序综合和程序变形。程序验证技术和程序综合变形技术相互参照,共同发展。

一般来说如果不是常见的驱动错误,我们是没有办法从设备管理器中看出来的,因此在Win10系统中内置有检测程序,能够检测驱动程序是否有问题。下面是我分享的具体 *** 作方法,一起来看一下吧。

*** 作方法:

在Win10中内置有一个名为「驱动程序验证程序管理器」的应用,此应用可以给Windows中安装的驱动程序施加「压力」以主动触发其崩溃。如果真的发生了崩溃现象,「驱动程序验证程序管理器」就会通过蓝屏来报告问题。

检测驱动之前请仔细阅读以下信息!

在激活「驱动程序验证程序管理器」之前,你必需小心再小心。因为「驱动程序验证程序管理器」在检测到错误的驱动程序时会直接触发蓝屏,如果在Windows完全加载和登录之前就检测到错误驱动程序,Windows就会进入「boot → load → crash」的.恶性循环,用户还没办法进入Windows关闭、禁用它。

所以在激活驱动程序验证程序之前,请确保至少有以下后手中的一种:

1、可以轻松进入安全模式。

2、有激活「驱动程序验证程序管理器」之前创建系统还原点,并且还具有 Windows 安装介质,可以将系统恢复到原始状态。

如何打开「驱动程序验证程序管理器」?

1、使用 Windows + R 快捷键打开「运行」——在对话框中键入 verifier 后执行。

2、在程序中选择「创建自定义设置(供程序开发人员使用)」之后点击「下一步」。

3、在此时的应用列表中会列出可对驱动程序进行的所有测试项。此时请取消勾选「随机低资源模拟」和「DDI 兼容性检查(额外)」项之后将其它选项全选并点击「下一步」。

4、选择「从一个列表选择驱动程序」后点击「下一步」。

5、在此列表中您可以自主选择要测试的驱动程序,如果你不知道哪个驱动程序有问题,可以选择测试的所有驱动程序。 然而根据经验,一般微软自带的驱动和大厂商的驱动都经过了严格测试,不太可能有问题,所以「提供程序」中的「Microsoft Corporation」可以不选,以节省时间。

6、当选择好并点击「完成」后,Windows 将提示您重启 PC 开始测试。

激活「驱动程序验证程序管理器」并重启 Windows 后,如果驱动程序验证程序产生了蓝屏,你就可以注意错误消息中指出的原因。

只需重启 Windows 后再次在「驱动程序验证程序管理器」中选择「删除现有设置」即可关闭驱动程序验证程序。

当然也可直接使用如下命令来禁用:

verifier /bootmode resetonbootfail

以上内容便是Windows 10系统手动检查驱动错误的方法,命令执行完成后需要重启 Windows PC 才能生效,之后就可以安心的使用计算机,如果你的计算机不幸进入「boot → load → crash」死循环,请用户进入安全模式再重启电脑。

是程序兼容后台冲突,解决方法如下:

*** 作设备:戴尔电脑

*** 作系统:win10

1、首先在电脑中选择GeForce Experience的快捷方式,右键点击图标,选择-兼容性疑难解答,如下图所示。

2、然后在打开的窗口中,选择-尝试建议的设置,如下图所示。

3、接着选择-测试程序,完成测试后,点击下一步。

4、这时选择-是,为此程序保存这些设置,如下图所示。

5、这时显示疑难解答已完成,不兼容程序已修复,选择-关闭就完成了。


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

原文地址: https://outofmemory.cn/yw/11891434.html

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

发表评论

登录后才能评论

评论列表(0条)

保存