1.3.2 TIMI结构
TIMI结构的定义是与硬件无关的,它是一个逻辑上(而不是物理上)的系统接口。TIMI结构为OS/400
和所有的应用程序提供了一个完整的API集(APIs Set),其完整性体现于:任何一个系统或应用程序都不可绕过这个API集直接去访问底层硬件资源。TIMI上方的系统或应用程序与TIMI下方的系统程序或硬件资源进行通讯的唯一途径是经由TIMI。这一点也正是TIMI结构和面向API结构的不同之处。后者允许应用程序绕过(go around)API,而依赖于底层的硬件和软件。
我们不禁要问,当初TIMI结构的设计者是如何定义这个“完整”的API集,让OS/400和所有应用程序调用呢?当初定义的那个“完整”的API集,又是不是一直延用至今呢?回答是:不可能。当AS/400采用了一种新的技术(比如RISC)之后,为支持这种新技术,必须修改与之相关的API,甚至可能要增加一些新的API,来保证(即TIMI)的完整性。因此,TIMI是可扩充的(espandabIe),新的API可以在任何时候加入TIMI中,以支持新的应用或操作系统功能。
值得注意的是,我们一直没有提及对TIMI中旧API的删除。事实上,在TIMI中从未执行这一操作。正是因为TIMI中所有旧的API都被完整地保留下来(有可能作过修改),以前写的应用程序才得到了TIMI的保护和支持。
TIMI结构由两部分组成:一组TIMI指令和一组操作数。TIMI的指令就是API:TIMI中的操作数则为两类,一类是立即数据,即传统计算机中的位和字节操作数,一类称为对象(objects)。对象只是一种数据结构,是TIMI结构的一部分。在TIMI中,一个对象是一个封闭的整体。在使用对象时,只有将对象视为一个整体进行操作的指令才被认为是合法的。应用程序或系统软件不必了解对象内部的细节(如对象内部数据结构的精确格式),这些细节封装在对象内部对外界是透明的。正是由于对象的这种封闭性和透明性所有对象的内部细节,(如数据结构)的改并都不会影响外界对该对象的操作,这样就做到了软件独立于底层的(数据)结构。对象这种隐藏内部细节的特性称为封装性(encapsuIation)。
TIMI指令是不能直接执行的,在程序执行前,TIMI指令首先被编择成机器指令(hardware instruction)。按照通常的观点,TIMI指令集不能算是一种高级语言,它倒有点像现在一些高级语言编择生成的中间结果。
1.3. 3 MI程序
有些MI指令直接作用在程序(programs)上。因为一个program是一个object,所以这些指令将这个program视为一个整体进行操作。AS/400有一个创建程序(Create Program)的指令,但没有复制程序(MuItipIy Program)的指令。IM指令作用于整个object,而不能作用于一个object内部的某一部分数据。这保证了对象的完整性(integrity).本节我们将介绍如何创建(create)、删除(destroy)和剖析(materiaIize)一个程序。
1.3.3.1 程序的创建
我们通过一个模板(tempIate)来创建一个程序。模板是一个预定义的结构。它描述了一个特有的MI系统对象的所有属性。AS/400编择器(compiIers)的代码生成(Code Genera-tion)部分负责生成这一程序模板。所有MI系统对象都是由模板生成的。它们包含在位于MI的Space中。由于不同类型的对象有不同的属性,所以没有一个通用的模板,每一个对象都有它自己的唯一的模板。
Create Program指令指向一个程序模板。为了方便讨论,我们先假定只有两种类型的指针:一个是System Pointer,另一个是Space Pointer。实际上AS/400还支持其他类型的指针。System Pointer指向一个MI系统对象,而Space Pointer则指向一个Space,这两个指针都是16个字节长。事实上,我们可以将指针视为MI中的地此。
Create Program指令是由位于TIMI下方的代码实现的。首先.Create PrOgram指令中的Space Pointer被用于访问相应的程序模板。对该程序模板进行的语法检查保证了模板的正确性。然后,翻择器(transIator)将包含在程序模板中的MI指令流转化为内部指令流。这个内部IBMI(InternaI Microprogrammed Interface)或PowerPC (Performance Optimiza-tion With Enhanced RISC PC)指令流被打包放进一个称为Program 的 MI系统对象中,最后,将刚创建的Program的地此作为System Pointer返回给调用者。
1.3.3.2 程序的删除
任何一个MI系统对象,只要能创建就能被删除。既然AS/400有创建程序的指令,当然也有删除(destroy0程序的指令。MI级别的用户可以通过指向MI系统对象(包括程序)的System Pointer来删除对象。但并不是任何人都可以随心所欲地删除一个对象,他(她)必须要拥有一定的权限(authority)才能这样做。
我们将在后面的章节中讲座对象的权限。这里所要了解的是,对任何一个对象,用户可以有不同级别的访问权限。最高级别的权限允许用户删除一个对象。通常只允许对象的主人删除他所创建的对象。系统中的每一个用户都有一个特定的MI系统对象(称为User Profile)与之相关联。在User Profile中定义了用户对不同对象的访问权限。当一个用户调用删除对象指令时,系统首先检查该用户的User Profile,判断该用户有没有删除这一对象的权限,然后再根据检查结果决定是否执行删除操作。
1.3.3.3程序的剖析
程序的模板是从TIMI上方观察程序属性的唯一途径。在TIMI下方,程序以MI系统对象的方式存在,并且所有MI指令都将这个对象视为一个整体。在这个对象内部封装的是IMPI或PowerPC指令流,这些指令流对外是不可见的。对象的这种封装性保证了程序的技术独立性。
然而,应用程序和操作系统有时希望能了解程序的属性,幸运的是,AS/400有一条剖析程序的MI指令。这条指令能剖析一个封装好的程序对象并为这个程序重建程序模板。剖析(Materialization)是和封装(Encapsulation)相对立的概念。
你也许难以想象如何实现这种对象剖析。因为目前的反向编译技术并不成熟。那么AS/400是怎么做的呢?事实上,AS/400早在创建程序对象时就在程序对象中保留了一份程序模板的拷贝。当执行剖析程序的MI指令时,将这个拷贝返回给调用者。在MI系统对象中保留程序模板是System/38和AS/400独有的特性。内部指令集的改变不影响用户的应用程序。对内部指令集的改变分三步走,道德建立一个新版翻译器(translator),然后根据保留的程序模板重新翻译每一个MI程序,最后将翻译所得的新的指令流封装回原来的对象。所有上述操作都是在MI下方进行的,没有涉及和影响到MI上方的应用程序。
1.3.3.4 程序模板
一个程序模板包含四个信息片:头信息(header information)、TIMI指令流、用户数据和对象定义表ODT(object definition table)。图1。5给出了MI指令流和ODT的一个实例。图中的指令流包含有一条MI指令ADDN(Add Numeric),ADDN是一个常用的三操作数指令。该指令操作码后面的三个值用于定位三个操作数。每个值都被用作指向ODT的一个索引。如图所示,ADDN将操作数6和操作数2相加,结果存放在操作数3中。
ODT由两个部分组成。其一是ODV(ODT Direction Vector),另一个是OES(ODT Entry String)。ODV中存放的是操作数的入口,每一个入口都有固定的长度。ODV中的入口描述了操作数的性质。在本例中,操作数6被描述为一个2字节长的二进制数,操作数3亦是如此,操作数2则是一个常数。常数和其他类型的一些操作数可以是变长的。OES中允许有变长操作数。ODV域中的内容是一个指向OES串首的指针。图中操作数2是一个常数,其值为1253。
图中的MI指令ADDN是一个通用的加法指令。虽然本例中给出的是二进制数的加法,但ADDN适用于任何格式的数字(如小数、浮点数等)。在ODT中定义了操作数的格式。翻译器则负责完成数据转换工作。和ADDN类似,MI指令都具有这种通用性。
从图中还可以出MI指令是不可执行的。图中不论是操作数3还是操作数6都不与某一确定的数值有关联。ODV入口等价于变量定义。由于AS/400中没有内存去存放这些变量,因此翻译器必须完成编译工作并为这些变量分配寄存器或内存空间。
最后,我们应注意到本例中的指令是一条很常规的计算指令。作用于对象的指令也有类似的格式,但ODT将批示如何找到要操作的“对象”。
1.3.4 小结
TIMI提供的独立于技术(硬件和软件细节)的先进应用结构,使得AS/400在引进新技术术时,不影响TIMI上端的应用程序和OS/400。我们说TIMI是一个非常有生命力的机器界面,不只是因为它具有独立技术,它还具有良好的可扩充性。AS/400系统的每一闪版本升级都加入了新的指令和功能。例如,在OS/400 V3R1中加入了支持Single UNI Specification API的功能,这样一些UNIX的应用程序就可以被移植到AS/400上。因为TIMI支持应用所需的API,所以它是一个面向应用的机器界面。当新的应用要求新的API时,这些应用所需的新的API就被加到TIMI中,TIMI的这种可扩充性给AS/400带来了强大的生命力。
1.4 AS/400是一个集成系统
AS/400是一个集成的商用小型机系统。计算机系统的集成意味着不同的部分在一起工作组成一个有机的整体。对用户而言,集成表现在系统易于安装、维护和使用。在AS/400上维护和开发应用程序比其他一些平台更容易。同样的应用程序在AS/400平台和其他平台(如UNIX)上所需的开发和维护人员的数目是不一样,AS/400需要的人员会更少一些。其中的奥秘就在于AS/400是一个集成化的系统。这也是AS/400在业界获得成功的原因之一。
如果AS/400的开发者忽略了集成因素,TIMI能够保证AS/400仍是一个集成的系统。首先,TIMI为它上层的所有应用和操作系统功能提供了一个公共的统一的界面。每一个开发人员都被强制用同一种方法使用系统。其次,TIMI是一个功能完备的机器界面,TIMI上层的应用或操作系统软件不可能绕过TIMI去访问TIMI下方的硬件或软件部分。
在AS/400上有一个功能强大的数据库和一个很好的安全体系,还有许多其他的组件。这些部分有机结合在一起构成一个集成的系统,其性能远胜过各部分功能的简单相加。当然,集成使系统的灵活性有所下降,AS/400的用户不可能选用不同厂商的操作系统、数据库系统、安全性系统等。
1.4.1集成的操作系统
IBM曾定义操作系统为“管理系统资源并提供编写应用程序基础环境的一组程序”。在上一章中,我们知道TIMI提供了编写应用程序的基础环境。那么,管理系统资源的部分程序又在哪里呢?
显见的答案是OS/400、AS/400的操作系统。传统的操作系统要支持如内存管理、进程管理、程序管理、I/O管理等功能,这些低级功能都是与底层硬件相关的。由于AS/400的TIMI中没有内存和寄存器的概念,所以有关内存管理的操作系统功能模块必然驻在TIMI的下方。OS/400是独立于硬件的,因此,OS/400只能算是AS/400操作系统的一个组成部分,且必须驻在MI的上方。也就是说,TIMI保证了应用程序和OS/400不受硬件改变的影响。位于TIMI下方的操作系统部分,称为LIC(Licensed Internal Clde)。现在,让我们回顾一下AS/400的结构。OS/400由TIMI上方的操作系统对象和程序组成。LIC是位于TIMI下方的数据结构和程序,它(LIC)是连接TIMI和底层硬件的桥梁。综上所述,AS/400的操作系统是由OS/400和LIC二者组合而成。整个AS/400的体系结构如图1。6所示。
有些操作系统成份,如内存管理,显然是属于LIC的。其他一此操作系统成份则不易清晰划分。譬如数据库,它的一部分实现可能要了解物理磁盘驱动器以及数据传送方式;而另一部分实现则是独立于硬件的。系统设计时,可以将整个数据库软件放在OS/400或LIC中,也可以根据独立硬件与否分别放在OS/400和LIC中,AS/400采取的方案是尽可能地进行划分。
图1。7给出了OS/400和LIC间各种操作系统功能的划分,有些功能,如工作管理(work management),它的职责是作业高度,与硬件关联很少,所以主要位于OS/400中。而设备支持(device support)部分基本上是对半颁在OS/400和LIC中。但是,在AS/400中,有些独立于硬件的操作系统功能也放到了TIMI下方,如安全性(SECURITY)部分。安全性部分是完全独立于硬件的,也完全可以全部放到OS/400中,但AS/400为了提供更高级别的安全保护还是将它放到了LIC中。将一个或部分与底层硬件无关的操作系统功能移到MI下方的另一个原因是考虑到系统的性能。大多数操作系统功能是分散在OS/400和LIC两者之中的。这些功能甚至还可以再细分。图1。7即对数据库功能进行了细分。
1.4.2 微码(Microcode)
微程序(Microprograming)是一种实现计算机仿真的技术。实现微程序的软件通常称为微码(Microcode)。
IBM的System/38D TIMI下方有两层微码,介于这两层微码之间的是IMPI(Internal Microprogrammed
Interface)。位于IMPI上方的是垂直微码VMC (Vertical Microcode),下方是水平微码HMC(Horizontal Microcode)。HMC包含一个微程序仿真器用于执行IMPI指令。HMC还包括一些低级的操作系统功能,它是用一种专用的、由处理器硬件直接操纵的微指令编写的。这些微指令有很高的执行效率并支持处理器中的许多并行性。HMC的编写是相当艰难和费时的。
VMC包含了那些与硬件相关但没有在HMC中实现的操作系统功能。VMC是用高级语言和IMPI汇编语言编写的。
VMC并非传统意义上的微码,它是最低一级的操作系统软件。
到了AS/400推出之时,因为某些原因,对这两层数码的命令名作了修改,分别叫做VLIC(VerticaI Licensed InternaI Code)和HLIC(HorizontaI Licensed InternaI Code).我们知道,HLIO中有一个微码仿真器用于实现IMPI结构,但在新推出的RISC机器中,由于RISC处理机没有微码仿真器,所以就没有HLIC,只有VLIO。原来HLIC中的操作系统功能被重新编写加到VLIC中。既然基于RLSC的/AS/40中只有一层内码(System/38中叫微码),所以IBM决定将其更名为SLIC(System Licensed InternaI Code)。
1.4.3. 小结
集成化是AS/400优于其他系统之处。集成在业界正成为一种时尚。理解AS/400,单考虑水平层次不可能对系统有一个整体的、完整的了解,应该看到垂直方向的整体功能。AS/400每一个功能都是OS/400、SLIC和硬件资源共同作用的结果。“The WhoIe is greater than the sum of its parts”是对AS/400的真实评价。
流浪着的鱼 回复于:2003-03-12 00:14:59 |
不错, |
charlielou 回复于:2003-03-12 07:22:30 |
都变成夜猫子了。
如何找回以前的文章,却成了永远的痛。。。。以前这里有很好精彩的文章,现在都不见了。 |
maygrass 回复于:2003-03-12 10:18:20 |
好,就是能不能多贴点阿 |
居士 回复于:2003-03-12 10:35:49 |
这里又多了一个热心的“战友”,全力支持你!! |
chenyg0055 回复于:2003-03-12 10:38:19 |
谢谢!斑竹居士,鼎立支持大家办好AS400论坛! |
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/