操作系统理论 第一章(操作系统引论)—第五节(OS结构设计)

写在前面:

  1. 本系列笔记主要以《计算机操作系统(汤小丹…)》为参考,大部分内容出于此书,笔者的工作主要是挑其重点展示,另外配合下方视频链接的教程展开思路,在笔记中一些比较难懂的地方加以自己的一点点理解(重点基本都会有标注,没有任何标注的难懂文字应该是笔者因为强迫症而加进来的,可选择性地忽略)。
  2. 视频链接:操作系统(汤小丹等第四版)_哔哩哔哩_bilibili

一、传统操作系统结构

1、无结构操作系统

        在早期开发操作系统时,设计者只是把他的注意力放在功能的实现和获得高的效率上缺乏首尾一致的设计思想。此时的OS由众多的过程直接构成,每个过程可以任意地相互调用其它过程,但OS内部不存在任何结构,致使操作系统内部既复杂又混乱。

        此时程序设计的技巧,只是如何编制紧凑的程序,以便于有效地利用内存。当系统不太大,在一个人能够完全理解和掌握的情况下问题还不是太大,但随着系统的不断扩大,所设计出的操作系统就会变得既庞大又杂乱,这一方面会使所编制出的程序错误很多,给调试工作带来很多困难,另一方面也使程序难以阅读和理解,增加了维护人员的负担。

2、模块化结构OS

(1)模块-接口法的基本概念:

        为使OS具有较清晰的结构,按OS功能划分若干个具有一定独立性和大小的模块每个模块具有某方面的管理功能,并仔细地规定好各模块间的接口,使各块之间能通过接口实现交互然后再进一步将各模块细分为若干个具有一定功能的子模块,同样也规定好各子模块之间的接口若子模块较大,可再进一步将它细分。这种设计方法称为模块-接口法,由此构成的操作系统就是具有模块化结构的操作系统。

(2)模块-接口法的优缺点:

①利用模块-接口法开发的OS,较之无结构OS具有以下明显的优点:

[1]提高OS设计的正确性、可理解性和可维护性。

[2]增强OS的可适应性。

[3]加速OS的开发过程。

②模块化结构设计仍存在下述问题:

[1]在OS设计时,对各模块间的接口规定很难满足在模块设计完成后对接口的实际需求。

[2]在OS设计阶段,设计者必须做出一系列的决定(决策),每一个决定必须建立在上一个决定的基础上,但模块化结构设计中,各模块的设计齐头并进,无法寻找一个可靠的决定顺序,造成各种决定的“无序性”,这将使程序人员很难做到“设计中的每一步决定”都是建立在可靠的基础上。

[3]从功能上为OS划分模块,但是未区别共享资源和独占资源。

3、分层式结构OS

(1)分层式OS结构是对模块化结构的一种改进,它按自底向上的分层设计的基本原则(每一步设计都建立在可靠的基础上),将OS划分为若干个层次,每一层都只能使用其底层所提供的功能和服务,从硬件开始,在其上面一层一层地自底向上增添相应功能的软件,这种OS结构称为分层式OS结构。

(2)在用这种方法构成操作系统时,已将一个操作系统分为若干个层次,每层又由若干个模块组成,各层之间只存在着单向的依赖关系,即高层仅依赖于紧邻它的低层

(3)分层结构的优缺点:

①分层结构的主要优点有:

[1]易保证系统的正确性。自下而上的设计方式使所有设计中的决定都是有序的,或者说是建立在较为可靠的基础上的,这样比较容易保证整个系统的正确性。

[2]易扩充和易维护性。在系统中增加、修改或替换一个层次中的模块或整个层次时,只要不改变相应层次间的接口,就不会影响其它层次,这必将使系统维护和扩充变得更加容易。

②分层结构的主要缺点是系统效率较低。由于层次结构是分层单向依赖的,必须在每层之间都建立层次间的通信机制,OS每执行一个功能,通常要自上而下地穿越多个层次,这无疑会增加系统的通信开销,从而导致系统效率的降低。

二、客户/服务器模式简介

1、客户/服务器模式的组成

(1)客户机:通常在一个LAN网络上连接有多台网络工作站(简称客户机),每台客户机都是一个自主计算机,具有一定的处理能力,客户进程在其上运行,平时它处理一些本地业务,也可发送一个消息给服务器,以请求某项服务。

(2)服务器:通常是一台规模较大的机器,在其上驻留有网络文件系统或数据库系统等,它应能为网上所有的用户提供一种或多种服务。平时它一直处于工作状态,被动地等待来自客户机的请求,一旦检查到有客户提出服务请求,便去完成客户的请求,并将结果送回客户。

(3)网络系统:是用于连接所有客户机和服务器,实现它们之间通信和网络资源共享的系统。

2、客户/服务器之间的交互

(1)客户发送请求消息。当客户机上的用户要请求服务器进行应用处理时,应输入相应的命令和有关参数,由客户机上的发送进程先把这些信息装配成请求消息,然后把它发往服务器;客户机上的接收进程则等待接收从服务器发回来的响应消息。

(2)服务器接收消息。服务器中的接收进程平时处于等待状态,一旦有客户机发来请求,接收进程就被激活,根据请求信息的内容,将之提供给服务器上的相应软件进行处理。

(3)服务器回送消息。服务器的软件根据请求进行处理,在完成指定的处理后,把处理结果装配成一个响应消息,由服务器中的发送进程将之发往客户机。

(4)客户机接收消息。客户机中的接收进程把收到的响应消息转交给客户机软件,再由后者做出适当处理后提交给发送该请求的客户。

3、客户/服务器模式的优点

(1)数据的分布处理和存储。由于客户机具有相当强的处理和存储能力,可进行本地处理和数据的分布存储,从而摆脱了由于把一切数据都存放在主机中而造成的既不可靠又容易产生瓶颈现象的困难局面。

(2)便于集中管理。尽管C/S模式具有分布处理功能,但公司(单位)中的有关全局的重要信息、机密资料、重要设备以及网络管理等,仍可采取集中管理方式,这样可较好地保障系统的“可靠”和“安全”。

(3)灵活性和可扩充性。C/S模式非常灵活,极易扩充,理论上客户机和服务器的数量不受限制,其灵活性还表现在可以配置多种类型的客户机和服务器上。

(4)易于改编应用软件。在客户/服务器模式中,对于客户机程序的修改和增删,比传统集中模式要容易得多,必要时也允许由客户进行修改。

三、微内核OS结构

1、微内核操作系统的基本概念

(1)足够小的内核:

        在微内核操作系统中,内核是指精心设计的、能实现现代OS最基本核心功能的小型内核,它是计算机上配置的底层软件,是操作系统最基本、最核心的部分,实现操作系统内核功能的程序称为内核程序。

        微内核并非是一个完整的OS,而只是将操作系统中最基本的部分放入微内核,通常包含有与硬件处理紧密相关的部分、一些较基本的功能、客户和服务器之间的通信,这些OS最基本的部分只是为构建通用OS提供一个重要基础,这样就可以确保把操作系统内核做得很小。

(2)基于客户/服务器模式:

        在OS内核中只留下一些最基本的功能,而将其它服务分离出去,由工作在用户态下的进程来实现,形成所谓的“客户/服务器”模式,客户进程可通过内核向服务器进程发送请求,以获取OS的服务

(3)应用“机制与策略分离”原理:

        在现在操作系统的结构设计中,经常利用“机制与策略分离”的原理来构造OS结构。所谓机制是指实现某一功能的具体执行机构,而策略则是在机制的基础上借助于某些参数和算法来实现该功能的优化,或达到不同的功能目标。

        通常机制处于一个系统的基层,而策略则处于系统的高层。在传统的OS中,将机制放在OS的内核的较低层,把策略放在内核的较高层次中,而在微内核操作系统中,通常将机制放在OS的微内核中,正因为如此,才有可能将内核做得很小。

(4)采用面向对象技术:

        操作系统是一个极其复杂的大型软件系统,不仅可以通过结构设计来分解操作系统的复杂度,还可以基于面向对象技术中的“抽象”和“隐蔽”原则控制系统的复杂性,再进一步利用“对象”、“封装”和“继承”等概念来确保操作系统的“正确性”、“可靠性”、“易修改性”、“易扩展性”等,并提高操作系统的设计速度。正因为面向对象技术能带来如此多的好处,故面向对象技术被广泛应用于现代操作系统的设计中。

2、微内核的基本功能

(1)进程(线程)管理:

        大多数的微内核OS对于进程管理功能的实现,都采用“机制与策略分离”的原理。例如,为实现进程(线程)调度功能,须在进程管理中设置一个或多个进程(线程)优先级队列,能将指定优先级进程(线程)从所在队列中取出,并将其投入执行,由于这一部分属于调度功能的机制部分,应将它放入微内核中。对于用户(进程)如何进行分类,以及其优先级的确认方式或原则,则都是属于策略问题,可将它们放入微内核外的进程(线程)管理服务器中。

        由于进程(线程)之间的通信功能是微内核OS最基本的功能,被频繁使用,因此几乎所有的微内核OS都是将进程(线程)之间的通信功能放入微内核中。此外,还将进程的切换线程的调度,以及多处理机之间的同步等功能也放入微内核中。

(2)低级存储器管理:

        通常在微内核中只配置最基本的低级存储器管理机制,如用于实现将用户空间的逻辑地址变换为内存空间的物理地址的页表机制和地址变换机制,这一部分是依赖于硬件的,因此放入微内核。而实现虚拟存储器管理的策略,则包含应采取何种页面置换算法、采用何种内存分配与回收的策略等,应将这部分放在微内核外的存储器管理服务器中去实现。

(3)中断和陷入处理:

        大多数微内核操作系统都是将与硬件紧密相关的一小部分放入微内核中处理,此时微内核的主要功能是捕获所发生的中断和陷入事件,并进行相应的前期处理,如进行中断现场保护,识别中断和陷入的类型,然后将有关事件的信息转换成消息后,把它发送给相关的服务器。由服务器根据中断或陷入的类型调用相应的处理程序来进行后期处理。

3、微内核操作系统的优点

(1)提高了系统的可扩展性。由于微内核OS的许多功能是由相对独立的服务器软件来实现的,当开发了新的硬件和软件时,微内核OS只需在相应的服务器中增加新的功能,或再增加一个专门的服务器;与此同时,也必然改善系统的灵活性,不仅可在操作系统中增加新的功能,还可修改原有的功能,以及删除已过时的老功能,以形成一个更为精干的有效的操作系统。

(2)增强了系统的可靠性。这一方面是由于微内核是通过精心设计和严格测试的,容易保证其正确性,另一方面,它提供了规范而精简的应用程序接口(API),为微内核外部的程序编制高质量的代码创造了条件。此外,由于所有服务器都是运行在用户态,服务器与服务器之间采用的是消息传递通信机制,因此,当某个服务器出现错误时,不会影响内核也不会影响其它服务器。

(3)可移植性强。随着硬件的快速发展,出现了各种各样的硬件平台,作为一个好的操作系统,必须具备可移植性,使其能较容易地运行在不同的计算机硬件平台上。在微内核结构的操作系统中,所有与特定CPU和I/O设备硬件有关的代码,均放在内核和内核下面的硬件隐藏层中,而操作系统其它绝大部分——各种服务器均与硬件平台无关,因而把操作系统移植到另一个计算机硬件平台上所需作的修改是比较小的。

(4)提供了对分布式系统的支持。由于在微内核OS中,客户和服务器之间、服务器和服务器之间的通信采用消息传递通信机制,致使微内核OS能很好地支持分布式系统和网络系统。

(5)融入了面向对象技术。在设计微内核OS时采用了面向对象的技术,其中的“封装”、“继承”、“对象类”和“多态性”,以及在对象之间采用消息传递机制等,都十分有利于提高系统的正确性、可靠性、易修改性、易扩展性等,而且还能显著地减少开发系统所付出的开销。

4、微内核操作系统存在的问题

        在微内核操作系统中,由于采用了非常小的内核,客户/服务器模式和消息传递机制虽给微内核操作系统带来了许多优点,但由此也使微内核OS存在着潜在缺点,其中最主要的是,较之早期的操作系统,微内核操作系统的运行效率有所降低

        效率降低最主要的原因是,在完成一次客户对操作系统提出的服务请求时,需要利用消息实现多次交互和进行用户/内核模式与上下文的多次切换。

  • 23
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zevalin爱灰灰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值