- 操作系统(Operating System,OS)是配置在计算机硬件上的第一层软件,是对硬件系统的首次扩充。
- 操作系统的主要作用:
- 管理硬件设备,提高他们的利用率和系统吞吐量
- 利用率:使硬件充分忙碌
- 系统吞吐量:单位时间内处理的作业数
- 为用户和应用程序提供一个简单的接口,以便于用户和应用程序使用硬件设备
- 管理硬件设备,提高他们的利用率和系统吞吐量
- 操作系统是现代计算机系统中最基本和最重要的系统软件,其他系统软件以及大量应用软件都依赖操作系统的支持。
1.1 操作系统的目标和作用
1.1.1 操作系统的目标
- 操作系统主要目标是实现:方便性,有效性,可扩充性,开放性。
- 方便性
- 方便用户的使用
- 有效性
- 有效性所包含的第一层含义是提高系统资源的利用率,尽量减少系统资源的空闲。
- 系统资源包括硬件资源和软件资源
- 有效性的第二层含义是提高系统的吞吐量。
- 方便性和有效性是设计操作系统时最重要的两个目标。
- 有效性所包含的第一层含义是提高系统资源的利用率,尽量减少系统资源的空闲。
- 可扩充性
- 能方便的增添新的功能和模块,以及对原有的功能和模块进行修改,具有良好的扩充性。
- 开放性
- 系统能够遵循国际标准,使得遵循国际标准和开发的硬件和软件都能彼此兼容,并且方便的实现互联。
1.1.2 操作系统的作用
- 操作系统作为用户与计算机硬件系统之间的接口
- 从用户的角度
- 用户在操作系统的帮助下能够方便快捷可靠的操作计算机硬件和运行自己的程序。
- 用户可以通过三种方式来使用计算机,来实现自身与操作系统的通信,并取得操作系统的服务。
- 命令方式
- 系统调用方式
- 图形/窗口方式
- 操作系统作为计算机系统资源的管理者
- 从资源管理的角度
- 在一个计算机系统中通常含有多种硬件和软件资源,可以分为四类
- 处理机
- 存储器
- I/O设备
- 文件(数据和程序)
- 操作系统的主要功能
- 处理机管理
- 用于分配和控制处理机
- 存储器管理
- 负责内存的分配于回收
- I/O设备管理
- 负责I/O设备的分配(回收)与操纵
- 文件管理
- 用于实现对文件的存取、共享和保护
- 处理机管理
- 操作系统对计算机系统资源进行统一的管理,能够提高资源的利用率和系统吞吐量
- 操作系统对计算机系统资源进行管理,主要是负责资源的分配,回收,共享。
- 操作系统实现了对计算机资源的抽象
- 对于一台完全无软件的计算机系统称为裸机。
- 操作系统是铺设在计算机硬件上的多层软件的集合。隐藏了对硬件操作的细节,实现了对计算机硬件操作的多个层次的抽象模型,用户只需使用操作系统抽象出来的接口即可使用计算机系统资源。
- 通常把覆盖了软件的机器称为扩充机器或虚拟机。
- IO设备管理软件实现对计算机硬件操作的第一个层次的抽象。
- 文件管理软件实现了对硬件资源操作的第二个层次的抽象。
1.1.3 推动操作系统发展的主要动力。
- 不断提高计算机系统资源的利用率
- 方便用户。
- 器件不断更新换代,操作系统需要能支持新设备。
- 计算机体系结构不断发展。
- 人们不断提出新的应用需求。
1.2 操作系统的发展过程
- 操作系统是一组能有效地组织和管理计算机硬件和软件资源,合理的对各类作业进行调度以及方便用户使用的程序集合。
- 合理的对各类作业进行调度可以提高系统资源的利用率和吞吐量
1.2.1 未配置操作系统的计算机系统
- 人工操作方式
- 缺点
- 用户独占全机,即一台计算机的全部资源由上机用户所独占。
- CPU等待人工操作,严重降低了计算机资源的利用率即所谓的人机矛盾,机器等待人的操作完成。使CPU与I/O设备之间速度不匹配的矛盾更加突出。
- 缺点
- 脱机输入/输出方式
- 目的:
- 为了解决人机矛盾以及CPU和io设备之间速度不匹配的矛盾,引入了外围机,负责输入输出,以磁带为缓冲。
- 脱机输入输出的优点
- 减少了CPU的空闲时间,提升了CPU的利用率,CPU不用等待人工的输入数据(提前通过外围机输入数据)
- 提高了I/O速度,当CPU在运行中需要数据时,直接从高速的磁带上将数据输入到内存,极大的提高了io速度,减少了CPU的空闲时间。
- 目的:
1.2.2 单道批处理系统
- 为实现对作业的连续处理,需要先把一批作业以脱机方式输入到磁带上,并在系统中配上监督程序,在监督程序的控制下,使这批作业能一个接一个的连续处理
- 内存中只有个作业
- 单道批处理系统提高了系统资源的利用率和系统吞吐量。
- 单道批处理系统可以不间断的对提前输入的多个作业按顺序一个接一个进行处理,不用每次完成一个作业,等待输入。
- 单道批处理系统的缺点
- 系统中的资源得不到充分的利用,启动I/O操作时,CPU处于空闲状态,CPU运行时I/O处于空闲状态。
- 为了能够在系统中运行较大的作业,通常在计算机中配置了较大容量的内存,大部分情况下作业所需内存不大会造成内存浪费。
1.2.3 多道批处理系统
- 目的:
- 为了进一步提高资源的利用率和系统吞吐量,引入多道批处理系统
- 在多道批处理系统中,用户所提交的作业先存放在外存上,并排成一个队列,称为后备队列。由作业调度程序,按一定的算法从后备队列中选择若干个作业调入内存,使他们共享CPU和系统中的各种资源。
- 多道批处理系统的优缺点
- 资源利用率高
- 系统吞吐量大,单位时间完成更多的作业数。
- 平均周转时间长,由于作业要排队,依次进行处理,且每个作业处理过程总是走走停停。
- 周转时间,一个作业提交系统到作业完成的时间
- 无交互能力,作业一旦被提交到系统后,直到作业完成,用户不能与自己的作业进行交互。
- 多到批处理系统需要解决的问题
- 处理机争用问题
- 内存分配与保护问题
- IO设备分配问题
- 文件的组织与管理问题。
- 作业管理问题
- 用户与系统的接口问题。
1.2.4 分时系统
- 用户的需求表现在
- 人机交互
- 共享主机
- 分时系统是指在一台主机上连接了多个配有显示器和键盘的终端,并由此所组成的系统,该系统允许多个用户同时通过自己的终端以交互方式使用计算机共享主机中的资源。
- 分时系统实现中的关键问题(如何实现人机交互)
- 及时接收
- 及时处理
- 采用如下方式
- 作业直接进入内存。
- 采用轮转运行方式。
- 采用如下方式
- 分时系统的特征
- 多路性,系统允许将多台终端同时连接到一台主机上,并按分时原则为每个用户服务。
- 独立性,每个用户都好像是独占主机。
- 及时性,用户的请求能在很短的时间内获得响应。
- 交互性,用户可以通过终端与系统进行交互。
1.2.5 实时系统
- 实时系统是指系统能及时响应外部事件的请求,并在规定时间内完成对事件的处理,并控制所有实时任务协调一致的运行。
- 实时系统最主要的特征是实时性。
- 实时系统的类型
- 工业控制系统
- 信息查询系统
- 多媒体系统
- 嵌入式系统
- 实时任务的类型
- 根据任务执行时是否呈现周期性进行划分
- 周期性实时任务
- 非周期性实时任务。
- 根据对截止时间的要求进行划分
- 硬时时任务:是指系统必须满足任务对截止时间的要求。
- 软实时任务:也联系着一个截止时间,但并不严格,偶尔错过了任务的截止时间,对系统产生的影响不大。
- 根据任务执行时是否呈现周期性进行划分
- 实时系统与分时系统的特征比较
- 多路性
- 独立性
- 及时性,实时系统对响应时间更严格。
- 交互性
- 可靠性,实时系统要求系统高度可靠
1.2.6 微机操作系统(个人操作系统)的发展
- 配置在微型机上的操作系统为微机操作系统
- 微机操作系统分为:
- 单用户单任务操作系统
- 单用户单任务操作系统是指允许一个用户上机,且只允许用户程序作为一个任务运行。
- 单用户多任务操作系统。
- 单用户多任务操作系统是指允许一个用户上机,但允许用户把程序分为若干个任务并发执行,从而有效的改善了系统性能。
- 多用户多任务操作系统
- 多用户多任务操作系统是允许多个用户通过各自的终端使用同一台机器共享主机系统中的各种资源和每个用户程序,又可进一步分为几个任务,使他们并发执行,从而进一步提高资源利用率和系统吞吐量。
- 多用户多任务操作系统除了具有界面友好,管理方便和适于普及等优点外,还具有支持多用户使用,可移植性良好,功能强大,通信能力强等优点。
- 单用户单任务操作系统
1.3 操作系统的基本特性
- 所有的操作系统具有并发,共享,虚拟,异步四个基本特征。
- 并发
- 并行性是指两个或多个事件在同一时刻发生。
- 并发性是指两个或多个事件在同一时间间隔内发生。
- 并发是提高系统资源利用率,增加系统吞吐量的主要手段
- 引入进程机制可以实现多进程并发执行。
- 引入进程机制,提高了系统资源的利用率,增加了系统的吞吐量。
- 进程是指在系统中能独立运行并作为资源分配的基本单位。
- 进程是由一组机器指令,数据和堆栈等组成的,是一个能独立运行的活动实体。
- 多个进程之间可以并发执行和交换信息。
- 进程和并发是现代操作系统中最重要的基本概念,也是操作系统运行的基础。
- 共享
- 资源共享
- 在操作系统环境下的资源共享,也称为资源复用,是指系统中的资源可供内存中的多个并发执行的进程共同使用。
- 互斥共享方式
- 系统中的某些资源规定在一段时间内只允许一个进程访问该资源。
- 采用互斥共享方式共享的资源称为临界资源或独占资源。
- 同时访问方式
- 允许在一段时间内由多个进程同时进行访问。
- 并发和共享是多用户(多任务)操作系统的两个最基本特征。
- 并发和共享互为存在的条件
- 虚拟
- 在操作系统中把通过某种技术将一个物理实体变为若干个逻辑上的对应物的功能称为虚拟。
- 把实现虚拟的技术称为虚拟技术。
- 在操作系统中是利用时分复用和空分复用技术来实现虚拟的。
- 时分复用技术
- 多个进程或线程分时轮流使用资源,使得资源的利用率提高。
- 虚拟处理机技术,多个进程通过分时复用的方法使用CPU。
- 虚拟设备技术,通过分时复用的方法实现
- 空分复用技术
- 多个进程或线程使用一个空间上的不同部分。
- 提高存储空间的利用率。
- 空分复用技术是利用存储器的空闲空间,分区域存放和运行其他多道程序来提高内存的利用率。
- 异步
- 在多道程序环境下,系统允许多个进程并发执行。
- 由于资源等因素的限制,是进程的执行通常不是一气呵成,而是以走走停停的方式运行。
- 进程是以人们不可预知的速度向前推进的。这就是进程的异步性。可能先输入的后完成,完成的顺序与输入的顺序不同。
1.4 操作系统的主要功能
- 引入操作系统的主要目的
- 为多道程序的运行提供良好的运行环境,以保证多道程序能有条不紊,高效的运行,并能最大程度的提高系统中各资源的利用率,方便用户的使用。
- 操作系统具有的基本功能
- 处理机管理
- 存储器管理
- 设备管理
- 文件管理
1.4.1 处理机管理功能
- 处理机的分配和运行都是以进程为基本单位。对处理机的管理可归结为对进程的管理。
- 处理机管理的主要功能
- 进程控制
- 进程控制的主要功能是为作业创建进程,撤销已结束的进程以及控制进程在运行过程中的状态转换。
- 进程同步
- 协调多个进程(包含线程)的运行
- 协调方式
- 进程互斥方式,各进程在对临界资源进行访问时采用互斥方式。
- 进程同步方式,在相互合作去完成共同任务的各进程间,由同步机构对他们的执行次序加以协调。实现进程同步最常用的机制是信号量机制。
- 进程通信
- 当有一组相互合作的进程去完成同一个任务时,他们之间需要交换信息。
- 进程通信的任务是实现相互合作进程之间的信息交换。
- 方式
- 消息通信
- 共享内存
- 调度
- 在操作系统中调度包括作业调度,进程调度。
- 作业调度
- 作业调度的基本任务是从后备队列中按照一定的算法选择出若干个作业,为他们分配运行所需的资源,再将这些作业入内存后分别为他们建立进程,使他们都成为可能获得处理机的就绪进程,并将他们插入就绪队列中。
- 进程调度
- 进程调度的任务是从进程的就绪队列中按照一定的算法选出一个进程,将处理机分配给他,并为他设置运行现场,使其投入执行。
- 进程控制
1.4.2 存储器管理功能
- 存储器管理的主要任务
- 为多到程序的运行提供良好的环境,提高存储器的利用率,方便用户使用。
- 从逻辑上扩充内存
- 内存分配
- 内存分配的主要任务
- 为每道程序分配内存空间,提高存储器的利用率,尽量减少不可用的内存空间,碎片,允许正在运行的程序申请附加的内存空间,以适应程序和数据动态增长的需要。
- 操作系统实现内存分配的方式
- 静态分配方式
- 每个作业的内存空间是在作业装入时确定的。
- 动态分配方式
- 每个作业所要求的基本内存空间是在装入时确定的,允许作业在运行过程中继续申请新的附加内存空间。
- 静态分配方式
- 内存分配的主要任务
- 内存保护
- 确保每到用户程序都在自己的内存空间内运行。
- 不允许用户程序访问操作系统的程序和数据,不允许用户程序转移到非共享的其他用户程序中去执行。
- 内存保护手段
- 界线寄存器
- 越界中断请求
- 地址映射
- 每道程序在编码时使用逻辑地址,对应的空间为逻辑空间,为保证程序能正常运行,存储器管理需提供地址映射功能,能够将地址空间中的逻辑地址转换为内存空间中的物理地址。
- 内存扩充
- 借助虚拟存储技术,从逻辑上扩充内存容量。
- 逻辑上扩充内存需要实现的功能
- 请求调入功能
- 系统允许在装入部分用户程序和数据的情况下便能够启动该程序运行,在程序运行过程中发现继续运行时所需的程序和数据尚未装入内存,可向操作系统发出请求,由操作系统从磁盘中将所需的部分调入内存,以便继续运行。
- 置换功能
- 发现在内存中已无足够的空间来装入需要调入的程序和数据时,系统能够将内存中的一部分暂时不用的程序和数据调制硬盘上腾出空间,然后将需要调入的部分装入内存。
- 请求调入功能
1.4.3 设备管理功能
- 设备管理的主要任务
- 完成用户进程提出的I/O请求,为用户进程分配所需的I/O设备,并完成指定的I/O操作。
- 提高CPU和I/O设备的利用率,提高I/O速度,方便用户使用I/O设备
- 设备管理具有的功能
- 缓冲管理
- 设备分配
- 设备处理
- 虚拟设备
- 缓冲管理
- 缓和CPU和I/O设备速度不匹配的矛盾,提高CPU的利用率,进而提高系统吞吐量。
- 常见的缓冲机制
- 单缓冲机制
- 双缓冲机制
- 公用缓冲池机制
- 设备分配
- 根据用户的I/O请求系统现有的资源情况以及按照某种设备分配策略,为之分配所需的设备。
- 设备处理
- 设备处理程序又称为设备驱动程序。
- 设备处理程序的基本任务是实现CPU和设备控制器之间的通信。
1.4.4 文件管理功能
- 文件管理的主要任务是对用户文件和系统文件进行管理,以方便用户使用,并保证文件的安全性。
- 文件管理应具有的功能
- 文件存储空间的管理。
- 目录管理
- 文件的读写管理与保护
1.4.5 操作系统与用户之间的接口
- 操作系统向用户提供了用户与操作系统之间的接口。
- 接口的分类
- 用户接口
- 为了便于用户直接或间接控制自己的作业,操作系统向用户提供了命令接口。
- 用户接口分为
- 联机用户接口,由一组键盘操作命令及命令解释程序组成。
- 脱机用户接口,用户事先将对作业进行控制和干预的命令写在作业说明书上,然后将说明书与作业一起提供给系统。
- 图形用户接口
- 程序接口
- 程序接口是为用户程序在执行中访问系统资源而设置的,是用户程序取得操作系统服务的唯一途径。
- 用户接口
1.4.6 现代操作系统的新功能
- 保障系统安全。
- 支持用户通过联网获取服务。
- 可处理多媒体信息。
1.5 操作系统的结构
1.5.1 传统操作系统结构
- 早期的无结构的OS(第一代)、模块化结构的OS(第二代)和分层式结构的OS(第三代),都统称为传统结构的OS,微内核结构的OS称为现代结构的OS。
- 简单结构(无结构操作系统)
- 操作系统是为数众多的一组过程的集合,每个过程可以任意的相互调用其他过程,这种操作系统是无结构的,称为简单结构也称为整体系统结构。
- 只把注意力放在功能实现和获得高的效率上。
- 模块化结构
- 用模块化程序设计技术开发操作系统。
- 操作系统具有较清晰的结构,按功能划分为若干个具有一定独立性和大小的模块,并仔细规定好各模块间的接口,是各模块之间能够通过接口实现交互。这种设计方法称为模块接口法。
- 衡量模块独立性的标准
- 内聚性
- 耦合度。
- 模块接口法的优点
- 提高操作系统设计的正确性,可理解性,可维护性。
- 增强操作系统的可适应性。
- 加速操作系统的开发过程。
- 模块接口法的问题
- 模块划分及接口定义难
- 开发次序难以确定。模块接口法又称为无序模块法。
- 分层式结构
- 在操作系统中采用自底向上来开发操作系统。
- 将一个操作系统划分为若干个层次,每层又由若干个模块组成,各层之间只存在着单项的依赖关系及高层依赖于紧邻他的低层
- 优点
- 易保证系统的正确性,自下而上的设计方式是所有设计中的决定都是有序的。每层都是建立在较为可靠的基础上。
- 易扩充和易维护性
- 缺点
- 系统效率低。必须在每层之间都建立层次间的通信机制。操作系统每执行一个功能都要自上而下穿越多个层次。
1.5.2 客户/服务器模式(C/S模式)
- 客户/服务器系统主要由三部分组成
- (1)客户机:是一个自主计算机,具有一定的处理能力
- (2)服务器:能为网上所有的用户提供一种或多种服务
- (3)网络系统:是用于连接所有客户机和服务器,实现它们之间通信和网络资源共享的系统。
- 客户/服务器之间的交互
- (1)客户发送请求消息。
- (2)服务器接收消息。
- (3)服务器回送消息。
- (4)客户机接收消息
- 客户/服务器模式的优点
- (1)数据的分布处理和存储,每个客户机只存储和本机相关的数据
- (2)便于集中管理。如,与某个单位相关的数据可用放在服务器进行统一的管理
- (3)灵活性和可扩充性。客户机和服务器的数量不受限制
- (4)易于改编应用软件。
1.5.3 面向对象的程序设计技术
- 该技术基于“抽象”和“隐蔽”原则来控制大型软件的复杂度
- 面向对象技术的优点
- (1)通过“重用”提高产品质量和生产率。
- (2)使系统具有更好的易修改性和易扩展性。
- (3)更易于保证系统的“正确性”和“可靠性”。
1.5.4 微内核结构
- 适用于分布式系统。
- 微内核操作系统的基本概念
- 足够小的内核。
- 内核是指精心设计的,能实现操作系统最基本核心功能的小型内核。
- 将操作系统中最基本的部分放入微内核。
- 基于客户服务器模式
- 将操作系统最基本的部分放入内核中,把操作系统的绝大部分放在微内核外面的一组服务器进程中。
- 服务器使内核功能向外扩展,实现不同服务。
- 采用策略与机制分离原则。
- 机制是指实现某一功能的具体执行机构。
- 策略是在机制的基础上,借助某些参数和算法来实现该功能的优化或达到不同的功能目标。
- 机制处于一个系统的基层,策略处于系统的高层。
- 采用面向对象技术。
- 微内核的基本功能
- 进程管理
- 低级存储器管理
- 中断和陷入处理。
- 微内核操作系统的优点。
- 提高了系统的可扩展性。
- 增强了系统的可靠性
- 服务器与服务器之间采用消息传递通信机制,某个服务器出现错误,不会影响内核,也不会影响其他服务器
- 增强了系统的可移植性。
- 移植时,只需要修改内核,只要保持内核对外的接口不变即可
- 提供了对分布式系统的支持。
- 融入了面向对象技术。
- 微内核操作系统存在的问题
- 效率降低,在完成一次客户对操作系统提出的服务请求,需要利用消息实现多次交互和进行用户内核模式与上下文的多次切换。
- 为了改善运行效率,可用把一些常用的操作系统基本功能移入到内核中