操作系统的基本概念
操作系统的基本概念
操作系统是指控制和管理整个计算机系统的硬件与软件资源,合理地组织、调度计算机的工作与资源的分配,进而为用户和其他软件提供方便接口与环境的程序集合。操作系统是计算机系统中最基本的系统软件
操作系统的功能和目标
操作系统作为计算机系统资源的管理者
- 处理机管理
- 存储器管理
- 文件管理
- 设备管理
操作系统作为用户与计算机硬件系统之间的接口
- 命令接口
- 联机命令接口:也称交互式命令接口,适用于分时或实时系统的接口(说一句话,做一件事)
- 脱机命令接口:也称批处理命令接口,适用于批处理系统(说一堆话,做一堆事)
- 程序接口
- 由一组系统调用(也称广义指令)组成。用户在程序中使用这些系统调用来请求操作系统为其提供服务
- 图形接口不是操作系统的一部分,但图形接口所调用的系统调用命令是操作系统的一部分
- 命令接口
操作系统实现了对计算机资源的扩充
- 我们通常将覆盖了软件的机器称为扩充机器或虚拟机
- 没有任何软件支持的计算机称为裸机
操作系统的特征
- 并发:两个或多个事件在同一时间间隔内发生。注意区分并发和并行[^1]
- 共享:指系统中的资源可供内存中多个并发执行的进程共同使用
- 互斥共享:一段时间内只允许一个进程访问
- 同时访问:宏观上“同时”,微观上可能是交替的对该资源进行访问,即“分时共享”
- 虚拟:将一个物理上的实体变为若干逻辑上的对应物。实现虚拟的技术称为虚拟技术
- 时分复用技术:如虚拟处理器。将物理资源(如CPU)的使用时间划分为多个时间片(Time Slice),供多个用户或进程轮流使用。让每个进程误以为自己独占CPU资源,而实际是分时共享。
- 空分复用技术:如虚拟存储器。将物理资源(如内存或磁盘)划分为独立区域,分配给不同进程使用。为每个进程提供连续且独立的地址空间,隐藏物理内存的碎片化和容量限制。
- 异步:多道程序环境允许多个程序并发执行,但由于资源有限,进程的执行并不是一贯到底的,而是走走停停的,他以不可预知的速度向前推进,这就是进程的异步性
并发和共享是操作系统两个最基本的特征,两者之间互为存在的条件
操作系统发展历程
手工操作阶段
- 此阶段无操作系统
- 两个突出的缺点:
- 用户独占全机,资源利用率低
- CPU等待手工操作,CPU的利用不充分
批处理阶段
- 操作系统开始出现
单道批处理系统
主要特征:
- 自动性:在顺利的情况下,磁带上的一批作业能自动的逐个运行,而无须人工干预
- 顺序性:磁带上的各道作业顺序地进入内存,先调入内存的先完成
- 单道性:内存中仅有一道程序运行
多道批处理系统
主要特征:
- 多道
- 宏观上并行
- 微观上串行
优点:
- 资源利用率高,多道程序共享计算机资源,从而使各种资源得到充分的利用
- 系统吞吐量大,CPU和其他资源保持“忙碌”状态
缺点:
- 用户时间响应较长
- 不提供人机交互能力
- 用户既不能了解自己的程序的运行情况,又不能控制计算机
分时操作系统
所谓分时技术,是指将处理器的运行时间分成很短的时间片,按时间片轮流将处理器分配给各联机作业使用
分时系统的主要特点:
- 同时性。同时性也称多路性,指允许多个终端用户同时使用一台计算机
- 交互性。用户使用终端采用人机对话的方式直接控制程序运行,与同程序进行交互
- 独立性。系统中多个用户独立的进行操作,互不干扰
- 及时性。用户请求能在很短时间内获得响应
实时操作系统
为了能在某个时间限制内完成某些紧急任务而不需要时间片排队,诞生了实时操作系统
- 硬实时系统:某个动作必须绝对地在规定的时刻发生
- 软实时系统:能够接受偶尔违反时间规定且不会引起任何永久性的损害
网络操作系统和分布式计算机系统
- 网络操作系统把网络中的各台计算机有机地结合起来,实现各台计算机之间的通信和数据传输等功能,实现网络中各种资源的共享
- 分布式计算机系统由多台计算机组成,并满足以下条件
- 系统中任意两台计算机通过通信方式交换信息
- 每台计算机都具有同等的地位
- 每台计算机上的资源为所有用户共享
- 系统中的任意台计算机都可以构成一个子系统,并且能够重构
- 任何有工作都可以分布在几台计算机上,由它们并行工作、协同完成
- 特点:分布性和并行性
个人计算机操作系统
如Windows、Linux和MacOS
操作系统的运行环境
处理器运行模式
计算机“指令”和高级语言“代码”是两码事。CPU看不懂高级语言程序的含义,需要将它们“翻译”成CPU能懂的机器语言,即一条条“指令”
计算机系统中,通常CPU执行两种程序
- 操作系统内核程序
- 用户自编程序
前者是后者的管理者,要执行一些特权指令。后者出于安全考虑不能执行这些特权指令
特权指令,指不允许用户直接使用的指令
非特权指令,指允许用户直接使用的指令
CPU的运行模式分为用户态(目态)和内核态(管态、核心态)。
应用程序运行在用户态,操作系统内核程序运行在内核态
内核是计算机上配置的底层软件,管理着系统的各种资源。大多数操作系统的内核包括以下4个内容
- 时钟管理
- 计时
- 通过时钟中断,实现进程的切换
- 中断机制
- 初衷:提高多道程序运行时的CPU利用率
- 发展:形成多种类型,成为操作系统各项操作的基础
- 原语
- 处于操作系统的底层,是最接近硬件的部分
- 这些程序的运行具有原子性,其操作只能一气呵成
- 这些程序的运行时间都较短,而且调用频繁
- 系统控制的数据结构及处理
- 进程管理。进程状态管理、进程调度和分派、创建与撤销进程控制块等
- 存储器管理。存储器的空间分配和回收、内存信息保护程序、代码对换程序等
- 设备管理。缓冲区管理、设备分配和回收等
中断和异常的概念
中断和异常的定义
中断也称外中断,是指来自CPU执行指令外部的事件
异常也称内中断,是指来自CPU执行指令内部的事件引起的事件
中断和异常的分类
- 外中断
- 可屏蔽中断:指通过INTR(Interrupt Request)线发出的中断请求,通过改变屏蔽字可以实现多重中断,从而使得中断处理更加灵活
- 不可屏蔽中断:指通过NMI(Non-Maskable Interrupt)线发出的中断请求
- 异常
- 故障(Fault):由指令引起的异常
- 自陷(Trap):一种事先安排的“异常”事件
- 终止(Abort):出现了使得CPU无法继续执行的硬件故障
故障异常和自陷异常属于软件中断,终止属于硬件中断
- 外中断
中断和异常的处理过程
- CPU在执行用户指令的第$i$条指令时检测到一个异常事件,或在执行第$i$条指令后发现一个中断请求信号
- CPU打断当前用户程序
- 转到相应中断或异常程序去处理
- 若能解决,则在处理程序最后CPU返回指令,回到第$i$条指令或第$i+1$条指令继续执行
- 若不能解决,则终止用户程序
系统调用
系统调用按功能大致可分如下几类:
- 设备管理
- 文件管理
- 进程控制
- 进程通信
- 内存管理
系统调用的处理过程
- 第一步
- 将系统调用号和所需参数压入堆栈
- 调用实际的调用指令
- 执行陷入指令,将CPU从用户态转为内核态
- 硬件和操作系统内核程序保护被中断的现场
- 第二步
- 分析系统调用类型
- 转入相应系统调用处理子程序
- 第三步
- 系统调用处理子程序执行结束后
- 恢复被中断的或设置新进程的CPU现场
- 返回被中断进程或新进程
- 继续往下执行
操作系统结构
分层法
将操作系统分为若干层,底层(层0)为硬件,顶层(层N)为用户接口,每层只能调用紧邻它的底层的功能和服务(单向依赖)
分层法的优点
- 便于系统的调试和验证,简化了系统的设计和实现
- 易扩充和易维护
分层法的缺点
- 合理定义各层比较困难
- 效率较差
模块化
将操作系统按功能划分为若干具有一定独立性的模块。每个模块具有某方面的管理功能,并规定好各模块间的接口,使各模块之间能够通过接口进行通信。这种设计方法被称为模块-接口法
衡量模块独立性主要有两个标准
内聚性,模块内部各部分间联系的紧密程度。内聚性越高,模块独立性越好
耦合度,模块间相互联系和相互影响的程度。耦合度越低,模块独立性越好
模块化的优点:
- 提高了操作系统设计的正确性、可理解性和可维护性
- 增强了操作系统的可适应性
- 加速了操作系统的开发过程
模块化的缺点
- 模块间的接口规定很难满足对接口的实际需求
- 无法找到一个可靠的决定顺序
宏内核
宏内核,也称单内核或大内核,是指将系统的主要功能模块都作为一个紧密联系的整体运行在内核态,从而为用户程序提供高性能的系统服务
微内核
- 微内核构架,是指将内核中最基本的功能保留在内核,而将那些不需要在内核态执行的功能移到用户态执行,从而降低内核的设计复杂性
- 微内核架构将操作系统分为微内核和多个服务器
- 微内核
- 与硬件紧密相关的部分
- 一些较基本的功能
- 客户和服务器之间的通信
- 服务器
- 绝大部分功能都存放在服务器
- 微内核
- 微内核的基本功能
- 进程(线程)管理
- 低级存储器管理
- 中断和陷入处理
- 微内核的特点
- 扩展性和灵活性
- 可靠性和安全性
- 可移植性
- 分布式计算
外核
- 在内核态中运行。任务是为虚拟机分配资源,并检查这些资源使用的安全性
- 外核机制的优点
- 减少了资源的“映射层”
- 将多道程序与用户操作系统代码加以分隔,而且相应的负载并不重
操作系统引导
- 激活CPU
- 硬件自检
- 加载带有操作系统的硬盘
- 加载主引导记录
- 扫描硬盘分区表
- 加载分区引导记录
- 加载启动管理器
- 加载操作系统
虚拟机
虚拟机是指利用虚拟化技术,将一台物理机器虚拟化为多台虚拟机器,通过隐藏特定计算平台的实际物理特性,为用户提供抽象的、统一的、模拟的计算环境
第一类虚拟机管理程序
- 直接运行在硬件之上,能直接控制和分配物理资源
- 运行在最高特权级(Ring 0),可以执行最高特权的指令
第二类虚拟机管理程序
- 运行在Host OS之上,依赖于Host OS为其分配物理资源
- 运行在用户态、部分运行在内核态。GuestOS发出的系统调用会被VMM截获,并转化为VMM对HostOS的系统调用