搜档网
当前位置:搜档网 › 模型驱动的VxWorks操作系统故障注入与鲁棒性测试研究

模型驱动的VxWorks操作系统故障注入与鲁棒性测试研究

模型驱动的VxWorks操作系统故障注入与鲁棒性测试研究
模型驱动的VxWorks操作系统故障注入与鲁棒性测试研究

40

科研信息化技术与应用2013, 4(3): 40–48

·技术?/?

TECHNOLOGY ·模型驱动的 VxWorks 操作系统故障注入与鲁棒性测试研究

朱晓燕,吴际,尚会波

北京航空航天大学 计算机学院,北京 100191

摘 要:

关键词:

Research on Fault Injection and Robustness Testing for the Model-Driven VxWorks System

Zhu Xiaoyan, Wu Ji, Shang Huibo

Department of Computer Science and Engineering, Beihang University, Beijing 100191, China Abstract:

VxWorks 是目前广泛应用于机载、车载等复杂嵌入式系统的操作系统,它为应用程序提供了强大的故障捕捉和缺省的故障处理服务,并提供应用程序可挂载的故障处理接口。由于故障产生的时机和机理复杂,因此如何控制操作系统使其按照应用程序的测试需求抛出相应的故障,从而触发应用程序的故障处理,是对应用程序开展鲁棒性测试时需要解决的一个关键问题。本文以 VxWorks 嵌入式实时操作系统中捕捉的故障作为研究对象,提出了由故障建模、故障注入、测试控制和鲁棒性判定组成的故障设计与测试方法,以支持对基于 VxWorks 的应用程序开展鲁棒性测试。该测试方法将模型驱动测试与故障注入技术相结合,在平台无关层次描述故障,针对操作系统中对相应故障处理方式的不同,本文设计了函数替换和变量修改两种故障注入方法,并在 VxWorks 5.5 上进行了实验,确认了相应方法和技术的有效性。

故障模型;故障注入;鲁棒性测试;模型驱动

VxWorks is a popular real-time operating system for complex embedded systems like avionics or automobile. VxWorks provides strong fault capture capabilities and default handling methods for user applications. It also provides APIs to mount user application specific fault handlers. As for application robustness testing, since the timing and mechanism of fault occurrence is complex, it is an essential problem that how to control operating system to throw corresponding fault based on the testing requirement of the application. In this paper, we study the fault captured by VxWorks, and present a fault design and

朱晓燕 等: 模型驱动的 VxWorks 操作系统故障注入与鲁棒性测试研究

testing method consist of fault modeling, fault injection, testing control and robustness estimate. This

testing method combines the model driven testing with the fault injection technique, so users can design

fault in the platform-independent level and dynamically inject appropriate fault depending on different

platforms in system level. In this paper we designed two kinds of fault injection methods: function

replacement and variable modification, and carried out experiments on VxWorks 5.5 to confirm the validity

of the corresponding methods and techniques.

fault model; fault injection; robustness testing; model driven

Keywords:

引 言

软件鲁棒性是指软件在异常输入及异常环境下执行不崩溃或不产生错误输出的能力。由于异常的发生具有不确定性,对于大规模嵌入式系统而言,如何测试其应用程序的异常处理功能一直是个难题。为了在尽可能短的时间内对软件的鲁棒性进行充分的测试,需要在软件运行过程中以人为的方式注入异常,故障注入技术是指按照给定的故障模型,以受控方式产生故障,并施加特定故障于被测系统中。

VxWorks[1]操作系统是美国WindRiver 公司于1983 年设计开发的一种嵌入式实时操作系统(Embedded Real-Time Operating System,RTOS),该操作系统提供了强大的异常捕捉和处理能力以满足应用程序的高可靠性要求。随着模型驱动 (Model Driven Architecture,MDA)[2]思想的日趋成熟,人们不仅在软件开发过程中使用模型驱动的开发方法,同时将其应用到测试建模[3-4]。模型驱动测试方法可以有效地提高软件开发者和测试者的工作效率,提高软件质量。本文将模型驱动测试方法与故障注入技术相结合,在操作系统层次描述相应的故障及其相互关系,形成故障模型,并针对 VxWorks 操作系统特点设计了相应的故障注入方法。

本文第 2 节介绍了嵌入式系统故障注入研究及当前主要的故障注入工具;第 3 节描述了 VxWorks 系统中的故障模型提取设计与故障注入方法;第 4 节详细介绍对被测软件系统的测试控制方法及鲁棒性判定方法;第 5 节选取 VxWorks 文件系统和内存管理模块的典型故障进行故障注入,验证故障是否成功注入。1 相关研究

故障注入技术最早应用于 20 世纪 70 年代的硬件测试,基于硬件的故障注入技术[5]的出现,有效提高了对系统功能、可靠性和鲁棒性的验证能力。但基于硬件的故障注入技术有不少约束和不足,首先,为了注入故障,需要准备特殊的硬件;其次,注入故障需要对目标系统的硬件进行访问,有可能会破坏被测试系统的相关硬件,造成财产损失。为了克服以上不足,研究人员提出了基于软件的故障注入技术,在软件的控制下修改系统的软硬件运行状态,从而使系统认为存在相应的软硬件故障并对故障进行响应和处理。

自从 DeMillo 将软件故障注入技术应用于对软件系统的测试[6] 后,对软件故障注入研究成为测试领域的热点之一。FERRARI[7]是德克萨斯大学开发的故障注入工具,利用软件陷阱对CPU、内存和总线注入故障。FTAPE[8] 是伊利诺斯大学开发的故障耐受度和性能评估工具,可以实现对 CPU 模块中的用户可访问寄存器、内存位置和磁盘子系统进行故障注入。XCEPITON[9-10]由葡萄牙科英布拉大学开发,利用处理器中的高级调试和性能监控注入故障,需要修改中断处理向量。FIAT[10] 是卡耐基梅隆大学开发的基于自动化测试环境的故障注入工具。

通过对目前国内外故障注入方法的研究可以发现这些研究主要是针对特定类型的硬件设计相应的故障注入手段,不具有扩展性,难以在复杂嵌入式系统中应用。因此,迫切需要研究工作在操作系统层次上的故障注入方法。本文提出了针对 VxWorks 操作系统的故障模型提取及故障注入方法,与以往针对

41

42

科研信息化技术与应用,2013, 4 (3)

Vxworks 进行故障注入的研究[12-13]不同,本文对操作系统代码进行自动分析,提取相应的故障调用路径模型,并设计相应的故障注入方法,在测试过程中,控制被测系统的运行,在适当的时机注入故障,根据被测系统的响应来进行鲁棒性判定。引入模型驱动方法把这些不同要素和信息进行整合和统一,从而获得更好的一致性、完整性和可扩展性。

2 VxWorks 处理的故障模型提取及故障注入

针对 VxWorks 操作系统中捕获的故障生成故障模型,然后根据故障模型设计在 VxWorks 操作系统上的故障注入方法。本文研究的故障注入方法通过在操作系统程序中的函数入口处设置断点,当系统中有程序调用被设置了断点的函数时,程序被中断,通过替换被中断的本来要调用的函数,或者通过修改程序中的变量,给被调用函数传递错误参数,使得程序检测到“出现”了相应的故障,从而测试相应的故障处理分支。

2.1 系统故障模型元模型

操作系统对不同的异常情况定义了相应的错误码,当程序执行到设置错误码的语句即代表操

作系统捕捉到了相应故障。系统故障元模型如图 1 所示。ErrorHandler 是检查并处理错误码的模块,ErrorHandler 调用 ErrorPropagation 类函数,ErrorPropagation 类经过多层调用最终调用 ErrorTrigger 类函数,在 ErrorTrigger 函数中设置错误码并返回,最终到达 ErrorHandler 函数处被处理。HandlerOperation 是 ErrorHandler 处理故障时所作的操作。Error 类即被设置的错误码。FuncStub 类是指替代函数,通过替换某个函数达到设置错误码的目的。ConditionFunc 作为 ErrorTrigger 中进入设置错误

码分支的分支判断条件函数,ConditionVariable 类代表分支条件变量。

2.2 故障调用路径模型生成方法

一个错误码会在许多函数中被设置,这些设置函数又会被其他函数调用,如此按照被调用关系向上追溯,可以形成一张以错误码为起始结点的函数调用图。基于这样的函数调用图,可以找出被测试程序中处理错误码的函数到错误码的函数调用路径,便是需

要的故障调用路径模型。

需要对操作系统源码进行分析,提取错误码、函数、函数调用等信息以构建函数调用图,再从调用图

图1 系统故障元模型

Fig. 1 System Fault Meta Model

Error

set errno

ErrorTrigger

ConditionVariable

ConditionFunc

FunStub

ErrorHandler

HandlerOperation

ErrorPropagation

[1]

[1][1]

[1..*]

[*]

[*][*]

[*]

set errno set errno

calls calls

calls

substituted by

《interface 》function

朱晓燕 等: 模型驱动的 VxWorks 操作系统故障注入与鲁棒性测试研究

中找出一条路径。为实现这一过程需要使用现有的一些开源工具解决以下问题。

(1) 寻找符号被引用的位置。一个程序符号 (变量、函数等) 可能被许多函数使用。依靠 GLOBAL[11]可以快速在源文件中找到符号被引用的详细信息,包括符号,符号引用语句所在行号,所在文件等。

(2) 从语句找到调用函数算法。Ctags[12] 可以弥补GLOBAL 在函数识别上的不足,通过对符号引用语句所在文件的分析,Ctags 可以提取出文件中定义的所有函数所在的行号,并按顺序输出。结合符号引用语句所在的行号,可以找到符号引用语句所在的函数。

(3) 从函数名找到函数块算法。从函数名所在行开始,逐行读取代码,再读取每一行中的每个字符,将遇到的第一个“{“压栈,继续读取,如果读入“{“,则将括号压栈,如果读入”}“,则括号出栈,直至栈为空,括号匹配完成,读入的所有字符即为函数代码块。

(4) 函数调用路径生成算法。在获得符号引用位置和调用函数的基础上,可以将调用函数继续作为符号查找其引用位置和调用函数,从而可以获得一个以错误码结点为起始点的函数调用图,为了简化测试,需要测试人员提供两个参数:一为错误码,作为路径的开始;二为一个错误码处理函数,作为路径的终点。采用深度优先搜索算法,可以在O(n) 时间内找到这条路径,其中,n是图中的结点个数。寻找到的路径从错误码结点开始向上逐个存放到列表中,最终列表中存放的即为函数调用路径。

(5) 函数调用路径到模型表示的转换。为了以可的方式把所提取的路径表示出来,需要根据特定的转换规则将函数调用路径转化成可以被可视化工具Graphviz[13] 理解的符合 dot[14] 语法规则的数据。

函数路径中每个结点都被转换为dot 语法中的node,转换后的形式为:

nodename [shape=’nodeshape’ url=’nodeurl’]

其中nodename 是结点的名字,一般为函数名或者错误码名,结点还有两个属性shape 和url。shape 是结点在可视化工具中表现出的形状。url 是与结点有关的信息,用于在可视化工具中响应点击事件。

紧临的两个调用函数结点之间通过有向边关联,方向从调用方到被调用方,转换后的形式为:nodename1 → nodename2 [style=’edgestyle’]

nodename 是结点名,style 属性是边在可视化工具中表现出的风格,分别是solid 和dashed。图2 是生成的模型在可视化工具中的表现,示例是一条从 write 函数到错误码 S_dosFsLib_INVALID_ PARAMETER 的调用路径,使用 dosFsFileRWStub 替换 dosFsFileRW。

2.3 故障注入方法

针对 Vxworks 操作系统中对相应故障处理方式的不同,设计了函数替换和变量修改两种故障注入方法。

2.3.1 函数替换法

当程序进入某个函数执行时,函数通常将设置错误码的代码放置在一个分支语句中,当出现故障时,分支的条件变量设置为真,使函数执行设置错误码的操作。为了实现故障注入,需要使用一些方法,影响条件变量的值,使函数进入设置错误码的分支。

函数替换法是指在程序运行过程中,程序本应调用函数 F 时,测试人员控制程序调用另一个函数 S,

图2 模型图示例

Fig. 2 Model diagram example

write

iosWrite

dosFsWrite

dosFsFileRW dosFsFileRWStub

S_dosFsLib_INVALID_PARAMETER

43

科研信息化技术与应用,2013, 4 (3)

函数 S 是测试人员提前编写好可以实现测试目的的函数。主要有四种可用的模式:直接替换模式、封装替换模式、调用者替换模式和条件函数替换模式。在进行故障注入测试时,应根据被替换函数的特点,选择不同的模式实现故障注入。

(1) 直接替换模式:针对目标函数 E,设计替换函数 S 来直接替换 E,并在 S 中设置错误码,如图 3。

(2) 封装替换模式。将目标函数E用设计好的函数S 封装起来,当有函数调用 E 时,实际调用的是函数S,在函数 S 中修改函数参数的值,并使用修改后的参数作为调用函数 E 时传递的参数,从而驱使 E 执行时能够设置相应的错误码,如图 4。

(3) 调用者替换模式。针对目标函数 E 的调用函数 C,设计相应的函数 S 来替换函数 C,函数 S 在调用函数 E 之前,改变传递给 E 的参数的值,从而使得

E 可以进入设置错误码的分支,如图 5。

(4) 条件函数替换模式。目标函数 E 往往通过判断条件变量进入设置错误码的分支,这些条件变量的值可能是某个函数 F 的返回值,或者是通过对某个函数 F 的返回值进行某种计算得到,因此可以使用直接函数替换模式替换 F,改变返回值使得函数 E 的执行能够进入设置错误码的分支,如图 6。

程序被编译后生成的符号表记录符号名和符号地址等相关信息。可以根据函数名在符号表中查找相应函数的入口地址。当函数被调用时,程序计数器寄存器 PC 会指向函数的入口地址,在这时使程序中断,通过改变 PC 寄存器的值,使程序转而跳转到替代函数中,便可实现对故障的注入。如图 7 所示。

图3 直接替换模式Fig. 3 Direct replacement mode

图5 调用者替换模式Fig. 5 Invoker replacement mode

图4 封装函数替换模式

Fig. 4 Encapsulation Function replacement mode

图6 条件函数替换模式

Fig. 6 Conditional function replacement mode

C

S E

Errno

C

S

E Errno

C

E

E

C S

S F Errno

Errno

44

45

朱晓燕 等: 模型驱动的 VxWorks 操作系统故障注入与鲁棒性测试研究

2.3.2 条件变量修改法

函数在进行分支选择时需要判断相应条件变量的值,通过分析发现,大部分条件变量与函数的输入参数有关,通过函数替换法可以对函数参数进行修改,进而影响条件变量的值。但有一部分分支通过判断全局变量的值进行分支选择,在这种情况下,改变参数值不能影响全局变量的值。一种可选的修改全局变量的方法仍然是函数替换法,选用封装函数替换模式,在替换函数中修改全局变量的值。还可以通过直接修改全局变量值的方式使函数进入设置错误码的分支。

全局变量的地址也会被存放在符号表中,只要使用全局变量名查询符号表便可以获得变量地址,进而通过对内存的访问实现变量值的修改。

3 测试控制方法与鲁棒性判定方法

在测试过程中,通过特定的手段控制被测试系统,使被测系统在运行中触发故障的注入,最后根据故障注入后被测系统的响应,判定被测系统的鲁棒性。VxWorks 的交叉调试环境需要主机 (Host) 和目标机 (Target) 之间的协作,VxWorks 的开发工具 Tornado 运行在主机上,目标机运行 VxWorks 系统的嵌入式设备。在主机上开发的应用,会通过目标服务

器 (target server) 下载到目标机运行,所有的主机工具都使用 WTX 协议 (WindRiver Tool Exchange) 与 target server 通信。3.1 测试控制方法

函数替换法的测试控制执行流程为:

(1) 创建测试程序进程。测试程序在主机编写完成,编译后生成 obj 文件被下载到目标机上,通过 wtx Tcl api ,可以控制测试程序启动,通过将测试程序函数入口址作为参数传递给进程创建命令 wtxContextCreate 并执行命令,创建测试程

序的进程。

(2) 在需被替换的函数入口设置断点。在符号表中查找到被替换函数的入口地址,使用 wtx Tcl api 中的 wtxEventpointAdd 函数在入口地址处设置断点。

(3) 启动进程,进程开始运行。进程被创建后会处于 SUSPEND 状态,进程会等待进一步的指令来控制其运行,使用 wtx Tcl api 的 wtxContextResume 命令,使进程变为 READY 状态,使进程可以被 CPU 调度和执行。

(4) 进程运行到被替换函数入口地址处时中断。进程处于 READY 状态,当 CPU 使用权被移交到进程后,进程开始运行,当运行到被设置断点的函数入口时,进程被中断再次进入 SUSPEND 状态,等待下一步指令。

(5) 进行函数替换或者全局变量修改操作。若使用函数替换法,则从符号表中找到替换函数的入口地址,将替换函数入口地址写入 PC 寄存器,当进程恢

复运行时,进程将进入替换函数运行。若使用变量修改法,则从符号表中找到变量地址,向变量地址中写入数据达到修改变量值的目的。

(6) 继续运行进程至结束。使用 wtxContextCont 函数控制进程继续执行,当进程执行完毕后,还需要进行一些工作,包括清除设置的断点,清除系统事件列表等。

函数替换测试控制活动图如图 8。变量修改法测试控制过程的活动图如图 9。

图7 函数替换实现

Fig. 7 Function replacement implementation

PC add

addSub

0x00cc531c

0x00cc531c 0x00cc531d

0x00cc531f 0x00cc53220x00cc53250x00cc53ac 0x00cc53ad 0x00cc53af 0x00cc53b20x00cc53bf

46

科研信息化技术与应用,2013, 4 (3)

3.2 软件鲁棒性判定方法

软件鲁棒性的判定需要考虑多方面因素,对应用系统故障设计与注入方法的软件系统来讲,鲁棒性判定的依据包括:

(1) 测试进程是否运行完成,故障是否会导致进程无法运行;

(2) 测试进程的运行结果是否符合测试预期;(3) 操作系统是否在正常运行,没有因为故障的发生而出现崩溃等情况。

4 实验分析

被测系统为 VxWorks 5.5 for pentium ,运行在 VMware 虚拟目标机上,通过运行在主机 Windows XP SP3 上的 tornado 2.2 进行 VxWorks 上应用程序的开发。主机上的工具通过 WTX 协议获得目标机的信息,并可以在目标机上对应用程序的运行进行控制。图8 函数替换法活动图

Fig. 8 Activity diagram of function replacement method

图9 条件变量修改法活动图

Fig. 9 Activity diagram of conditional variables modification method

图10 S_dosFsLib_FD_OBSOLETE 错误码故障模型

Fig. 10 Fault model of S_dosFsLib_FD_OBSOLETE

下面主要针对 VxWorks 的文件系统和内存管理机制注入故障,进行实验分析。

4.1 实验一:对 S_dosFsLib_FD_OBSOLETE 错误码进行故障注入

S_dosFsLib_FD_OBSOLETE 错误码指当程序对某个文件进行读写操作时,文件处于 obsolete 状态,指文件在被当前进程访问时,有其他进程对文件进行

了修改,当前进程对文件的持有状态被舍弃。由于读写锁的存在,在文件操作时一般不会出现这一故障,如果因为某些情况,设置了这一错误码,那么系统必

须对该故障作出响应,所以有必要使用故障注入方法对这一故障进行测试。

图 10 是以 write 函数为头结点生成的故障模

型,程序通过调用 write 函数,再经过一系列的函数调用,最终在 dosFsFileRW 函数中设置 S_dosFsLib_FD_OBSOLETE 错误码,替代函数 dosFsFileRWStub 用于替换 dosFsFileRW 函数实现故障的注入,在这个模型中使用的是函数替换法的封装替换模式实现故障注入。

创建进程

创建进程

设置断点

设置断点

替换函数

进程中断

进程中断

进程继续

write

iosWrite

dosFsWrite

dosFsFileRWStub

dosFsFileRW

S_dosFsLib_FD_OBSOLETE

恢复进程

恢复进程

进程继续

读取符号表修改全局变量值

47

朱晓燕 等: 模型驱动的 VxWorks 操作系统故障注入与鲁棒性测试研究

图11 S_dosFsLib_DISK_FULL 错误码故障模型

Fig. 11 Fault model of S_dosFsLib_DISK_FULL

替换函数 dosFsFileRWStub 需要实现的功能是对由 dosFsWrite 函数传递的参数进行修改,再将修改后的参数传递给 dosFsFileRW 函数并将 dosFsFileRW 函数的返回值返回给 dosFsWrite 函数。通过修改参数,达到使 dosFsFileRW 函数进入设置错误码分支的目的。在完成替换函数的编写后,开始执行测试。

(1) 首先使用 wtx 协议创建测试进程 testAgent ,在创建进程时给出进程的入口函数为 testFileWrite ;

(2) 从符号表中查找 dosFsFileRW 函数的地址,查找结果为 0x371350,在这个地址处设置断点;

(3) 恢复进程运行,使进程在断点处中断运行;(4) 从符号表中查找 dosFsFileRWStub 函数的地址,查找结果为 0x5ab110,将 PC 寄存器的值替换为 0x5ab110,恢复进程的运行,进程将转而执行 dosFsFileRWStub 函数;

(5) 等待进程执行完毕,观察进程和操作系统是否正常运行和响应。

testFileWrite 在正常执行时,会对文件写入两行“hello vxworks ”,测试过程中进程的运行结果显示,虽然进程可以完成执行,但其中执行的写文件操作未能完成,故障注入成功,而测试程序并没有针对故障做出正确的响应,同时操作系统也没有因为故障的产生而发生崩溃等问题。

4.2 实验二:对 S_dosFsLib_DISK_FULL 错误码进行故障注入

S_dosFsLib_DISK_FULL 错误码指当程序对文件进行写入操作时,由于磁盘空间已经全部被使用而无法将新的文件内容写入到磁盘上。在一般情况下如果要对这一故障进行测试,首先需要对磁盘进行大量写操作使磁盘空间全部被占用,在测试完成后还需要使磁盘恢复原来的状态,测试成本很高。

图 11 是以 write 函数为头结点生成的故障模型,程序通过调用 write 函数,最终在 dosFsFileRW 函数中设置 S_dosFsLib_DISK_FULL 错误码,替代函数 dosFsFileRWStub2 用于替换 dosFsFileRW 函数实现故障的注入,在这个模型中使用的是函数替换法的直接

替换模式实现故障注入。

替换函数 dosFsFileRWStub2 函数需要实现的功能是直接设置错误码并返回 ERROR ,在设置错误码后,还需要对文件描述指针 pfd 进行更新操作。

在完成 dosFsFileRWStub2 函数的编写后,开始执行测试。testFileWrite 在正常执行时,会对文件写入两行“hello vxworks ”,测试过程中进程的运行结果显示,虽然进程可以完成执行,但其中执行的写文件操作未能完成,故障注入成功,而测试程序并没有针对故障做出正确的响应,同时操作系统并没有因为

故障的产生而发生崩溃等问题。

4.3 测试结果分析

上述实验分别选取了文件系统和内存管理模块的典型故障进行了故障注入,运行结果表明,实验中的故障均被成功注入,这证明了系统故障的设计与注入方法的正确性与可行性,结果同时表明,VxWorks 系统对上述两种故障均不做处理,而是留给运行的程序做处理,故障的发生不会影响 VxWorks 操作系统的正常运行,如果在运行的程序中不对故障进行处理,则会引起程序的失效,导致程序鲁棒性降低,这也表明故障注入方法是验证软件系统鲁棒性的有效方法。

write

iosWrite

dosFsWrite

dosFsFileRW dosFsFileRWStub2

S_dosFsLib_DISK_FULL

科研信息化技术与应用,2013, 4 (3)

5 总 结

本文提出了一种模型驱动的 VxWorks 操作系统故障注入与鲁棒性测试方法。在故障建模方法中,设计了可以准确描述以故障为起点,故障处理函数为终点的函数调用路径的故障模型;故障注入方法中,针对特定的被测系统,实现了故障注入,且故障注入过程不会使系统出现额外的错误,保证了故障注入的正确性;测试控制方法通过控制被测系统的运行来控制测试过程,为实现故障注入提供条件;鲁棒性判定方法通过对测试结果的分析,对被测系统的鲁棒性进行判定。

参考文献

[1] VxWorks–Wikipedia [OL]. https://www.sodocs.net/doc/5010357245.html,/wiki/

VxWorks. 2013.

[2] Model Driven Architecture. https://www.sodocs.net/doc/5010357245.html,/cgi-bin/

doc.ormsc. 2001-07-01.

[3] Zhen Ru Dai. Model-Driven Testing with UML 2.0. In

Akehurst, D., ed.: Second European Workshop on Model Driven Architecture (MDA), Canterbury, Kent, University of Kent (2004) 179-187.

[4] 王林章, 李宣东. 模型驱动的软件测试研究[J]. 计算机科

学, 2005, 32(10): 230-235.

[5] Jean A, Martine A, Louis A, Yves C, Jean-Charles F,

Jean-Claude L, Eliane M, David P. Fault injection for dependability validation:A methodology and some applications.IEEE Trans.On Software Engineering, 1990, 16(2): 166-182.

[6] DeMillo RA, Lipton RJ, Sayward FG. Hints on test data

selection: Help for the practicing programmer. IEEE Computer, 1978, 11(4): 34-41.

[7] Ghuni AK, Nasser Ak, Jacob AA. FERRARI: A fl exible

software-based fault and error injection system. IEEE Trans. on Computers, 1995, 44(2): 248-260.

[8] Tsai TK, lyer RK, Jewitt D. An approach towards

benchmarking of fault-tolerant commercial systems. In:

Proc. of the Annual Symp. on Fault Tolerant Computing.

Los Alamitos: IEEE Computer Society, 1996. 314-323. [9] Carreira J, Madeira H. Silva JG. Xception: A technique for

the experimental evaluation of dependability in modem computers. IEEE Trans. on Software Engineering, 1998, 24(2): 125-136.

[10] J. Carreira, H. Madeira, and J.G. Silva, “Xception:

Software Fault Injection and Monitoring in Processor Functional Units,” Proc. Fifth Ann. IEEE Int’l Working Conf. Dependable Computing for Critical Applications, IEEE CS Press, Los Alamitos, Calif., pp. 135-149. [11] Barton JH, Czeck EW, Segall ZZ, Siewiorek DP. Fault

Injection experiments using FIAT. IEEE Trans. on Computers, 1990, 39(4): 575-582.

[12] 王新升, 黄振远, 梁斌. 一种基于 VxWorks 的星载计算

机软件故障注入方法研究[J]. 航天控制, 2010(5): 84-88 .

[13] 范文豪, 马捷中, 孙姜燕. 一种针对 VxWorks 系统的通

用软件故障注入方法[J]. 测控技术, 2011, 30(4) .

[14] GNU GLOBAL [OL]. http:// https://www.sodocs.net/doc/5010357245.html,/s/global.2012.

[15] CTAGS[OL]. https://www.sodocs.net/doc/5010357245.html,.2009.

[16] Graphviz[OL]. https://www.sodocs.net/doc/5010357245.html,.2012.

[17] Xdot[OL]. https://www.sodocs.net/doc/5010357245.html,/p/jrfonseca/wiki/

XDot.2011.

收稿日期:2012 年 11 月 12 日

朱晓燕:北京航空航天大学计算机学院,主要研究领域为模型驱动测试。

E-mail: zxyaner@https://www.sodocs.net/doc/5010357245.html,

吴 际:北京航空航天大学计算机学院,副教授,博士。主要研究领域为模型驱动测试、软件可靠性、嵌入式软件设计与验证。

E-mail: wujizeze@https://www.sodocs.net/doc/5010357245.html,

尚会波:北京航空航天大学计算机学院,主要研究领域为模型驱动测试。

E-mail: aerofishb@https://www.sodocs.net/doc/5010357245.html,

48

算 法 的 鲁 棒 性

[论文笔记]集成方法提高神经网络的对抗鲁棒性 集成方法提高神经网络的对抗鲁棒性一、多个弱防御的集成不能形成强防御1.攻击者2.防御策略3.对抗样本生成方法4.干扰大小的度量5.实验6.结论二、简单集成神经网络1.攻击方法2.集成模型3.计算梯度4.实验5.结论三、 ensemble of specialists1.利用FGSM 方法得到模型的混淆矩阵:2.伪代码如下:3.实验考虑三种模型4.实验结果四、随机自集成1.思想2.taget攻击与untarget攻击3.网络设计4.伪代码如下:5.理论分析6.结论五、集成对抗训练1.前言 2.对抗训练 3.集成对抗训练六、对抗训练贝叶斯神经网络(adv-BNN)1.前言2.PGD攻击3.BNN4.adv-BNN 一、多个弱防御的集成不能形成强防御 1.攻击者 假设攻击者知道模型的各种信息,包括模型架构、参数、以及模型的防御策略(白盒攻击)。 考虑两种白盒攻击者: (1)静态 不知道模型的防御策略,因此静态攻击者可以利用现有的方法生成对抗样本,但不针对特定的防御策略。 (2)动态 知道模型的防御策略,可以自适应地制定攻击方法,比静态攻击者更强大。

2.防御策略 (1)feature squeezing 包括两个检测组件:reducing the color depth to fewer bits 和spatially smoothing the pixels with a median filter (2)specialist-1 ensemble method 根据对抗混淆矩阵将数据集分成K+1个子集,形成由K+1个分类器组成的一个集成分类器 (3)多个检测器集成 包括Gong、Metzen、Feinman三个人提出的对抗样本检测器; 3.对抗样本生成方法 利用优化方法生成对抗样本,最小化如下损失函数: loss(x′)=∣∣x′?x∣∣22+cJ(Fθ(x′),y)loss(x#x27;)=||x #x27;-x||_{2}^{2}+cJ(F_{theta}(x#x27;),y)loss(x′)=∣∣x′? x∣∣22?+cJ(Fθ?(x′),y) 其中c为超参数,该方法也称为CW攻击方法。 4.干扰大小的度量 用下式度量对抗样本与干净样本之间差异: d(x?,x)=∑i(x?x)2d(x^{*},x)=sqrt{sum_i(x^{*}-x)^{2}}d(x? ,x)=i∑?(x?x)2? 其中样本点都被归一化[0,1]之间。 5.1 攻击 feature squeezing 结论:feature squeezing 不是一种有效的防御方法。首先单独

VxWorks常用命令汇总

VxWorks常用的命令 1.与任务相关的命令 sp function,[arg1],...,[arg9] -启动任务,最多接受9个参数,默认的优先级100、堆栈20000字节 period n,function,[arg1],...,[arg8] -创建一个周期调用function的任务,周期为n秒,最多接受8个参数 repeat m,function,[arg1],...,[arg8] -创建一个反复调用function的任务,调用次数为m,m=0时永久调用,最多也是8个参数 ts tidX -挂起任务 tr tidX -恢复挂起的任务 td tidX -删除任务 i tidX -显示任务基本信息,参数为0时显示全部任务 ti tidX -显示任务详细信息,包括寄存器、堆栈等 tt tidX -显示任务的函数调用关系 checkStack tidX -显示任务堆栈使用的历史统计,参数为0时显示全部任务 [其中tidX可以为任务ID 也可以为任务名] 2、系统信息 lkup ["string"] -在系统符号表中查找并列出含有"string"字符的函数及全局变量,有两个特殊参数: 0,给出符号表统计;""(空字符串),列出全部符号 lkAddr addr -显示addr地址附近的符号表 l addr,[n] -显示addr地址开始的n条指令的反汇编,n省略时默认为10条指令 h [n] -n为0时列出最近执行的shell命令,默认20条;n非0时,设定shell记录的历史命令的数目 d [addr,[number],[width]] -显示addr地址开始的number个单元的内容,width定制每个单元的宽度,可以是1、2、4、8 m addr,[width] -按width宽度修改addr地址的内容,width可以是1、2、4、8 memShow 1 -显示系统分区上空闲和已分配空间的总数等 printErrno value -打印系统定义的错误码的宏 3、与网络相关的命令 ifShow ["ifname"] - show info about network interfaces inetstatShow - show all Internet protocol sockets tcpstatShow - show statistics for TCP udpstatShow - show statistics for UDP ipstatShow - show statistics for IP icmpstatShow - show statistics for ICMP arpShow - show a list of known ARP entries

操作系统原理答案

习题二参考答案(P43) 2-1 什么是核态?什么是用户态? 答:核态是指系统程序执行时,机器所处的状态。 用户态是指用户程序执行时,机器所处的状态。 2-2 为什么必须区分二态?系统如何区分出二态? 答:二态是指核态(系统程序执行时处理机所处的状态)和用户态(用户程序执行时处理 机所处的状态)。 操作系统是计算机系统中最重要的系统软件,为了能正确地进行管理和控制,其本身是不 能被破坏的。为此,系统应能建立一个保护环境,因此系统必须区分处理机的工作状态。 系统中有两类程序在运行,它们的任务是不同的,系统程序是管理和控制者,用户程序是 被管理和被控制的对象,因此应将它们运行时处理机的工作状态区分出来,即系统必须区 分二态。系 2-5 按中断的功能来分,中断有哪几种类型?答:按中断的功能来分,中断有如下五种类 型: 访管中断硬件故障中断程序性中断I/O 中断外中断答:程序状态字是指反映程2-8 什么是程序状态字?在微机中它一般由哪两个部分组成? 和处理机状态数器(PC)序执行时机器所处的现行状态的代码。在微机中它一般由指令计)。PS寄存器(什么是向量中断?什么是中断向量?2-9 入中断服务程序的中断过程。答:向量中断是指当中断发生时,由中断源自己引导处理机进 器状态字的存储单元。中断向量就是存储该类型中断服务例行程序的入口地址和处理虚拟机?2-12 什么是操作系统机本的系统软件,它是硬件功能的第一层扩充。配置了操作系统的计算答:操作系统是最基还机。扩充了的计算机除了可以使用原来裸机提供的各种基本硬件指令,称为操作系统虚拟增加的许多其它指令。可以使用操作系统 P54)习题三参考答案(时系统提供什么接口?一个批处理系统又提供3-1 用户与操作系统的接口是什么?一个分什么接口?的接口是指操作系统提供给用户与计算机打交道的外部机制。答:用户与操作系统接口有一个批处理系统提供的一个分时系统提供的接口有系统功能调用和键盘操作命令。控制语言。系统功能调用和作业系如何?计算机对用户算题任务的加工过程一般分哪几个作业步?各作业步之间的关3-2 明。用自己的上机体会说题任务的加工过程一般分四个作业步:编辑、编译、连接和运行。答:计算机对用户算各作业步之间的关系如下:一个作业步的成功完成依赖于上一个前一个作业步的结果是下一个作业步的操作对象;

算 法 的 鲁 棒 性

[机器学习]Lasso,L1范数,及其鲁棒性 前言:本文包括以下几个方面,1. 介绍Lasso,从最初提出Lasso的论文出发,注重动机; 2. L1和L2范数的比较,注重L1的稀疏性及鲁棒性; 3. 从误差建模的角度理解L1范数 最早提出Lasso的文章,文献[1],已被引用n多次。 注:对于不晓得怎么翻译的英文,直接搬来。 1) 文献[1]的动机: 在监督学习中,ordinary least squares(OLS) estimates 最小化所有数据的平方残差(即只是让经验误差最小化),存在2个问题:1是预测误差(prediction accuracy):OLS estimates总是偏差小,方差大; 2是可解释性(interpretation):我们希望选出一些有代表性的子集就ok了。 【Lasso还有个缺点,ref8:当pn时,(如医学样本,基因和样本数目),Lasso却最多只能选择n个特征】 为了解决上面2个问题,2种技术应运而生: 1是subset selection:其可解释性强,但预测精度可能会很差; 2是岭回归(ridge regression):其比较稳定(毕竟是添加了正则化项,把经验风险升级为结构风险), 但可解释性差(只是让所有coefficients都很小,没让任何

coefficients等于0)。 看来这2种技术对于2大问题总是顾此失彼,Lasso就被提出啦!其英文全称是'least absolute shrinkage and selection operator' lasso的目的是:shrink? some coefficients and sets others to 0,保留subset selection可解释性强的优点和 ridge regression稳定性强的优点。 2)为什么Lasso相比ridge regression稀疏? 直观的理解[1] (plus a constant). (a)图:椭圆形是函数的图像,lasso的约束图像是菱形。 最优解是第一次椭圆线触碰到菱形的点。最优解容易出现在角落,如图所示,触碰点坐标是(0,c),等同于一个coefficient=0; (b)图:岭回归的约束图像是圆形。 因为圆形没有角落,所以椭圆线与圆形的第一次触碰很难是在坐标为(0,c)的点,也就不存在稀疏了。 2.? L1,L2范数误差的增长速度(ref2,ref3) L1范数误差的线性增长速度使其对大噪音不敏感,从而对不良作用形成一种抑制作用。 而L2范数误差的二次增长速度显著放大了大噪声负面作用。 3. 从误差建模的角度理解 1)孟德宇老师从误差建模的角度分析L1如何比L2鲁棒。(ref3) 1:看图1,由于L1范数的线性增长速度使其对大噪音不敏感,从而对

vxWorks开发环境构建步骤及开发资源

vxWorks开发环境构建步骤及开发资源 技创科技(Technique Innovator Inc.) https://www.sodocs.net/doc/5010357245.html, 一、Tornado集成开发环境构成 Tornado是集成开发环境的名称,主要由帮助及参考文档、操作系统vxWorks、开发工具(编译器、调试器、编辑器、target server等,据统计,挂接在Tornado下的可选工具和第三方有数百个)等三部分构成,分别对应三个目录: i.docs/ 所有文档都集中在该目录中, books.html是根索引,入门级开发请务必查看 以下文档: ●如果要熟悉使用界面及Tornado使用、创建工程,请参考:Tornado用户手册 及Tornado集成开发环境的HELP->content调出来的联机帮助文档; ●vxWorks的编译是使用标准GNU Makefile来编译连接的,要了解Makefile语 法请参考”GNU Make”;具体的Make rules存放在target/h/make/目录下。 ●如何调试?请参考“Debugging with GDB” ●vxWorks构成、特点及kernel,编程等:请参考:VxWorks Programmer's Guide, 系统调用、库函数接口标准等,请参考:VxWorks Reference Manual ●有关BSP(board support package)的构成、初始化、底层驱动等,请参考“BSP Reference” ●网络应用编程指南(socket编程): “VxWorks Network Programmer's Guide” ii.host/ 该部分存放主机端(开发机)的工具,如Tornado.exe,make.exe,编译器、调试器及TCL命令解释器等等,开发中要用到的工具都存放在目录 host\x86-win32\bin 下,部分命令是.exe文件,部分是.bat的,其中有torvars.bat文 件,是设置Tornado集成开发环境的环境变量用的,在使用其他工具前,要运行它 设置正确的环境变量及可执行文件搜索路径。 iii.target/ vxWorks操作系统、源码、BSP、设备驱动、头文件、配置文件等config/ BSP的存放地方,底层开发者绝大部分时间在该目录下度过,该目录下除了all/和comps/外,其他每个目录对应一种硬件板的BSP,开发者在 做BSP开发时,原则上除了对应BSP目录能修改外,target/目录下的其他 所有目录都不应该作出改动,否则会影响到其他BSP,常用BSP有: pid7t/ →ARM公司推出的pid7 ARM7TDMI评估板的BSP integratorX/ →ARM公司推出的integratorXXX评估板的BSP tk4510a/ →我们要使用的S3C4510B板的BSP SNDS100/ →三星公司推出的SNDS100(KS3C50100/S3C4510B)板的 BSP h/ 头文件存放地点,包括vxWorks的及所有其他组件的 arch/arm/ ARM体系结构相关头文件 make/ 编译连接时要用到的规则都存放在这里 vxWorks.h wind Kernel(vxWorks的核心”Wind Kernel”的API及常量说明) lib/ vxWorks是一个商用操作系统,其不开放源码部分的.o文件及.a(库文件)文件存放在这里(当然,除了config/目录外,所有其他目录下的*.c源码在编

操作系统原理答案(张丽芬)

第2章习题答案 2-9. (1)x<=3 运行顺序为Px,P3,P5,P6,P9 T=(x+(x+3)+(x+3+5)+(x+3+5+6)+(x+3+5+6+9))/5=x+ (2)3

作业4还未到,只能选作业3运行。 作业3运行到结束,再计算剩余的作业2和4: 作业2的响应比=(()+)/= 作业4的响应比=( /=2 选作业2运行。 作业2到完成。最后运行作业4。运行到,全部结束。 各个作业的周转时间计算如下: t1=2 t2== t3= t4== 各个作业的平均周转时间计算如下: T==(2++1+/4= 各个作业的平均带权周转时间计算如下: W=(2/2++1/+/4= 2-13.已知作业A,B,C,D,E需要的运行时间分别为10,6,2,4,8分钟,优先级分别为3,5,2,1,4。 (1)轮转法(假定时间片=2分钟) 作业完成的顺序为C,D,B,E,A 开始作业轮转一周需10分钟, 作业C的周转时间:Tc=10分钟(6分) C完成后,剩下四个作业,轮转一周需8分钟, 作业D的周转时间:Td=10+8×(4-2)/2=18分钟(16分) D完成后,剩下三个作业,轮转一周需6分钟, 作业B的周转时间:Tb=18+6×(6-2-2)/2=24分钟(22分) B完成后,剩下两个作业,轮转一周需4分钟, 作业E的周转时间:Te=24+4=28分钟(28分) E完成后,只剩下作业A, 作业A的周转时间:Ta=28+2=30分钟(30分) 平均周转时间:T=(10+18+24+28+30)/5=22分(分) (2)优先级调度法 作业完成顺序为:B,E,A,C,D Tb=6分,Te=6+8=14分,Ta=14+10=24分,Tc=24+2=26分, Td=26+4=30分。 平均周转时间:T=(6+14+24+26+30)/5=20分 第3章习题答案 3-7. 系统中有n+1个进程。其中A1、A2、…、An分别通过缓冲区向进程B发送消息。相互之间的制约关系为:发送进程A1、A2、…、An要互

操作系统原理试卷及答案

课程名称:操作系统原理考试时间 专业年级学号姓名 一、单项选择(每小题2分,共26分)。 1.操作系统是一种( )。 A. 系统软件 B. 系统硬件 C. 应用软件 D. 支援软件 2.分布式操作系统与网络操作系统本质上的不同在于()。 A.实现各台计算机这间的通信 B.共享网络中的资源 C.满足较在规模的应用 D.系统中多台计算机协作完成同一任务 3.下面对进程的描述中,错误的是()。 A.进程是动态的概念 B. 进程执行需要处理机 C.进程是指令的集合 D. 进程是有生命期的 4.临界区是指并发进程中访问共享变量的()段。 A.管理信息 B.信息存储 C.数据 D.程序 5.要求进程一次性申请所需的全部资源,是破坏了死锁必要条件中的哪一条 ()。 A.互斥 B.请求与保持 C.不剥夺 D.循环等待 6.以下哪种存储管理不可用于多道程序系统中()。 A.单一连续区存储管理 B.固定式区存储管理 C.可变分区存储管理 D.段式存储管理 7.在可变式分区存储管理中,某作业完成后要收回其主存空间,该空间可能与 相邻空闲区合并,修改空闲区表,使空闲区数不变且空闲区起始地址不变的情况是()。 A.无上邻空闲区也无下邻空闲区 B.有上邻空闲区但无下邻空闲区 C.有下邻空闲区但无上邻空闲区 D.有上邻空闲区也有下邻空闲区 8.系统“抖动”现象的发生不是由()引起的。 A.置换算法选择不当 B.交换的信息量过大 C.主存容量不足 D.请求页式管理方案

9.在进程获得所需全部资源,唯却CPU时,进程处于()状态。 A.运行 B.阻塞 C.就绪 D.新建 10.要页式存储管理系统中,将主存等分成()。 A.块 B.页 C.段长 D.段 11.系统利用 SPOOLING技术实现()。 A.对换手段 B.虚拟设备 C.系统调用 D.虚拟存储 12.设备从磁盘驱动器中读出一块数据的总时间为()。 A.等待时间 + 传输时间 B.传输时间 C.查找时间 + 传输时间 D.延迟时间 + 查找时间 + 传输时间 13.如果允许不同用户的文件可以具有相同的文件名,通常采用()来保证按名存取的安全。 A.重名翻译机构 B.建立索引表 C.多级目录结构 D.建立指针 二、多项选择(每小题3分,共24分)。 1.操作系统有多种类型,允许多个用户以交互方式使用的操作系统,称为()。 A.批处理操作系统 B.分时操作系统 C.实时操作系统 D.微机操作系统 E.多处理机操作系统。 2.引入多道程序设计的主要目的在于()。 A.提高实时响应速度 B.充分利用处理机,减少处理机空闲时间 C.有利于代码共享 D.充分利用外围设备 E.减少存储器碎片 3.段式和页式存储管理的地址结构很类似,但是它们之间有实质上的不同,表现为()。 A.页式的逻辑地址是连续的,段式的逻辑地址可以不连续 B.页式的地址是一维的,段式的地址是二维的 C.分页是操作系统进行的,分段是用户确定的 D.各页可以分散存放在主存,每段必须占用连续的主存空间 E.页式采用静态重定位方式,段式采用动态重定位方式 4.产生系统死锁的原因可能是由于()。 A.进程释放资源 B.多个进程竞争共享型设备 C.一个进程进入死循环 D.多个进程竞争,资源出现了循环等待 5.以下属于独享设备的是( )。 A.磁盘 B.磁带 C.打印机 D.扫描仪

算 法 的 鲁 棒 性

【架构设计】【程序指标】鲁棒性与健壮性的细节区别 一、健壮性 健壮性是指软件对于规范要求以外的输入情况的处理能力。 所谓健壮的系统是指对于规范要求以外的输入能够判断出这个输入不符合规范要求,并能有合理的处理方式。 另外健壮性有时也和容错性,可移植性,正确性有交叉的地方。 比如,一个软件可以从错误的输入推断出正确合理的输入,这属于容错性量度标准,但是也可以认为这个软件是健壮的。 一个软件可以正确地运行在不同环境下,则认为软件可移植性高,也可以叫,软件在不同平台下是健壮的。 一个软件能够检测自己内部的设计或者编码错误,并得到正确的执行结果,这是软件的正确性标准,但是也可以说,软件有内部的保护机制,是模块级健壮的。 软件健壮性是一个比较模糊的概念,但是却是非常重要的软件外部量度标准。软件设计的健壮与否直接反应了分析设计和编码人员的水平。即所谓的高手写的程序不容易死。 (不是硅谷,印度才是全球软件精英向往之地) 为什么印度人的软件业在国际上要比中国的好,除了印度人母语是英语的原因外,更重要的是因为印度人严谨,他们的程序更有健壮性。印度的一个老程序员,月代码量在一千行左右,这一千行代码,算法平实,但都是经过仔细推敲,实战检验的代码,不会轻易崩溃的代码。我们的程序

员,一天就可以写出一千行代码,写的代码简短精干,算法非常有技巧性,但往往是不安全的,不完善的。印度人的程序被称作:傻壮。但程序就得这样。写一段功能性的代码,可能需要一百行代码,但是写一段健壮的程序,至少需要300行代码。例如:房贷计算器的代码,算法异常简单,十多行就完成了,但是,这段程序完全不具备健壮性,很简单,我的输入是不受限制的,这个程序要求从用户界面读取利率,年限,贷款额三个数据,一般同学的写法很简单,一句doubleNum = Double.parseDouble(JOptionPane.showInputDialog(null,"请输入"+StrChars)) ;就万事OK了。但是,真的有这么简单么,开玩笑,这么简单就好了,列举以下事例1,我输入了负数2,我的输入超出了double类型所能涵盖的范围3,我输入了标点符号4,我输入了中文5,我没输入6,我选择了取消或者点了右上角的关闭这一切都是有可能发生的事件,而且超出了你程序的处理范围,这种事情本不该发生,但是程序使用时,一切输入都是有可能的,怎么办,你只能在程序中限制输入。作为一个程序员,你如何让你的代码在执行的时候响应这些事件呢,我用了四十行代码编写了一个方法,用来限定我的输入只能为正实数,否则就报错,用户点击取消或者关闭按钮,则返回一个特殊数值,然后在主方法增加一个循环,在调用输入方法的时候检查返回值,如果为特殊值,就返回上层菜单或者关闭程序。 二、鲁棒性 鲁棒是Robust的音译,也就是健壮和强壮的意思。 鲁棒性(robustness)就是系统的健壮性。它是指一个程序中对可能

操作系统原理考题及答案

《操作系统原理》期末考试题 班级学号姓名 一、单项选择题(每题2分,共26分) 1.操作系统是一种()。 A. 系统软件 B. 系统硬件 C. 应用软件 D. 支援软件 2.分布式操作系统与网络操作系统本质上的不同在于()。 A.实现各台计算机这间的通信 B.共享网络中的资源 C.满足较在规模的应用 D.系统中多台计算机协作完成同一任务 3.下面对进程的描述中,错误的是()。 A.进程是动态的概念 B. 进程执行需要处理机 C.进程是指令的集合 D. 进程是有生命期的 4.临界区是指并发进程中访问共享变量的()段。 A.管理信息 B.信息存储 C.数据 D.程序 5.要求进程一次性申请所需的全部资源,是破坏了死锁必要条件中的哪一条()。 A.互斥 B.请求与保持 C.不剥夺 D.循环等待 6.以下哪种存储管理不可用于多道程序系统中()。 A.单一连续区存储管理 B.固定式区存储管理 D. 段式存储管理 C.可变分区存储管理7.在可变式分区存储管理

中,某作业完成后要收回其主存空间,该空间可能与 1 / 8 相邻空闲区合并,修改空闲区表,使空闲区数不变且空闲区起始地址不变的 情况是()。 A.无上邻空闲区也无下邻空闲区 B.有上邻空闲区但无下邻空闲区 C.有下邻空闲区但无上邻空闲区 D.有上邻空闲区也有下邻空闲 区 8.系统“抖动”现象的发生不是由()引起的。 A.置换算法选择不当 B.交换的信息量过大 C.主存容量不足 D.请求页式管理方案 9.在进程获得所需全部资源,唯却CPU时,进程处于()状态。 A.运行 B.阻塞 C.就绪 D.新建 10.要页式存储管理系统中,将主存等分成()。 A.块 B.页 C.段长 D.段 11.系统利用SPOOLING技术实现()。 A.对换手段 B.虚拟设备 C.系统调用 D.虚拟存储 12.设备从磁盘驱动器中读出一块数据的总时间为()。 A.等待时间+ 传输时间 B.传输时间 D.延迟时间+ 查找时间+ 传输时间 C.查找时间+ 传输时间 13.如果允许不同用户的文件可以具有相同的文件名,通常采用()

鲁棒性

鲁棒性介绍 鲁棒是Robust的音译,也就是健壮和强壮的意思。它是在异常和危险情况下系统生存的关键。比如说,计算机软件在输入错误、磁盘故障、网络过载或有意攻击情况下,能否不死机、不崩溃,就是该软件的鲁棒性。所谓“鲁棒性”,是指控制系统在一定(结构,大小)的参数摄动下,维持某些性能的特性。根据对性能的不同定义,可分为稳定鲁棒性和性能鲁棒性。以闭环系统的鲁棒性作为目标设计得到的固定控制器称为鲁棒控制器。 1.溯源和背景 鲁棒性原是统计学中的一个专门术语,20世纪70年代初开始在控制理论的研究中流行起来,用以表征控制系统对特性或参数摄动的不敏感性。 在实际问题中,系统特性或参数的摄动常常是不可避免的。产生摄动的原因主要有两个方面,一个是由于量测的不精确使特性或参数的实际值会偏离它的设计值(标称值),另一个是系统运行过程中受环境因素的影响而引起特性或参数的缓慢漂移。因此,鲁棒性已成为控制理论中的一个重要的研究课题,也是一切类型的控制系统的设计中所必须考虑的一个基本问题。对鲁棒性的研究主要限于线性定常控制系统,所涉及的领域包括稳定性、无静差性、适应控制等。 2.原理 鲁棒性问题与控制系统的相对稳定性(频率域内表征控制系统稳定性裕量的一种性能指标)和不变性原理(自动控制理论中研究扼制和消除扰动对控制系统影响的理论)有着密切的联系,内模原理(把外部作用信号的动力学模型植入控制器来构成高精度反馈控制系统的一种设计原理)的建立则对鲁棒性问题的研究起了重要的推动作用。当系统中存在模型摄动或随机干扰等不确定性因素时能保持其满意功能品质的控制理论和方法称为鲁棒控制。早期的鲁棒控制主要研究单回路系统频率特性的某些特征,或基于小摄动分析上的灵敏度问题。现代鲁棒控制则着重研究控制系统中非微有界摄动下的分析与设计的理论和方法。

EPON常用命令讲解

EPON常用命令讲解 ?数据业务基本排查 ?语音业务基本排查 ?930软件脚本简介 ?其他常用命令 ?典型案例分析 数据业务基本排查 基本思路: 在PON系统内GSWC、EC2、ONU各业务环节上应保证: 配置正确 配置生效 MAC地址正确转发 ?FTTH型ONU ?FTTB型ONU 配置核查 Onu switch目录: show vlan all显示所有端口vlan; show vlan 查看交换芯片单个vlan及其所属端口的信息,如果此端口配置为出口剥离vlan,相应端口显示为UN;反之显示为VF show vlan default 显示所有端口的untag属性的vlanid; Onu Debug下相关命令: ddd show port [|all] vlan config显示系统QinQ不使能下的Fe端口vlan的配置信息show port [|all] vlan service显示系统QinQ使能下的Fe端口vlan的配置信息show port [|all] vlan translation table显示端口的软件vlan转换表 EC2 Pon目录: show qinq_config <1-2> <1-24> 查询qinq模式下ONU端口业务信息 端口检查 show port status查看交换芯片端口的状态,可以查看用户端口是否接了终端,工作模式是否正确等 查看地址转发表

ONU swtich目录 show arl查看mac地址转发表,会显示学习到的端口、vlanid和mac地址,如果用户的vlan id同时上下行数据中学到,其中26端口( CPU端口)表示下行数据正常,用户端口1-24表示上行数据正常; OLT fdb目录 show fdb slot <1-8,11-18>查看上行数据时,查看业务卡(EC2)fdb表 show fdb slot 29查看下行数据时,查看上联口fdb表 主控盘学的地址的VID应该是最外层VLAN的VID。 如果,上下行fdb表都正确,但是拨号拨不上去,可以在OL T的上连口抓包,查看进出的包内容。如果有出去的包而无回来的包,则可以判断出是上游设备出问题。 如果fdb表学习不正确,则VLAN配置有问题,可以根据fdb表的情况,先判断问题出现在哪一个设备上,再查看VLAN配置有无问题。 其他处理方式: 如时延大、丢包、组播业务等问题,可分别在EPON系统与其他系统的接口处利用抓包工具查看定位,由于上联口只能封装单层vlan,Qinq和单层vlan方式会略有差别。 FTTN型ONU 与其他ONU差异 FTTN型ONU相对其他类型ONU比较独立,对于普通的数据、语音业务,OLT相当于“透传”的通道。 配置核查: FSWB Profile目录下 创建/修改/查看ADSL2+端口模板参数: add xaplus profile ; set dsl-profile ; show dsl-profile ; 主要查看4个方面: 1.编码类型(lineCoding) 一般编码类型在开通的下行速率低于8Mb/s时采用G .dmt,大于8M时采用adsl2plusauto。 2.线路类型(channelMode) 线路类型采用interleaved更为稳定 3.训练速率(dnFastMaxTxRate,dnIntlMaxTxRate,upFastMaxTxRate,upIntlMaxTxRate) ADSL 一般最大上行可达速率为800Kb/s,下行可达速率为8Mb/s ADSL2+一般最大上行可达速率为1Mb/s,下行可达速率为28Mb/s 配置时上行速率不要超过1Mb/s,推荐640Kb/s

一种尺度空间特征区域的强鲁棒性水印算法

————————————————————————————————————————————————一种尺度空间特征区域的强鲁棒性水印算法 作者齐向明,徐嫚,李玥,侯明君 机构辽宁工程技术大学软件学院 DOI 10.3969/j.issn.1001-3695.2018.01.0056 基金项目国家自然科学基金资助项目(61401185) 预排期卷《计算机应用研究》2019年第36卷第7期 摘要针对数字水印算法中特征区域选取不足以反映图像重要信息,导致鲁棒性减弱的问题,提出一种尺度空间特征区域的强鲁棒性水印算法。通过尺度空间特征点检测,提取靠近载体图像 重心且互不重叠的特征区域,合成特征区域矩阵,用变换域水印算法嵌入水印,对可能受到 攻击的含水印图像提取特征区域,合成其特征区域矩阵,用嵌入水印算法逆过程提取水印。 实验表明,该算法不仅对一系列攻击都具有强鲁棒性,且不可见性良好。 关键词数字水印;尺度空间;特征区域;变换域;强鲁棒性 作者简介齐向明(1966-),男,阜新人,副教授,硕导,主要研究方向为图像图形处理?数字水印;徐嫚(1994-),女,硕士研究生,主要研究方向为图像图形处理?数字水印 (1838337985@https://www.sodocs.net/doc/5010357245.html,);李玥(1993-),女,硕士研究生,主要研究方向为图像图形处理 ?数字水印;侯明君(1996-),男,学士,主要研究方向为软件工程. 中图分类号TP391 访问地址https://www.sodocs.net/doc/5010357245.html,/article/02-2019-07-056.html 投稿日期2018年1月11日 修回日期2018年3月7日 发布日期2018年4月12日 引用格式齐向明, 徐嫚, 李玥, 侯明君. 一种尺度空间特征区域的强鲁棒性水印算法[J/OL]. 2019, 36(7). [2018-04-12]. https://www.sodocs.net/doc/5010357245.html,/article/02-2019-07-056.html.

《操作系统原理实验》试卷A及答案

《中山大学授予学士学位工作细则》第六条 考试作弊不授予学士学位 计算机科学系2012第二学期 《操作系统原理实验》期末考试试题(A) 任课教师:李才伟考试形式:开卷考试时间:2小时年级:11 班别:3 专业:计科姓名:________ 学号:___ _ 成绩___ _ 注意:答案一定要写在答卷中,写在本试题卷中不给分。本试卷要和答卷一起交回。 一.填空题(每小题2分,共30分) 1.在我们的操作系统实验中,C与汇编语言混合编程的操作系统环境为___,其所用的虚拟机为___。2.测试用软盘映像文件的大小为___MB,使用的文件系统格式为___。 3.Intel 80386新增加的两个段寄存器分别为___和___。 4.Intel处理器实模式下的中断向量表包含___个中断向量,每个中断向量有___位。 5.Linux中挂载磁盘映像的命令为___,C语言的编译器为___。 6.将程序的入口安排在指定位置的汇编操作符为___、LD的链接选项为___。 7.ELF的英文原文是___,中文译文为___。 8.在FAT的文件条目中,普通文件和子目录的文件属性值分别为___和___。 9.在IA-32的保护模式下,分段用于___,分页用于___。 10.IA-32处理器的4个系统地址寄存器分别为___。 11.IA-32中的描述符和选择符大小分别为___位和___位。 12.TSS的主要功用为___,TSS描述符只能位于___描述符表中。 13.控制保护模式的寄存器为___,激活保护标志位于其___位。 14.IA-32的三种特权级类型分别为___、___和___。 15.在Make文件中,$@ 和$< 分别表示___和___。 二.问答题(每小题5分,共30分) 1.在实模式下的进程调度中是如何实现堆栈切换的? 2.IA-32的保护模式相比实模式的主要优点有哪些? 3.给出IA-32保护模式下的段寄存器的内容、组成和功用。 4.给出GDT和LDT的英文原文和中文译文,它们有哪些主要功用和区别? 5.启动分页机制的主要步骤有哪些? 6.给出IA-32段页式保护模式下(采用4KB页面大小与两级分页方式的)逻辑地址和线性地址的构成及转 换成物理地址的方法。

简论结构抗震的鲁棒性

简论结构抗震的鲁棒性 叶列平1,2,程光煜1,2,陆新征1,2,冯鹏1,2 (1.清华大学土木工程系,北京,100084;2.结构工程与振动教育部重点实验室,北京,100084)建筑结构/Building Structures, 2008, 38(6): 11-15. 摘要:本文首先介绍了结构鲁棒性的概念,及其提高结构鲁棒性对避免结构在罕遇地震下垮塌的重要意义。然后,分别从抗震结构体系、结构承载力与延性、结构破坏模式,以及赘余构件等几方面讨论了提高结构抗震鲁棒性的措施。 关键词:结构抗震,鲁棒性,结构体系,整体性,破坏模式,结构承载力,结构延性,赘余构件Download PDF version Introduction of Robustness for Seismic Structures Ye Lieping, Cheng Guangyu, Lu Xinzheng, Feng Peng Abstract:The concept of robustness of structures is firstly introduced in this paper. And importance with enough robustness for seismic structures in preventing collapse of the structures under strong intensity earthquake attack is discussed. Then the approaches to increase the robustness of seismic structures, including structural systems, strength and ductility of structure, failure modes and redundancy, are suggested. Keywords: seismic structure; robustness; structural systems; integrity; failure mode; strength; ductility; redundancy elements. 1. 结构鲁棒性的概念和意义 工程结构设计通常需要满足安全性、适用性和耐久性的要求,这些都是在正常使用荷载和作用情况下结构所应具备的功能。而结构的鲁棒性(Robustness)是针对在意外荷载和作用情况下所应具备的一种功能,也即在意外荷载和作用情况下,结构不应产生与其原因不相称的垮塌,造成不可接受的重大人员伤亡和财产损失。 鲁棒性与安全性既有联系,又有区别。首先,两者关心的都是工程结构安全问题,但结构的鲁棒性是以避免结构垮塌为目标的,可以认为是结构安全性的上限。而目前通常所说的安全性是以结构的不超过最大承载力为目标的,即按所谓?quot;承载力极限状态"来考虑的安全性。事实上,结构达到最大承载力(极限状态)并不意味着结构的垮塌。另一方面,安全性是针对正常使用荷载和作用来考虑的,而鲁棒性是针对意外荷载和作用来考虑的,两者所考虑的荷载和作用的特征不同。正常荷载与作用在设计阶段能够给予

VxWorks操作系统MakeFile

VxWorks操作系统MakeFile(一) 时间:2008-8-24 夜 版权申明:本文为水煮鱼为水煮鱼@博客园撰写,不得用于商业用途,如需摘用,请与水煮鱼联系。 1、介绍 本文将介绍为什么要将你的C源代码分离成几个合理的独立文档,什么时候需要拆分,那又怎么拆分呢? 然后再介绍如何使用GUN Make使你的编译和链接步骤自动化。可能你使用的是其他的make工具,但是其实道理都差不多。当然如果你对自己的编程工具有怀疑的话,可以不妨实际的试试。 2、多文件项目介绍 a. why? 为什么使用多文件项目?他们有什么好处呢? 从表面上看,多文件项目是够复杂的了,又要头文件,又需要extern申明,并且如果你要查找一个文件的话,还需要在更多的文件里搜索。 但是如果把其考虑成一个项目,那一个项目根据功能划分为小的模块,那就不难理解了。 想想如果是一个一万行代码,如果你把其放到一个文件里,则在编译的时候,则需要对一万行代码进行重新编译。不过如果你如果把其放到不同的文件里,那修改一行,则只需要编译一个文件就可以了。可能你会说,一万行代码,就算全部编译,那点时间也基本可以忽略不计,但是实际情况是,在一个大的系统里,可能代码达到几十万甚至上百万,千万行代码的规模。以我们的项目为例,目前代码规模已经达到了上千万行的级别,如果全部重新编译,则将耗费几个小时甚至半天的时间。如果将其划分多多个文件,则修改一行所引入的编译代码,将不会随着你代码规模的增大而增大。所以多个文件的优点不言自明了。 不过对于不便于搜索的问题,其实只要文件划分得当,也并不会造成多大的困难。其实,从多个目标文件生成一个程序包比从一个单一文件生成程序包要好的多。当然,实际上这是不是一个优势还与你所使用的系统有关。但是当使用gcc/ld(一个GUN C编译器/连接器)把一个程序包连接到一个程序时,在连接的过程中,它会尝试不去连接没有使用到的部分,但它每次只能从程序包中把一个完整的目标文件排除在外。因此,如果你修改了一个程序包中某一个目标文档中任何一个符号的话,那么这个目标文件整个都会被连接进来。要是一个程序包被非常充分的分解的话,那么经过链接后,得到的可执行文件会比从一个大目标文件组成的程序包连接得到的文件小的多。 并且常常我们的程序是模块化的,高内聚,低耦合,使得文件之间共享部分被减少到了最少,因此采用多文件的方式,可以比较容易的找到代码中的bug。 b.when? 那什么时候分解你的项目? 如果你开发的是一个大项目,在开始前,应该好好考虑一下你将如何实现,并且将生成几个文件来存放你的代码。当然,在项目的开发过程中,你可以建立新的我文件,但是这将打乱你的整体布局,可能造成你整体结构的调整。因此特别建

操作系统原理练习题附答案

《操作系统原理》练习题 一、填空题 1. 每个进程都有一个生命周期,这个周期从__(1)__开始,到__(2)__而结束。 2. 当一个进程独占处理器顺序执行时,具有两个特性:__(3)__和可再现性。 3. 并发进程中与共享变量有关的程序段称为__(4)__。 4. 一个进程或者由系统创建,或者由__(5)__创建。 5. 一个进程的静态描述是处理机的一个执行环境,被称为__(6)__。 6. 信号量的物理意义是:信号量大于0,其值为__(7)__;信号量小于0,其绝对值为__(8)__。 7. 系统有某类资源5个,供3个进程共享,如果每个进程最多申请__(9)__个该类资源,则系统是安全的。 8. 不可中断的过程称为__(10)__。 9. 操作系统中,进程可以分为__(11)__进程和__(12)__进程两类。 10. 操作系统为用户提供两种类型的使用接口,它们是__(13)__接口和__(14)__接口。 11. 批处理操作系统中,操作员根据作业需要把一批作业的有关信息输入计算机系统,操作系统选择作业并根据__(15)__的要求自动控制作业的执行。 12. 在批处理兼分时的系统中,往往由分时系统控制的作业称为前台作业,而由批处理系统控制的作业称为__(16)__作业。 13. 采用SPOOL技术的计算机系统中,操作员只要启动__(17)__程序工作,就可以把作业存放到__(18)__中等待处理。 14. 作业控制方式有__(19)__方式和__(20)__方式二种。 15. 对资源采用抢夺式分配可以防止死锁,能对处理器进行抢夺式分配的算法有__(21)__算法和__(22)__算法。 16. 因争用资源产生死锁的必要条件是互斥、__(23)__、不可抢占和__(24)__。 17. 死锁的形成,除了与资源的__(25)__有关外,也与并发进程的__(26)__有关。 18. 为破坏进程循环等待条件,从而防止死锁,通常采用的方法是把系统中所有资源类进行__(27)__,当任何一个进程申请两个以上资源时,总是要求按对应资源号__(28)__次序申请这些资源。 19. 内存管理的核心问题是如何实现__(29)__的统一,以及它们之间的__(30)__问题。 20. 页式存储管理中,处理器设置的地址转换机构是__(31)__寄存器。 21. 在页式和段式存储管理中,__(32)__存储管理提供的逻辑地址是连续的。 22. 实现地址重定位或地址映射的方法有两种:__(33)__和__(34)__。 23. 在响应比最高者优先的作业调度算法中,当各个作业等待时间相同时,__(35)__的作业将得到优先调度;当各个作业要求运行的时间相同时,__(36)__的作业得到优先调度。 24. 确定作业调度算法时应注意系统资源的均衡使用,即使CPU繁忙的作业和__(37)__的作业搭配使用。 25. 按照组织形式分类文件,可以将文件分为普通文件、目录文件和__(38)__。 26. 文件系统为用户提供了__(39)__的功能,以使得用户能透明地存储访问文件。 27. 文件名或记录名与物理地址之间的转换通过__(40)__实现。 28. 文件的__(41)__与文件共享、保护和保密紧密相关。

相关主题