【操作系统】 - 引论 - 2
1. 1 操作系统的目标
1.2 操作系统的基本特性
1.3 操作系统的主要功能
1.4 操作系统设计
1.1 操作系统的目标
1)方便
2)有效 (资源利用率、系统吞吐量)
3)可扩充性 (无结构 -> 层次结构 -> 微内核结构)
4) 开放性 (符合世界标准规范)
1.2 操作系统的基本特征
1)并发
2)共享
3)虚拟
4)异步
并发:
正是系统中的程序能并发执行这一特征,使得操作系统能有效提高系统中的资源利用率,增加系统的吞吐量。
1. 并行与并发
并行性和并发性是既相似又有区别的两个概念。并行性是指两个或多个事件在同一时刻发生而并发性是指两个或多个事件在同 一时间间隔内发生。
2. 引入进程
在一个未引入进程系统中,在属于同一个应用程序的计算机程序和io程序只能是顺序执行,即只有在计算程序执行若干段后,才允许io程序执行,反之,在程序执行io程序操作时,计算程序也不能执行,但在为计算程序和io程序分别建立一个进程后,这两个进程便可并发执行。
1)并发
若对内存中的多个程序都分别建立一个进程,它们就可以并发执行,这样,便能极大的提高系统资源的利用率,增加系统的吞吐量。
2)共享
一般情况下的共享与操作系统环境下的共享含义并不完全相同
1)互斥共享方式
系统中的某些资源,如打印机、磁带机等,虽然可以提供给多个进程使用,但应规定在一段时间内只允许一个进程访问该资源。为此,在系统中应建立一种机制,以保证多个进程对这类资源的互斥访问。
2)同时访问方式
系统中还有另一类资源允许在一段时间内因多个进程“同时”对它们进行访问。这是所谓“同时”,在单处理机环境下是宏观意义上的,而微观意义上,这些进程对该资源的访问是交替进行的,典型的可供多个进程“同时”访问的资源是磁盘设备。一些用重入码编写的文件也可以被“同时”共享,即允许若干用户同时访问该文件。
3)虚拟
1)时分复用
利用其设备为一用户服务的空闲时间,转去为其他用户服务,以充分利用设备。
a: 虚拟处理机技术
b: 虚拟设备技术
2)空分复用技术
利用存储器的空闲时间分区域存放和运行其他的多道程序。
存在的问题:只能提高内存的利用率
4)异步
在多道程序环境下,系统允许多个进程并发执行。在单处理机环境下,由于系统中只有一台处理机,因而每次只允许一个进程执行,其他进程只能等待。
e.g. 打印请求先进入内存的作业后完成进程,以人们不可预知的速度向前推进,即异步性。
1.3 操作系统的主要功能
引入操作系统的主要目的是为多道程序的运行提供良好的运行环境,以保证多道程序能有条不紊的高效的运行,并能最大程度的提高系统中各种资源的利用率,方便用户的使用。
1)处理机管理功能
2)存储器管理功能
3)设备管理功能
4)文件系统功能
5)操作系统与用户的接口
6)其他功能
a: 处理机管理功能
在传统的多道程序系统中,处理机的分配和运行都是以进程为基本单位的。因而对处理机的管理可归纳为对进程的管理。处理机
管理的主要功能:
1)创建和撤销进程
2)对进程协调
3)进程间信息交换
4)算法调度
1.进程控制
2.进程同步(临界资源)
3.进程调度(作业调度,进程调度)
4.进程通信 (输入,计算,打印)
b: 存储器的管理功能
存储器管理的主要任务:提高存储器利用率,方便用户,扩充内存。
在存储器管理的主要功能:内存分配与回收,内存保护,地址映射,内存扩充。
1) 内存分配(静态,动态)
2)内存保护 (界限寄存器)
3) 地址映射 (逻辑地址 --> 物理地址)
4)内存扩充 (虚拟存储技术)
请求调入,置换功能
c: 设备管理功能
设备管理功能如下:
1)完成用户进程提出的io请求,为用户进程分配所需的io设备,并完成指定的io操作。
2)提高CPU和io设备的利用率,提高io速度,方便用户使用io设备
为实现上述任务,设备管理应具有缓冲管理,设备分配和设备管理以及虚拟设备等功能
1)缓冲管理(CPU, io)
单缓冲 、 双缓冲、公用缓冲池
2)设备分配 (设备控制表,控制器控制表)
3)设备管理 (CPU --> 设备控制器,通信)
4) 文件管理功能
文件管理的主要任务:用户文件和系统文件便于用户使用,文件安全性。
文件管理应具有缓存空间管理,目录管理,文件读 / 写管理,文件共享和保护等功能。
1) 文件存储空间的管理
2)目录管理 (每个文件一个目录项 --> 按名存取)
3)文件读 / 写管理和保护
操作系统与用户之间的接口
1. 用户接口
1)联机用户接口
2)脱机用户接口
3)图像用户接口
2. 程序接口
程序接口上为用户程序在执行中访问系统资源而设置的,是用户程序取得操作系统服务的唯一途径,它是由一组系统调用组成的,每一个系统调用都是一个能完成特定功能的子程序。
其他功能:
1. 系统安全
1)认证技术
2)密码技术
3)访问控制技术
4)反病毒技术
2. 网络的功能的服务
1)网络通信
2)资源管理
3)应用互操作
3. 支持多媒体
1)接纳控制功能
2)实时调度
3) 多媒体文件的存储
1.4 操作系统的结构设计
早期操作系统的规模很小,如只有几十KB, 完全由可以由一个以手工方式用几个月的时间编制出来,此时,编制程序基本上是一种技巧,操作系统是否具有结构的并不那么重要,重要的是程序员的程序设计技巧,但随着操作系统规模的愈来愈多,往往需要由数十人或数百人,甚至更多的人参与,分工合作,只因来完成操作系统的设计。这意味着应采用工程化的开发方法对大型软件进行开发,由此产生了“软件工程学”。
1)传统操作系统结构
1. 无结构的操作系统
在早期开发操作系统时,设计者只是把他的注意力放在功能的实现和获得高的效率上,缺乏首尾一致的设计思想,此时的操作系统是为数众多的一组过程的集合,每个过程可以任意的相互调用其它过程,致使操作系统内部复杂又混乱。因此,这种操作系统是无结构的,也有人把它称之为整体系统结构。
2. 模块化操作系统
1)模块化程序设计技术的基本概念
模块化程序设计技术是20世纪60年代出现的一种结构化程序设计技术。该技术基于“分解”和“模块化”的原则来控制软件的复杂度。为使操作系统具有较清晰的结构,操作系统不再由众多的过程直接构成的,而是按其功能精心的划分为若干个具有一定独立性和大小的模块。
2)模块独立性
在模块-接口法中,关键问题是模块的划分和规定好模块之间的接口。如果我们在划分模块时将模块划分得太小,虽然可以降低模块本身的复杂性,但会引起模块之间的联系过多,从而会造成系统比较混乱,如果将模块划分得过大,各层增加模块内部的复杂性,使内部的联系增加,因此,在划分模块时,应在两者间进行权衡。
3)模块接口法的有缺点
利用模块-接口开发的操作系统,较之无结构操作系统具有以下明显的优点。
1)提高操作系统设计的正确性,可理解性和可扩性。
2)增强操作系统的可适应性
3)加速操作系统的开发过程
模块化结构设计仍存在下述问题
1)在操作系统设计时,对各模块间的接口规定很难满足,在模块设计完成后对接口的实际需求
2)在操作系统设计阶段,设计者必须做出一系列的决定,每一个决定必须建立在上一个决定的基础上,但模块化结构设计中,各模块的设计齐头并进,无法寻找一个可靠的决定顺序,造成各种决定“无序性”,这将使程序人员很难做到“设计中的每一步决定”都是建立在可靠的基础上,因此,模块-接口法又被称为“无序模块法”。
分层式结构
1)分层结构的基本概念
为了模块-接口法中“决定顺序”的无序性变为有序性,引入了有序分层法,分层法的设计任务是,在目标系统An和裸机系统A0之间,铺设若干层次的软件A1, A2, ........ An-1,使An通过An-1, An-2, An-3 ........ A1层,最终能在A0上执行,在操作系统中,常采用自底向上法来铺设这些中间层,分层结构的优缺点,分层结构的主要优点有
1)易保证系统的正确性
2)易扩充性和易维护
分层结构的主要缺点是系统效率低,由于层次结构是分层单向依赖的,必须在每层之间都建立层次间的通信机制,操作系统每执行一个功能,通常要自上而下的穿越多个层次,这无疑增加系统的通信开销,从而导致系统效率低。
2)客户 / 服务器模式
1. 客户 / 服务器模式的组成和类型
客户 / 服务器系统主要由三部分组成
1)客户机
2)服务器
3)网络系统
2. 客户 / 服务器之间的交互
1)客户发送请求信息
2)服务器接收信息
3)服务器回送信息
4)客户机接受信息
3. 客户 / 服务器模式的优点
1)数据的分布处理和存储
2)便于集中管理
3)灵活性和可扩充性
4)易于改编应用软件
5)面向对象的程序设计
1. 面向对象技术的基本概念
面向对象技术是20世纪80年代提出并很快流行起来的。
抽象, 隐藏
1)对象
在面向对象的技术中,是利用被封装的数据结构和一组对它进行操作的过程来表示系统中的某个对象的,对象中的变量也称为属性,它可以是单个标量或一张表。面向对象中的方法是用于执行某种功能的过程,它可以改变对象的状态,更新对象中某些数据值或作用与对象所要访问的外部资源。如果把一个文件作为一个对象,该对象的变量便是文件类型,文件大小,文件的创建者等,对象中的方法包含对文件的操作,如创建文件,打开文件,读文件,写文件,关闭文件等。
2)对象类
在实践中,有许多对象可能表示的是同一类事物,每一个对象具有自己的变量集合,而它们所具有的方法是相同的,如果为每一个相似的对象都定义一组变量和方法,显然是低效的,由此产生了“对象类”的概念,利用“对象类”来定义一组大体相似的对象。一个类同样定义了一组变量和针对该变量的一组方法,用它们来描述一组对象的共同属性和行为。类是对象上的抽象,对象则是类的实例,对象类中所定义的变量在实例中均有具体的值。
3)继承
在面向对象的技术中,可根据已有类来定义一个新的类,新类被称为子类,原来的类被称为父类。
2. 面向对象技术的优点
在操作系统设计时,将计算机中的实体作为对象来处理,可带来如下好处:
1)通过“重用”提高产品质量和生产率。
2)使系统具有更好易修改性和易扩展性
3)易于保证系统的“正确性”和“可靠性”
4)微内核操作系统结构
1. 微内核操作系统的基本概念
1)足够小的内核,在微内核操作系统中,内核是指精心设计的能实现现代操作系统最基本核心功能的小型内核,微内核并非是一个完整的操作系统,而只是将操作系统中最基本的部分放入微内核。
通常包含有
1)与硬件处理紧密相关的部分
2)一些较基本的功能
3)客户和服务器之间的通信,这些操作系统最基本的部分只是为构建操作系统提供一个重要基础,这样就可以确保把操作系统内核做得很小
2. 基于客户 / 服务器模式
由于客户 / 服务器模式具有非常多的优点,故在单机微内核上几乎无一例外的采用客户服务器模式,将操作系统中最基本的部分功能都放在微内核外面的一组服务器(进程)中实现,如用于提供对进程进行管理的进程服务器,提供虚拟的存储器管理的功能的虚拟存储器服务器,提供io设备的io设备管理服务器等,它们都是被作为进程来处理的,运行在用户态,客户与服务器之间是借助微内核提供的消息传递机制来实现消息交互的。
3)应用“机制与策略分离”原理
在现在操作系统的结构设计中,经常利用“机制与策略分离”的原理来构造操作系统结构,所谓机制,是指实现某一功能的具体执行机构,而策略,则只在机制的基础上借助来实现功能的优化或达到不同的功能目标。
操作系统是一个极其复杂的大型软件系统,我们不仅可以通过结构设计来分解操作系统的复杂性,还可以基于面向对象技术中“差抽象”和“隐藏”原则控制系统的复杂性,再进一步利用“对象”,“封装”和“继承”等概念确保操作系统的“正确性”,“可靠性”,“已修改性”,“易扩展性”等,并提高操作系统的设计速度。正因为面向对象技术能带来如此多的好处,故面向对象技术被广泛应用于现代操作系统的设计中。
2. 微内核的基本功能
微内核应具有哪些功能,或者说哪些功能应放在微内核内,哪些应放在微内核外,目前,当无明确的规定,现在一般都用“机制与策略分离”的原则,将机制部分与硬件紧密相关的部分放入微内核中,由此,可知微内核通常具有如下几个方面的功能。
1)进程管理
2)低级存储器管理
3)中断和陷入管理
3 微内核操作系统的优点
便于微内核操作系统结构是建立在模块化,层次化结构的基础上的,并采用了客户 / 服务器模式和面向对象的程序设计技术,因此,微内核结构的操作系统是集各种技术优点之大成,因而使之具有如下优点
1)提高了系统的可扩展性
2)增强了系统的可靠性
3)可移植性强
4)提供了对分布式系统的支持
5)融入了面向对象技术
4 微内核操作系统中存在的问题
应当指出,在微内核操作系统中,由于采用了非常小的内核,客户 / 服务器模式和消息传递机制虽给微内核操作系统带来了许多优点,其中最主要的是,较之早期的操作系统,微内核操作系统的运行效率有所降低,实际情况是往往还会引起更多的上下文切换。例如,当某个服务器自身尚无能力完成客户请求而需要其他服务器的帮助时。