OS结构设计

OS结构设计

传统操作系统结构

  1. 无结构操作系统
    *特点:*注重在功能的实现和获得高的效率,缺乏首尾一致的设计思想。
    此时的OS是为数众多的一组过程的集合,每个过程可以任意 地相互调用其它过程,致使操作系统内部既复杂又混乱,因此,这种OS是无结构的,也 有人把它称为整体系统结构。
    *此时程序设计的技巧:*只是如何编制紧凑的程序,以便于有效地利用内存。
  2. 模块化结构OS
    特点:OS具有较清晰的结构,模块独立性
    定义: 为使OS具有较清晰的结构,OS 不再是由众多的过程直接构成的,而是按其功能精心地划分为若干个具有一定独立性和大 小的模块。每个模块具有某方面的管理功能,如进程管理模块、存储器管理模块、I/O设备 管理模块等,并仔细地规定好各模块间的接口,使各模块之间能通过接口实现交互。然后 再进一步将各模块细分为若干个具有一定功能的子模块,如把进程管理模块又分为进程控 制、进程同步等子模块,同样也规定好各子模块之间的接口。若子模块较大,可再进一步 将它细分。我们把这种设计方法称为模块-接口法,由此构成的操作系统就是具有模块化 结构的操作系统。
    。。。。。。。。
    衡量模块的独立性有以下两个标准:
    (1) 内聚性,指模块内部各部分间联系的紧密程度。内聚性越高,模块独立性越强。
    (2) 耦合度,指模块间相互联系和相互影响的程度。显然,耦合度越低,模块独立性越好。
    。。。。。。。。
    保留问题:
    ⑴在OS设计时,对各模块间的接口规定很难满足在模块设计完成后对接口的实际需求。
    (2)在OS设计阶段,设计者必须做出一系列的决定(决策),每一个决定必须建立在上 一个决定的基础上,但模块化结构设计中,各模块的设计齐头并进,无法寻找一个可靠的 决定顺序,造成各种决定的“无序性”,这将使程序人员很难做到“设计中的每一步决定” 都是建立在可靠的基础上,因此模块-接口法又被称为’‘无序模块法”。
  3. 分层式结构OS
    改进:为了将模块-接口法中"决定顺序”的无序性变为有序性,引入了有序分层法,分层法的设计任务是,在目标系统An和裸机系统(又称宿主系统)A0之间,铺设若干个层次的软 件A1、A2、A3、…、An-1使An通过An-1、An-2、…、A2、A1层,最终能在A0上运行。 在操作系统中,常釆用自底向上法来铺设这些中间层。
    。。。。。。。。
    自底向上的分层设计基本原则:每一步设计都建立在可靠的基础上。
    。。。。。。。。
    优点:
    (1) 易保证系统的正确性。自下而上的设计方式使所有设计中的决定都是有序的,或 者说是建立在较为可靠的基础上的,这样比较容易保证整个系统的正确性。
    (2) 易扩充和易维护性。在系统中增加、修改或替换一个层次中的模块或整个层次时,只 要不改变相应层次间的接口,就不会影响其他层次,这必将使系统维护和扩充变得更加容易。
    缺点:
    分层结构的主要缺点是系统效率降低。由于层次结构是分层单向依赖的,必须在每层 之间都建立层次间的通信机制,OS每执行一个功能,通常要自上而下地穿越多个层次,这 无疑会增加系统的通信开销,从而导致系统效率的降低。

微内核OS结构

  • 特点:
    为了提高操作系统的“正确性”、“灵活性”、“易维护性”和“可扩充性”,在进行现代操作系统结构设计时,即使在单计算机环境下,大多也釆用基于客户/服务器模式的微内核 结构,将操作系统划分为两大部分:微内核和多个服务器。
  • 定义:
    1)足够小的内核
    在微内核操作系统中,内核是指精心设计的、能实现现代OS最基本核心功能的小型内核,微内核并非是一个完整的OS,而只是将操作系统中最基本的部分放入微内核,通常
    包含有:①与硬件处理紧密相关的部分:②一些较基本的功能;③ 客户和服务器之间的通信。
    2)基于客户/服务器模式
    将操作系统中最基本的部分放入内核中,而把操作系统的绝大部分功 能都放在微内核外面的一组服务器(进程)中实现,如用于提供对进程(线程)进行管理的进程(线 程)服务器、提供虚拟存储器管理功能的虚拟存储器服务器、提供I/O设备管理的I/O设备管理服务器等,它们都是被作为进程来实现的,运行在用户态,客户与服务器之间是借助微内核提供的消息传递机制来实现信息交互的。 如图3
    3) 应用“机制与策略分离”原理
    在现在操作系统的结构设计中,经常利用“机制与策略分离”的原理来构造OS结构。 所谓机制,是指实现某一功能的具体执行机构。而策略,则是在机制的基础上借助于某些 参数和算法来实现该功能的优化,或达到不同的功能目标。通常,机制处于一个系统的基 层,而策略则处于系统的高层。在传统的OS中,将机制放在OS的内核的较低层,把策略 放在内核的较高层次中。而在微内核操作系统中,通常将机制放在OS的微内核中。正因为如此,才有可能将内核做得很小。
    4) 釆用面向对象技术
  • 基本功能:
    1)进程(线程)管理
    由于进程(线程)之间的通信功能是微内核OS最基本的功能,被频繁使用,因此几乎所 有的微内核OS都是将进程(线程)之间的通信功能放入微内核中。此外,还将进程的切换、 线程的调度,以及多处理机之间的同步等功能也放入微内核中。
    2) 低级存储器管理
    通常在微内核中,只配置最基本的低级存储器管理机制,如用于实现将用户空间的逻 辑地址变换为内存空间的物理地址的页表机制和地址变换机制,这一部分是依赖于硬件的, 因此放入微内核。而实现虚拟存储器管理的策略,则包含应釆取何种页面置换算法、釆用何种内存分配与回收的策略等,应将这部分放在微内核外的存储器管理服务器中去实现。
    3) 中断和陷入处理
    大多数微内核操作系统都是将与硬件紧密相关的一小部分放入微内核中处理,此时微 内核的主要功能是捕获所发生的中断和陷入事件,并进行相应的前期处理,如进行中断现 场保护,识别中断和陷入的类型,然后将有关事件的信息转换成消息后,把它发送给相关 的服务器。由服务器根据中断或陷入的类型调用相应的处理程序来进行后期处理。
  • 优点:
    (1) 提高了系统的可扩展性。
    (2) 增强了系统的可靠性。
    (3) 可移植性强。
    (4) 提供了对分布式系统的支持。
    (5) 融入了面向对象技术
  • 不足:
    其中最主要的是,较之早期的操作系统,微内核操作系统的运行效率有所降低。

附录补充

  • 附加: 客户/服务器模式(Client/Server Model)
    客户/服务器系统组成
    (1) 客户机:通常在一个LAN网络上连接有多台网络工作站(简称客户机),每台客户 机都是一个自主计算机,具有一定的处理能力,客户进程在其上运行,平时它处理一些本 地业务,也可发送一个消息给服务器,以请求某项服务。 (2) 服务器:通常是一台规模较大的机器,在其上驻留有网络文件系统或数据库系统等,它应能为网上所有的用户提供一种或多种服务。平时它一直处于工作状态被动地等待来自客户机的请求,一旦检查到有客户提出服务请求,便去完成客户的请求,并将结果 送回客户,这样,工作站中的用户进程与服务器进程就形成了客户/服务器关系。 (3) 网络系统:是用于连接所有客户机和服务器,实现它们之间通信和网络资源共享的系统。
    客户/服务器之间的互过程
    (1) 客户发送请求消息。当客户机上的用户要请求服务器进行应用处理时,应输入相应的命令和有关参数。由客户机上的发送进程先把这些信息装配成请求消息,然后把它发往服务器;客户机上的接收进程则等待接收从服务器发回来的响应消息。
    (2) 服务器接收消息。服务器中的接收进程平时处于等待状态,一旦有客户机发来请求,接收进程就被激活,根据请求信息的内容,将之提供给服务器上的相应软件进行处理。
    (3) 服务器回送消息。服务器的软件根据请求进行处理,在完成指定的处理后,把处理结果装配成一个响应消息,由服务器中的发送进程将之发往客户机。
    (4) 客户机接收消息。客户机中的接收进程把收到的响应消息转交给客户机软件,再由后者做出适当处理后提交给发送该请求的客户。
    优点:
    (1) 数据的分布处理和存储。由于客户机具有相当强的处理和存储能力,可进行本地处理和数据的分布存储,从而摆脱了由于把一切数据都存放在主机中而造成的既不可靠又容易产生瓶颈现象的困难局面。
    (2) 便于集中管理。尽管C/S模式具有分布处理功能,但公司(单位)中的有关全局的重 要信息、机密资料、重要设备以及网络管理等,仍可釆取集中管理方式,这样可较好地保障系统的“可靠”和“安全”。
    (3) 灵活性和可扩充性。C/S模式非常灵活,极易扩充。理论上,客户机和服务器的数量不受限制,其灵活性还表现在可以配置多种类型的客户机和服务器上。
    (4) 易于改编应用软件。在客户/服务器模式中,对于客户机程序的修改和增删,比传统集中模式要容易得多,必要时也允许由客户进行修改。
    缺点:
    基本客户/服务器模式的不足之处是存在着不可靠性和瓶颈问题。在系统仅有一个服务器时,一旦服务器故障,将导致整个网络瘫痪。当服务器在重负荷下工作时,会因忙不过来而显著地延长对用户请求的响应时间。如果在网络中配置多个服务器,并釆取相应的安全措施,则这种不足可加以改善。

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

  • 附加:面向对象的程序设计(Object-Orientated Programming)
    1)对象
    在面向对象的技术中,是利用被封装的数据结构(变量)和一组对它进行操作的过程(方 法)来表示系统中的某个对象的,如图所示对象中的变量(数据)也称为属性,它可以 是单个标量或一张表。面向对象中的方法是用于执行某种功能的过程,它可以改变对象的 状态,更新对象中的某些数据值或作用于对象所要访问的外部资源。如果把一个文件作为 一个对象(图1),该对象的变量便是文件类型、文件大小、文件的创建者等。对象中的 方法包含对文件的操作,如创建文件、打开文件、读文件、写文件、关闭文件等。对象中的变量(数据)对外是隐蔽的,因而外界不能对它直接进行访问,必须通过该对 象中的一组方法(操作函数)对它进行访问。例如要想对图1所示的文件A执行打开操作,必须用该对象中的打开过程去打开它。同样地,对象中的一组方法的实现细节也是隐蔽的,因此对象中的变量可以得到很好的保护,而不会允许未经受权者使用和对它进行不正确的操作。
    2)对象类
    在实践中,有许多对象可能表示的是同一类事物,每个对象具有自己的变量集合,而它们所具有的方法是相同的。如果为每一个相似的对象都定义一组变量和方法,显然是低效的,由此产生了 “对象类”的概念,利用“对象类”来定义一组大体相似的对象。图2
    一个类同样定义了一组变量和针对该变量的一组方法,用它们来描述一组对象的共同属性和行为。 类是在对象上的抽象,对象则是类的实例。对象类中所定义的变量在实例中均有具体的值。例如,我们将文件设计成一个类,类的变量同样是文件类型、文件大小和创建者等。 类中的方法是文件的创建、打开、读写、关闭等。图1示出了一个文件类,在类的变量 中没有具体数值,一旦被赋予了具体数值就成了文件A对象。
    3)继承
    在面向对象的技术中,可以根据已有类来定义一个新的类,新类被称为子类(B),原
    来 的类被称为父类(A),图3。
    继承是父类和子类之间共享变量和方法的机制,该机制规定子类自动继承父类中定义的变量和方法,并允许子 类再增加新的内容。继承特性可使定义子类变得更容易。一 个父类可以定义多个子类,它们分别是父类的某种特例,父 类描述了这些子类的公共变量和方法。类似地,这些子类又 可以定义自己的子类,通过此途经可以生成一个继承的层 次。另外,也允许一个子类有两个父类或多个父类,它可以 从多个父类获得继承,此时称为“多重继承”。
    优点:
    (1) 通过“重用”提高产品质量和生产率。在面向对象技术中可通过“重用”以前项目中经过精心测试的对象或“重用”由其他人编写、测试和维护的对象类来构建新的系统,这不仅可大大降低开发成本,而且能获得更好的系统质量。
    (2) 使系统具有更好的易修改性和易扩展性。通过封装,可隐蔽对象中的变量和方法,因而当改变对象中的变量和方法时,不会影响到其它部分,从而可方便地修改老的对象类。另外,继承是面向对象技术的重要特性, 在创建一个新对象类时,通过利用继承特性可显著减少开发的时空开销,使系统具有更好 、的易扩展性和灵活性。
    (3) 更易于保证系统的“正确性”和“可靠性”。对象是构成操作系统的基本单元,由于可以独立地对它进行测试,易于保证每个对象 的正确性和可靠性,因此也就比较容易保证整个系统的正确性和可靠性。此外,封装对对 象类中的信息进行了隐蔽,这样又可有效地防止未经授权者的访问和用户不正确的使用, 有助于构建更为安全的系统。
    。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
发布了10 篇原创文章 · 获赞 5 · 访问量 151

猜你喜欢

转载自blog.csdn.net/weixin_44715384/article/details/104950092