小任陪你聊——The Structure of the "THE"-Multiprogramming System

摘要

文章开头,作者简单介绍了这个多程序系统,文章写道,“这个多程序系统被描述为将一个活动划分为一些连续的进程,并且这些进程分为几种层次,并且提到了这种分层的结构对这种设计的逻辑完整性和实现的正确性至关重要”,由此,我们可以看出作者将这个系统分为几层,并且提到了独立抽象的概念。接下来,我们来看一下作者是怎么设计的吧。

工具和目标

这部分主要介绍了这个系统的配置和它所要实现的目标,作者说这个系统的主要目标是使用户程序流尽可能的平滑。
然后作者讲了这个系统没有公共数据用于用户之间的交流,用户只分享配置等。通过这一部分我们了解了这个系统的配置和目标。

进程报告

在这部分,作者提到他犯了一些错误并着重提了其中两个,一个是花费太多精力在“a perfect installation”,一个是没有足够的想法去对系统主体进行编码。然后提到了一些心理上的担心等等。

系统结构研究

内存分配

这一部分,作者创造性的提出“段”和“页”的概念,不同于传统的冯诺伊曼机器,这个系统寻找信息的方式是通过严格区分内存单元和相应的信息单元,并给出相应的概念,“页”和“段”。寻找信息的时候通过段标识符和段变量来寻找信息,然后作者介绍了这种方式的优点。

处理器分配

在这一部分,作者先介绍了单道进程调度资源的顺序,然后提出要适用于多道程序,必须设计一个更加合理的进程调度方式,作者提出了一个类似于现在的“时间片”的概念,即每个用户对应一个程序,同步的运用处理器调用,这种不是连续的执行完一个程序,而是在一段极小的时间内,同时运行几个进程,进程之间可以自如的切换。很明显,这种方式更科学。

系统分层

这部分作者将这个系统的分层做了介绍,这个系统使用了一种层次结构(hierarchical structure),共有五层。

level 0

在level 0中,中断(interrupt)被转变成了并行运行的进程(processes)。本层为之后的层提供了process这个抽象,确保没有process能够独占资源,利用时钟中断来确保每个process都能被运行。

level 1

level 1主要实现了从物理内存到虚拟内存的转化。
文章中提出了段,即"segment"这个概念。通过将实际存储单元(memory units, 即页, “pages”)与信息单元(information units, 即段, segment)的严格区分,我们可以得到更加灵活的结构。每个segment会被分配一个segment identifier,segment的一些重要信息,例如此segment是否为空,以及对应的page存储地址,被存放在一个segment variable中。
每个segment与一个存储单元page的大小相同,但是逻辑上是分开的。每次我们读入一个segment再写回时,它并不需要被放回原始的page中,可以自由选择存储的位置;我们只需在segment variable中记住这个新地址即可。同样的,一段程序也不需要被存放在一段连续的地址中。由于虚拟内存和实际存储分开,我们也可以方便地进行relocation。通过存储单元和信息单元的区分,我们有了更多的灵活性,操作更加方便。

level 2

level 2提出了消息解释器,“message interpreter”。不同进程之间通信采用的是传递message的方式。在每条message的开头(opening sentence),有发起对话的进程信息,以及此条message的目的process的地址。因此我们需要message interpreter来处理message的sender和destination。
在level 2之上,每个进程都拥有一个自己的会话控制台(conversational console)。实际上所有的进程共享一个系统的控制台,通过同步机制系统确保在一个时刻只有一个对话在进行"one conversation at a time",不同对话之间不interfere。所以level 2的作用在于将一个控制台,转化为多个(as many as needed)。
由于message是存储在segment上的,本层需要level 1的segment的抽象,所以本层在level 1之上一层。

level 3

level 3的作用在于I/O设备转换为process。程序与外围设备所属进程的通讯也采用message的方式,所以需要level 2的abstraction,因此本层在level 2之上。

level 4

发现了独立的用户程序。

level 5

关于操作员,作者未实现。

设计经验

在这部分中,作者分享了他的设计经验并讲述了如何从level 0开始,依次证明每层的正确性。意在说明,通过构建这种层级结构,可以证明得到整个系统的正确性。

结论

在这一部分,作者介绍程序验证方面的一些问题,并对相关工作者进行了感谢。

附件

这一部分描述了系统中所使用的同步机制,是我们很熟悉的semaphores。此处涉及两个操作:P-operation, V-operation。
semaphore的值可以被初始化成0或1,系统运行时可能会变为负值。
P-operation,会将semaphore的值减一,若此时值为非负的,可以继续运行,否则被block。
V-operation,会将semaphore的值加一,若此时值为正的,则没有影响;否则会唤醒在等待当前semaphore的一个进程。

总结

在这篇论文中,作者提出了“段”、“页”的概念,提出了同步机制,提出了系统分层,提出了类似于“时间片”的概念,这些都是非常超前的,甚至可以说是现代操作系统的框架,致敬迪老爷子!

发布了2 篇原创文章 · 获赞 2 · 访问量 87

猜你喜欢

转载自blog.csdn.net/ren186/article/details/104959273