第一章 操作系统引论
操作系统的概念
- 形式化定义:操作系统是一组能有效地组织和管理计算机硬件和软件资源,合理地对各类作业进行调度,以及方便用户使用的程序集合。
- 非形式化定义:系统软件,程序模块的集合,资源管理和用户接口功能。
操作系统的目标
方便性
定义:良好的、一致的用户接口,弥补硬件系统的类型和数量差别。
主要实现方法:
- 统一用户接口、图形接口;
- 虚拟地址;
- 虚拟存储器;
- 逻辑设备;
- 文件系统;
- 缓冲区技术。
有效性
定义:使CPU、I/O设备和存储空间得到有效利用;管理和分配硬件、软件资源,合理地组织计算机的工作流程。
主要实现方法:
- 多道程序设计;
- 多进程并发;
- 虚拟存储器、按需调页(段);
- 对换区技术;
- 缓冲区技术;
- 独占设备 -> 共享设备。
可扩充性
定义:无结构化 -> 模块化 -> 层次化 -> 微内核。
开放性
定义:遵循标准规范,方便地实现互连,实现应用的可移植性和互操作性。
操作系统的作用
用户与计算机硬件系统之间的接口
含义:OS处于用户与计算机硬件系统之间,用户通过OS来使用计算机系统(或者说,用户在OS的帮助下能够方便、快捷、可靠地操纵计算机硬件和运行自己的程序)。
- 命令接口:命令行方式(联机用户接口/交互式用户接口)和脚本方式(脱机用户接口/批处理命令接口)允许用户直接使用;
- 程序接口:由一组系统调用(能完成特定功能的程序)组成,允许用户通过程序间接使用;
- GUI:菜单方式(图形用户接口),现代操作系统中最流行的图形用户接口。
其中命令接口和程序接口统称为用户接口。
注意:系统调用 = 系统调用命令 = 广义指令。
计算机系统资源的管理者
含义:在一个计算机系统中,通常都含有多种硬件和软件资源,OS的主要功能正是对处理机、存储器、I/O设备、文件这四类资源进行有效的管理。
- 处理机管理:分配和控制处理机;
- 存储器管理:内存的分配与回收;
- I/O设备管理:I/O设备的分配(回收)与操纵;
- 文件(数据和程序)管理:实现对文件的存取、共享和保护。
实现了对计算机资源的抽象
OS能把一台没有任何软件支持的裸机改造成功能更强大、用户使用更方便灵活、更安全可靠的虚拟机。
注:通常把覆盖了软件的机器称为扩充机器,又称为虚拟机。
操作系统的发展过程
未配置计算机的操作系统
主要矛盾:
- 计算机处理能力很高,手工操作的低效率造成浪费;
- 用户独占全机所有的资源。
人工操作方式
用户独占全机,人机速度矛盾导致资源利用率极低。
- 用户独占全机,即一台计算机上的资源由上机用户所独占;
- CPU等待人工操作。
脱机输入输出(Off-Line I/O)方式
- 减少了CPU的空闲时间;
- 提高了I/O速度。
单道批处理系统
批处理的含义:批处理是在监督程序的控制下对一批作业自动进行处理而不需人工干预的一种技术,该技术旨在提高系统的吞吐量和资源利用率。
- 优点:一定程度上缓解了人机速度矛盾,资源利用率有所提升;
- 缺点:内存中仅能有一道程序运行,只有在该程序运行结束后才能调入下一道程序,CPU有大量的时间是在空闲等待I/O完成(CPU与I/O设备忙闲不均),资源利用率依然很低。
多道批处理系统
多道程序设计:指在内存中同时存放若干个作业,并使它们同时运行的一种程序设计技术。在单处理机环境下,仅在宏观上这些作业同时运行,而在微观上它们是交替执行,即每时每刻只有一个作业在执行,其余作业处于阻塞状态,或处于就绪状态。
主要优点:
- 资源利用率高:引入多道批处理系统能使多道程序交替运行,以保持CPU处于忙碌状态;在内存中装入多道程序可提高内存的利用率;此外还可以提高I/O设备的利用率;
- 系统吞吐量大:CPU和其他资源保持“忙碌”状态;仅当作业完成时或运行不下去时才进行切换,系统开销小。
主要缺点:
- 平均周转周期长:由于作业要排队进行处理,因而作业的周转时间较长,通常需要几个小时甚至几天;
- 无交互能力:用户一旦把作业提交给系统后,直至作业完成,用户都不能与自己的作业进行交互,修改和调试程序极不方便。
多道批处理系统需要解决的问题:
- 处理机争用问题:既要满足各道程序运行的需要,又要能够提高处理机的利用率;
- 内存的分配与保护问题:系统应能为每道程序分配必要的内存空间,且不会因为某道程序出现异常情况而破坏其它程序;
- I/O设备分配问题:系统应采取适当的策略来分配系统中的I/O设备,以达到既能方便用户对设备的使用,又能提高设备利用率的目的;
- 文件的组织和管理问题:系统应能有效地组织存放在系统中的大量程序和数据,使它们既便于用户使用,又能保证数据的安全性;
- 作业管理问题:系统应能对系统中所有的作业进行合理的组织,以满足这些作业用户的不同要求;
- 用户与系统的接口问题:为使用户能方便地使用操作系统,OS还应提供用户与OS之间的接口。
分时系统
特点:计算机的系统资源(尤其是CPU时间)进行时间上的分割,每个时间段称为一个时间片,每个用户依次轮流使用时间片。
主要优点:用户请求可以被即时响应,解决了人机交互问题,允许多个用户使用同一台计算机,并且用户对计算机的操作相对独立,感受不到别人的存在。
主要缺点:不能优先处理一些紧急任务。操作系统对各个用户/作业都是完全公平的,循环地为每个用户/作业服务一个时间片,不区分任务的紧急性。
特征:
- 多路性:允许将多台终端同时连接到一台主机上,并按分时原则为每个用户服务;
- 独立性:每个用户在各自的终端上进行操作,彼此之间互不干扰,给用户的感觉就像是他一人独占主机进行操作;
- 及时性:用户的请求能在很短的时间内获得响应;
- 交互性:用户可通过终端与系统进行广泛的人机对话。
实时系统
主要优点:能够优先响应一些紧急任务,某些紧急任务不需时间片排队。
在实时系统的控制下,计算机系统接收到外部信号后及时进行处理,并且要在严格的时限内处理完事件。实时系统的主要特点是及时性和可靠性。
现代操作系统
网络操作系统
网络操作系统是伴随计算机网络的发展而生的,能把网络中各个计算机有机地结合起来,实现数据传送等功能,实现网络中各种资源的共享(如文件共享)和各台计算机之间的通信。
分布式操作系统
分布式操作系统的主要特点是分布性和并行性。系统中各计算机的地位相同,任何工作都可以分布在这些计算机上,由它们并行、协同完成这个任务。
个人计算机操作系统
如Windows、macOS等,方便个人使用。
操作系统的基本特征
并发
含义:两个或多个事件在同一时间间隔内发生。这些事件在宏观上是同时发生的,在微观上是交替发生的。
并行:两个或多个事件在同一时刻发生。
操作系统的并发性是指:计算机系统中在一段时间内宏观上有多个程序在同时运行。(微观上这些程序是分时地交替执行)
重要考点:
- 并发和并行的区别;
- 并发和共享互为存在条件;
- 没有并发和共享,就谈不上虚拟和异步,因此并发和共享是操作系统的两个最基本的特征。
共享
含义:共享即资源共享或资源服用,其含义为系统中的资源可供多个并发执行的进程共同使用。
互斥共享方式
系统中的某些资源(如打印机、磁带机等)虽然可以提供给多个进程(线程)使用,但在一段时间内只允许一个进程访问该资源。
同时共享方式
系统中的某些资源允许在一段时间内由多个进程“同时”对它们进行访问。(宏观上同时,微观上交替)
并发与共享的关系
并发和共享是多用户(多任务)OS的两个最基本的特征,它们互为存在条件。
虚拟
含义:通过某种技术将一个物理实体变为若干个逻辑上对应物的功能。前者是实的,即实际存在的;后者是虚的,是用户感觉上的东西。
时分复用技术和空分复用技术
在OS中,使用时分复用技术和空分复用技术来实现“虚拟”。
- 时分复用技术:在计算机领域中,广泛应用时分复用技术来实现虚拟处理机、虚拟设备等,使资源的利用率得以提高。
- 虚拟处理机技术
- 虚拟设备技术
- 空分复用技术:使用空分复用技术来提高存储器资源的利用率。
- 虚拟磁盘技术
- 虚拟存储器技术
异步
含义:在多道程序环境下,允许多个进程并发执行,但由于资源有限,进程的执行不是一贯到底的,而是走走停停,以人们不可预知的速度向前推进。
操作系统四大基本特性之间的关系
操作系统的主要功能
处理机管理功能
处理机管理的主要功能:
- 进程控制:创建和撤销进程;
- 进程同步:对诸进程的运行进行协调;
- 进程通信:实现进程间的信息交换;
- 调度:包括作业调度和任务调度,完成处理机资源的分配、回收调度等功能。
存储器管理功能
存储器管理功能主要包括:
- 内存的分配和回收
- 内存保护
- 地址映射
- 内存扩充
内存分配
主要任务:
- 为每道程序分配内存空间;
- 提高存储器的利用率;
- 允许正在运行的程序申请附加空间,以适应程序和数据动态增长的需要。
分配方式:
- 静态分配方式:在作业装入后的整个运行期间不允许该作业再申请新的内存空间,也不允许作业在内存中“移动”;
- 动态分配方式:允许作业在运行过程中继续申请新的附加内存空间,以适应数据的动态增长,也允许作业在内存中“移动”。
内存保护
主要任务:
- 确保每道程序都仅在自己的内存空间运行,彼此互不干扰;
- 绝不允许用户程序访问操作系统的程序和数据,也不允许用户程序转移到非共享的其它用户程序中去执行。
地址映射
为确保程序能正确运行,存储器管理必须提供地址映射功能,即能够将地址空间中的逻辑地址转换为内存空间中与之对应的物理地址。该功能在硬件的支持下完成。
内存扩充
借助虚拟存储技术,从逻辑上扩充内存容量,使用户所感觉到的内存容量比实际内存容量大得多,以便让更多的用户程序能并发运行。
主要功能:
- 请求调入功能;
- 置换功能。
设备管理功能
主要任务:
- 完成用户进程提出的I/O请求,为用户进程分配所需的I/O设备,并完成指定的I/O操作;
- 提高CPU和I/O设备的利用率,提高I/O速度,方便用户使用I/O设备。
主要功能:
- 缓冲管理;
- 设备分配;
- 设备处理。
文件管理功能
主要任务:对用户文件和系统文件进行管理以方便用户使用,并保证文件的安全性。
主要功能:
- 文件的存储空间管理;
- 目录管理;
- 文件的读/写管理和保护;
操作系统与用户之间的接口
用户接口
- 联机用户接口:“说一句做一句”;
- 脱机用户接口:“说一堆做一堆”;
- 图形用户接口(GUI)
程序接口
由一组系统调用(能完成特定功能的子程序)组成,允许用户通过程序间接使用。
现代操作系统的新功能
系统安全
- 认证技术
- 密码技术
- 访问控制技术
- 反病毒技术
网络的功能和服务
- 网络通信
- 资源管理
- 应用互操作
支持多媒体
- 接纳控制功能
- 实时调度
- 多媒体文件的存储
OS结构设计
传统操作系统结构
无结构操作系统
特点:
- 设计者只把注意力放在功能的实现和获得高的效率上,缺乏首尾一致的设计思想;
- OS是一组过程的集合,各过程之间可以相互调用,在OS内部不存在任何结构。
缺点:
- 操作系统既庞大又杂乱,缺乏清晰的程序结构,调试困难;
- 程序难以理解和阅读,增加了维护人员的负担。
模块化结构OS
特点:
- 基于分解和结构化原则控制大型软件的复杂度;
- 按其功能精心地划分为若干个具有一定独立性和大小的模块;
- 仔细地规定好各模块间的接口,使各模块之间能通过该接口实现交互;
- 模块由众多服务过程(模块接口)组成,可以随意调用其他模块中的服务过程。
优点:
- 提高OS设计的正确性、可理解性和可维护性;
- 增强OS的适应性;
- 加快OS的开发过程。
缺点:
- 功能划分和模块接口难以保证正确和合理;
- 模块之间的依赖关系复杂,降低了模块之间的相互独立性——不利于修改。
分层式结构OS
特点:每一层都仅使用其底层所提供的功能和服务,使得系统的调试和验证都变得容易。
层次设置:
- 程序嵌套
- 运行频率
- 公共模块
- 用户接口
优点:
- 易保证系统的正确性;
- 易扩充和易维护;
缺点:系统效率降低。
客户/服务器模式
OS划分为两部分(提高灵活性和可扩充性):
- 一组服务器(进程),用于提供各种服务;
- 内核,用来处理客户和服务器之间的通信。
组成:
- 客户机
- 服务器
- 网络系统
客户与服务器的交互方式:
- 客户发送请求消息;
- 服务器接收消息;
- 服务器回送消息;
- 客户接收消息。
优点:
- 数据的分布处理和存储;
- 便于集中管理;
- 灵活性和可扩充性;
- 易于改编应用软件。
不足:
- 可靠性问题;
- 瓶颈问题。
微内核OS结构
主要特征:将OS划分为微内核和多个服务器。
基本概念:
- 足够小的内核:实现与硬件紧密相关的处理、实现一些较基本的功能、负责客户和服务器之间的通信;
- 基于客户/服务器模式:操作系统中最基本的部分放入内核中,绝大部分功能放在微内核外的一组服务器(进程)中实现;
- 应用“机制与策略分离”原理:机制决定事情如何来做,策略决定做什么内容;
- 采用面向对象技术:基于面向对象技术中的“抽象”和“隐蔽”原则控制系统的复杂性,再进一步利用“对象”、“封装”和“继承”等概念确保操作系统的正确性、可靠性、易修改性、易扩展性等,并提高操作系统的设计速度。
微内核所提供的基本功能:
- 进程管理
- 存储器管理
- 进程通信管理
- I/O设备管理
优点:
- 提高了系统的可扩展性;
- 增强了系统的可靠性;
- 可移植性强;
- 提供了对分布式系统的支持;
- 融入了面向对象技术。
不足:微内核OS的运行效率有所降低,主要原因是客户对OS提出服务请求时需要利用消息实现多次交互和进行用户/内核模式及上下文的多次切换。