Advertisement

论文阅读 之 “ THE”多程序系统的结构《The Structure of the "THE"-Multiprogramming System》

阅读量:

目录

1.摘要

2.论文内容介绍

2.1系统特点

2.2系统目标

2.3系统架构概览

3.验证调试和信号量介绍

4.总结


1.摘要

在本论文中,描述了一个多程序系统,其中所有活动都被划分为多个顺序过程。 这些顺序过程位于各个层次结构级别,在每个层次结构中都实现了一个或多个独立的抽象。 事实证明,层次结构对于验证设计的逻辑合理性及其实现的正确性至关重要。

在资源十分有限的条件下为系统的设计做出贡献-包括概念,构建和验证的所有阶段,作者面临如何获得必要经验的问题。为了解决此问题,采用了以下三个指导原则:

(1)选择一个可以设想的,尽可能雄心勃勃的项目,希望将日常工作量降到最低;

(2)选择一台具有良好基本特征的机器;

(3)要有意识地努力,从以前的经历中学习尽可能多的东西。

2.论文内容介绍

2.1系统特点

(1)其核心内存周期2.5微秒, 系统存储字节为27位;存储容量为32 k;
(2) 系统磁鼓存储512K字节,每个磁道存储1024字,磁鼓转速为4毫秒/圈;
(3)非常适合于堆栈实现的间接寻址机制;
(4)指挥外围设备和控制中断的声音系统;
(5)潜在的大量低容量通道;
(6)减少了一些不寻常的异常特征。

2.2系统目标

该系统的主要目标是顺利地处理连续不断的用户程序流,为大学服务。选择多程序系统时,应考虑以下目标:

(1)缩短短时间程序的周转时间;
(2)经济地使用外围设备;
(3)自动控制后备存储与中央处理器的经济使用相结合;
(4)在多个应用程序之间共享计算机。

2.3系统架构概览

1.存储分配

在经典的yon Neumann机器中,信息是通过包含该信息的存储位置的地址来标识的。而本论文利用了另一种方法,即对存储单元(称为“页面”,并具有“核心页面”和“感光鼓页面”)进行了严格区分。相应的信息单元(称其为“段”),该段恰好适合页面。对于分段,创建了一个完全独立的标识机制,其中可能的分段标识符的数量比主存储和辅助存储中的页面总数大得多。段标识符可以快速访问内核中的所谓“段变量”,其值表示该段是否仍然为空,如果不为空,则可以在哪个页面(或多个页面)中找到它。在自由鼓页面中,选择了具有最小延迟时间的页面。下一个结果是完全没有感光鼓分配问题:没有丝毫理由说明程序应该占据连续的感光鼓页面。在多程序环境中,这非常方便。

2.处理器分配

在单道程序中,只有各种状态的时间顺序具有逻辑意义,而不是顺序过程的实际速度执行。也就是说,操作系统按照时间的先后,利用处理器资源,而不是程序执行的快慢。在多道程序中,需要设计一个更加高效的进程调度算法,采用按顺序,速度比不确定的方式执行,也就是说,每个用户对应一个程序,同步的运用处理器调用,这种不是连续的执行完一个程序,而是在一段极小的时间内,同时几个进程,进程之间可以自如的切换,同时要做好进程在调用系统的其他资源上的分配。

3.系统分层结构

系统的层次结构可分为0~4个等级,如下。

level 0, 处理器对动态进程中的进程进行应答。本层为之后的层提供了进程这个抽象,实时时钟的中断被处理并引入,是为了确保没有进程能够独占资源确保每个进程都能被,优先级规则的使用,是为了实现系统在需要时的快速响应。
level 1, 段控制器,主要实现了从物理内存到虚拟内存的转化。每次读入一个段再写回时,它并不需要被放回原始的页中,可任选存储的位置;只需记住段变量中的新地址,即段标识。在level 1以上,每个进程都有自己的处理器,信息使用段标识。虚拟内存和实际存储分开,管理起来更方便。
level 2, 消息解释器负责控制台的分配。通过采用传递信息的方式实现不同进程之间的通信。在信息的开头都要有对话的进程信息,如当一个进程打开了一个对话,它必须在对话的开始句标识自己;如果是操作员打开一个对话,他也必须在开始句中识别正在处理的进程,知道对话是正对的那个进程。level 2之上,每个进程都拥有一个自己的会话控制台。实际上所有的进程共享一个物理控制台,通过同步机制系统确保在一个时刻只有一个对话在进行,不同对话之间互补干涉。消息的词汇表存储在段中,因此,消息解释器比段控制器高一级,即本层在level 1之上一层。
level 3, 作用将缓冲 I / O流转换为进程。程序与外围设备所属进程的通讯也采用信息的方式,所以需要level 2的摘要,因此本层在level 2之上。
level 4, 用户程序,每一个都对应一个连续的进程。

3.验证调试和信号量介绍

在验证阶段,可以在短时间内将机器完全交付使用;这些是在没有任何软件辅助调试的情况下使用原始机器进行拍摄的镜头。从级别0开始,对系统进行了测试,每次仅在对上一个级别进行了彻底测试之后才添加下一个级别(的一部分)。每个测试镜头本身都包含要测试的(部分)系统之上的多个具有双重功能的测试过程。为了使中央处理器直接对这两个中断的任何奇怪的时间顺序作出反应,都采用非分层结构,“相关状态”的数量将爆炸到足以达到穷举测试的高度。在第1级以上,核心和鼓页面已失去其标识,因此对输入和输出流(在第3级)进行缓冲是在段方面。在2级或3级测试时,鼓通道硬件损坏了一段时间,但是测试通过将段数限制为可以容纳在内核中的数来进行。如果将行式打印机的输出流构建为“转储到鼓上”,而实际打印为“从鼓上打印”,将无法获得这一优势。

每个顺序进程都与它关联了许多私有信号量,并没有其他进程将对它们执行P操作,而系统所需的同步机制即信号量,它在并行进程开始前被初始化为 0或1,通过P操作和V操作对信号量进行操作,下面对其扩展。

P操作顺序执行下述两个动作:
①信号量的值减1,即S=S-1;
②如果S≥0,则该进程继续执行;
如果S<0,则把该进程的状态置为阻塞态,把相应的PCB连入该信号量队列的末尾,并放弃处理机,进行等待(直至其它进程在S上执行V操作,把它释放出来为止)。
V操作顺序执行下述两个动作:
①S值加1,即S=S+1;
②如果S>0,则该进程继续;
如果S≤0,则释放信号量队列上的第一个PCB(即信号量指量指针项所指向的PCB)所对应的进程(把阻塞态改为就绪态),执行V操作的进程继续。

4.总结

本文十分具有阅读价值,收货匪浅。对于程序验证而言,必须使用一组相关的测试用例对其进行测试,换句话说,该决定必须基于要测试的机制的内部结构。设计者应该以这种方式(即如此有效地构造)来构造自己的机制。

全部评论 (0)

还没有任何评论哟~