zOS之MVS

三月 5, 2009 留下评论 Go to comments

MVS

MVS(多重虚拟存储)是IBM大型计算机的旗舰操作系统,起源可以追溯到OS/360。OS/360诞生于1960年代中期,是IBM当时很新型的System /360计算机系统上向客户推荐的操作系统。今天IBM大型机操作系统的核心还保留着OS/360的后裔代码。虽然整个代码几乎都已经重写了,但是基本设计大多原样未动;向后兼容性被虔诚地保留了下来。这种兼容性甚至达到这种地步:即使历经三代结构升级,为OS/360编制的应用程序还能不加修改就在装有MVS的64位z/系列大型机上运行。

在上述讨论过的所有操作系统中,MVS是唯一可视为比Unix还要悠久的操作系统(不确定性在于随着时间的推移,MVS究竟发展到了什么地步)。这个操作系统也是受Unix概念和技术影响最小的操作系统,因而代表了跟Unix反差最强烈的一种设计。MVS的统一性理念是:一切皆批处理。系统的设计目标是尽可能最有效利用机器批处理巨大规模的数据,尽量减少与人类用户的交互。

原生的MVS终端(3270系列)只能以块模式运行。用户通过屏幕修改终端的本地存储。用户按下发送键前主机不会产生任何中断。不可能实现Unix原始模式(raw mode)下那种字符层面上的交互。

TSO是和Unix交互环境最近似的等价物,自身能力非常有限。对于系统其它部分来说,每个TSO用户都是模拟批作业。这个设施非常昂贵——太贵了,主要限于开发者和系统维护者使用。仅仅需要通过终端运行应用程序的普通用户几乎从不使用TSO。相反,他们通过事务监视器工作。这是一种多用户应用服务器,可以进行协作式多任务处理并支持异步输入/输出。从效果上来说,每种事务监视器都是一个专用的分时插件(和运行CGI的Web服务器很像,但不完全一样)。

面向批处理体系所带来的另一个后果就是生成进程非常缓慢。I/O系统有意用较高的准备成本(及其带来的延迟)来换取更好的吞吐能力。这些选择对于批处理操作来说非常适宜,但是对于交互响应来说却是致命的。可以预见,如今TSO用户将把几乎所有的时间都花在ISPF(一个对话驱动的交互环境)上。除了启动一个ISPF实例外,程序员几乎不在原生的TSO上做任何事情。这避免了生成进程的开销,代价是引进了一个非常庞大的程序。这个程序,除了不会启动机房的咖啡壶,什么事都能做。

MVS使用机器MMU,进程有独立的地址空间,只能通过共享内存支持进程间通信,也有线程功能(MVS称之为“子任务”),但用得很少,主要因为只有用汇编语言编写的程序才能方便地使用这个功能。与此相反,典型的批处理应用是由JCL(Job ControLanguage,作业控制语言)粘合在一起的由重量级程序调用组成的短序列,也提供脚本功能,但却是出了名的困难和死板。每个作业里的程序通过临时文件通信;过滤器之类的东西几乎毫无用武之地。

每个文件都有记录格式,有时是隐式的(例如,JCL的内联输入文件继承了穿孔卡做法,默认为80字节固定长度的记录格式),但更通常的情况是明确指定。许多系统配置文件都采用文本格式,但应用程序文件通常采用特定的二进制文件。一些检查文件的通用工具出于迫切需求才被开发出来,但这依然还是一个难以解决的问题。

文件系统的安全性在最初设计中根本未予考虑。然而,当人们发现安全性十分必要时,IBM以一种颇具灵感的方式加了进去:他们规定了一套通用安全性 API,然后在处理每个文件存取请求前调用这个接口。结果是,产生了三种相互竞争的安全性程序包,各代表不同的设计理念——三种都相当好,在1980年到 2003年中期始终没被攻破。这种多样性就允许用户安装时选择最适合实际安全策略的安全包。

网络功能也是后来才加进去的。网络连接和本地文件操作使用同一套接口的概念不存在;两者的编程接口相互独立而且区别很大。这的确帮助TCP/IP成为了首选网络协议,不着痕迹地挤掉了IBM原生的SNA(System Network Architecture,系统网络体系)。在2003年,同一机器上两者都使用的情况虽然常见,但是SNA正在逐渐消亡。

除了在运行MVS的大企业内部,MVS上的轻松编程几乎不存在。这主要不在于工具自身的成本,而在于环境的成本——在往计算机系统上扔进几百万美元后,每个月为编译器花费几百美元就是小钱了。然而,在这个社区内也存在一个繁荣的自由软件文化,主要是编程和系统管理工具。第一个计算机用户组, SHARE,就是IBM用户在1955年成立的,到今天也依然很兴旺。

考虑到架构上的巨大差别,MVS是第一款符合单一Unix规范(Single Unix Specification)的非System-V操作系统,这件事非同寻常(但还是得看到,从Unix软件移植过来的软件往往碰到ASCII对 EBCDIC字符集的麻烦)。从TSO启动Unix shell是可能的——Unix文件系统专门设置成MVS数据集格式。MVS Unix字符集是特殊EBCDIC代码页,交换了“新行”和“换行”(Unix中的“换行”对MVS就是“新行”),但是系统调用却是在MVS内核上实现的实时系统调用。

随着开发环境的费用下降到爱好者能够承受的范围,公共领域的MVS版本(版本3.8,始于1979年)拥有了一小群用户,人数虽少却在不断增长。这个系统及其开发工具和运行所用的仿真器,花一张CD的价钱就可以全部获得[19]。

MVS的目标始终定位在后勤部门。和VMS和Unix一样,MVS提前区分了服务器和客户端。后勤用户对界面复杂度不仅可以忍受,而且非常期待,因为他们愿意把昂贵的计算机资源尽可能花在需要处理的工作上而不是界面上。

Advertisements
  1. Bomin
    三月 5, 2009 @ 04:10

    你自己写的?

  1. No trackbacks yet.

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: