1.1 操作系统的概念、功能和目标
概念
操作系统(Operating System,OS)是指 控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配,为用户和其他软件提供方便的接口和环境 的程序集合。它是计算机系统中最基本的系统软件。
功能和目标
①操作系统是系统资源的管理者
②向上提供方便易用的服务
③是最接近硬件的一层软件
①操作系统是系统资源的管理者(管理功能)
作为系统资源的管理者,其目标是安全、高效,提供的功能有:
- 处理机管理
- 管理处理机的分配与运行,解决冲突问题,可以理解为对进程的管理
- 进程管理:进程控制、进程同步、进程通信、死锁处理、处理机调度
- 存储器管理
- 为了提高多道程序运行效率,方便用户使用
- 内存分配、地址映射、内存保护、共享和内存扩充
- 文件管理
- 操作系统负责管理文件的系统称为文件系统
- 文件存储空间的管理、目录管理、文件读写管理和保护
- 设备管理
- 完成用户的IO请求,方便用户使用设备,提高设备的利用率
- 缓冲管理、设备分配、设备处理、虚拟设备
②向上提供方便易用的服务(接口功能)
操作系统为用户和软件提供服务,通过提供接口来完成:
- 命令接口
- 联机控制方式:交互式命令接口,适用于分时或者实时系统,就像人与机器对话一样。(用户说一句,系统跟着做一句)
- 脱机控制方式:批处理命令接口,提交一组作业,系统进行处理,用户不能干预作业的运行。(用户说一堆,系统跟着做一堆)
- 程序接口
- 由一组系统调用命令组成(也称作系统调用或者广义指令)
- 可以在程序中进行系统调用来使用程序接口。普通用户不能直接使用程序接口,只能通过程序代码间接使用。
此外还有GUI图形用户界面,可以说 命令接口和GUI是直接给用户使用的,而程序接口是给软件或是程序员使用的。
③是最接近硬件的一层软件(扩充机器)
作为最接近硬件的一层软件,操作系统需要实现对硬件机器的扩展,将CPU、内存、磁盘、显示器、键盘等硬件合理地组织起来,让各种硬件能够相互协调配合,实现更多更复杂的功能。
- 通常把覆盖了软件的机器成为扩充机器,又称之为虚拟机
1.2 操作系统的特征
四个基本特征:并发、共享、虚拟、异步
并发
并发:指两个或者多个事件在同一时间间隔内发生。
并行:指两个或者多个事件在同一时刻同时发生。
- 并发使得系统具有处理和调度多个程序同时执行的能力
- 操作系统的并发是通过分时实现的
操作系统就是伴随着“多道程序技术”出现而出现的。因此,操作系统和程序并发是一起诞生的。
重要考点:
- 单核CPU同一时刻只能执行一个程序,各个程序只能并发地执行
- 对于单处理机来说,宏观上程序是并发的,微观上程序是交替执行的
- 多核CPU同一时刻可以同时执行多个程序,多个程序可以并行地执行
共享
共享:即资源共享,是指系统中的资源可供内存中多个并发执行的进程共同使用。
有两种资源共享方式:
- 互斥共享方式
- 一个时间段只允许一个进程对资源进行访问,例如打印机,磁带
- 这种资源称作:临界资源或者独占资源
- 同时访问方式
- 一个时间段内允许多个进程对资源进行访问,例如磁盘资源
并发和共享的关系(互为存在条件)
并发性指计算机系统中同时存在着多个运行着的程序。
共享性是指系统中的资源可供内存中多个并发执行的进程共同使用。
如果失去并发性,则系统中只有一个程序正在运行,则共享性失去存在的意义;
如果失去共享性,则两个程序不能同时访问硬盘资源,就无法实现同时发送文件,也就无法并发。
虚拟
虚拟:指把一个物理上的实体变为若干个逻辑上的对应物。物理实体是实际存在的,而逻辑上对应物是用户感受到的。
一个物理上的实体变为若干逻辑上的对应物,这种技术也被称为虚拟技术,可分为:
- 时分复用技术
- 如虚拟处理器:采用多道程序并发的方式,让每个终端用户感觉到有多个处理器
- 空分复用技术
- 如虚拟存储器:将物理存储变为虚拟存储器,逻辑上扩充存储器用
并发和虚拟的关系
如果失去了并发性,则一个时间段内系统中只需运行一道程序,那么就失去了实现虚拟性的意义了。因此,没有并发性,就谈不上虚拟性。
异步
异步:在多道程序环境下,允许多个程序并发执行,但由于资源有限,进程的执行不是一贯到底的,多道程序走走停停,进程以不可预知的速度向前进
并发和异步的关系
只有系统拥有并发性,才有可能导致异步性。
小结:并发和共享互为存在条件,没有并发和共享,就谈不上虚拟和异步,因此并发和共享是操作系统的两个最基本的特征
1.3 操作系统的发展与分类
- 手工操作阶段
程序的装入、运行、结果的输出都需要人为的干预
缺点:资源利用率低、CPU利用不充分、人机速度矛盾
- 批处理阶段
为了解决人机矛盾以及CPU和I/O设备之间速度不匹配的矛盾
单道批处理系统(引入脱机输入输出技术)
内存中始终保存一道作业,作业成批进行
特点:
- 自动性:一批作业自动执行不需要人工干预
- 顺序性:各道作业依次执行
- 单道性:仅有一道程序执行
优点:
缓解了一定程度的人机速度矛盾,资源利用率有所提升
缺点:
- 高速CPU等待I/O设备的完成,资源利用率依然很低
- 内存中仅能有一道程序运行,只有该程序运行结束之后才能调入下一道程序
多道批处理系统(操作系统开始出现)
多道批处理系统的产生标志着操作系统正式诞生。
允许多个程序在CPU中交替运行,程序共享各种硬件和软件资源。
特点:
- 多道:计算机中同时存放多道相互独立的程序
- 宏观上并行:多道程序都会开始运行,但都没有运行完毕
- 微观上串行:多道程序轮流占有CPU,交替执行
优点:
- 资源利用率高
- 多道程序并发执行,共享计算机资源
- CPU和其他资源更能保持“忙碌”状态,系统吞吐量增大
缺点:
- 设计复杂,要考虑各种资源调度问题
- 响应时间过长,没有人机交互功能
- 分时操作系统
计算机以时间片为单位轮流为各个用户/作业服务,各个用户可通过终端与计算机进行交互。
主要优点:
- 用户请求可以被即时响应,解决了人机交互问题;
- 允许多个终端用户同时使用一台计算机,并且用户对计算机的操作相互独立,互不干扰。
主要缺点:
- 不能优先处理一些紧急任务;
- 操作系统对各个用户/作业都是完全公平的,循环地为每个用户/作业服务一个时间片,不区分任务的紧急性。
- 实时操作系统
保证在规定时间内完成某项任务。
主要优点:能够优先响应一些紧急任务,某些紧急任务不需时间片排队。
硬实时系统:必须在绝对严格的规定时间内完成处理,如导弹控制,自动驾驶
软实时系统:能接受偶尔违反时间规定,如12306订票
主要特点是及时性和可靠性。
其他几种操作系统
- 网络操作系统:是伴随着计算机网络的发展而诞生的,能把网络中各个计算机有机地结合起来,实现数据传送等功能,实现网络中各种资源的共享(如文件共享)和各台计算机之间的通信。(如:Windows NT 就是一种典型的网络操作系统,网站服务器就可以使用)
- 分布式操作系统:主要特点是分布性和并行性。系统中的任意两台计算机之间没有主从之分,相互交换信息,并行工作、协同完成任务。
- 个人计算机操作系统:如Windows XP、MacOS,方便个人使用,广泛应用于文字处理、电子表格、游戏等。
1.4 操作系统的运行机制
两种指令:
指令就是处理器CPU能识别、执行的最基本命令,指二进制机器指令。
- 特权指令:如内存清零指令
- 非特权指令:如普通的运算指令
两种程序:
- 应用程序
- 用户自编的程序
- 为了保证系统能安全运行,普通应用程序只能执行非特权指令,运行在用户态
- 内核程序
- 很多内核程序组成了操作系统内核,简称内核Kernel
- 是系统的管理者,可以执行特权指令和非特权指令,运行在核心态
两种处理器状态:核心态(内核态)和用户态
- 处于内核态时,说明此时正在运行的是内核程序,此时可以执行特权指令
- 处于用户态时,说明此时正在运行的是应用程序,此时只能执行非特权指令
状态切换:
内核态→用户态:执行修改程序状态字寄存器PSW的特权指令
内核态→用户态:由中断引起,硬件自动完成
内核
时钟管理:操作系统对用户提供标准时间,根据时钟对进程进行管理,实现进程切换。
中断机制:初衷是为了提高多道程序运行环境中的CPU利用率,保护和恢复中断现场的信息,转移控制权到相关程序。
原语:处于系统的最底层,是最接近硬件的部分,运行具有原子性,即只能一气呵成,运行时间短、调用频繁。
大内核:
- 将操作系统的主要功能模块都作为系统内核,运行在核心态
- 优点:各个管理模块之间共享信息,能够有效利用相互之间的有效特效,有性能优势
- 缺点:内核代码庞大,层次交互关系复杂,层次接口难以定义,难以维护
微内核:
- 只把最基本的功能保留在内核
- 优点:内核功能少,有效的分离内核与服务、服务与服务,结构清晰,方便维护
- 缺点:需要频繁地在核心态和用户态之间切换,性能低
1.5 中断和异常
为了进行核心态和用户态的切换,引入了中断机制。
中断是让操作系统内核夺回CPU使用权的唯一途径。
内中断(异常):
- trap、fault、abort
- 与当前执行的指令有关,中断信号来源于CPU内部
- 异常不能被屏蔽
外中断(中断):
- 时钟中断、I/O中断请求
- 与当前执行的指令无关,中断信号来源于CPU外部
基本实现原理:
- 检查中断信号
- 内中断:CPU在执行指令时会检查是否有异常发生
- 外中断:在每个指令周期末尾,CPU都会检查是否有外中断信号需要处理
- 找中断处理程序
- 不同的中断信号,需要用不同的中断处理程序来处理。
- 当CPU检测到中断信号后,会根据中断信号的类型去查询“中断向量表”,以此来找到相应的中断处理程序在内存中的存放位置。
1.6 系统调用
操作系统作为用户和计算机硬件之间的接口,需要向上提供一些简单易用的服务。主要包括命令接口和程序接口。其中,程序接口由一组系统调用组成。
“系统调用”是操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以通过系统调用来请求获得操作系统内核的服务。
系统调用按功能可分为:
- 设备管理:完成设备的请求/释放/启动等功能
- 文件管理:完成文件的读/写/创建/删除等功能
- 进程控制:完成进程的创建/撤销/阻塞/唤醒等功能
- 进程通信:完成进程之间的消息传递/信号传递等功能
- 内存管理:完成内存的分配/回收等功能