B500 主控制程序 B5000 Master Control Program 梁陈 嵌入式系统设计2班 SG13225097
Burroughs B5000计算机 The Burroughs B5000 computer had stack instructions for effcient execution of sequential programs written in Algol 60 (Barton 1961). For this purpose the B5000 was truly a revolutionary architecture. The Burroughs group published only a handful of papers about the B5000 system, including Operating system for the B5000. Clark Oliphint (1964)
Burroughs B5000计算机 Burroughs B5000计算机采用堆栈架构可以使 Algol 60语言编写的顺序执行程序高效运作。从这一点讲B5000是真正意义上的革命性框架。但是Burroughs团队只公布了一半的B5000系统文件,包括 B5000的操作系统 Clark Oliphint (1964)
Burroughs B5000计算机 美国的Burroughs B5000和英国电气公司1963年交付使用的KDF9是第一代实现了逆波兰架构的电子计算机。 http://www.cs.virginia.edu/brochure/images/manuals/b5000/descrip/descrip.html 逆波兰表达式又叫做后缀表达式。逆波兰表达式,它的语法规定,表达式必须以逆波兰表达式的方式给出。 a+b ---> a,b,+
Burroughs B5000计算机 它的优势在于只用两种简单操作,入栈和出栈就可以搞定任何普通表达式的运算。其运算方式如下: 如果当前字符为变量或者为数字,则压栈,如果是运算符,则将栈顶两个元素弹出作相应运算,结果再入栈,最后当表达式扫描完后,栈里的就是结果。 逆波兰表达式是一种十分有用的表达式,它将复杂表达式转换为可以依靠简单的操作得到计算结果的表达式。例如(a+b)*(c+d)转换为ab+cd+*
Burroughs B5000计算机 Admittedly, this brief paper does not do justice to the signicant accomplishments of this pioneering effort. Organick (1973) and McKeag (1976a) provide an abundance of detailed information. 诚然,这样简要的文件并没有给这一意义重大的开创性成就以公平的对待。而Organick(1973)和McKeag(1976)提供了大量的详细信息。
Burroughs B5000计算机 Burroughs used its own variants of Algol to program the B5000 MasterControl Program, which supported both multiprogramming and multiprocessing of user programs. Burroughs用自己独有的Algol变量编写B5000主控制程序,这个主控程序支持多道程序设计和用户多进程处理。
Burroughs B5000计算机 ALGOL:第一个结构化程序设计语言,是计算机发展史上首批产生的高级程式语言家族。 当时还是晶体管计算机流行的时代,由于ALGOL语句和普通语言表达式接近, 更适于数值计算,所以ALGOL多用于科学计算机。 Algol 60引进了许多新的概念如:局部性概念、动态、递归、巴科斯-诺尔范式BNF(Backus-Naur Form)等等。 Algol 60是程序设计语言发展史上的一个里程碑,它标志着程序设计语言成为一门独立的科学学科,并为后来软件自动化及软件可靠性的发展奠定了基础。
Burroughs B5000计算机 The system used virtual memory with automatic transfers of data and program segments between primary and secondary storage (MacKenzie 1965). A typical system could run on the order of 10 user jobs at a time. About once a day, thrashing would occur. This was not detected by the system. The operator was expected to notice any serious degradation of performance and restart the system (McKeag 1976a).
Burroughs B5000计算机 系统通过虚拟内存实现数据段和代码段在一级与二级存储器之间的自动转换(MacKenzie 1965)。一个典型的系统可以同时运行10个相似的用户任务。差不多每天发生一次抖动。而这并不是系统检测到的,只能期望操作员会发现任何严重的性能下降并重新启动系统(McKeag 1976 a)。
系统抖动 在请求分页存储管理中,从主存(DRAM)中刚刚换出(Swap Out)某一页面后(换出到Disk),根据请求马上又换入(Swap In)该页,这种反复换出换入的现象,称为系统颠簸,也叫系统抖动。 危害:系统时间消耗在低速的I/O上,大大降低系统效率。进程对当前换出页的每一次访问,与对RAM中页的访问相比,要慢几个数量级。
Burroughs B5000计算机 Unfortunately the programming languages of the early 1960s offered no support for concurrent programming of operating systems. High-level languages for concurrent programming were only invented in the 1970s. 不幸的是20实际60年代初提出的编程语言并不支持操作系统的并发程序设计。支持并发编程的高级语言是在二十世纪70年代才发明的。
Burroughs B5000计算机 At the time the only option open to Burroughs was to adopt an extremely dangerous short-cut: The B5000 operating system (and its successors) were written in extended Algol that permitted systems programs to access the whole memory as an array of (unprotected) machine words. This programming trick effectively turned extended Algol into an assembly language with an algorithmic notation. The dangers of using such an implementation language were very real.
Burroughs B5000计算机 当时开放Burroughs的唯一选择就是走一种极其危险的捷径:在Algol扩展语言编写的B5000操作系统(及衍生版)上允许系统程序将整个内存区域看做是一个(无保护的)机器字的数组。这种编程技巧可以将Algol扩展语言编写的程序高效地展开成算法符号表示的汇编语言。然而使用这样的实现语言,其危险是显而易见的。
Burroughs B5000计算机 Roche (1972) made the following comment about a B5500 installation in which the user was permitted to program in extended Algol: This allows the use of stream procedures, a means of addressing, without checks, an absolute offset from his data area. Mis-use and abuse of these facilities by ill-informed or over-ambitious users could, and often did, wreck the system.
Burroughs B5000计算机 Roche(1972)对允许用户使用Algol扩展编程的B5500系统给出下面的评价: 它允许在使用程序流进行寻址时可以不经过检查而直接从数据域获取绝对偏移地址。这一特性经常会被受到错误引导的用户误用或别有用心的用户滥用而破坏系统。
Burroughs B5000计算机 Organick (1973) pointed out that the termination of a task in the B6700 operating system might cause its offspring tasks to lose their stack space! The possibility of a program being able to delete part of its own stack is, of course, completely at variance with our normal expectations of high-level languages, such as Fortran, Algol, or Pascal.
Burroughs B5000计算机 Organick(1973)指出,在B6700操作系统中终止任务可能会导致其后代任务堆栈空间丢失!当然,使用诸如Fortran、Algol或者Pascal等高级语言时,程序有可能会删除部分自身堆栈,而这完全超出我们的正常预期。
Burroughs B5000计算机 According to Rosin (1987),"High-level languages were used exclusively for both customer programming and systems programming" of the B5000. Similar claims would be made for later operating systems programmed in intermediate-level languages, including Multics (Corbatffo 1965), OS 6 (Stoy 1972), and Unix (Ritchie 1974). However, in each case, system programmers had extended sequential programming languages with unsafe features for low-level programming.
Burroughs B5000计算机 Rosin(1987)则认为对B5000系统而言“高级语言是专门用于客户和系统编程的”。类似的要求促使其后的操作系统,诸如Multics (Corbatffo 1965),OS 6 (Stoy 1972)和Unix (Ritchie 1974),使用中级语言进行编程。然而,对于其中任何一种,系统程序员都根据底层编程扩展了顺序编程语言的不安全特性。
Burroughs B5000计算机 There is no doubt about the practical advantages of being able to program an operating system in a language that is at least partly high-level. However, a programming notation that includes machine language features is, per definition, not a high-level language.
Burroughs B5000计算机 毫无疑问如果一个操作系统至少一部分可以使用高级语言编写,那么它就有实践优势。然而,每个定义的机器特征语言都只是一种编程符号而非高级语言。
Burroughs B5000计算机 Since nobody could expect Burroughs to use concepts that had not yet been invented, the above criticism does not in any way diminish the contribution of a bold experiment: the first tentative step towards writing operating systems in a high-level language.
Burroughs B5000计算机 既然没有人可以指望Burroughs使用尚未发明的概念,那么那次大胆的实验所做的贡献也不会因上面的批评而有所折扣:这是使用高级语言编写操作系统试探性迈出的第一步!