版权归原作者所有,如有侵权,请联系我们

[科普中国]-通用操作系统

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

概述

通用操作系统是具有多种类型操作特征的操作系统。可以同时兼有多道批处理、分时、实时处理的功能,或其中两种以上的功能。

例如:实时处理+批处理=实时批处理系统。首先保证优先处理实时任务,插空进行批处理作业。常把实时任务称为前台作业,批作业称为后台作业。

再如:分时处理+批处理=分时批处理系统。即:时间要求不强的作业放入“后台”(批处理)处理,需频繁交互的作业在“前台”(分时)处理,处理机优先运行“前台”作业。

从上世纪60年代中期,国际上开始研制一些大型的通用操作系统。这些系统试图达到功能齐全、可适应各种应用范围和操作方式变化多端的环境的目标。但是,这些系统过于复杂和庞大,不仅付出了巨大的代价,且在解决其可靠性、可维护性和可理解性方面都遇到很大的困难。

相比之下,UNIX操作系统却是一个例外。这是一个通用的多用户分时交互型的操作系统。它首先建立的是一个精干的核心,而其功能却足以与许多大型的操作系统相媲美,在核心层以外,可以支持庞大的软件系统。它很快得到应用和推广,并不断完善,对现代操作系统有着重大的影响1。

缺陷中断

对于当前正在运行的任务而言,中断是一种并发事件,并且在某种程度上表现出极大的随机性,因而无法很好预测中断在何时会发生。在GPOS中,中断的优先级要高于任务执行的优先级,故由于中断发生具有不确定性,导致被中断任务的执行时间也变得不确定了。这种不确定性对于具有时间约束的实时系统可能是致命的。

多任务及任务调度

GPOS普遍采用基于round-robin优先级的调度算法,其核心是一组优先级可调整的队列。每一个队列维护一组优先级相同的任务。调度算法为优先级最高队列的每个任务分配一个时间片,任务按时间片分时复用CPU。调度算法会逐渐调整各个队列的优先级,使得低优先级队列中的任务最终也能被执行。在这种调度算法中,由于无法准确地预测一个任务需要等待多长时间才能被执行,以及多长时间能够执行完毕,因此这种调度算法是无法满足对实时任务调度的。

虚拟存储

目前几乎所有的GPOS都使用了基于页面的虚拟存储器技术。在虚存机制中,当页面失效后,必然伴随换页操作,这给任务的实时性能带来了负面影响。一方面,如果当前任务发生页面失效,则任务被中断,系统进行换页操作;另一方面,如果多个任务共享物理页面,则会存在页面颠簸。页面失效的处理过程是非常复杂的,涉及众多因素,如失效中断、磁盘操作、系统存储容量等。在基于页面的GPOS中,频繁的页面失效会导致无法准确预测一个任务的执行时间。

DMA

DMA技术大大提高了系统的整体吞吐率,有效减少处理器对I/O设备操作的干预,提高了处理器利用率。但由于DMA必须访问主存储器,因此在DMA传输期间,I/O设备和CPU是分时争用主存储器的。在DMA传输占用存储总线时,处理器无法读写主存储器。虽然在目前很多系统中,处理器是通过Cache读写存储器而不是直接读写主存储器,但是当Cache失效并且系统正在进行DMA传输时,Cache仍然无法立即读写主存储器。DMA传输方式为准确预测CPU完成一个任务的时间增加了不确定因素2。

实时扩展方法(1)集成调度

集成调度是一种概念,指在同一操作系统中同时使用了实时调度算法和非实时调度算法,以分别用于调度实时任务和非实时任务。在集成调度方案中,由于实时任务都被指派截止时间,因此实时任务和非实时任务被调度器公平调度,系统没有赋予实时任务更高的优先级。调度器首先将处理器时间片分配给实时任务,分配算法是按结束截止时间的早晚进行的。根据实时任务对处理器时间片的要求和非实时任务的工作负载,调度算法在实时任务和非实时任务之间维护公平的分配方案。对于非实时任务,调度器采用round-robin调度算法进行调度。虽然集成调度可以给实时任务和非实时任务公平分配处理器时间片,但是实验数据显示实时任务的完成时间随系统负载的不同而呈现较大的波动。当波动过大时,使得对整个系统的性能预测失之准确,其结果是或者大幅降低了处理器利用率或者使得其它实时任务无法执行。

(2)处理器资源预留

处理器资源预留(PCR)是一种抽象的机制。PCR允许用户控制处理器周期的分配,跟踪预留资源并度量任务已使用的处理器资源,解决了实时任务和非实时任务的调度问题。在PCR中,实时任务模型是周期模型。在PCR方案中,几乎操作系统的所有功能部件都需要修改或重新设计。

(3)实时Mach

实时Mach项目希望能开发一个实时版的Mach内核。在实时Mach中,所有的原有Mach内核的各个子部分均被重新设计。实时Mach在原有内核基础之上增加了实时线程管理、集成时间驱动调度器、实时同步和内存驻留对象。在实时Mach中,进程可以创建实时和非实时两种线程。在创建实时线程时,用户需要提供一些关于线程时间特性方面的参数,如周期、最大开销、截止时间、以及截止时间是硬截止时间还是软截止时间。实时Mach通过优先级继承实现了实时同步机制以解决GPOS中的优先级反转问题。通过实时同步机制,使得当高优先级任务因为共享资源被低优先级任务锁定而被挂起时,其挂起等待时间具有上限。