免费智能真题库 > 历年试卷 > 系统架构设计师 > 2014年下半年 系统架构设计师 上午试卷 综合知识
  第16题      
  知识点:   基准程序法   实际应用   事务
  关键词:   测试   基准程序        章/节:   系统配置与性能评价       

 
实际应用中,用户通常依靠评价程序来测试系统的性能。以下评价程序中,(16)的评测准确程度最低。事务处理性能委员会(Transaction Processing Performance Council, TPC)是制定商务应用基准程序(benchmark)标准规范、性能和价格度量,并管理测试结果发布的非营利组织,其发布的TPC-C是(17)的基准程序。
 
 
  A.  核心程序
 
  B.  真实程序
 
  C.  合成基准程序
 
  D.  小型基准程序
 
 
 

 
  第17题    2010年下半年  
   47%
以下关于系统性能的叙述中,不正确的是(17) 。
  第16题    2020年下半年  
   13%
进行系统监视通常有三种方式:一是通过(16),如UNIX/Lmux系统中的ps、last等;二是通过系统记录文件查阅系统在特定时间内的运行..
  第17题    2020年下半年  
   48%
进行系统监视通常有三种方式:一是通过(16),如UNIX/Lmux系统中的ps、last等;二是通过系统记录文件查阅系统在特定时间内的运行..
   知识点讲解    
   · 基准程序法    · 实际应用    · 事务
 
       基准程序法
        上述性能评价方法主要是针对CPU(有时包括内存),但没有考虑诸如I/O结构、操作系统、编译程序的效率等对系统性能的影响,因此难以准确评价计算机的实际工作能力。
        基准程序法(benchmark)是目前测试性能的较好方法,有多种多样的基准程序,如主要测试整数性能的基准程序逻辑、测试浮点性能的基准程序等。
        (1)Khrystone基准程序。Khrystone是一个综合性的整数基准测试程序,它是为了测试编译器和CPU处理整数指令和控制功能的有效性,人为地选择一些典型指令综合起来形成的测试程序。Khrystone基准程序用100条C语言语句编写而成,这种基准程序当今很少使用。
        (2)Linpack基准程序。Linpack基准程序是一个用Fortran语言写成的子程序软件包,称为基本线性代数子程序包,此程序完成的主要操作是浮点加法和浮点乘法操作。测量计算机系统的Linpack性能时,让机器运行Linpack程序,测量运行时间,将结果用MFLOPS表示。
        (3)Whetstone基准程序。Whetstone是用Fortran语言编写的综合性测试程序,主要由执行浮点运算、功能调用、数组变址、条件转移和超越函数的程序组成。Whetstone的测试结果用Kwips表示,1 Kwips表示机器每秒钟能执行1000条Whetstone指令。这种基准程序当今已很少使用。
        (4)SPEC(System Peformance Evaluation Cooperative,系统性能评估机构)基准程序。SPEC对计算机性能的测试有两种方法:一种是测试计算机完成单个任务有多快,称为速度测试;另一种是测试计算机在一定时间内能完成多少个任务,称为吞吐率测试。SPEC的两种测试方法又分为基本的和非基本的两类。基本的是指在编译程序的过程中严格限制所用的优化选项;非基本的是可以使用不同的编译器和编译选项以得到最好地性能,这就使得测试结果的可比性降低。SPEC CPU2000基准程序测试了CPU、存储器系统和编译器的性能。SPEC基准程序测试结果一般以SPECmark(SPEC分数)、SPECint(SPEC整数)和SPECfp(SPEC浮点数)来表示。其中SPEC分数是10个程序的几何平均值。
        (5)TPC(Transaction Processing Council,事务处理委员会)基准程序。TPC用来评测计算机在事务处理、数据库处理、企业管理与决策支持系统等方面的性能。该基准程序的评测结果用每秒完成的事务处理数TPC来表示。TPC-A基准程序规范用于评价在联机事务处理(OLTP)环境下的数据库和硬件的性能,不同系统之间用性能价格比进行比较;TPC-B测试的是不包括网络的纯事务处理量,用于模拟企业计算环境;TPC-C测试的是联机订货系统;TPC-D、TPC-H和TPC-R测试的都是决策支持系统;TPC-W是基于Web商业的测试标准,用来表示一些通过Internet进行市场服务和销售的商业行为,所以TPC-W可以看作是一个服务器的测试标准。
 
       实际应用
        在考试时,可能会出现一些需要综合应用的问题,需要考生根据基本的概念,结合实际问题进行解答。
        例如,在某并发系统中,有一个发送进程A、一个接收进程B、一个环形缓冲区BUFFER、信号量S1S2。发送进程不断地产生消息并写入缓冲区BUFFER,接收进程不断地从缓冲区BUFFER取消息。假设发送进程和接收进程可以并发地执行,那么,当缓冲区的容量为N时,如何使用PV操作才能保证系统能够正常工作。发送进程A和接收进程B的工作流程如下图所示。请在下图中的①~④处填写正确的操作。
        
        PV操作实例一
        根据题意,很显然,这是一个“生产者-消费者”问题,根据该问题的特性,通常需要3个信号量来实现:两个用来管理缓冲区同步,信号量empty表示空闲缓冲区数量,初值为缓冲区最大数N,信号量full表示已填充缓冲区数量,初值为0;一个用于管理互斥,由信号量mutex保证只有一个进程在写缓冲区,初值为1。但在本题中,进程A和进程B允许并发地访问缓冲区,因此无须管理互斥,就不需要使用信号量mutex了。因此只需定义两个信号量:S1S2,初值为NS1在此承担的是信号量empty的功能,初值为0的S2在此则承担的是信号量full的功能。
        通过这样的分析,不难得出结论:①处应该是P(S1),将空闲缓冲区数量减1;②处应该是V(S2),将已填充的缓冲区数量加1;③处则是P(S2);④处为V(S1)。
        在这个例子的基础上,如果系统中有多个发送进程和接收进程,进程间的工作流程如下图所示,其中空①~④的内容与上图相同。发送进程产生消息并顺序地写入环形缓冲区BUFFER,接收者进程顺序地从BUFFER中取消息,且每条消息只能读取一次。为了保证进程间的正确通信,增加了信息量SASB。请说明信息量SA和SB的物理意义,在下图中的⑤和⑥处填入正确的内容,并从下图的~①中选择4个位置正确地插入P(SA)、V(SA)、P(SB)和V(SB)。
        
        PV操作实例二
        上图所涉及的问题在普通的“生产者-消费者”问题上增加了一些复杂度:“系统中有多个发送进程和接收进程”,根据题意,我们可以得知它要完成的控制是:发送进程顺序写入,接收进程顺序读取,而且每条消息都只能够读取一次。这显然是两个互斥的问题,即多个发送进程在写缓冲区时是互斥关系,多个接收进程读缓冲区也是互斥关系。因此,信号量SASB分别实现这两个用来完成两个进程的互斥控制。
        (1)SA:初值为1,表示允许同时对缓冲区进行写操作的进程数量。
        (2)SB:初值为1,表示允许同时对缓冲区进行读操作的进程数量。
        当然,两个对调也是可以的。在发送进程和接收进程中分别有一组信号量SASB的PV操作。因此,接下来的问题就是找插入点。互斥控制的要点在于判断出临界区的范围,也就是哪部分程序必须互斥进入,否则将出现问题。根据这一点,可以进行如下分析。
        (1)发送进程:在进程产生消息之后准备写入缓冲区时,这时就需要进行互斥判断,因此在位置应插入P(SA);而直到完成“i=(i+1)mod N”操作后,才完成缓冲区操作,因此必须在位置插入V(SA)。
        (2)接收进程:由于接收进程是负责读数据的,如果数据区是空的则应该等待,因此必须先完成P(S2)操作,来决定其是否需要阻塞。如果没有阻塞时,再进入临界区,因此应该在位置处操作P(SB);而“对读取的消息进行处理”已显然在临界区之外,因此应该在位置插入V(SB)。
 
       事务
               概述
               事务(Transaction)是一系列的数据库操作,是数据库应用程序的基本逻辑单位,即应用程序对数据库的操作都应该以事务的方式进行。
               事务是一个操作序列,这些操作“要么都做,要么都不做”,是数据库环境中不可分割的逻辑工作单位。事务和程序是两个不同的概念,一般一个程序可包含多个事务。
               事务通常由数据库操纵语言或其他高级语言(如SQL、CoBOL、C、C++、Java等)书写的用户程序来实现。一个事务由应用程序的一组操作序列组成,它以BEGIN TRANSACTION语句开始,以END TRANSACTION结束语句。
               事务定义的语句如下:
               (1)BEGIN TRANSACTION:事务开始。
               (2)END TRANSACTION:事务结束。
               (3)COMMIT:事务提交。该操作表示事务成功地结束,它将通知事务管理器该事务的所有更新操作现在可以被提交或永久地保留。
               (4)ROLLBACK:事务回滚。该操作表示事务非成功地结束,它将通知事务管理器出故障了,数据库可能处于不一致状态,该事务的所有更新操作必须回滚或撤销。
               典型的例子是银行转账业务。对“从账户A转入账户B金额x元”业务,站在顾客角度来看,转账是一次单独操作;而站在数据库系统的角度它至少是由两个操作组成的,第一步从账户A减去x元,第二步给账户B加上x元。下面是银行转账事务的伪代码:
               
               SQL中事务的开始与结束
               SQL标准规定当一条SQL语句被执行,就隐式地开始了一个事务,SQL中的Commit work和Rollback work语句之一会结束一个事务。
               (1)Commit work:提交当前事务。这意味着将该事务所做的更新在数据库中永久保存。一旦事务被提交后,一个新的事务自动开始。
               (2)Rollback work:回滚当前事务。这意味着将撤销该事务对数据库的更新。这样,数据库恢复到该事务执行第一条语句之前的状态。
               需要注意的是,若事务已执行了Commit work,就不能用Rollback work来撤销。数据库系统能保证在发生诸如某条SQL语句错误、断电、系统崩溃的情况下,若事务还没有执行Commit work,则所造成的影响将被回滚。对断电、系统崩溃的情况,回滚是在系统重新启动时进行。
   题号导航      2014年下半年 系统架构设计师 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第16题    在手机中做本题