IBM Support

TIMI -- 投资和IBM i 完整性的保证

Technical Blog Post


Abstract

TIMI -- 投资和IBM i 完整性的保证

Body

原文链接:http://ibmsystemsmag.blogs.com/you_and_i/2013/04/timi-protecting-investments-and-integrity-in-ibm-i.html

 

        TIMI --  投资和IBM i 完整性的保证

 

 今天我们发表25章节系列的新一部分,以此来帮助我们庆祝 IBM i 25周年活动。当下,IBM i 仍然屹立不倒,然而与 IBM i 同时期问世的其他平台却已经消失不见。明显地,这其中一个重要的原因,也是我们今天的主题:技术无关机器接口(Technology Independent Machine Interface),即大家挚爱熟识的TIMI

 之前我简要地写过两篇关于TIMI的博文:i 的层次结构和为什么选择IBM i,架构基础”。今天,我会总结之前讲过的内容,并且深入解释这个难以置信的强大的操作系统的价值。

 描述TIMI是一件很容易,同时又很难的事情。对应用程序来说,TIMI像是一纸契约。TIMI为应用程序提供执行已知功能的接口,并且保证这些功能持续生效和不被更改,而不关心实现这些功能的硬件平台具体是什么。这是一个十分简单的概念,但这一切是如何实现的呢?

 在IBM i 上编译的每个程序都会变成一系列TIMI指令。本质上来说,是编译成一系列中间代码。几十年来,在创建机器指令前编译器采取中间代码的形式呈现程序,这是一种十分常见的做法。然而,一个重大的不同,那就是IBM i 的编译器不会生搬硬套这一做法。IBM i 的编译器会将中间代码与程序对象关联,并且IBM i 的底层会把中间代码转换成在操作系统之下的Power HypervisorPower 处理器使用的指令。通常,当程序从一个操作系统版本移植到之后的版本并且一直运行在之后的版本时,这种转换就会发生。

 这种体系结构使得写于几十年前,甚至更早的System/38时期的程序,运行在每个版本的操作系统上,而不用再编译。只要程序的中间版本仍附属在被编译的对象上,转换器就能够将程序转换成系统上的可执行指令。

 的确,一些操作系统可能有一个它们的应用编程接口的子集,用来保证使用这些接口的程序在将来继续正常工作, 但是在这些例子中,应用程序都必须重新被编译。IBM i 保证程序只要曾经被编译,就可以继续运行在将来任一版本的操作系统之上而无需再编译。19世纪8090年代,一些供应商试图通过强制用户再编译来导入新系统科技,甚至有时需要彻底修改他们的软件。这些供应商的用户面临不得不做出重要投资抉择的问题,他们已经花费大量金钱在首次的软件开发上,这些用户必须重新审视是否还要留在一个并没有保护他们的首次投资的平台。大量的用户选择离开,而剩下的,像他们说的,也成为了历史。

 如果仅仅是对投资保护的级别不足以让人欣赏TIMI,那么它还提供了高级别的系统完整性保证,这种完整性使得IBM i 成为市场上最稳定,抵抗病毒最有效的平台之一。

  我的读者中大部分都有计算机编程的背景,并且他们对编辑语言中“指针”的概念有基本的理解。对于没有相关背景的读者,“指针”用于完成对存储在计算机内存中数据的操作。但是,像你知道的,程序本身和操作系统也是运行在内存中。所有运行在计算机中的东西都会运行在内存中。程序需要指针来找到程序正在使用的数据。但是,如果一个程序有一个错误的指针指向了它不应该使用的内存,这个程序很有可能向那块内存写入数据。如果它能够向那块内存写入数据,就会把错误的信息写入,从而导致这个程序行为异常。甚至能够将恶意代码写入程序或操作系统。

 在IBM i,这种情况绝不会发生。从架构设计上就是被禁止的,因为TIMITIMI的指令被转换并且运行在Power处理器上。像我上面提到的,每个用户的程序都被编译成一种中间形式,所以那些程序的所有“指针”也是中间形式。用户程序创建的指针不允许指向操作系统使用的内存,所以这些用户程序损害操作系统,或者植入恶意代码是不可能的。这种方式保护了操作系统的完整性阻止病毒和恶意代码进入你的系统。

 恐怕我简化了许多内容,而且我只浅显地介绍了IBM i 操作系统上的Power TIMI。但我希望可以给你们一种感觉,那就是TIMI的角色是多么必不可少,以保证我们的客户能够随着科技的变更前进。毕竟,我们唯一确定的事就是,新技术到来时,它也会随之改变。拥有一个架构不仅仅是容忍变化,而是它的核心在建造时已经准备好接受变化,保证了你们的投资和你们的系统将被保护,直到很久的将来。

 

作者: Steve Will

翻译: Guang Qi Li

[{"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SWG60","label":"IBM i"},"Component":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"","Edition":"","Line of Business":{"code":"LOB57","label":"Power"}}]

UID

ibm11144678