免费智能真题库 > 历年试卷 > 系统规划与管理师 > 2018年上半年 系统规划与管理师 上午试卷 综合知识
  第9题      
  知识点:   软件中间件   MOM   进程   进程间的通信   消息   硬件   中间件
  关键词:   进程   通信协议   消息   硬件   语言   中间件   通信   协议        章/节:   应用集成技术       

 
面向消息中间件(MOM) 通过高效可靠的(),在分布式环境下扩展进程间的通信,可支撑多种通信协议、语言、应用程序、硬件和软件平台。
 
 
  A.  消息扩展机制
 
  B.  消息共享机制
 
  C.  消息传递机制
 
  D.  消息处理机制
 
 
 

 
  第9题    2019年上半年  
   55%
( )提供支持大规模事务处理的可靠运行环境。
 
   知识点讲解    
   · 软件中间件    · MOM    · 进程    · 进程间的通信    · 消息    · 硬件    · 中间件
 
       软件中间件
        中间件(Middleware)是位于硬件、操作系统等平台和应用之间的通用服务。借由中间件,解决了分布系统的异构问题。
        如下图所示,中间件服务具有标准的程序接口和协议。不同的应用、硬件及操作系统平台,可以提供符合接口和协议规范的多种实现,其主要目的是实现应用与平台的无关性。借助中间件,屏蔽操作系统和网络协议的差异,为应用程序提供多种通信机制,满足不同领域的应用需要。
        
        中间件的应用结构
        中间件包括的范围十分广泛,针对不同的应用需求有各种不同的中间件产品。从不同角度对中间件的分类也会有所不同。通常将中间件分为数据库访问中间件、远程过程调用中间件、面向消息中间件、事务中间件、分布式对象中间件等。
        数据库访问中间件:通过一个抽象层访问数据库,从而允许使用相同或相似的代码访问不同的数据库资源。典型技术如Windows平台的ODBC和Java平台的JDBC等。
        远程过程调用中间件(Remote Procedure Call, RPC):这是一种分布式应用程序的处理方法。一个应用程序可以使用RPC来“远程”执行一个位于不同地址空间内的过程,从效果上看和执行本地调用相同。
        一个RPC应用分为服务器和客户两个部分。服务器提供一个或多个远程操作过程;客户向服务器发出远程调用。服务器和客户可以位于同一台计算机,也可以位于不同的计算机,甚至可以运行在不同的操作系统之上。客户和服务器之间的网络通信和数据转换通过代理程序(Stub与Skeleton)完成,从而屏蔽了不同的操作系统和网络协议。
        面向消息中间件(Message-Oriented Middleware, MOM):利用高效可靠的消息传递机制进行平台无关的数据传递,并可基于数据通信进行分布系统的集成。通过提供消息传递和消息队列模型,可在分布环境下扩展进程间的通信,并支持多种通信协议、语言、应用程序、硬件和软件平台。
        分布式对象中间件:是建立对象之间客户/服务器关系的中间件,结合了对象技术与分布式计算技术。该技术提供了一个通信框架,可以在异构分布计算环境中透明地传递对象请求。
        事务中间件:也称事务处理监控器(Transaction Processing Monitor, TPM),提供支持大规模事务处理的可靠运行环境。TPM位于客户和服务器之间,完成事务管理与协调、负载平衡、失效恢复等任务,以提高系统的整体性能。结合对象技术的对象事务监控器(Object Transaction Monitor, OTM)如支持EJB的JavaEE应用服务器等。
 
       MOM
        利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,MOM可在分布环境下扩展进程间的通信,并支持多通信协议、语言、应用程序、硬件和软件平台。目前流行的MOM中间件产品有IBM的MQSeries、BEA的MessageQ等。消息传递和排队技术有以下3个主要特点。
        (1)通信程序可在不同的时间运行:程序不在网络上直接相互通话,而是间接地将消息放入消息队列,因为程序间没有直接的联系。所以它们不必同时运行。消息放入适当的队列时,目标程序甚至根本不需要正在运行;即使目标程序在运行,也不意味着要立即处理该消息。
        (2)对应用程序的结构没有约束:在复杂的应用场合中,通信程序之间不仅可以是一对一的关系,还可以进行一对多和多对一方式,甚至是上述多种方式的组合。多种通信方式的构造并没有增加应用程序的复杂性。
        (3)程序与网络复杂性相隔离:程序将消息放入消息队列或从消息队列中取出消息来进行通信,与此关联的全部活动,比如维护消息队列、维护程序和队列之间的关系、处理网络的重新启动和在网络中移动消息等是MOM的任务,程序不直接与其他程序通话,并且它们不涉及网络通信的复杂性。
 
       进程
        简单而言,一个进程就是一个正在运行的程序。一般来说,一个进程至少应该包括以下几个方面的内容。
        .相应的程序:进程既然是一个正在运行的程序,当然需要有相应程序的代码和数据。
        .CPU上下文:指程序在运行时,CPU中各种寄存器的当前值,包括:程序计数器,用于记录将要取出的指令的地址;程序状态字,用于记录处理器的运行状态信息;通用寄存器,用于存放数据或地址;段寄存器,用于存放程序中各个段的地址;栈指针寄存器,用于记录栈顶的当前位置。
        .一组系统资源:包括操作系统用来管理进程的数据结构、进程的内存地址空间、进程正在使用的文件等。
        进程有动态性、独立性和并发行三个特性。
        (1)动态性。进程是一个正在运行的程序,而程序的运行状态是在不断地变化的。例如,当一个程序在运行的时候,每执行完一条指令,PC寄存器的值就会增加,指向下一条即将执行的指令。而CPU中用来存放数据和地址的那些通用寄存器,它们的值肯定也不断地变化。另外,堆和栈的内容也在不断地变化,每当发生一次函数调用时,就会在栈中分配一块空间,用来存放此次函数调用的参数和局部变量。而当函数调用结束后,这块栈空间就会被释放掉。
        (2)独立性。一个进程是一个独立的实体,是计算机系统资源的使用单位。每个进程都有自己的运行上下文和内部状态,在它运行的时候独立于其他的进程。
        (3)并发性。从宏观上来看,在系统中同时有多个进程存在,它们相互独立地运行。
        下图表示四个进程A、B、C、D在系统中并发地运行。从中可以看出,虽然从宏观上来说,这四个进程都是在系统中运行,但从微观上来看,在任何一个特定的时刻,只有一个进程在CPU上运行。从时间上来看,开始是进程A在运行,然后是进程B在运行,然后是进程C和进程D。接下来又轮到了进程A去运行。因此,在单CPU的情形下,所谓的并发性,指的是宏观上并发运行,而微观上还是顺序运行,各个进程轮流去使用CPU资源。
        
        四个进程在并发运行
        在具体实现上,以CPU中的程序计数器PC为例,真正物理上的PC寄存器只有一个。当四个进程在轮流执行时,PC取值的运动轨迹是先在进程A内部流动,然后再到进程B的内部流动,再到进程C和D。从进程的独立性角度来说,每个进程都有“自己”独立的PC寄存器,即逻辑上的PC寄存器,它们的取值相互独立、互不影响。所谓的逻辑PC,其实就是一个内存变量。例如,在上图中,当进程A要执行的时候,就把A的逻辑PC的值拷贝到物理PC中,然后开始运行。当轮到B运行的时候,先把物理PC的当前值保存到A的逻辑PC中,然后再把B的逻辑PC的值装入到物理PC中,即可运行。这样就实现了各个进程的轮流运行。
 
       进程间的通信
        在多道程序环境的系统中存在多个可以并发执行的进程,使得进程之间会存在资源共享和相互合作的问题。进程通信是指各个进程交换信息的过程。
               同步与互斥
               同步是合作进程间的直接制约问题,互斥是申请临界资源进程间的间接制约问题。
                      进程间的同步
                      在计算机系统中,多个进程可以并发执行,每个进程都以各自独立的、不可预知的速度向前推进,但是需要在某些确定点上协调相互合作进程间的工作。例如,进程A向缓冲区送数据,进程B从缓冲区取数据加工,当进程B要取数据加工时,必须是进程A完成了向缓冲区送数据的操作,否则进程B必须停下来等待进程A的操作结束。
                      可见,所谓进程间的同步是指在系统中一些需要相互合作,协同工作的进程,这样的相互联系称为进程的同步。
                      进程间的互斥
                      进程的互斥是指系统中多个进程因争用临界资源而互斥执行。在多道程序系统环境中,各进程可以共享各类资源,但有些资源一次只能供一个进程使用,称为临界资源(Critical Resource,CR),如打印机、共享变量和表格等。
                      临界区管理的原则
                      临界区(Critical Section,CS)是进程中对临界资源实施操作的那段程序。对互斥临界区管理的4条原则如下:
                      (1)有空即进。当无进程处于临界区时,允许进程进入临界区,并且只能在临界区运行有限的时间。
                      (2)无空则等。当有一个进程在临界区时,其他欲进入临界区的进程必须等待,以保证进程互斥地访问临界资源。
                      (3)有限等待。对于要求访问临界资源的进程,应保证进程能在有限的时间进入临界区,以免陷入“饥饿”状态。
                      (4)让权等待。当进程不能进入自己的临界区时,应立即释放处理机,以免进程陷入忙等状态。
               信号量机制
               荷兰学者Dijkstra于1965年提出的信号量机制是一种有效的进程同步与互斥工具。目前,信号量机制有了很大的发展,主要有整型信号量、记录型信号量和信号量集机制。
                      整型信号量与PV操作
                      信号量是一个整型变量,根据控制对象的不同被赋予不同的值。信号量分为如下两类:
                      (1)公用信号量。实现进程间的互斥,初值为1或资源的数目。
                      (2)私用信号量。实现进程间的同步,初值为0或某个正整数。
                      信号量S的物理意义:S≥0表示某资源的可用数,若S<0,则其绝对值表示阻塞队列中等待该资源的进程数。
                      对于系统中的每个进程,其工作的正确与否不仅取决于它自身的正确性,而且与它在执行中能否与其他相关进程正确地实施同步互斥有关。PV操作是实现进程同步与互斥的常用方法。P操作和V操作是低级通信原语,在执行期间不可分割。其中,P操作表示申请一个资源,V操作表示释放一个资源。
                      P操作的定义:S:=S-1。若S≥0,则执行P操作的进程继续执行;若S<0,则将该进程置为阻塞状态(因为无可用资源),并将其插入阻塞队列。
                      P操作可用如下过程表示,其中,Semaphore表示所定义的变量是信号量。
                      
                      V操作定义:S:=S+1。若S>0,则执行V操作的进程继续执行;若S≤0,则从阻塞状态唤醒一个进程,并将其插入就绪队列,然后执行V操作的进程继续。
                      V操作可用如下过程表示:
                      
                      利用PV操作实现进程的互斥
                      令信号量mutex的初值为1,当进入临界区时执行P操作,退出临界区时执行V操作。这样,利用PV操作实现进程互斥的代码段如下:
                      
                      利用PV操作实现进程的同步
                      进程的同步是由于进程间合作引起的相互制约的问题,要实现进程的同步可用一个信号量与消息联系起来,当信号量的值为0时表示等待的消息未产生,当信号量的值为非0时表示等待的消息已经存在。假定用信号量S表示某条消息,进程可以通过调用P操作测试消息是否到达,调用V操作通知消息已准备好。最典型的同步问题是单缓冲区的生产者和消费者的同步问题。
               高级通信原语
               进程间通信是指进程之间的信息交换,少则一个信息,多则成千上万个信息。根据交换信息量的多少和效率的高低,进程通信的方式分为低级方式和高级方式。PV操作属于低级通信方式,若用PV操作实现进程间通信,则存在如下问题:
               (1)编程难度大,通信对用户不透明,即要用户利用低级通信工具实现进程间的同步与互斥。而且,PV操作使用不当容易引起死锁。
               (2)效率低,生产者每次只能向缓冲区放一个消息,消费者只能从缓冲区取一个消息。
               为了提高信号通信的效率,传递大量数据,减轻程序编制的复杂度,系统引入了高级通信方式。高级通信方式主要分为共享存储模式、消息传递模式和管道通信。
               (1)共享存储模式。相互通信的进程共享某些数据结构(或存储区)实现进程之间的通信。
               (2)消息传递模式。进程间的数据交换以消息为单位,程序员直接利用系统提供的一组通信命令(原语)来实现通信,如Send(A)、Receive(A)。
               (3)管道通信。管道是用于连接一个读进程和一个写进程,以实现它们之间通信的共享文件(pipe文件)。向管道(共享文件)提供输入的发送进程(即写进程),以字符流的形式将大量的数据送入管道;而接收进程可从管道接收大量的数据。由于它们通信时采用管道,所以称为管道通信。
 
       消息
        消息是对象间通信的手段、一个对象通过向另一个对象发送消息来请求其服务。一个消息通常包括接收对象名、调用的操作名和适当的参数(如有必要)。消息只告诉接收对象需要完成什么操作,并不能指示接收者怎样完成操作。消息完全由接收者解释,接收者独立决定采用什么方法来完成所需的操作。
 
       硬件
        硬件是计算机物理设备的总称,也称为硬件设备,通常是电子的、机械的、磁性的或光的元器件或装置,一般分为中央处理器、存储器和输入、输出设备。
 
       中间件
        随着计算机技术的飞速发展,各种各样的应用软件需要在各种平台之间进行移植,或者一个平台需要支持多种应用软件和管理多种应用系统,软、硬件平台和应用系统之间需要可靠和高效的数据传递或转换,使系统的协同性得以保证。这些,都需要一种构筑于软、硬件平台之上,同时对更上层的应用软件提供支持的软件系统,而中间件正是在这个环境下应运而生。
               中间件的定义
               由于中间件技术正处于发展过程之中,因此目前尚不能对它进行精确的定义。
               普遍被接受的是IDC对中间件定义的描述:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。
               IDC对中间件的定义表明:中间件是一类软件,而非一种软件;中间件不仅仅实现互连,还要实现应用之间的互操作;中间件是基于分布式处理的软件,最突出的特点是其网络通信功能。
               人们在使用中间件时,往往是一组中间件集成在一起,构成一个平台(包括开发平台和运行平台),但在这组中间件中必须有一个通信中间件,即:中间件=平台+通信,这个定义也限定了只有用于分布式系统中才能称为中间件,同时还可以把它与支撑软件和应用软件区分开来。
               中间件的主要作用是:
               ①缩短应用的开发周期。
               ②节约应用的开发成本。
               ③减少系统初期的建设成本。
               ④降低应用开发的失败率。
               ⑤保护已有的投资。
               ⑥简化应用集成。
               ⑦减少维护费用。
               ⑧提高应用的开发质量。
               ⑨保证技术进步的连续性。
               ⑩增强应用的生命力。
               中间件与电子商务
               中间件是电子商务应用集成的关键之一,不管电子商务应用分布在什么硬件平台上,使用了什么数据库系统,透过了什么复杂的网络,电子商务应用的互连和互操作是电子商务中间件首先要解决的问题。
               在通信方面,电子商务中间件要支持各种通信协议和通信服务模式,传输各种数据内容,数据格式翻译、流量控制、数据加密、数据压缩等;电子商务中间件还要解决名字服务、安全控制、并发控制、可靠性和效率保证等;在电子商务应用开发方面,要能提供基于不同平台的丰富的开发接口,支持流行的开发工具和异构互连接口标准等;在管理方面,解决电子商务中间件本身的配置、监控、调谐,为电子商务应用的易用易管理提供保证。针对不同的Web应用环境,对电子商务中间件有各种不同的要求。对工作流应用,需要根据条件以及条件满足状态,将信息、响应状态从一个应用传递到另一个应用;对联机事务处理,需要保证分布式的数据一致性、不停机作业、大量并发的高效率;对于一个数据采集系统需要保证可靠传输等。
               在这种情况下,电子商务应用应包含以下层次:
               ①浏览器。这是进入电子商务的通道。
               ②电子商务应用平台。提供电子商务不同应用类型的生成工具软件,如网上商店、网络支付、虚拟社区等。
               ③电子商务交换平台。对内集成企业内部的各种与电子商务相关的业务系统,对外连接商业合作伙伴,如银行、供应商、客户、配送结构,完成各种不同业务系统之间数据转换和整合。
               ④电子商务基础平台。用来支持大量Internet客户的并发访问,使应用开发商快速开发出灵活多变的电子商务应用,尽快把信息系统和商务活动放到Internet中。
               在电子商务交换平台和电子商务基础平台中都不能没有中间件的存在。可以说,没有中间件就不能支撑今天的网络应用。
   题号导航      2018年上半年 系统规划与管理师 上午试卷 综合知识   本试卷我的完整做题情况  
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 /
 
第9题    在手机中做本题