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